Mercurial > dwindows
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 } |