diff options
author | Ramiro Estrugo <ramiro@src.gnome.org> | 2001-03-31 09:24:21 +0000 |
---|---|---|
committer | Ramiro Estrugo <ramiro@src.gnome.org> | 2001-03-31 09:24:21 +0000 |
commit | bcf01d56d812e542298e5d24956e536e80eede6e (patch) | |
tree | 1f1b9ea74b11a305fe55dd2b439780d2f0c53ce3 | |
parent | 1112db52e478c6bd0039d08ffcc3ae3924d0f57f (diff) | |
download | nautilus-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-- | ChangeLog | 14 | ||||
-rw-r--r-- | libnautilus-extensions/nautilus-preferences-box.c | 37 | ||||
-rw-r--r-- | libnautilus-extensions/nautilus-preferences-box.h | 14 | ||||
-rw-r--r-- | libnautilus-private/nautilus-preferences-box.c | 37 | ||||
-rw-r--r-- | libnautilus-private/nautilus-preferences-box.h | 14 |
5 files changed, 80 insertions, 36 deletions
@@ -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 |