summarylogtreecommitdiffstats
path: root/Added-key-binding-Del-to-terminate-and-Shift-Del-to-kill-task.patch
diff options
context:
space:
mode:
Diffstat (limited to 'Added-key-binding-Del-to-terminate-and-Shift-Del-to-kill-task.patch')
-rw-r--r--Added-key-binding-Del-to-terminate-and-Shift-Del-to-kill-task.patch161
1 files changed, 161 insertions, 0 deletions
diff --git a/Added-key-binding-Del-to-terminate-and-Shift-Del-to-kill-task.patch b/Added-key-binding-Del-to-terminate-and-Shift-Del-to-kill-task.patch
new file mode 100644
index 000000000000..c5abb2e74878
--- /dev/null
+++ b/Added-key-binding-Del-to-terminate-and-Shift-Del-to-kill-task.patch
@@ -0,0 +1,161 @@
+From c8a03903c6a8519fcd6f84be73fccd1674e8289b Mon Sep 17 00:00:00 2001
+From: Raimar <no@email.de>
+Date: Sun, 8 Jun 2014 13:21:17 +0200
+Subject: [PATCH] Added key binding Del to terminate and Shift+Del to kill task
+
+---
+ src/callbacks.c | 7 +++++--
+ src/callbacks.h | 1 +
+ src/interface.c | 23 +++++++++++++++++++----
+ src/interface.h | 2 +-
+ src/main.c | 2 ++
+ 5 files changed, 28 insertions(+), 7 deletions(-)
+
+diff --git a/src/callbacks.c b/src/callbacks.c
+index ce27ca7..8716520 100644
+--- a/src/callbacks.c
++++ b/src/callbacks.c
+@@ -39,13 +39,16 @@ gboolean on_treeview1_button_press_event(GtkButton *button, GdkEventButton *even
+ if(event->button == 3)
+ {
+ GdkEventButton *mouseevent = (GdkEventButton *)event;
+- if(taskpopup == NULL)
+- taskpopup = create_taskpopup ();
+ gtk_menu_popup(GTK_MENU(taskpopup), NULL, NULL, NULL, NULL, mouseevent->button, mouseevent->time);
+ }
+ return FALSE;
+ }
+
++gboolean on_treeview_popup_menu(GtkWidget* treeview, gpointer user_data) {
++ gtk_menu_popup(GTK_MENU(taskpopup), NULL, NULL, NULL, NULL, 0, gdk_event_get_time(NULL));
++ return TRUE;
++}
++
+ void handle_task_menu(GtkWidget *widget, gchar *signal)
+ {
+ if(signal != NULL)
+diff --git a/src/callbacks.h b/src/callbacks.h
+index 323b569..192c1cf 100644
+--- a/src/callbacks.h
++++ b/src/callbacks.h
+@@ -36,6 +36,7 @@
+ void on_button1_button_press_event(GtkButton *button, GdkEventButton *event);
+ void on_button3_toggled_event(GtkButton *button, GdkEventButton *event);
+ gboolean on_treeview1_button_press_event(GtkButton *button, GdkEventButton *event);
++gboolean on_treeview_popup_menu(GtkWidget* treeview, gpointer user_data);
+ void handle_task_menu(GtkWidget *widget, gchar *signal);
+ void handle_prio_menu(GtkWidget *widget, gchar *prio);
+ void on_show_tasks_toggled (GtkMenuItem *menuitem, gint uid);
+diff --git a/src/interface.c b/src/interface.c
+index 1f98351..c6c09ad 100644
+--- a/src/interface.c
++++ b/src/interface.c
+@@ -38,6 +38,9 @@ extern guint refresh_interval;
+ extern guint rID;
+ GtkWidget *refresh_spin;
+
++// internal forward declarations
++void create_taskpopup(GtkAccelGroup* accel_group);
++
+ GtkWidget* create_main_window (void)
+ {
+ GtkWidget *window;
+@@ -106,6 +109,8 @@ GtkWidget* create_main_window (void)
+
+ gtk_widget_show_all( menubar );
+
++ create_taskpopup(accel_group);
++
+ /* window content */
+ vbox1 = gtk_vbox_new (FALSE, 10);
+ gtk_widget_show (vbox1);
+@@ -151,6 +156,8 @@ GtkWidget* create_main_window (void)
+ create_list_store();
+
+ selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(treeview));
++ // exactly one row is always selected
++ gtk_tree_selection_set_mode(selection, GTK_SELECTION_BROWSE);
+
+ gtk_tree_view_set_model(GTK_TREE_VIEW(treeview), GTK_TREE_MODEL(list_store));
+
+@@ -171,6 +178,7 @@ GtkWidget* create_main_window (void)
+
+ g_signal_connect ((gpointer) window, "destroy", G_CALLBACK (on_quit), NULL);
+ g_signal_connect_swapped ((gpointer) treeview, "button-press-event", G_CALLBACK(on_treeview1_button_press_event), NULL);
++ g_signal_connect(treeview, "popup-menu", (GCallback) on_treeview_popup_menu, NULL);
+ g_signal_connect ((gpointer) button1, "clicked", G_CALLBACK (on_quit), NULL);
+ g_signal_connect ((gpointer) button3, "toggled", G_CALLBACK (on_button3_toggled_event), NULL);
+
+@@ -246,9 +254,14 @@ void create_list_store(void)
+ change_list_store_view();
+ }
+
+-GtkWidget* create_taskpopup (void)
++void select_first_row_of_list_store(void) {
++ GtkTreeIter iter;
++ gtk_tree_model_get_iter_first(GTK_TREE_MODEL(list_store), &iter);
++ gtk_tree_selection_select_iter(selection, &iter);
++}
++
++void create_taskpopup(GtkAccelGroup* accel_group)
+ {
+- GtkWidget *taskpopup;
+ GtkWidget *menu_item;
+
+ taskpopup = gtk_menu_new ();
+@@ -264,11 +277,15 @@ GtkWidget* create_taskpopup (void)
+ g_signal_connect ((gpointer) menu_item, "activate", G_CALLBACK (handle_task_menu), "CONT");
+
+ menu_item = gtk_menu_item_new_with_mnemonic (_("Term"));
++ gtk_widget_add_accelerator(menu_item, "activate", accel_group,
++ GDK_KEY_Delete, (GdkModifierType)0, GTK_ACCEL_VISIBLE);
+ gtk_widget_show (menu_item);
+ gtk_container_add (GTK_CONTAINER (taskpopup), menu_item);
+ g_signal_connect ((gpointer) menu_item, "activate", G_CALLBACK (handle_task_menu), "TERM");
+
+ menu_item = gtk_menu_item_new_with_mnemonic (_("Kill"));
++ gtk_widget_add_accelerator(menu_item, "activate", accel_group,
++ GDK_KEY_Delete, (GdkModifierType) GDK_SHIFT_MASK, GTK_ACCEL_VISIBLE);
+ gtk_widget_show (menu_item);
+ gtk_container_add (GTK_CONTAINER (taskpopup), menu_item);
+ g_signal_connect ((gpointer) menu_item, "activate", G_CALLBACK (handle_task_menu), "KILL");
+@@ -277,8 +294,6 @@ GtkWidget* create_taskpopup (void)
+ gtk_menu_item_set_submenu((gpointer) menu_item, create_prio_submenu());
+ gtk_widget_show (menu_item);
+ gtk_container_add (GTK_CONTAINER (taskpopup), menu_item);
+-
+- return taskpopup;
+ }
+
+ GtkWidget *create_prio_submenu(void)
+diff --git a/src/interface.h b/src/interface.h
+index ba67bf1..b997af0 100644
+--- a/src/interface.h
++++ b/src/interface.h
+@@ -65,9 +65,9 @@ GtkTreeViewColumn *column;
+
+ void change_list_store_view(void);
+ void create_list_store(void);
++void select_first_row_of_list_store(void);
+
+ GtkWidget* create_main_window (void);
+-GtkWidget* create_taskpopup (void);
+ GtkWidget* create_mainmenu (void);
+ GtkWidget *create_prio_submenu(void);
+
+diff --git a/src/main.c b/src/main.c
+index 0421387..d96dfa9 100644
+--- a/src/main.c
++++ b/src/main.c
+@@ -88,6 +88,8 @@ int main (int argc, char *argv[])
+ if(!refresh_task_list())
+ return 0;
+
++ select_first_row_of_list_store();
++
+ rID = g_timeout_add_seconds(refresh_interval, (gpointer) refresh_task_list, NULL);
+
+ gtk_main ();
+--
+2.0.0
+