summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRamiro Estrugo <ramiro@src.gnome.org>2001-03-31 09:24:21 +0000
committerRamiro Estrugo <ramiro@src.gnome.org>2001-03-31 09:24:21 +0000
commitbcf01d56d812e542298e5d24956e536e80eede6e (patch)
tree1f1b9ea74b11a305fe55dd2b439780d2f0c53ce3
parent1112db52e478c6bd0039d08ffcc3ae3924d0f57f (diff)
downloadnautilus-bcf01d56d812e542298e5d24956e536e80eede6e.tar.gz
If the preferences dialog is currently selecting a pane, then make sure
* libnautilus-extensions/nautilus-preferences-box.c: (preferences_box_select_pane), (preferences_box_category_list_recreate), (nautilus_preferences_box_new), (nautilus_preferences_box_find_pane): If the preferences dialog is currently selecting a pane, then make sure that pane gets selected again (if visible) after a user level change. * libnautilus-extensions/nautilus-preferences-box.h: Small paramater name tweaking.
-rw-r--r--ChangeLog14
-rw-r--r--libnautilus-extensions/nautilus-preferences-box.c37
-rw-r--r--libnautilus-extensions/nautilus-preferences-box.h14
-rw-r--r--libnautilus-private/nautilus-preferences-box.c37
-rw-r--r--libnautilus-private/nautilus-preferences-box.h14
5 files changed, 80 insertions, 36 deletions
diff --git a/ChangeLog b/ChangeLog
index 7acdb8e75..d2b75c068 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,19 @@
2001-03-31 Ramiro Estrugo <ramiro@eazel.com>
+ * libnautilus-extensions/nautilus-preferences-box.c:
+ (preferences_box_select_pane),
+ (preferences_box_category_list_recreate),
+ (nautilus_preferences_box_new),
+ (nautilus_preferences_box_find_pane):
+ If the preferences dialog is currently selecting a pane, then make
+ sure that pane gets selected again (if visible) after a user level
+ change.
+
+ * libnautilus-extensions/nautilus-preferences-box.h:
+ Small paramater name tweaking.
+
+2001-03-31 Ramiro Estrugo <ramiro@eazel.com>
+
* libnautilus-extensions/nautilus-preferences-item.h:
* libnautilus-extensions/nautilus-preferences-item.c:
(nautilus_preferences_item_update_showing): New function to update
diff --git a/libnautilus-extensions/nautilus-preferences-box.c b/libnautilus-extensions/nautilus-preferences-box.c
index 0a80758c4..e5be90420 100644
--- a/libnautilus-extensions/nautilus-preferences-box.c
+++ b/libnautilus-extensions/nautilus-preferences-box.c
@@ -47,6 +47,7 @@ struct _NautilusPreferencesBoxDetails
GtkWidget *pane_notebook;
GList *panes;
char *selected_pane;
+ guint select_row_signal_id;
};
/* NautilusPreferencesBoxClass methods */
@@ -161,13 +162,16 @@ preferences_box_select_pane (NautilusPreferencesBox *preferences_box,
gtk_widget_show (info->pane_widget);
gtk_notebook_set_page (GTK_NOTEBOOK (preferences_box->details->pane_notebook),
g_list_position (preferences_box->details->panes, pane_iterator));
+
+ g_free (preferences_box->details->selected_pane);
+ preferences_box->details->selected_pane = g_strdup (pane_name);
+ return;
}
pane_iterator = pane_iterator->next;
}
- g_free (preferences_box->details->selected_pane);
- preferences_box->details->selected_pane = g_strdup (pane_name);
+ g_warning ("Pane '%s' could not be found.", pane_name);
}
int
@@ -196,6 +200,13 @@ preferences_box_category_list_recreate (NautilusPreferencesBox *preferences_box)
g_return_if_fail (NAUTILUS_IS_PREFERENCES_BOX (preferences_box));
g_return_if_fail (GTK_IS_CLIST (preferences_box->details->category_list));
+ /* Block the select_row signal so that the 1st item doesnt get selected.
+ * Otherwise, we lose the selected_pane.
+ */
+ g_assert (preferences_box->details->select_row_signal_id != 0);
+ gtk_signal_handler_block (GTK_OBJECT (preferences_box->details->category_list),
+ preferences_box->details->select_row_signal_id);
+
gtk_clist_clear (GTK_CLIST (preferences_box->details->category_list));
for (iterator = preferences_box->details->panes; iterator != NULL; iterator = iterator->next) {
@@ -211,15 +222,19 @@ preferences_box_category_list_recreate (NautilusPreferencesBox *preferences_box)
gtk_clist_append (GTK_CLIST (preferences_box->details->category_list), text_array);
if (nautilus_str_is_equal (info->pane_name, preferences_box->details->selected_pane)) {
- row = preferences_box_find_row (GTK_CLIST (preferences_box->details->category_list), info->pane_name);
-
+ row = preferences_box_find_row (GTK_CLIST (preferences_box->details->category_list),
+ info->pane_name);
+
if (row == -1) {
row = 0;
}
}
}
}
-
+
+ gtk_signal_handler_unblock (GTK_OBJECT (preferences_box->details->category_list),
+ preferences_box->details->select_row_signal_id);
+
/* You have to do this to get the highlighted row in the clist to change for some reason */
gtk_clist_select_row (GTK_CLIST (preferences_box->details->category_list), row, 0);
@@ -297,11 +312,12 @@ nautilus_preferences_box_new (const char *box_title)
/* The category list */
preferences_box->details->category_list = gtk_clist_new (NUM_CATEGORY_COLUMNS);
-
- gtk_signal_connect (GTK_OBJECT (preferences_box->details->category_list),
- "select_row",
- GTK_SIGNAL_FUNC (category_list_select_row_callback),
- preferences_box);
+
+ preferences_box->details->select_row_signal_id =
+ gtk_signal_connect (GTK_OBJECT (preferences_box->details->category_list),
+ "select_row",
+ GTK_SIGNAL_FUNC (category_list_select_row_callback),
+ preferences_box);
gtk_clist_set_selection_mode (GTK_CLIST (preferences_box->details->category_list),
GTK_SELECTION_BROWSE);
@@ -393,4 +409,3 @@ nautilus_preferences_box_find_pane (const NautilusPreferencesBox *preferences_bo
return NULL;
}
-
diff --git a/libnautilus-extensions/nautilus-preferences-box.h b/libnautilus-extensions/nautilus-preferences-box.h
index 3b3a8e08a..78d06b63e 100644
--- a/libnautilus-extensions/nautilus-preferences-box.h
+++ b/libnautilus-extensions/nautilus-preferences-box.h
@@ -57,13 +57,13 @@ struct _NautilusPreferencesBoxClass
void (*activate) (GtkWidget *preferences_box, gint entry_number);
};
-GtkType nautilus_preferences_box_get_type (void);
-GtkWidget* nautilus_preferences_box_new (const char *box_title);
-GtkWidget* nautilus_preferences_box_add_pane (NautilusPreferencesBox *prefs_box,
- const char *pane_title);
-void nautilus_preferences_box_update (NautilusPreferencesBox *prefs_box);
-GtkWidget* nautilus_preferences_box_find_pane (const NautilusPreferencesBox *prefs_box,
- const char *pane_name);
+GtkType nautilus_preferences_box_get_type (void);
+GtkWidget* nautilus_preferences_box_new (const char *box_title);
+GtkWidget* nautilus_preferences_box_add_pane (NautilusPreferencesBox *preferences_box,
+ const char *pane_title);
+void nautilus_preferences_box_update (NautilusPreferencesBox *preferences_box);
+GtkWidget* nautilus_preferences_box_find_pane (const NautilusPreferencesBox *preferences_box,
+ const char *pane_name);
END_GNOME_DECLS
diff --git a/libnautilus-private/nautilus-preferences-box.c b/libnautilus-private/nautilus-preferences-box.c
index 0a80758c4..e5be90420 100644
--- a/libnautilus-private/nautilus-preferences-box.c
+++ b/libnautilus-private/nautilus-preferences-box.c
@@ -47,6 +47,7 @@ struct _NautilusPreferencesBoxDetails
GtkWidget *pane_notebook;
GList *panes;
char *selected_pane;
+ guint select_row_signal_id;
};
/* NautilusPreferencesBoxClass methods */
@@ -161,13 +162,16 @@ preferences_box_select_pane (NautilusPreferencesBox *preferences_box,
gtk_widget_show (info->pane_widget);
gtk_notebook_set_page (GTK_NOTEBOOK (preferences_box->details->pane_notebook),
g_list_position (preferences_box->details->panes, pane_iterator));
+
+ g_free (preferences_box->details->selected_pane);
+ preferences_box->details->selected_pane = g_strdup (pane_name);
+ return;
}
pane_iterator = pane_iterator->next;
}
- g_free (preferences_box->details->selected_pane);
- preferences_box->details->selected_pane = g_strdup (pane_name);
+ g_warning ("Pane '%s' could not be found.", pane_name);
}
int
@@ -196,6 +200,13 @@ preferences_box_category_list_recreate (NautilusPreferencesBox *preferences_box)
g_return_if_fail (NAUTILUS_IS_PREFERENCES_BOX (preferences_box));
g_return_if_fail (GTK_IS_CLIST (preferences_box->details->category_list));
+ /* Block the select_row signal so that the 1st item doesnt get selected.
+ * Otherwise, we lose the selected_pane.
+ */
+ g_assert (preferences_box->details->select_row_signal_id != 0);
+ gtk_signal_handler_block (GTK_OBJECT (preferences_box->details->category_list),
+ preferences_box->details->select_row_signal_id);
+
gtk_clist_clear (GTK_CLIST (preferences_box->details->category_list));
for (iterator = preferences_box->details->panes; iterator != NULL; iterator = iterator->next) {
@@ -211,15 +222,19 @@ preferences_box_category_list_recreate (NautilusPreferencesBox *preferences_box)
gtk_clist_append (GTK_CLIST (preferences_box->details->category_list), text_array);
if (nautilus_str_is_equal (info->pane_name, preferences_box->details->selected_pane)) {
- row = preferences_box_find_row (GTK_CLIST (preferences_box->details->category_list), info->pane_name);
-
+ row = preferences_box_find_row (GTK_CLIST (preferences_box->details->category_list),
+ info->pane_name);
+
if (row == -1) {
row = 0;
}
}
}
}
-
+
+ gtk_signal_handler_unblock (GTK_OBJECT (preferences_box->details->category_list),
+ preferences_box->details->select_row_signal_id);
+
/* You have to do this to get the highlighted row in the clist to change for some reason */
gtk_clist_select_row (GTK_CLIST (preferences_box->details->category_list), row, 0);
@@ -297,11 +312,12 @@ nautilus_preferences_box_new (const char *box_title)
/* The category list */
preferences_box->details->category_list = gtk_clist_new (NUM_CATEGORY_COLUMNS);
-
- gtk_signal_connect (GTK_OBJECT (preferences_box->details->category_list),
- "select_row",
- GTK_SIGNAL_FUNC (category_list_select_row_callback),
- preferences_box);
+
+ preferences_box->details->select_row_signal_id =
+ gtk_signal_connect (GTK_OBJECT (preferences_box->details->category_list),
+ "select_row",
+ GTK_SIGNAL_FUNC (category_list_select_row_callback),
+ preferences_box);
gtk_clist_set_selection_mode (GTK_CLIST (preferences_box->details->category_list),
GTK_SELECTION_BROWSE);
@@ -393,4 +409,3 @@ nautilus_preferences_box_find_pane (const NautilusPreferencesBox *preferences_bo
return NULL;
}
-
diff --git a/libnautilus-private/nautilus-preferences-box.h b/libnautilus-private/nautilus-preferences-box.h
index 3b3a8e08a..78d06b63e 100644
--- a/libnautilus-private/nautilus-preferences-box.h
+++ b/libnautilus-private/nautilus-preferences-box.h
@@ -57,13 +57,13 @@ struct _NautilusPreferencesBoxClass
void (*activate) (GtkWidget *preferences_box, gint entry_number);
};
-GtkType nautilus_preferences_box_get_type (void);
-GtkWidget* nautilus_preferences_box_new (const char *box_title);
-GtkWidget* nautilus_preferences_box_add_pane (NautilusPreferencesBox *prefs_box,
- const char *pane_title);
-void nautilus_preferences_box_update (NautilusPreferencesBox *prefs_box);
-GtkWidget* nautilus_preferences_box_find_pane (const NautilusPreferencesBox *prefs_box,
- const char *pane_name);
+GtkType nautilus_preferences_box_get_type (void);
+GtkWidget* nautilus_preferences_box_new (const char *box_title);
+GtkWidget* nautilus_preferences_box_add_pane (NautilusPreferencesBox *preferences_box,
+ const char *pane_title);
+void nautilus_preferences_box_update (NautilusPreferencesBox *preferences_box);
+GtkWidget* nautilus_preferences_box_find_pane (const NautilusPreferencesBox *preferences_box,
+ const char *pane_name);
END_GNOME_DECLS