Я работаю над дефектом в своем GTK-коде для отображения контекстных меню. После создания меню с несколькими пунктами меню я использую gtk_menu_popup()
для отображения меню. Эта функция принимает указатель на функцию типа GtkMenuPositionFunc
, который позволяет мне позиционировать меню. Я действительно ничего не делаю здесь, кроме как сказать GTK сохранить текущую позицию, но нажимать меню, если часть меню находится вне монитора (используя четвертый аргумент функции). Моя проблема в том, что когда GTK нажимает меню, абсолютная позиция пунктов меню не изменяется. Следовательно, их изменение положения прокрутки приводит к появлению полос прокрутки в меню. Я хочу, чтобы относительное положение пунктов меню w.r.t в меню оставалось фиксированным. Есть ли способ сделать это? Документация GTK предупреждает об этой проблеме, но ничего не говорит о том, как ее исправить. Существует ссылка на него для справки:GTK: пункты контекстного меню позиционирования w.r.t контекстное меню
http://library.gnome.org/devel/gtk/unstable/GtkMenu.html#GtkMenuPositionFunc
EDIT: Я хотел бы включить код, но логика слишком рассеянные для этого.
Передача 'NULL' на самом деле не вариант, поскольку он используется в некоторых случаях. Я попытался передать «NULL» для этого конкретного случая, и это решило проблему. Означает ли это, что я не могу попросить GTK переместить меню, а также попросить его нажать меню внутри, если оно выходит за пределы экрана? Это кажется невероятным. – 341008
Я включил ссылку на исходный код, чтобы вы могли скопировать функцию позиционирования по умолчанию и начать с нее. Если GTK может делать то, что вы хотите, то вы тоже можете. – ptomato