Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -1026,22 +1026,21 @@ private void wireSubMenuPopover(Menu submenu, long popover) {

private void connectDropDownMenuSignals() {
if (items == null) return;
long barItem = GTK4.gtk_widget_get_first_child(handle);

for (MenuItem menuItem : items) {
if (barItem == 0) break;
if ((menuItem.style & SWT.SEPARATOR) != 0) continue;
if (menuItem.menu != null) {
long popover = findGtkPopoverMenuChild(barItem);
/* Re-wire when the discovered popover differs from the cache (initial or GTK rebuilt it). */
if (popover != 0 && menuItem.menu.popoverHandle != popover) {
wireSubMenuPopover(menuItem.menu, popover);
}
if (menuItem.menu.popoverHandle != 0) {
connectCascadeSubMenuSignals(menuItem.menu);
}
if (menuItem.menu == null) continue;
/*
* Locate the popover by its menu model, not positionally: this also runs
* from "items-changed" mid create/dispose, when the item list and the
* bar's children are out of step and a positional walk wires the wrong menu.
*/
long popover = findNestedPopoverForModel(handle, menuItem.menu.modelHandle);
Comment thread
akurtakov marked this conversation as resolved.
/* Re-wire when the discovered popover differs from the cache (initial or GTK rebuilt it). */
if (popover != 0 && menuItem.menu.popoverHandle != popover) {
wireSubMenuPopover(menuItem.menu, popover);
}
if (menuItem.menu.popoverHandle != 0) {
connectCascadeSubMenuSignals(menuItem.menu);
}
barItem = GTK4.gtk_widget_get_next_sibling(barItem);
}
}

Expand Down Expand Up @@ -1093,18 +1092,6 @@ private long findNestedPopoverForModel(long parentWidget, long targetModel) {
return 0;
}


private long findGtkPopoverMenuChild(long barItem) {
long child = GTK4.gtk_widget_get_first_child(barItem);
while (child != 0) {
if (GTK4.GTK_IS_POPOVER_MENU(child)) {
return child;
}
child = GTK4.gtk_widget_get_next_sibling(child);
}
return 0;
}

@Override
long gtk_hide (long widget) {
if ((style & SWT.POP_UP) != 0) {
Expand Down Expand Up @@ -1149,7 +1136,6 @@ long gtk_show (long widget) {
return 0;
}


@Override
long gtk3_show_help (long widget, long helpType) {
if (sendHelpEvent (helpType)) {
Expand Down Expand Up @@ -1184,7 +1170,6 @@ long gtk_menu_popped_up (long widget, long flipped_rect, long final_rect, long f
return 0;
}


@Override
void hookEvents() {
super.hookEvents();
Expand Down
Loading