[geany/geany-plugins] a5d8e3: GeanyVC: Allow to toggle single files with Space and Return keys

Enrico Tröger git-noreply at xxxxx
Sun Aug 9 11:25:53 UTC 2020


Branch:      refs/heads/master
Author:      Enrico Tröger <enrico.troeger at uvena.de>
Committer:   Enrico Tröger <enrico.troeger at uvena.de>
Date:        Sun, 09 Aug 2020 11:25:53 UTC
Commit:      a5d8e376ff0261013583d3ef118bc06667bda6da
             https://github.com/geany/geany-plugins/commit/a5d8e376ff0261013583d3ef118bc06667bda6da

Log Message:
-----------
GeanyVC: Allow to toggle single files with Space and Return keys

This comes in handy to quickly select and deselect single files in
the commit dialog.


Modified Paths:
--------------
    geanyvc/src/geanyvc.c

Modified: geanyvc/src/geanyvc.c
45 lines changed, 42 insertions(+), 3 deletions(-)
===================================================================
@@ -27,6 +27,7 @@
 #include <string.h>
 #include <glib.h>
 #include <glib/gstdio.h>
+#include <gdk/gdkkeysyms.h>
 #include <unistd.h>
 
 #ifdef HAVE_CONFIG_H
@@ -1199,9 +1200,8 @@ refresh_diff_view(GtkTreeView *treeview)
 }
 
 static void
-commit_toggled(G_GNUC_UNUSED GtkCellRendererToggle * cell, gchar * path_str, gpointer data)
+commit_toggle_commit(GtkTreeView *treeview, gchar * path_str)
 {
-	GtkTreeView *treeview = GTK_TREE_VIEW(data);
 	GtkTreeModel *model = gtk_tree_view_get_model(treeview);
 	GtkTreeIter iter;
 	GtkTreePath *path = gtk_tree_path_new_from_string(path_str);
@@ -1234,6 +1234,12 @@ commit_toggled(G_GNUC_UNUSED GtkCellRendererToggle * cell, gchar * path_str, gpo
 	g_free(filename);
 }
 
+static void
+commit_toggled_cb(G_GNUC_UNUSED GtkCellRendererToggle * cell, gchar * path_str, gpointer data)
+{
+	commit_toggle_commit(GTK_TREE_VIEW(data), path_str);
+}
+
 static gboolean
 toggle_all_commit_files (GtkTreeModel *model, GtkTreePath *path,
         GtkTreeIter *iter, gpointer data)
@@ -1262,7 +1268,7 @@ add_commit_columns(GtkTreeView * treeview)
 
 	/* column for fixed toggles */
 	renderer = gtk_cell_renderer_toggle_new();
-	g_signal_connect(renderer, "toggled", G_CALLBACK(commit_toggled), treeview);
+	g_signal_connect(renderer, "toggled", G_CALLBACK(commit_toggled_cb), treeview);
 
 	column = gtk_tree_view_column_new_with_attributes(_("Commit Y/N"),
 							  renderer, "active", COLUMN_COMMIT, NULL);
@@ -1414,6 +1420,37 @@ create_commit_message_history_combobox(void)
 	return combobox;
 }
 
+static gboolean commit_tree_view_key_release_cb(GtkWidget *widget, GdkEventKey *event,
+												G_GNUC_UNUSED gpointer user_data)
+{
+	if (event->keyval == GDK_KEY_space ||
+		event->keyval == GDK_KEY_Return ||
+		event->keyval == GDK_KEY_KP_Enter)
+	{
+		GtkTreeView *treeview = GTK_TREE_VIEW(widget);
+		GtkTreeModel *model;
+		GtkTreeIter iter;
+		GtkTreeSelection *sel;
+		GtkTreePath *path;
+		gchar *path_str;
+
+		sel = gtk_tree_view_get_selection(treeview);
+		if (! gtk_tree_selection_get_selected(sel, &model, &iter))
+			return FALSE;
+
+		path = gtk_tree_model_get_path(model, &iter);
+		if (path != NULL)
+		{
+			path_str = gtk_tree_path_to_string(path);
+
+			commit_toggle_commit(treeview, path_str);
+			gtk_tree_path_free(path);
+			g_free(path_str);
+		}
+	}
+	return FALSE;
+}
+
 static gboolean commit_text_line_number_update_cb(GtkWidget *widget, GdkEvent *event,
 												  gpointer user_data)
 {
@@ -1593,6 +1630,8 @@ create_commitDialog(void)
 	gtk_tree_selection_set_mode(sel, GTK_SELECTION_SINGLE);
 	g_signal_connect(sel, "changed", G_CALLBACK(commit_tree_selection_changed_cb), textDiff);
 
+	g_signal_connect(treeSelect, "key-release-event",
+		G_CALLBACK(commit_tree_view_key_release_cb), NULL);
 	g_signal_connect(textCommitMessage, "key-release-event",
 		G_CALLBACK(commit_text_line_number_update_cb), lineColumnLabel);
 	g_signal_connect(textCommitMessage, "button-release-event",



--------------
This E-Mail was brought to you by github_commit_mail.py (Source: https://github.com/geany/infrastructure).


More information about the Plugins-Commits mailing list