[gnumeric] Add support in recent files dialog for multiple selesction and double click. [#759160]
- From: Jean Bréfort <jbrefort src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnumeric] Add support in recent files dialog for multiple selesction and double click. [#759160]
- Date: Tue, 8 Dec 2015 21:33:44 +0000 (UTC)
commit 09b55e9312122ab448a985644bfc44e863a27d17
Author: Jean Brefort <jean brefort normalesup org>
Date: Tue Dec 8 22:31:40 2015 +0100
Add support in recent files dialog for multiple selesction and double click. [#759160]
NEWS | 4 +++
src/dialogs/ChangeLog | 6 ++++
src/dialogs/dialog-recent.c | 58 +++++++++++++++++++++++++++++--------------
3 files changed, 49 insertions(+), 19 deletions(-)
---
diff --git a/NEWS b/NEWS
index fef5a92..dc7326d 100644
--- a/NEWS
+++ b/NEWS
@@ -1,5 +1,9 @@
Gnumeric 1.12.25
+Jean:
+ * Add support in recent files dialog for multiple selesction and double
+ click. [#759160]
+
Morten:
* Fix TABLE problems. [#752181] [#752178] [#752182]
* Fuzzed file fixes. [#752179] [#752180]
diff --git a/src/dialogs/ChangeLog b/src/dialogs/ChangeLog
index ba36b40..bc2c299 100644
--- a/src/dialogs/ChangeLog
+++ b/src/dialogs/ChangeLog
@@ -1,3 +1,9 @@
+2015-12-08 Jean Brefort <jean brefort normalesup org>
+
+ * dialog-recent.c (cb_selected), (cb_response), (cb_button_press),
+ (dialog_recent_used): add support for multiple selesction and double
+ click. [#759160]
+
2015-11-19 Morten Welinder <terra gnome org>
* recent.ui: Fix tooltip for open button
diff --git a/src/dialogs/dialog-recent.c b/src/dialogs/dialog-recent.c
index b7b1d36..2ebf77e 100644
--- a/src/dialogs/dialog-recent.c
+++ b/src/dialogs/dialog-recent.c
@@ -40,6 +40,23 @@ enum {
/* ------------------------------------------------------------------------- */
static void
+cb_selected (GtkTreeModel *model,
+ G_GNUC_UNUSED GtkTreePath *path,
+ GtkTreeIter *iter,
+ WBCGtk *wbcg)
+{
+ char *uri = NULL;
+ GtkRecentInfo *info;
+ gtk_tree_model_get (model, iter, RECENT_COL_INFO, &info, -1);
+ uri = g_strdup (gtk_recent_info_get_uri (info));
+ gtk_recent_info_unref (info);
+ if (uri) {
+ gui_file_read (wbcg, uri, NULL, NULL);
+ g_free (uri);
+ }
+}
+
+static void
cb_response (GtkWidget *dialog,
gint response_id,
WBCGtk *wbcg)
@@ -49,27 +66,10 @@ cb_response (GtkWidget *dialog,
GtkTreeSelection *tsel = gtk_tree_view_get_selection (tv);
switch (response_id) {
- case GTK_RESPONSE_OK: {
- GtkTreeModel *model;
- GtkTreeIter iter;
- char *uri = NULL;
-
- if (gtk_tree_selection_get_selected (tsel, &model, &iter)) {
- GtkRecentInfo *info;
- gtk_tree_model_get (model, &iter, RECENT_COL_INFO, &info, -1);
- uri = g_strdup (gtk_recent_info_get_uri (info));
- gtk_recent_info_unref (info);
- }
-
+ case GTK_RESPONSE_OK:
+ gtk_tree_selection_selected_foreach (tsel, (GtkTreeSelectionForeachFunc) cb_selected, wbcg);
gtk_widget_destroy (dialog);
-
- if (uri) {
- gui_file_read (wbcg, uri, NULL, NULL);
- g_free (uri);
- }
-
break;
- }
default:
gtk_widget_destroy (dialog);
@@ -118,6 +118,18 @@ cb_key_press (GtkWidget *widget, GdkEventKey *event)
return FALSE;
}
+static gboolean
+cb_button_press (GtkWidget *w, GdkEventButton *ev, WBCGtk *wbcg)
+{
+ if (ev->type == GDK_2BUTTON_PRESS && ev->button == 1) {
+ GtkWidget *dlg = gtk_widget_get_toplevel (w);
+ if (GTK_IS_DIALOG (dlg)) {
+ cb_response (dlg, GTK_RESPONSE_OK, wbcg);
+ return TRUE;
+ }
+ }
+ return FALSE;
+}
static void
url_renderer_func (GtkTreeViewColumn *tree_column,
@@ -293,6 +305,8 @@ dialog_recent_used (WBCGtk *wbcg)
GtkWidget *w;
int width, height, vsep;
PangoLayout *layout;
+ GtkTreeView *tv;
+ GtkTreeSelection *tsel;
w = GTK_WIDGET (wbcg_toplevel (wbcg));
layout = gtk_widget_create_pango_layout (w, "Mg19");
@@ -302,12 +316,18 @@ dialog_recent_used (WBCGtk *wbcg)
g_signal_connect (w, "key-press-event",
G_CALLBACK (cb_key_press),
NULL);
+ g_signal_connect (w, "button-press-event",
+ G_CALLBACK (cb_button_press),
+ wbcg);
pango_layout_get_pixel_size (layout, &width, &height);
gtk_widget_set_size_request (go_gtk_builder_get_widget (gui, "docs_scrolledwindow"),
width * 60 / 4,
(2 * height + vsep) * (5 + 1));
g_object_unref (layout);
+ tv = GTK_TREE_VIEW (gtk_builder_get_object (gui, "docs_treeview"));
+ tsel = gtk_tree_view_get_selection (tv);
+ gtk_tree_selection_set_mode (tsel, GTK_SELECTION_MULTIPLE);
}
g_signal_connect_swapped (gtk_builder_get_object (gui, "existing_only_button"),
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]