diff options
author | Matthias Clasen <mclasen@redhat.com> | 2021-04-11 15:22:00 -0400 |
---|---|---|
committer | Matthias Clasen <mclasen@redhat.com> | 2021-04-11 15:32:15 -0400 |
commit | e2420f62feb58fb21e7a73c061939f9652dd0891 (patch) | |
tree | 4ea7f5543210a8881a20e38c78e6940ed828c8a4 | |
parent | 6712106c25cbd9605bed09dc987ef544787e2619 (diff) | |
download | gtk+-e2420f62feb58fb21e7a73c061939f9652dd0891.tar.gz |
menubutton: Propagate focus-on-click
Propagate the focus-on-click setting to the button
inside, so that setting menubuttons as !focus-on-click
works as expected. This helps for menubuttons in
header bars, where dragging on the button will otherwise
steal focus from the content.
-rw-r--r-- | gtk/gtkmenubutton.c | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/gtk/gtkmenubutton.c b/gtk/gtkmenubutton.c index eee296e37f..15f06eb23a 100644 --- a/gtk/gtkmenubutton.c +++ b/gtk/gtkmenubutton.c @@ -215,6 +215,22 @@ gtk_menu_button_get_property (GObject *object, } static void +gtk_menu_button_notify (GObject *object, + GParamSpec *pspec) +{ + if (strcmp (pspec->name, "focus-on-click") == 0) + { + GtkMenuButton *self = GTK_MENU_BUTTON (object); + + gtk_widget_set_focus_on_click (self->button, + gtk_widget_get_focus_on_click (GTK_WIDGET (self))); + } + + if (G_OBJECT_CLASS (gtk_menu_button_parent_class)->notify) + G_OBJECT_CLASS (gtk_menu_button_parent_class)->notify (object, pspec); +} + +static void gtk_menu_button_state_flags_changed (GtkWidget *widget, GtkStateFlags previous_state_flags) { @@ -318,6 +334,7 @@ gtk_menu_button_class_init (GtkMenuButtonClass *klass) gobject_class->set_property = gtk_menu_button_set_property; gobject_class->get_property = gtk_menu_button_get_property; + gobject_class->notify = gtk_menu_button_notify; gobject_class->dispose = gtk_menu_button_dispose; widget_class->measure = gtk_menu_button_measure; |