fixed keyboard controll of image widget
authorVladimir Nadvornik <nadvornik@suse.cz>
Sun, 12 Aug 2012 16:43:57 +0000 (18:43 +0200)
committerVladimir Nadvornik <nadvornik@suse.cz>
Mon, 13 Aug 2012 19:40:08 +0000 (21:40 +0200)
src/layout_util.c
src/pan-view.c

index f88bdd2..1d13541 100644 (file)
@@ -85,6 +85,7 @@ static gboolean layout_key_match(guint keyval)
 gboolean layout_key_press_cb(GtkWidget *widget, GdkEventKey *event, gpointer data)
 {
        LayoutWindow *lw = data;
+       GtkWidget *focused;
        gboolean stop_signal = FALSE;
        gint x = 0;
        gint y = 0;
@@ -130,11 +131,12 @@ gboolean layout_key_press_cb(GtkWidget *widget, GdkEventKey *event, gpointer dat
                return TRUE;
 */
 
+       focused = gtk_container_get_focus_child(GTK_CONTAINER(lw->image->widget));
        if (lw->image &&
 #if GTK_CHECK_VERSION(2,20,0)
-           (gtk_widget_has_focus(lw->image->widget) || (lw->tools && widget == lw->window) || lw->full_screen) )
+           (focused && gtk_widget_has_focus(focused) || (lw->tools && widget == lw->window) || lw->full_screen) )
 #else
-           (GTK_WIDGET_HAS_FOCUS(lw->image->widget) || (lw->tools && widget == lw->window) || lw->full_screen) )
+           (focused && GTK_WIDGET_HAS_FOCUS(focused) || (lw->tools && widget == lw->window) || lw->full_screen) )
 #endif
                {
                stop_signal = TRUE;
index 84a013b..aab0dc2 100644 (file)
@@ -1204,6 +1204,7 @@ static gboolean pan_window_key_press_cb(GtkWidget *widget, GdkEventKey *event, g
        FileData *fd;
        gboolean stop_signal = FALSE;
        GtkWidget *menu;
+       GtkWidget *imd_widget;
        gint x = 0;
        gint y = 0;
        gint focused;
@@ -1211,13 +1212,14 @@ static gboolean pan_window_key_press_cb(GtkWidget *widget, GdkEventKey *event, g
 
        pr = PIXBUF_RENDERER(pw->imd->pr);
        fd = pan_menu_click_fd(pw);
-
+       
+       imd_widget = gtk_container_get_focus_child(GTK_CONTAINER(pw->imd->widget));
 #if GTK_CHECK_VERSION(2,20,0)
-       focused = (pw->fs || gtk_widget_has_focus(GTK_WIDGET(pw->imd->widget)));
+       focused = (pw->fs || imd_widget && gtk_widget_has_focus(imd_widget));
        on_entry = (gtk_widget_has_focus(pw->path_entry) ||
                    gtk_widget_has_focus(pw->search_entry));
 #else
-       focused = (pw->fs || GTK_WIDGET_HAS_FOCUS(GTK_WIDGET(pw->imd->widget)));
+       focused = (pw->fs || imd_widget && GTK_WIDGET_HAS_FOCUS(imd_widget));
        on_entry = (GTK_WIDGET_HAS_FOCUS(pw->path_entry) ||
                    GTK_WIDGET_HAS_FOCUS(pw->search_entry));
 #endif