[gnome-photos] Use arrow keys for navigating in preview mode



commit edc439c92044b04395e88391d8379f4911eb65bc
Author: Pranav Kant <pranav913 gmail com>
Date:   Sun Jun 22 01:53:10 2014 +0530

    Use arrow keys for navigating in preview mode
    
    https://bugzilla.gnome.org/show_bug.cgi?id=726685

 src/photos-embed.c               |    8 +++++++-
 src/photos-embed.h               |    3 +++
 src/photos-main-window.c         |   21 +++++++++++++++++++--
 src/photos-preview-nav-buttons.c |   36 ++++++++++++++++++------------------
 src/photos-preview-nav-buttons.h |    4 ++++
 src/photos-preview-view.c        |   14 ++++++++++++++
 src/photos-preview-view.h        |    4 ++++
 7 files changed, 69 insertions(+), 21 deletions(-)
---
diff --git a/src/photos-embed.c b/src/photos-embed.c
index a61502e..e9a36f6 100644
--- a/src/photos-embed.c
+++ b/src/photos-embed.c
@@ -38,7 +38,6 @@
 #include "photos-item-manager.h"
 #include "photos-mode-controller.h"
 #include "photos-notification-manager.h"
-#include "photos-preview-view.h"
 #include "photos-search-controller.h"
 #include "photos-selection-toolbar.h"
 #include "photos-spinner-box.h"
@@ -816,3 +815,10 @@ photos_embed_get_main_toolbar (PhotosEmbed *self)
 {
   return PHOTOS_MAIN_TOOLBAR (self->priv->toolbar);
 }
+
+
+PhotosPreviewView *
+photos_embed_get_preview (PhotosEmbed *self)
+{
+  return PHOTOS_PREVIEW_VIEW (self->priv->preview);
+}
diff --git a/src/photos-embed.h b/src/photos-embed.h
index 16d1a35..9416fde 100644
--- a/src/photos-embed.h
+++ b/src/photos-embed.h
@@ -28,6 +28,7 @@
 #include <gtk/gtk.h>
 
 #include "photos-main-toolbar.h"
+#include "photos-preview-view.h"
 
 G_BEGIN_DECLS
 
@@ -74,6 +75,8 @@ GtkWidget             *photos_embed_new                    (void);
 
 PhotosMainToolbar     *photos_embed_get_main_toolbar       (PhotosEmbed *self);
 
+PhotosPreviewView     *photos_embed_get_preview            (PhotosEmbed *self);
+
 G_END_DECLS
 
 #endif /* PHOTOS_EMBED_H */
diff --git a/src/photos-main-window.c b/src/photos-main-window.c
index 9b0d2b8..bc9434b 100644
--- a/src/photos-main-window.c
+++ b/src/photos-main-window.c
@@ -34,6 +34,7 @@
 #include "photos-item-manager.h"
 #include "photos-main-window.h"
 #include "photos-mode-controller.h"
+#include "photos-preview-view.h"
 #include "photos-search-context.h"
 #include "photos-selection-controller.h"
 #include "photos-settings.h"
@@ -229,19 +230,35 @@ static gboolean
 photos_main_window_handle_key_preview (PhotosMainWindow *self, GdkEventKey *event)
 {
   PhotosMainWindowPrivate *priv = self->priv;
+  PhotosPreviewView *preview;
   gboolean fullscreen;
+  gboolean handled = FALSE;
 
+  preview = photos_embed_get_preview (PHOTOS_EMBED (priv->embed));
   fullscreen = photos_mode_controller_get_fullscreen (priv->mode_cntrlr);
-  if (event->keyval == GDK_KEY_Escape)
+
+  switch (event->keyval)
     {
+    case GDK_KEY_Escape:
       if (fullscreen)
         {
           photos_base_manager_set_active_object (priv->item_mngr, NULL);
           photos_mode_controller_go_back (priv->mode_cntrlr);
         }
+      break;
+
+    case GDK_KEY_Left:
+      photos_preview_view_load_previous (preview);
+      handled = TRUE;
+      break;
+
+    case GDK_KEY_Right:
+      photos_preview_view_load_next (preview);
+      handled = TRUE;
+      break;
     }
 
-  return GDK_EVENT_PROPAGATE;
+  return handled;
 }
 
 
diff --git a/src/photos-preview-nav-buttons.c b/src/photos-preview-nav-buttons.c
index 711d16a..fdea3d1 100644
--- a/src/photos-preview-nav-buttons.c
+++ b/src/photos-preview-nav-buttons.c
@@ -306,22 +306,6 @@ photos_preview_nav_buttons_set_active_path (PhotosPreviewNavButtons *self)
 
 
 static void
-photos_preview_nav_buttons_next_clicked (PhotosPreviewNavButtons *self)
-{
-  gtk_tree_path_next (self->priv->current_path);
-  photos_preview_nav_buttons_set_active_path (self);
-}
-
-
-static void
-photos_preview_nav_buttons_prev_clicked (PhotosPreviewNavButtons *self)
-{
-  gtk_tree_path_prev (self->priv->current_path);
-  photos_preview_nav_buttons_set_active_path (self);
-}
-
-
-static void
 photos_preview_nav_buttons_dispose (GObject *object)
 {
   PhotosPreviewNavButtons *self = PHOTOS_PREVIEW_NAV_BUTTONS (object);
@@ -378,7 +362,7 @@ photos_preview_nav_buttons_constructed (GObject *object)
   gtk_container_add (GTK_CONTAINER (priv->prev_widget), button);
   g_signal_connect_swapped (button,
                             "clicked",
-                            G_CALLBACK (photos_preview_nav_buttons_prev_clicked),
+                            G_CALLBACK (photos_preview_nav_buttons_previous),
                             self);
   g_signal_connect_swapped (button,
                             "enter-notify-event",
@@ -407,7 +391,7 @@ photos_preview_nav_buttons_constructed (GObject *object)
   gtk_container_add (GTK_CONTAINER (priv->next_widget), button);
   g_signal_connect_swapped (button,
                             "clicked",
-                            G_CALLBACK (photos_preview_nav_buttons_next_clicked),
+                            G_CALLBACK (photos_preview_nav_buttons_next),
                             self);
   g_signal_connect_swapped (button,
                             "enter-notify-event",
@@ -540,6 +524,22 @@ photos_preview_nav_buttons_hide (PhotosPreviewNavButtons *self)
 
 
 void
+photos_preview_nav_buttons_next (PhotosPreviewNavButtons *self)
+{
+  gtk_tree_path_next (self->priv->current_path);
+  photos_preview_nav_buttons_set_active_path (self);
+}
+
+
+void
+photos_preview_nav_buttons_previous (PhotosPreviewNavButtons *self)
+{
+  gtk_tree_path_prev (self->priv->current_path);
+  photos_preview_nav_buttons_set_active_path (self);
+}
+
+
+void
 photos_preview_nav_buttons_set_model (PhotosPreviewNavButtons *self, GtkTreeModel *model, GtkTreePath 
*current_path)
 {
   PhotosPreviewNavButtonsPrivate *priv = self->priv;
diff --git a/src/photos-preview-nav-buttons.h b/src/photos-preview-nav-buttons.h
index 514ee43..c4a5538 100644
--- a/src/photos-preview-nav-buttons.h
+++ b/src/photos-preview-nav-buttons.h
@@ -76,6 +76,10 @@ PhotosPreviewNavButtons    *photos_preview_nav_buttons_new                (Photo
 
 void                        photos_preview_nav_buttons_hide               (PhotosPreviewNavButtons *self);
 
+void                        photos_preview_nav_buttons_next               (PhotosPreviewNavButtons *self);
+
+void                        photos_preview_nav_buttons_previous           (PhotosPreviewNavButtons *self);
+
 void                        photos_preview_nav_buttons_set_model          (PhotosPreviewNavButtons *self,
                                                                            GtkTreeModel *model,
                                                                            GtkTreePath *current_path);
diff --git a/src/photos-preview-view.c b/src/photos-preview-view.c
index 00e629b..3f2a1b6 100644
--- a/src/photos-preview-view.c
+++ b/src/photos-preview-view.c
@@ -243,6 +243,20 @@ photos_preview_view_new (GtkOverlay *overlay)
 
 
 void
+photos_preview_view_load_next (PhotosPreviewView *self)
+{
+  photos_preview_nav_buttons_next (self->priv->nav_buttons);
+}
+
+
+void
+photos_preview_view_load_previous (PhotosPreviewView *self)
+{
+  photos_preview_nav_buttons_previous (self->priv->nav_buttons);
+}
+
+
+void
 photos_preview_view_set_model (PhotosPreviewView *self, GtkTreeModel *model, GtkTreePath *current_path)
 {
   photos_preview_nav_buttons_set_model (self->priv->nav_buttons, model, current_path);
diff --git a/src/photos-preview-view.h b/src/photos-preview-view.h
index cdcdf3e..65257cb 100644
--- a/src/photos-preview-view.h
+++ b/src/photos-preview-view.h
@@ -71,6 +71,10 @@ GType                  photos_preview_view_get_type               (void) G_GNUC_
 
 GtkWidget             *photos_preview_view_new                    (GtkOverlay *overlay);
 
+void                   photos_preview_view_load_next              (PhotosPreviewView *self);
+
+void                   photos_preview_view_load_previous          (PhotosPreviewView *self);
+
 void                   photos_preview_view_set_model              (PhotosPreviewView *self,
                                                                    GtkTreeModel *model,
                                                                    GtkTreePath *current_path);


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]