comparison gtk4/dw.c @ 2302:785775b9002f

GTK4: Use gtk_popover_set_pointing_to() to position the popover instead of gtk_popover_set_offset(). Still not perfect, might need to make it window relative instead of desktop relative.
author bsmith@81767d24-ef19-dc11-ae90-00e081727c95
date Tue, 09 Feb 2021 00:34:17 +0000
parents 69b06073a87d
children cdd8459add40
comparison
equal deleted inserted replaced
2301:69b06073a87d 2302:785775b9002f
2576 void dw_menu_popup(HMENUI *menu, HWND parent, int x, int y) 2576 void dw_menu_popup(HMENUI *menu, HWND parent, int x, int y)
2577 { 2577 {
2578 if(menu && *menu && G_MENU(*menu)) 2578 if(menu && *menu && G_MENU(*menu))
2579 { 2579 {
2580 GtkWidget *tmp = gtk_popover_menu_new_from_model_full(G_MENU_MODEL(*menu), GTK_POPOVER_MENU_NESTED); 2580 GtkWidget *tmp = gtk_popover_menu_new_from_model_full(G_MENU_MODEL(*menu), GTK_POPOVER_MENU_NESTED);
2581 GdkRectangle rect = { x, y, 1, 1 };
2581 2582
2582 gtk_widget_set_parent(tmp, GTK_WIDGET(parent)); 2583 gtk_widget_set_parent(tmp, GTK_WIDGET(parent));
2583 _dw_menu_set_group_recursive(*menu, GTK_WIDGET(tmp)); 2584 _dw_menu_set_group_recursive(*menu, GTK_WIDGET(tmp));
2584 gtk_popover_set_autohide(GTK_POPOVER(tmp), TRUE); 2585 gtk_popover_set_autohide(GTK_POPOVER(tmp), TRUE);
2585 #if 0 2586 gtk_popover_set_has_arrow (GTK_POPOVER(tmp), FALSE);
2586 gtk_popover_set_offset(GTK_POPOVER(tmp), x, y); 2587 gtk_popover_set_pointing_to(GTK_POPOVER(tmp), &rect);
2587 #endif
2588 g_signal_connect(G_OBJECT(tmp), "closed", G_CALLBACK(_dw_popover_menu_closed), (gpointer)parent); 2588 g_signal_connect(G_OBJECT(tmp), "closed", G_CALLBACK(_dw_popover_menu_closed), (gpointer)parent);
2589 gtk_popover_popup(GTK_POPOVER(tmp)); 2589 gtk_popover_popup(GTK_POPOVER(tmp));
2590 *menu = NULL; 2590 *menu = NULL;
2591 } 2591 }
2592 } 2592 }