summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Neumair <cneumair@gnome.org>2008-07-07 19:11:11 +0000
committerChristian Neumair <cneumair@src.gnome.org>2008-07-07 19:11:11 +0000
commitfc599a2792e7ebbe75d7f08dc847863b2e53e510 (patch)
treeb30359e2d87d9883110cc8f2957f1544beb73f0f
parent6609c546d01e9a794f6c58deedd757a558988ca9 (diff)
downloadnautilus-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--ChangeLog10
-rw-r--r--src/file-manager/fm-directory-view.c43
2 files changed, 46 insertions, 7 deletions
diff --git a/ChangeLog b/ChangeLog
index 17f1865cb..ac831eb8e 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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.