[geany/geany-plugins] ec2433: commander: Respond on tree view row activation

Colomban Wendling git-noreply at xxxxx
Sat Aug 4 15:08:40 UTC 2012


Branch:      refs/heads/master
Author:      Colomban Wendling <ban at herbesfolles.org>
Committer:   Colomban Wendling <ban at herbesfolles.org>
Date:        Sat, 04 Aug 2012 15:08:40
Commit:      ec24335df83788abf3afab7055a6751fd921d6d4
             https://github.com/geany/geany-plugins/commit/ec24335df83788abf3afab7055a6751fd921d6d4

Log Message:
-----------
commander: Respond on tree view row activation


Modified Paths:
--------------
    commander/src/commander-plugin.c

Modified: commander/src/commander-plugin.c
75 files changed, 47 insertions(+), 28 deletions(-)
===================================================================
@@ -314,37 +314,14 @@ enum {
     case GDK_KEY_KP_Enter:
     case GDK_KEY_ISO_Enter: {
       GtkTreeIter       iter;
-      GtkTreeSelection *selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (plugin_data.view));
+      GtkTreeView      *view      = GTK_TREE_VIEW (plugin_data.view);
+      GtkTreeSelection *selection = gtk_tree_view_get_selection (view);
       GtkTreeModel     *model;
       
       if (gtk_tree_selection_get_selected (selection, &model, &iter)) {
-        gint type;
-        
-        gtk_tree_model_get (model, &iter, COL_TYPE, &type, -1);
-        
-        switch (type) {
-          case COL_TYPE_FILE: {
-            GeanyDocument  *doc;
-            gint            page;
-            
-            gtk_tree_model_get (model, &iter, COL_DOCUMENT, &doc, -1);
-            page = document_get_notebook_page (doc);
-            gtk_notebook_set_current_page (GTK_NOTEBOOK (geany_data->main_widgets->notebook),
-                                           page);
-            break;
-          }
-          
-          case COL_TYPE_MENU_ITEM: {
-            GtkMenuItem *item;
-            
-            gtk_tree_model_get (model, &iter, COL_WIDGET, &item, -1);
-            gtk_menu_item_activate (item);
-            g_object_unref (item);
-            
-            break;
-          }
-        }
-        gtk_widget_hide (widget);
+        GtkTreePath *path = gtk_tree_model_get_path (model, &iter);
+        gtk_tree_view_row_activated (view, path, NULL);
+        gtk_tree_path_free (path);
       }
       
       return TRUE;
@@ -543,6 +520,46 @@ enum {
 }
 
 static void
+on_view_row_activated (GtkTreeView       *view,
+                       GtkTreePath       *path,
+                       GtkTreeViewColumn *column,
+                       gpointer           dummy)
+{
+  GtkTreeModel *model = gtk_tree_view_get_model (view);
+  GtkTreeIter   iter;
+  
+  if (gtk_tree_model_get_iter (model, &iter, path)) {
+    gint type;
+    
+    gtk_tree_model_get (model, &iter, COL_TYPE, &type, -1);
+    
+    switch (type) {
+      case COL_TYPE_FILE: {
+        GeanyDocument  *doc;
+        gint            page;
+        
+        gtk_tree_model_get (model, &iter, COL_DOCUMENT, &doc, -1);
+        page = document_get_notebook_page (doc);
+        gtk_notebook_set_current_page (GTK_NOTEBOOK (geany_data->main_widgets->notebook),
+                                       page);
+        break;
+      }
+      
+      case COL_TYPE_MENU_ITEM: {
+        GtkMenuItem *item;
+        
+        gtk_tree_model_get (model, &iter, COL_WIDGET, &item, -1);
+        gtk_menu_item_activate (item);
+        g_object_unref (item);
+        
+        break;
+      }
+    }
+    gtk_widget_hide (plugin_data.panel);
+  }
+}
+
+static void
 create_panel (void)
 {
   GtkWidget          *frame;
@@ -612,6 +629,8 @@ enum {
                                                   "markup", COL_LABEL,
                                                   NULL);
   gtk_tree_view_append_column (GTK_TREE_VIEW (plugin_data.view), col);
+  g_signal_connect (plugin_data.view, "row-activated",
+                    G_CALLBACK (on_view_row_activated), NULL);
   gtk_container_add (GTK_CONTAINER (scroll), plugin_data.view);
   
   on_entry_text_notify (G_OBJECT (plugin_data.entry), NULL, NULL);


@@ Diff output truncated at 100000 characters. @@


--------------
This E-Mail was brought to you by github_commit_mail.py (Source: TBD).



More information about the Plugins-Commits mailing list