diff options
author | Georges Basile Stavracas Neto <georges.stavracas@gmail.com> | 2015-07-29 18:07:24 -0300 |
---|---|---|
committer | Georges Basile Stavracas Neto <georges.stavracas@gmail.com> | 2015-07-31 13:38:13 -0300 |
commit | 9c4f013e99dbfcafbfbce790e4e425a3f92928ca (patch) | |
tree | 4af621e74e3f45c90984e9e52a2b9604bf240315 /src/nautilus-view.c | |
parent | ba2da7b800e14f22e509161c5c038642c30f9b60 (diff) | |
download | nautilus-9c4f013e99dbfcafbfbce790e4e425a3f92928ca.tar.gz |
project: simplify focus chain
Nautilus classes add custom methods to grab the focus
differently according to the class.
The problem with this approach, however, is that we end
up with more code coupling, since it's necessary to include
more headers to use the custom grab methods.
To fix that, make classes override GtkWidget::grab_focus
method and remove the custom methods, so widgets can simply
call gtk_widget_grab_focus.
Diffstat (limited to 'src/nautilus-view.c')
-rw-r--r-- | src/nautilus-view.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/src/nautilus-view.c b/src/nautilus-view.c index da3583e6c..8aa68192d 100644 --- a/src/nautilus-view.c +++ b/src/nautilus-view.c @@ -2697,12 +2697,18 @@ slot_inactive (NautilusWindowSlot *slot, remove_update_context_menus_timeout_callback (view); } -void -nautilus_view_grab_focus (NautilusView *view) +static void +nautilus_view_grab_focus (GtkWidget *widget) { /* focus the child of the scrolled window if it exists */ + NautilusView *view; GtkWidget *child; + + view = NAUTILUS_VIEW (widget); child = gtk_bin_get_child (GTK_BIN (view->details->scrolled_window)); + + GTK_WIDGET_CLASS (nautilus_view_parent_class)->grab_focus (widget); + if (child) { gtk_widget_grab_focus (GTK_WIDGET (child)); } @@ -7744,6 +7750,7 @@ nautilus_view_class_init (NautilusViewClass *klass) widget_class->destroy = nautilus_view_destroy; widget_class->scroll_event = nautilus_view_scroll_event; widget_class->parent_set = nautilus_view_parent_set; + widget_class->grab_focus = nautilus_view_grab_focus; g_type_class_add_private (klass, sizeof (NautilusViewDetails)); |