gtk+ r19475 - in branches/gtk-2-12: . gtk
- From: federico svn gnome org
- To: svn-commits-list gnome org
- Subject: gtk+ r19475 - in branches/gtk-2-12: . gtk
- Date: Tue, 5 Feb 2008 23:11:32 +0000 (GMT)
Author: federico
Date: Tue Feb 5 23:11:32 2008
New Revision: 19475
URL: http://svn.gnome.org/viewvc/gtk+?rev=19475&view=rev
Log:
Merge Josselin's patch for single-click shortcuts from trunk
2008-02-05 Federico Mena Quintero <federico novell com>
Merged from trunk (patch by Josselin Mouette <joss malsain org>):
reviewed by: Federico Mena Quintero
* gtk/gtkfilechooserdefault.c: (shortcuts_append_paths),
(shortcuts_add_bookmarks), (shortcuts_selection_changed_cb),
(shortcuts_list_create), (gtk_file_chooser_default_should_respond):
Make the shortcuts activate with a single click. (#148828)
Fix a few things affected by the change:
- Set selection mode to GTK_SELECTION_SINGLE to allow a case
where no shortcut is selected.
- Don't activate a shortcut in the response callback.
- Filter out duplicate entries in volumes and bookmarks to
avoid the selection to change when reordering them with DnD.
Signed-off-by: Federico Mena Quintero <federico gnu org>
Modified:
branches/gtk-2-12/ChangeLog
branches/gtk-2-12/gtk/gtkfilechooserdefault.c
Modified: branches/gtk-2-12/gtk/gtkfilechooserdefault.c
==============================================================================
--- branches/gtk-2-12/gtk/gtkfilechooserdefault.c (original)
+++ branches/gtk-2-12/gtk/gtkfilechooserdefault.c Tue Feb 5 23:11:32 2008
@@ -390,10 +390,6 @@
static void filter_combo_changed (GtkComboBox *combo_box,
GtkFileChooserDefault *impl);
-static void shortcuts_row_activated_cb (GtkTreeView *tree_view,
- GtkTreePath *path,
- GtkTreeViewColumn *column,
- GtkFileChooserDefault *impl);
static gboolean shortcuts_key_press_event_cb (GtkWidget *widget,
GdkEventKey *event,
@@ -1996,9 +1992,7 @@
profile_start ("start", NULL);
- /* As there is no separator now, we want to start there.
- */
- start_row = shortcuts_get_index (impl, SHORTCUTS_BOOKMARKS_SEPARATOR);
+ start_row = shortcuts_get_index (impl, SHORTCUTS_BOOKMARKS_SEPARATOR) + 1;
num_inserted = 0;
for (; paths; paths = paths->next)
@@ -2010,6 +2004,8 @@
if (impl->local_only &&
!gtk_file_system_path_is_local (impl->file_system, path))
continue;
+ if (shortcut_find_position (impl, path) != -1)
+ continue;
label = gtk_file_system_get_bookmark_label (impl->file_system, path);
@@ -2239,13 +2235,14 @@
impl->num_bookmarks + 1);
impl->num_bookmarks = 0;
+ shortcuts_insert_separator (impl, SHORTCUTS_BOOKMARKS_SEPARATOR);
bookmarks = gtk_file_system_list_bookmarks (impl->file_system);
shortcuts_append_paths (impl, bookmarks);
gtk_file_paths_free (bookmarks);
- if (impl->num_bookmarks > 0)
- shortcuts_insert_separator (impl, SHORTCUTS_BOOKMARKS_SEPARATOR);
+ if (impl->num_bookmarks == 0)
+ shortcuts_remove_rows (impl, shortcuts_get_index (impl, SHORTCUTS_BOOKMARKS_SEPARATOR), 1);
if (impl->shortcuts_pane_filter_model)
gtk_tree_model_filter_refilter (GTK_TREE_MODEL_FILTER (impl->shortcuts_pane_filter_model));
@@ -3651,8 +3648,22 @@
shortcuts_selection_changed_cb (GtkTreeSelection *selection,
GtkFileChooserDefault *impl)
{
+ GtkTreeIter iter;
+ GtkTreeIter child_iter;
+
bookmarks_check_remove_sensitivity (impl);
shortcuts_check_popup_sensitivity (impl);
+
+ if (impl->changing_folder)
+ return;
+
+ if (gtk_tree_selection_get_selected(selection, NULL, &iter))
+ {
+ gtk_tree_model_filter_convert_iter_to_child_iter (GTK_TREE_MODEL_FILTER (impl->shortcuts_pane_filter_model),
+ &child_iter,
+ &iter);
+ shortcuts_activate_iter (impl, &child_iter);
+ }
}
static gboolean
@@ -3924,7 +3935,7 @@
GDK_ACTION_COPY | GDK_ACTION_MOVE);
selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (impl->browse_shortcuts_tree_view));
- gtk_tree_selection_set_mode (selection, GTK_SELECTION_BROWSE);
+ gtk_tree_selection_set_mode (selection, GTK_SELECTION_SINGLE);
gtk_tree_selection_set_select_function (selection,
shortcuts_select_func,
impl, NULL);
@@ -3932,9 +3943,6 @@
g_signal_connect (selection, "changed",
G_CALLBACK (shortcuts_selection_changed_cb), impl);
- g_signal_connect (impl->browse_shortcuts_tree_view, "row_activated",
- G_CALLBACK (shortcuts_row_activated_cb), impl);
-
g_signal_connect (impl->browse_shortcuts_tree_view, "key_press_event",
G_CALLBACK (shortcuts_key_press_event_cb), impl);
@@ -8598,25 +8606,6 @@
gtk_file_path_free (path);
return retval;
}
- else if (impl->toplevel_last_focus_widget == impl->browse_shortcuts_tree_view)
- {
- /* The focus is on a dialog's action area button, *and* the widget that
- * was focused immediately before it is the shortcuts list. Switch to the
- * selected shortcut and tell the caller not to respond.
- */
- GtkTreeIter iter;
-
- if (shortcuts_get_selected (impl, &iter))
- {
- shortcuts_activate_iter (impl, &iter);
-
- focus_browse_tree_view_if_possible (impl);
- }
- else
- goto file_list;
-
- return FALSE;
- }
else if (impl->toplevel_last_focus_widget == impl->browse_files_tree_view)
{
/* The focus is on a dialog's action area button, *and* the widget that
@@ -10476,25 +10465,6 @@
}
}
-/* Callback used when a row in the shortcuts list is activated */
-static void
-shortcuts_row_activated_cb (GtkTreeView *tree_view,
- GtkTreePath *path,
- GtkTreeViewColumn *column,
- GtkFileChooserDefault *impl)
-{
- GtkTreeIter iter;
- GtkTreeIter child_iter;
-
- if (!gtk_tree_model_get_iter (impl->shortcuts_pane_filter_model, &iter, path))
- return;
-
- gtk_tree_model_filter_convert_iter_to_child_iter (GTK_TREE_MODEL_FILTER (impl->shortcuts_pane_filter_model),
- &child_iter,
- &iter);
- shortcuts_activate_iter (impl, &child_iter);
-}
-
/* Handler for GtkWidget::key-press-event on the shortcuts list */
static gboolean
shortcuts_key_press_event_cb (GtkWidget *widget,
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]