Fix #1093: Double click for full screen
authorColin Clark <colin.clark@cclark.uk>
Sat, 3 Jun 2023 15:19:04 +0000 (16:19 +0100)
committerColin Clark <colin.clark@cclark.uk>
Sat, 3 Jun 2023 15:19:04 +0000 (16:19 +0100)
https://github.com/BestImageViewer/geeqie/issues/1093

src/image.cc
src/img-view.cc
src/layout-image.cc

index 6972b2a..06b394a 100644 (file)
@@ -175,11 +175,15 @@ static void image_press_cb(PixbufRenderer *pr, GdkEventButton *event, gpointer d
                }
 
        lw = layout_find_by_image(imd);
+       if (!lw)
+               {
+               layout_valid(&lw);
+               }
+
        if (lw && event->button == MOUSE_BUTTON_LEFT && event->type == GDK_2BUTTON_PRESS
                                                                                                && !options->image_lm_click_nav)
                {
-               if (lw->full_screen)
-                       layout_image_full_screen_stop(lw);
+               layout_image_full_screen_toggle(lw);
                }
 }
 
index 32bebdf..f6f0b75 100644 (file)
@@ -380,6 +380,23 @@ static void view_step_to_end(ViewWindow *vw, gboolean last)
  *-----------------------------------------------------------------------------
  */
 
+static void view_window_press_cb(GtkWidget *UNUSED(widget), GdkEventButton *bevent, gpointer data)
+{
+       ViewWindow *vw = static_cast<ViewWindow *>(data);
+
+       switch (bevent->button)
+               {
+               case MOUSE_BUTTON_LEFT:
+                       if (bevent->type == GDK_2BUTTON_PRESS)
+                               {
+                               view_fullscreen_toggle(vw, TRUE);
+                               }
+                       break;
+               default:
+                       break;
+               }
+}
+
 static gboolean view_window_key_press_cb(GtkWidget * (widget), GdkEventKey *event, gpointer data)
 {
        ViewWindow *vw = static_cast<ViewWindow *>(data);
@@ -928,6 +945,9 @@ static ViewWindow *real_view_window_new(FileData *fd, GList *list, CollectionDat
                         G_CALLBACK(view_window_delete_cb), vw);
        g_signal_connect(G_OBJECT(vw->window), "key_press_event",
                         G_CALLBACK(view_window_key_press_cb), vw);
+       g_signal_connect(G_OBJECT(vw->window), "button_press_event",
+                        G_CALLBACK(view_window_press_cb), vw);
+
        if (cd && info)
                {
                image_change_from_collection(vw->imd, cd, info, image_zoom_get_default(NULL));
index 5d22101..f0b4aa8 100644 (file)
@@ -1873,7 +1873,12 @@ static void layout_image_button_cb(ImageWindow *imd, GdkEventButton *event, gpoi
        switch (event->button)
                {
                case MOUSE_BUTTON_LEFT:
-                       if (options->image_l_click_archive && imd-> image_fd && imd->image_fd->format_class == FORMAT_CLASS_ARCHIVE)
+                       if (event->button == MOUSE_BUTTON_LEFT && event->type == GDK_2BUTTON_PRESS)
+                               {
+                               layout_image_full_screen_toggle(lw);
+                               }
+
+                       else if (options->image_l_click_archive && imd-> image_fd && imd->image_fd->format_class == FORMAT_CLASS_ARCHIVE)
                                {
                                dest_dir = open_archive(imd->image_fd);
                                if (dest_dir)