diff options
author | Christian Neumair <cneumair@gnome.org> | 2008-07-07 19:11:11 +0000 |
---|---|---|
committer | Christian Neumair <cneumair@src.gnome.org> | 2008-07-07 19:11:11 +0000 |
commit | fc599a2792e7ebbe75d7f08dc847863b2e53e510 (patch) | |
tree | b30359e2d87d9883110cc8f2957f1544beb73f0f | |
parent | 6609c546d01e9a794f6c58deedd757a558988ca9 (diff) | |
download | nautilus-multiview.tar.gz |
Make view active if slot is active during parent_set(), and not duringmultiview
2008-07-07 Christian Neumair <cneumair@gnome.org>
* src/file-manager/fm-directory-view.c (slot_inactive),
(fm_directory_view_set_property), (fm_directory_view_parent_set),
(fm_directory_view_class_init):
Make view active if slot is active during parent_set(), and not during
instantiation. Also merge/unmerge slot menus on these occassions.
This fixes the warnings about merged action groups with the same name
with GTK+ HEAD.
svn path=/branches/multiview/; revision=14327
-rw-r--r-- | ChangeLog | 10 | ||||
-rw-r--r-- | src/file-manager/fm-directory-view.c | 43 |
2 files changed, 46 insertions, 7 deletions
@@ -1,5 +1,15 @@ 2008-07-07 Christian Neumair <cneumair@gnome.org> + * src/file-manager/fm-directory-view.c (slot_inactive), + (fm_directory_view_set_property), (fm_directory_view_parent_set), + (fm_directory_view_class_init): + Make view active if slot is active during parent_set(), and not during + instantiation. Also merge/unmerge slot menus on these occassions. + This fixes the warnings about merged action groups with the same name + with GTK+ HEAD. + +2008-07-07 Christian Neumair <cneumair@gnome.org> + * src/file-manager/fm-tree-view.c (got_activation_uri_callback), (button_pressed_callback), (fm_tree_view_activate_file): * src/nautilus-places-sidebar.c (open_selected_bookmark), diff --git a/src/file-manager/fm-directory-view.c b/src/file-manager/fm-directory-view.c index eeb208239..79e4ac12d 100644 --- a/src/file-manager/fm-directory-view.c +++ b/src/file-manager/fm-directory-view.c @@ -1687,7 +1687,8 @@ static void slot_inactive (NautilusWindowSlot *slot, FMDirectoryView *view) { - g_assert (view->details->active); + g_assert (view->details->active || + GTK_WIDGET (view)->parent == NULL); view->details->active = FALSE; fm_directory_view_unmerge_menus (view); @@ -8771,12 +8772,6 @@ fm_directory_view_set_property (GObject *object, "hidden-files-mode-changed", G_CALLBACK (hidden_files_mode_changed), directory_view, 0); fm_directory_view_init_show_hidden_files (directory_view); - - if (directory_view->details->slot == - nautilus_window_info_get_active_slot (window)) { - slot_active (directory_view->details->slot, directory_view); - } - break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); @@ -8817,6 +8812,39 @@ fm_directory_view_scroll_event (GtkWidget *widget, return GTK_WIDGET_CLASS (parent_class)->scroll_event (widget, event); } + +static void +fm_directory_view_parent_set (GtkWidget *widget, + GtkWidget *old_parent) +{ + FMDirectoryView *view; + GtkWidget *parent; + + view = FM_DIRECTORY_VIEW (widget); + + parent = gtk_widget_get_parent (widget); + g_assert (parent == NULL || old_parent == NULL); + + if (GTK_WIDGET_CLASS (parent_class)->parent_set != NULL) { + GTK_WIDGET_CLASS (parent_class)->parent_set (widget, old_parent); + } + + if (parent != NULL) { + g_assert (old_parent == NULL); + + if (view->details->slot == + nautilus_window_info_get_active_slot (view->details->window)) { + view->details->active = TRUE; + + fm_directory_view_merge_menus (view); + schedule_update_menus (view); + } + } else { + fm_directory_view_unmerge_menus (view); + remove_update_menus_timeout_callback (view); + } +} + static void fm_directory_view_class_init (FMDirectoryViewClass *klass) { @@ -8833,6 +8861,7 @@ fm_directory_view_class_init (FMDirectoryViewClass *klass) GTK_OBJECT_CLASS (klass)->destroy = fm_directory_view_destroy; widget_class->scroll_event = fm_directory_view_scroll_event; + widget_class->parent_set = fm_directory_view_parent_set; /* Get rid of the strange 3-pixel gap that GtkScrolledWindow * uses by default. It does us no good. |