Author: post
Date: 2012-01-31 21:26:50 +0100 (Tue, 31 Jan 2012)
New Revision: 4121

Modified:
   trunk/src/rs-store.c
   trunk/src/ui.xml
Log:
Add simple rightclick menu to iconview.

Modified: trunk/src/rs-store.c
===================================================================
--- trunk/src/rs-store.c        2012-01-31 18:32:47 UTC (rev 4120)
+++ trunk/src/rs-store.c        2012-01-31 20:26:50 UTC (rev 4121)
@@ -175,6 +175,7 @@
 void store_get_fullname(GtkListStore *store, GtkTreeIter *iter, gchar 
**fullname);
 void store_set_members(GtkListStore *store, GtkTreeIter *iter, GList *members);
 void got_metadata(RSMetadata *metadata, gpointer user_data);
+static gboolean button(GtkWidget *widget, GdkEventButton *event, RSStore 
*store);
 
 /**
  * Class initializer
@@ -324,6 +325,8 @@
  #error You need to update this switch statement
 #endif
                }
+               g_signal_connect_after (G_OBJECT (store->iconview[n]), 
"button_press_event", G_CALLBACK (button), store->store);
+               gtk_widget_set_events(GTK_WIDGET(store->iconview[n]), 
GDK_BUTTON_PRESS_MASK);
 
                gtk_label_set_markup(GTK_LABEL(store->label[n]), label_text[n]);
                gtk_misc_set_alignment(GTK_MISC(store->label[n]), 0.0, 0.5);
@@ -370,6 +373,28 @@
 }
 
 static gboolean
+button(GtkWidget *widget, GdkEventButton *event, RSStore *store)
+{
+       GtkUIManager *ui_manager = gui_get_uimanager();
+
+       if (event->button == 3)
+       {
+               if (! ((event->state & GDK_CONTROL_MASK) || ((event->state & 
GDK_SHIFT_MASK))))
+               {
+                       event->button = 1;
+                       GdkEvent *copy = gdk_event_copy(event);
+                       gdk_event_put(copy);
+                       GTK_CATCHUP();
+                       gdk_event_free(copy);
+               }
+               GtkWidget *menu = gtk_ui_manager_get_widget (ui_manager, 
"/IconviewPopup");
+               gtk_menu_popup(GTK_MENU(menu), NULL, NULL, NULL, NULL, 0, 
GDK_CURRENT_TIME);
+               return FALSE;
+       }
+       return FALSE;
+}
+
+static gboolean
 scroll_event(GtkWidget *widget, GdkEventScroll *event, gpointer user_data)
 {
        gboolean handled = FALSE;

Modified: trunk/src/ui.xml
===================================================================
--- trunk/src/ui.xml    2012-01-31 18:32:47 UTC (rev 4120)
+++ trunk/src/ui.xml    2012-01-31 20:26:50 UTC (rev 4121)
@@ -125,4 +125,25 @@
   <menuitem action="ExposureMask" />
   <menuitem action="Split" />
  </popup>
+ <popup name="IconviewPopup" action="IconviewPopup">
+  <separator />
+<!--
+  <menuitem action="RenamePhoto" />
+  <menuitem action="AutoRename" />
+  <menuitem action="CopyPhoto" />
+  <separator /> -->
+   <menuitem action="PasteSettings" />
+   <menuitem action="FlagPhoto" />
+   <menu action="PriorityMenu">
+    <menuitem action="Priority1" />
+    <menuitem action="Priority2" />
+    <menuitem action="Priority3" />
+    <menuitem action="RemovePriority" />
+   </menu>
+   <menu action="WhiteBalanceMenu">
+    <menuitem action="CameraWB" />
+    <menuitem action="AutoWB" />
+   </menu>
+  <menuitem action="TagPhoto" />
+ </popup>
 </ui>


_______________________________________________
Rawstudio-commit mailing list
[email protected]
http://rawstudio.org/cgi-bin/mailman/listinfo/rawstudio-commit

Reply via email to