[Goodies-commits] r3380 - ristretto/trunk/src

Stephan Arts stephan at xfce.org
Mon Oct 15 01:18:38 CEST 2007


Author: stephan
Date: 2007-10-14 23:18:38 +0000 (Sun, 14 Oct 2007)
New Revision: 3380

Modified:
   ristretto/trunk/src/picture_viewer.c
Log:
Add right-click menu to picture viewer... should be properly free-ed later.



Modified: ristretto/trunk/src/picture_viewer.c
===================================================================
--- ristretto/trunk/src/picture_viewer.c	2007-10-14 22:48:01 UTC (rev 3379)
+++ ristretto/trunk/src/picture_viewer.c	2007-10-14 23:18:38 UTC (rev 3380)
@@ -83,6 +83,8 @@
 cb_rstto_picture_viewer_button_press_event (RsttoPictureViewer *viewer, GdkEventButton *event);
 static void
 cb_rstto_picture_viewer_button_release_event (RsttoPictureViewer *viewer, GdkEventButton *event);
+static void
+cb_rstto_picture_viewer_close(GtkWidget *widget, RsttoPictureViewer*);
 
 static gboolean
 cb_rstto_picture_viewer_update_image(RsttoPictureViewer *viewer);
@@ -988,6 +990,22 @@
         viewer->priv->motion.x = event->x;
         viewer->priv->motion.y = event->y;
     }
+    if(event->button == 3)
+    {
+        GtkWidget *menu = gtk_menu_new();
+        GtkWidget *menu_item_close = gtk_image_menu_item_new_from_stock(GTK_STOCK_CLOSE, NULL);
+        gtk_menu_shell_append(GTK_MENU_SHELL(menu), menu_item_close);
+        gtk_widget_show(menu_item_close);
+
+        g_signal_connect(menu_item_close, 
+            "activate",
+            G_CALLBACK(cb_rstto_picture_viewer_close), viewer);
+
+
+        gtk_menu_attach_to_widget(GTK_MENU(menu), GTK_WIDGET(viewer), NULL);
+        gtk_menu_popup (GTK_MENU (menu), NULL, NULL, NULL, NULL, 
+                        event->button, event->time);
+    }
 }
 
 static void
@@ -995,29 +1013,49 @@
 {
     if(event->button == 1)
     {
+        /* Move the image around */
         GtkWidget *widget = GTK_WIDGET(viewer);
         GdkCursor *cursor = gdk_cursor_new(GDK_WATCH);
         gdk_window_set_cursor(widget->window, cursor);
         gdk_cursor_unref(cursor);
 
-        viewer->hadjustment->value -= event->x - viewer->priv->motion.x;
-        if((viewer->hadjustment->value + viewer->hadjustment->page_size) > viewer->hadjustment->upper)
+        if ((viewer->priv->motion.x != event->x) ||
+            (viewer->priv->motion.y != event->y))
         {
-            viewer->hadjustment->value = viewer->hadjustment->upper - viewer->hadjustment->page_size;
-        }
-        gtk_adjustment_value_changed(viewer->hadjustment);
 
-        viewer->vadjustment->value -= event->y - viewer->priv->motion.y;
-        if((viewer->vadjustment->value + viewer->vadjustment->page_size) > viewer->vadjustment->upper)
-        {
-            viewer->vadjustment->value = viewer->vadjustment->upper - viewer->vadjustment->page_size;
+            viewer->hadjustment->value -= event->x - viewer->priv->motion.x;
+            if((viewer->hadjustment->value + viewer->hadjustment->page_size) > viewer->hadjustment->upper)
+            {
+                viewer->hadjustment->value = viewer->hadjustment->upper - viewer->hadjustment->page_size;
+            }
+            gtk_adjustment_value_changed(viewer->hadjustment);
+
+            viewer->vadjustment->value -= event->y - viewer->priv->motion.y;
+            if((viewer->vadjustment->value + viewer->vadjustment->page_size) > viewer->vadjustment->upper)
+            {
+                viewer->vadjustment->value = viewer->vadjustment->upper - viewer->vadjustment->page_size;
+            }
+            gtk_adjustment_value_changed(viewer->vadjustment);
         }
-        gtk_adjustment_value_changed(viewer->vadjustment);
 
         viewer->priv->motion.x = -1;
         viewer->priv->motion.y = -1;
 
         gdk_window_set_cursor(widget->window, NULL);
     }
+
 }
 
+
+static void
+cb_rstto_picture_viewer_close(GtkWidget *widget, RsttoPictureViewer *viewer)
+{
+    RsttoNavigatorEntry *entry = rstto_navigator_get_file(viewer->priv->navigator);
+        g_debug("close");
+    if (entry)
+    {
+        g_debug("close");
+        rstto_navigator_remove(viewer->priv->navigator, entry);    
+        rstto_navigator_entry_free(entry);
+    }
+}




More information about the Goodies-commits mailing list