menu: Fixate size calculated by gdk_window_move_to_rect()
When we receive a size from the move-to-rect implementation, force GTK to continue using that size until reconfigured by move-to-rect, or when remapped. Fixes: #1651
This commit is contained in:
@ -1398,6 +1398,11 @@ moved_to_rect_cb (GdkWindow *window,
|
|||||||
gboolean flipped_y,
|
gboolean flipped_y,
|
||||||
GtkMenu *menu)
|
GtkMenu *menu)
|
||||||
{
|
{
|
||||||
|
GtkMenuPrivate *priv = menu->priv;
|
||||||
|
|
||||||
|
gtk_window_fixate_size (GTK_WINDOW (priv->toplevel));
|
||||||
|
|
||||||
|
if (!priv->emulated_move_to_rect)
|
||||||
g_signal_emit (menu,
|
g_signal_emit (menu,
|
||||||
menu_signals[POPPED_UP],
|
menu_signals[POPPED_UP],
|
||||||
0,
|
0,
|
||||||
@ -5287,9 +5292,9 @@ gtk_menu_position (GtkMenu *menu,
|
|||||||
|
|
||||||
g_signal_handlers_disconnect_by_func (toplevel, moved_to_rect_cb, menu);
|
g_signal_handlers_disconnect_by_func (toplevel, moved_to_rect_cb, menu);
|
||||||
|
|
||||||
if (!emulated_move_to_rect)
|
|
||||||
g_signal_connect (toplevel, "moved-to-rect", G_CALLBACK (moved_to_rect_cb),
|
g_signal_connect (toplevel, "moved-to-rect", G_CALLBACK (moved_to_rect_cb),
|
||||||
menu);
|
menu);
|
||||||
|
priv->emulated_move_to_rect = emulated_move_to_rect;
|
||||||
|
|
||||||
gdk_window_move_to_rect (toplevel,
|
gdk_window_move_to_rect (toplevel,
|
||||||
&rect,
|
&rect,
|
||||||
|
@ -62,6 +62,7 @@ struct _GtkMenuPrivate
|
|||||||
gint rect_anchor_dx;
|
gint rect_anchor_dx;
|
||||||
gint rect_anchor_dy;
|
gint rect_anchor_dy;
|
||||||
GdkWindowTypeHint menu_type_hint;
|
GdkWindowTypeHint menu_type_hint;
|
||||||
|
gboolean emulated_move_to_rect;
|
||||||
|
|
||||||
guint toggle_size;
|
guint toggle_size;
|
||||||
guint accel_size;
|
guint accel_size;
|
||||||
|
Reference in New Issue
Block a user