[gthumb] make the keyboard editing shortcuts work from the file list as well



commit c4b8e07a88ee96d4d3f7ea203ded323a4f4e8ffa
Author: Paolo Bacchilega <paobac src gnome org>
Date:   Sun Jul 10 10:10:49 2011 +0200

    make the keyboard editing shortcuts work from the file list as well
    
    when the file list or the image viewer are focused the user can use the following
    shortcuts to activate some editing tools:
    
    h : enhance
    l: flip
    m: mirror
    r: rotate right
    <shift>r: rotate left
    <shift>c: crop
    <shift>s: resize
    
    [bug #621922, new feature]

 extensions/file_tools/callbacks.c |   19 +++++++++++++++----
 1 files changed, 15 insertions(+), 4 deletions(-)
---
diff --git a/extensions/file_tools/callbacks.c b/extensions/file_tools/callbacks.c
index cf59468..9b5e41d 100644
--- a/extensions/file_tools/callbacks.c
+++ b/extensions/file_tools/callbacks.c
@@ -25,6 +25,7 @@
 #include <glib-object.h>
 #include <gdk/gdkkeysyms.h>
 #include <gthumb.h>
+#include <extensions/image_viewer/gth-image-viewer-page.h>
 #include "gth-file-tool-crop.h"
 #include "gth-file-tool-enhance.h"
 #include "gth-file-tool-flip.h"
@@ -39,13 +40,11 @@ file_tools__gth_browser_file_list_key_press_cb (GthBrowser  *browser,
 						GdkEventKey *event)
 {
 	gpointer     result = NULL;
-	guint        modifiers;
 	GtkWidget   *sidebar;
 	GtkWidget   *toolbox;
 	GthFileTool *tool = NULL;
-
-	if (gth_window_get_current_page (GTH_WINDOW (browser)) != GTH_BROWSER_PAGE_VIEWER)
-		return NULL;
+	guint        modifiers;
+	GtkWidget   *page;
 
 	sidebar = gth_browser_get_viewer_sidebar (browser);
 	toolbox = gth_sidebar_get_toolbox (GTH_SIDEBAR (sidebar));
@@ -56,6 +55,16 @@ file_tools__gth_browser_file_list_key_press_cb (GthBrowser  *browser,
 	if (((event->state & modifiers) != 0) && ((event->state & modifiers) != GDK_SHIFT_MASK))
 		return NULL;
 
+	page = gth_browser_get_viewer_page (browser);
+	if (! GTH_IS_IMAGE_VIEWER_PAGE (page))
+		return NULL;
+
+	if (gth_window_get_current_page (GTH_WINDOW (browser)) == GTH_BROWSER_PAGE_VIEWER
+	    && ! gtk_widget_has_focus (gth_image_viewer_page_get_image_viewer (GTH_IMAGE_VIEWER_PAGE (page))))
+	{
+		return NULL;
+	}
+
 	switch (event->keyval) {
 	case GDK_KEY_h:
 		tool = (GthFileTool *) gth_toolbox_get_tool (GTH_TOOLBOX (toolbox), GTH_TYPE_FILE_TOOL_ENHANCE);
@@ -83,6 +92,8 @@ file_tools__gth_browser_file_list_key_press_cb (GthBrowser  *browser,
 	}
 
 	if (tool != NULL) {
+		if (gth_window_get_current_page (GTH_WINDOW (browser)) == GTH_BROWSER_PAGE_BROWSER)
+			gth_window_set_current_page (GTH_WINDOW (browser), GTH_BROWSER_PAGE_VIEWER);
 		gth_file_tool_activate (tool);
 		result = GINT_TO_POINTER (1);
 	}



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