Fri Oct 20 09:20:10 2006 John Ellis <johne@verizon.net>
authorJohn Ellis <johne@verizon.net>
Fri, 20 Oct 2006 13:25:03 +0000 (13:25 +0000)
committerJohn Ellis <johne@verizon.net>
Fri, 20 Oct 2006 13:25:03 +0000 (13:25 +0000)
        * collect-table.c, collect.c, dupe.c, pan-view.c, search.c,
        view_file_icon.c: Keypress signal handler code clean-up round 2: the
        remaining files. Make control and shift logic easier to follow.

ChangeLog
src/collect-table.c
src/collect.c
src/dupe.c
src/pan-view.c
src/search.c
src/view_file_icon.c

index 0bc5d80..e89887e 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+Fri Oct 20 09:20:10 2006  John Ellis  <johne@verizon.net>
+
+       * collect-table.c, collect.c, dupe.c, pan-view.c, search.c,
+       view_file_icon.c: Keypress signal handler code clean-up round 2: the
+       remaining files. Make control and shift logic easier to follow.
+
 Fri Oct 20 08:00:08 2006  John Ellis  <johne@verizon.net>
 
        * img-view.c, layout_image.c, layout_util.c: Keypress signal handler
index 08137dc..281e345 100644 (file)
@@ -1024,46 +1024,39 @@ static void collection_table_menu_pos_cb(GtkMenu *menu, gint *x, gint *y, gboole
 static gint collection_table_press_key_cb(GtkWidget *widget, GdkEventKey *event, gpointer data)
 {
        CollectTable *ct = data;
-       gint stop_signal = FALSE;
        gint focus_row = 0;
        gint focus_col = 0;
        CollectInfo *info;
+       gint stop_signal;
 
+       stop_signal = TRUE;
        switch (event->keyval)
                {
                case GDK_Left: case GDK_KP_Left:
                        focus_col = -1;
-                       stop_signal = TRUE;
                        break;
                case GDK_Right: case GDK_KP_Right:
                        focus_col = 1;
-                       stop_signal = TRUE;
                        break;
                case GDK_Up: case GDK_KP_Up:
                        focus_row = -1;
-                       stop_signal = TRUE;
                        break;
                case GDK_Down: case GDK_KP_Down:
                        focus_row = 1;
-                       stop_signal = TRUE;
                        break;
                case GDK_Page_Up: case GDK_KP_Page_Up:
                        focus_row = -page_height(ct);
-                       stop_signal = TRUE;
                        break;
                case GDK_Page_Down: case GDK_KP_Page_Down:
                        focus_row = page_height(ct);
-                       stop_signal = TRUE;
                        break;
                case GDK_Home: case GDK_KP_Home:
                        focus_row = -ct->focus_row;
                        focus_col = -ct->focus_column;
-                       stop_signal = TRUE;
                        break;
                case GDK_End: case GDK_KP_End:
                        focus_row = ct->rows - 1 - ct->focus_row;
                        focus_col = ct->columns - 1 - ct->focus_column;
-                       stop_signal = TRUE;
                        break;
                case GDK_space:
                        info = collection_table_find_data(ct, ct->focus_row, ct->focus_column, NULL);
@@ -1080,7 +1073,6 @@ static gint collection_table_press_key_cb(GtkWidget *widget, GdkEventKey *event,
                                        collection_table_select(ct, info);
                                        }
                                }
-                       stop_signal = TRUE;
                        break;
                case 'T': case 't':
                        if (event->state & GDK_CONTROL_MASK) collection_table_toggle_filenames(ct);
@@ -1095,9 +1087,9 @@ static gint collection_table_press_key_cb(GtkWidget *widget, GdkEventKey *event,
 
                        ct->popup = collection_table_popup_menu(ct, (info != NULL));
                        gtk_menu_popup(GTK_MENU(ct->popup), NULL, NULL, collection_table_menu_pos_cb, ct, 0, GDK_CURRENT_TIME);
-                       stop_signal = TRUE;
                        break;
                default:
+                       stop_signal = FALSE;
                        break;
                }
 
@@ -1139,7 +1131,9 @@ static gint collection_table_press_key_cb(GtkWidget *widget, GdkEventKey *event,
 
        if (stop_signal)
                {
+#if 0
                g_signal_stop_emission_by_name(GTK_OBJECT(widget), "key_press_event");
+#endif
                tip_unschedule(ct);
                }
 
index e11e186..9d3fa47 100644 (file)
@@ -780,6 +780,7 @@ static gint collection_window_keypress(GtkWidget *widget, GdkEventKey *event, gp
 
        if (event->state & GDK_CONTROL_MASK)
                {
+               stop_signal = TRUE;
                switch (event->keyval)
                        {
                        case '1':
@@ -821,7 +822,6 @@ static gint collection_window_keypress(GtkWidget *widget, GdkEventKey *event, gp
                                        {
                                        collection_table_select_all(cw->table);
                                        }
-                               stop_signal = TRUE;
                                break;
                        case 'L': case 'l':
                                list = layout_list(NULL);
@@ -830,53 +830,45 @@ static gint collection_window_keypress(GtkWidget *widget, GdkEventKey *event, gp
                                        collection_table_add_path_list(cw->table, list);
                                        path_list_free(list);
                                        }
-                               stop_signal = TRUE;
                                break;
                        case 'C': case 'c':
                                file_util_copy(NULL, collection_table_selection_get_list(cw->table), NULL, cw->window);
-                               stop_signal = TRUE;
                                break;
                        case 'M': case 'm':
                                file_util_move(NULL, collection_table_selection_get_list(cw->table), NULL, cw->window);
-                               stop_signal = TRUE;
                                break;
                        case 'R': case 'r':
                                file_util_rename(NULL, collection_table_selection_get_list(cw->table), cw->window);
-                               stop_signal = TRUE;
                                break;
                        case 'D': case 'd':
                                file_util_delete(NULL, collection_table_selection_get_list(cw->table), cw->window);
-                               stop_signal = TRUE;
                                break;
                        case 'P': case 'p':
                                info_window_new(NULL, collection_table_selection_get_list(cw->table));
-                               stop_signal = TRUE;
                                break;
                        case 'S': case 's':
                                collection_dialog_save_as(NULL, cw->cd);
-                               stop_signal = TRUE;
                                break;
                        case 'W': case 'w':
                                collection_window_close(cw);
-                               stop_signal = TRUE;
                                break;
                        default:
+                               stop_signal = FALSE;
                                break;
                        }
                }
        else
                {
+               stop_signal = TRUE;
                switch (event->keyval)
                        {
                        case GDK_Return: case GDK_KP_Enter:
                                layout_image_set_collection(NULL, cw->cd,
                                        collection_table_get_focus_info(cw->table));
-                               stop_signal = TRUE;
                                break;
                        case 'V': case 'v':
                                view_window_new_from_collection(cw->cd,
                                        collection_table_get_focus_info(cw->table));
-                               stop_signal = TRUE;
                                break;
                        case 'S': case 's':
                                if (!cw->cd->path)
@@ -887,36 +879,26 @@ static gint collection_window_keypress(GtkWidget *widget, GdkEventKey *event, gp
                                        {
                                        printf("failed saving to collection path: %s\n", cw->cd->path);
                                        }
-                               stop_signal = TRUE;
                                break;
                        case 'A': case 'a':
-                               if (!(event->state & GDK_CONTROL_MASK))
-                                       {
-                                       collection_dialog_append(NULL, cw->cd);
-                                       stop_signal = TRUE;
-                                       }
+                               collection_dialog_append(NULL, cw->cd);
                                break;
                        case 'N': case 'n':
                                collection_set_sort_method(cw->cd, SORT_NAME);
-                               stop_signal = TRUE;
                                break;
 #ifdef HAVE_STRVERSCMP
                        case 'I': case 'i':
                                collection_set_sort_method(cw->cd, SORT_NUMBER);
-                               stop_signal = TRUE;
                                break;
 #endif
                        case 'D': case 'd':
                                collection_set_sort_method(cw->cd, SORT_TIME);
-                               stop_signal = TRUE;
                                break;
                        case 'B': case 'b':
                                collection_set_sort_method(cw->cd, SORT_SIZE);
-                               stop_signal = TRUE;
                                break;
                        case 'P': case 'p':
                                collection_set_sort_method(cw->cd, SORT_PATH);
-                               stop_signal = TRUE;
                                break;
                        case GDK_Delete: case GDK_KP_Delete:
                                list = g_list_copy(cw->table->selection);
@@ -929,9 +911,9 @@ static gint collection_window_keypress(GtkWidget *widget, GdkEventKey *event, gp
                                        {
                                        collection_remove_by_info(cw->cd, collection_table_get_focus_info(cw->table));
                                        }
-                               stop_signal = TRUE;
                                break;
                        default:
+                               stop_signal = FALSE;
                                break;
                        }
                }
@@ -941,7 +923,6 @@ static gint collection_window_keypress(GtkWidget *widget, GdkEventKey *event, gp
                list = collection_table_selection_get_list(cw->table);
                start_editor_from_path_list(edit_val, list);
                path_list_free(list);
-               stop_signal = TRUE;
                }
 
        return stop_signal;
index a4433ca..5d77b6f 100644 (file)
@@ -2831,140 +2831,135 @@ static gint dupe_window_keypress_cb(GtkWidget *widget, GdkEventKey *event, gpoin
                gint edit_val = -1;
 
                if (!on_second)
-                   switch (event->keyval)
                        {
-                       case '1':
-                               edit_val = 0;
-                               break;
-                       case '2':
-                               edit_val = 1;
-                               break;
-                       case '3':
-                               edit_val = 2;
-                               break;
-                       case '4':
-                               edit_val = 3;
-                               break;
-                       case '5':
-                               edit_val = 4;
-                               break;
-                       case '6':
-                               edit_val = 5;
-                               break;
-                       case '7':
-                               edit_val = 6;
-                               break;
-                       case '8':
-                               edit_val = 7;
-                               break;
-                       case '9':
-                               edit_val = 8;
-                               break;
-                       case '0':
-                               edit_val = 9;
-                               break;
-                       case 'C': case 'c':
-                               stop_signal = TRUE;
-                               file_util_copy(NULL, dupe_listview_get_selection(dw, listview), NULL, dw->window);
-                               break;
-                       case 'M': case 'm':
-                               file_util_move(NULL, dupe_listview_get_selection(dw, listview), NULL, dw->window);
-                               stop_signal = TRUE;
-                               break;
-                       case 'R': case 'r':
-                               file_util_rename(NULL, dupe_listview_get_selection(dw, listview), dw->window);
-                               stop_signal = TRUE;
-                               break;
-                       case 'D': case 'd':
-                               file_util_delete(NULL, dupe_listview_get_selection(dw, listview), dw->window);
-                               stop_signal = TRUE;
-                               break;
-                       case 'P': case 'p':
-                               info_window_new(NULL, dupe_listview_get_selection(dw, listview));
-                               stop_signal = TRUE;
-                               break;
-                       default:
-                               break;
+                       stop_signal = TRUE;
+                       switch (event->keyval)
+                               {
+                               case '1':
+                                       edit_val = 0;
+                                       break;
+                               case '2':
+                                       edit_val = 1;
+                                       break;
+                               case '3':
+                                       edit_val = 2;
+                                       break;
+                               case '4':
+                                       edit_val = 3;
+                                       break;
+                               case '5':
+                                       edit_val = 4;
+                                       break;
+                               case '6':
+                                       edit_val = 5;
+                                       break;
+                               case '7':
+                                       edit_val = 6;
+                                       break;
+                               case '8':
+                                       edit_val = 7;
+                                       break;
+                               case '9':
+                                       edit_val = 8;
+                                       break;
+                               case '0':
+                                       edit_val = 9;
+                                       break;
+                               case 'C': case 'c':
+                                       file_util_copy(NULL, dupe_listview_get_selection(dw, listview),
+                                                      NULL, dw->window);
+                                       break;
+                               case 'M': case 'm':
+                                       file_util_move(NULL, dupe_listview_get_selection(dw, listview),
+                                                      NULL, dw->window);
+                                       break;
+                               case 'R': case 'r':
+                                       file_util_rename(NULL, dupe_listview_get_selection(dw, listview), dw->window);
+                                       break;
+                               case 'D': case 'd':
+                                       file_util_delete(NULL, dupe_listview_get_selection(dw, listview), dw->window);
+                                       break;
+                               case 'P': case 'p':
+                                       info_window_new(NULL, dupe_listview_get_selection(dw, listview));
+                                       break;
+                               default:
+                                       stop_signal = FALSE;
+                                       break;
+                               }
                        }
 
-               switch (event->keyval)
+               if (!stop_signal)
                        {
-                       case 'A': case 'a':
-                               if (event->state & GDK_SHIFT_MASK)
-                                       {
-                                       gtk_tree_selection_unselect_all(selection);
-                                       }
-                               else
-                                       {
-                                       gtk_tree_selection_select_all(selection);
-                                       }
-                               stop_signal = TRUE;
-                               break;
-                       case GDK_Delete: case GDK_KP_Delete:
-                               if (on_second)
-                                       {
-                                       dupe_second_clear(dw);
-                                       dupe_window_recompare(dw);
-                                       }
-                               else
-                                       {
-                                       dupe_window_clear(dw);
-                                       }
-                               stop_signal = TRUE;
-                               break;
-                       case 'L': case 'l':
-                               dupe_window_append_file_list(dw, FALSE);
-                               stop_signal = TRUE;
-                               break;
-                       case 'T': case 't':
-                               gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(dw->button_thumbs),
-                                       !gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(dw->button_thumbs)));
-                               stop_signal = TRUE;
-                               break;
-                       case 'W': case 'w':
-                               dupe_window_close(dw);
-                               stop_signal = TRUE;
-                               break;
-                       default:
-                               break;
+                       stop_signal = TRUE;
+                       switch (event->keyval)
+                               {
+                               case 'A': case 'a':
+                                       if (event->state & GDK_SHIFT_MASK)
+                                               {
+                                               gtk_tree_selection_unselect_all(selection);
+                                               }
+                                       else
+                                               {
+                                               gtk_tree_selection_select_all(selection);
+                                               }
+                                       break;
+                               case GDK_Delete: case GDK_KP_Delete:
+                                       if (on_second)
+                                               {
+                                               dupe_second_clear(dw);
+                                               dupe_window_recompare(dw);
+                                               }
+                                       else
+                                               {
+                                               dupe_window_clear(dw);
+                                               }
+                                       break;
+                               case 'L': case 'l':
+                                       dupe_window_append_file_list(dw, FALSE);
+                                       break;
+                               case 'T': case 't':
+                                       gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(dw->button_thumbs),
+                                               !gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(dw->button_thumbs)));
+                                       break;
+                               case 'W': case 'w':
+                                       dupe_window_close(dw);
+                                       break;
+                               default:
+                                       stop_signal = FALSE;
+                                       break;
+                               }
                        }
 
                if (edit_val >= 0)
                        {
                        dupe_window_edit_selected(dw, edit_val);
-                       stop_signal = TRUE;
                        }
                }
        else
                {
+               stop_signal = TRUE;
                switch (event->keyval)
                        {
                        case GDK_Return: case GDK_KP_Enter:
                                dupe_menu_view(dw, di, listview, FALSE);
-                               stop_signal = TRUE;
                                break;
                        case 'V': case 'v':
-                               stop_signal = TRUE;
                                dupe_menu_view(dw, di, listview, TRUE);
                                break;
                        case GDK_Delete: case GDK_KP_Delete:
                                dupe_window_remove_selection(dw, listview);
-                               stop_signal = TRUE;
                                break;
                        case 'C': case 'c':
                                if (!on_second)
                                        {
                                        dupe_window_collection_from_selection(dw);
-                                       stop_signal = TRUE;
                                        }
                                break;
                        case '1':
                                dupe_listview_select_dupes(dw, TRUE);
-                               stop_signal = TRUE;
                                break;
                        case '2':
                                dupe_listview_select_dupes(dw, FALSE);
-                               stop_signal = TRUE;
                                break;
                        case GDK_Menu:
                        case GDK_F10:
@@ -2986,6 +2981,7 @@ static gint dupe_window_keypress_cb(GtkWidget *widget, GdkEventKey *event, gpoin
                                        }
                                break;
                        default:
+                               stop_signal = FALSE;
                                break;
                        }
                }
index 0241e53..17ae224 100644 (file)
@@ -3413,23 +3413,20 @@ static gint pan_window_key_press_cb(GtkWidget *widget, GdkEventKey *event, gpoin
 
        if (focused)
                {
+               stop_signal = TRUE;
                switch (event->keyval)
                        {
                        case GDK_Left: case GDK_KP_Left:
                                x -= 1;
-                               stop_signal = TRUE;
                                break;
                        case GDK_Right: case GDK_KP_Right:
                                x += 1;
-                               stop_signal = TRUE;
                                break;
                        case GDK_Up: case GDK_KP_Up:
                                y -= 1;
-                               stop_signal = TRUE;
                                break;
                        case GDK_Down: case GDK_KP_Down:
                                y += 1;
-                               stop_signal = TRUE;
                                break;
                        case GDK_Page_Up: case GDK_KP_Page_Up:
                                pixbuf_renderer_scroll(pr, 0, 0 - pr->vis_height / 2);
@@ -3443,88 +3440,30 @@ static gint pan_window_key_press_cb(GtkWidget *widget, GdkEventKey *event, gpoin
                        case GDK_End: case GDK_KP_End:
                                pixbuf_renderer_scroll(pr, pr->vis_width / 2, 0);
                                break;
+                       default:
+                               stop_signal = FALSE;
+                               break;
                        }
-               }
 
-       if (focused && !(event->state & GDK_CONTROL_MASK) )
-           switch (event->keyval)
-               {
-               case '+': case '=': case GDK_KP_Add:
-                       pixbuf_renderer_zoom_adjust(pr, ZOOM_INCREMENT);
-                       break;
-               case '-': case GDK_KP_Subtract:
-                       pixbuf_renderer_zoom_adjust(pr, -ZOOM_INCREMENT);
-                       break;
-               case 'Z': case 'z': case GDK_KP_Divide: case '1':
-                       pixbuf_renderer_zoom_set(pr, 1.0);
-                       break;
-               case '2':
-                       pixbuf_renderer_zoom_set(pr, 2.0);
-                       break;
-               case '3':
-                       pixbuf_renderer_zoom_set(pr, 3.0);
-                       break;
-               case '4':
-                       pixbuf_renderer_zoom_set(pr, 4.0);
-                       break;
-               case '7':
-                       pixbuf_renderer_zoom_set(pr, -4.0);
-                       break;
-               case '8':
-                       pixbuf_renderer_zoom_set(pr, -3.0);
-                       break;
-               case '9':
-                       pixbuf_renderer_zoom_set(pr, -2.0);
-                       break;
-               case 'F': case 'f':
-               case 'V': case 'v':
-                       pan_fullscreen_toggle(pw, FALSE);
-                       stop_signal = TRUE;
-                       break;
-               case 'I': case 'i':
-#if 0
-                       pan_overlay_toggle(pw);
-#endif
-                       break;
-               case GDK_Delete: case GDK_KP_Delete:
-                       break;
-               case '/':
-                       if (!pw->fs)
-                               {
-                               if (GTK_WIDGET_VISIBLE(pw->search_box))
-                                       {
-                                       gtk_widget_grab_focus(pw->search_entry);
-                                       }
-                               else
-                                       {
-                                       gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(pw->search_button), TRUE);
-                                       }
-                               stop_signal = TRUE;
-                               }
-                       break;
-               case GDK_Escape:
-                       if (pw->fs)
-                               {
-                               pan_fullscreen_toggle(pw, TRUE);
-                               stop_signal = TRUE;
-                               }
-                       else if (GTK_WIDGET_VISIBLE(pw->search_entry))
+               if (x != 0 || y!= 0)
+                       {
+                       if (event->state & GDK_SHIFT_MASK)
                                {
-                               gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(pw->search_button), FALSE);
-                               stop_signal = TRUE;
+                               x *= 3;
+                               y *= 3;
                                }
-                       break;
-               case GDK_Menu:
-               case GDK_F10:
-                       menu = pan_popup_menu(pw);
-                       gtk_menu_popup(GTK_MENU(menu), NULL, NULL, pan_window_menu_pos_cb, pw, 0, GDK_CURRENT_TIME);
-                       stop_signal = TRUE;
-                       break;
+                       keyboard_scroll_calc(&x, &y, event);
+                       pixbuf_renderer_scroll(pr, x, y);
+                       }
                }
 
+       if (stop_signal) return stop_signal;
+
        if (event->state & GDK_CONTROL_MASK)
                {
                gint n = -1;
+
+               stop_signal = TRUE;
                switch (event->keyval)
                        {
                        case '1':
@@ -3575,7 +3514,11 @@ static gint pan_window_key_press_cb(GtkWidget *widget, GdkEventKey *event, gpoin
                        case 'W': case 'w':
                                pan_window_close(pw);
                                break;
+                       default:
+                               stop_signal = FALSE;
+                               break;
                        }
+
                if (n != -1 && path)
                        {
                        if (!editor_window_flag_set(n))
@@ -3583,42 +3526,121 @@ static gint pan_window_key_press_cb(GtkWidget *widget, GdkEventKey *event, gpoin
                                pan_fullscreen_toggle(pw, TRUE);
                                }
                        start_editor_from_file(n, path);
-                       stop_signal = TRUE;
                        }
                }
-       else if (event->state & GDK_SHIFT_MASK)
-               {
-               x *= 3;
-               y *= 3;
-               }
-       else if (!focused)
+       else
                {
-               switch (event->keyval)
+               if (focused)
                        {
-                       case GDK_Escape:
-                               if (pw->fs)
-                                       {
-                                       pan_fullscreen_toggle(pw, TRUE);
-                                       stop_signal = TRUE;
-                                       }
-                               else if (GTK_WIDGET_HAS_FOCUS(pw->search_entry))
-                                       {
-                                       gtk_widget_grab_focus(GTK_WIDGET(pw->imd->widget));
-                                       gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(pw->search_button), FALSE);
-                                       stop_signal = TRUE;
-                                       }
-                       break;
-                       default:
+                       stop_signal = TRUE;
+                       switch (event->keyval)
+                               {
+                               case '+': case '=': case GDK_KP_Add:
+                                       pixbuf_renderer_zoom_adjust(pr, ZOOM_INCREMENT);
+                                       break;
+                               case '-': case GDK_KP_Subtract:
+                                       pixbuf_renderer_zoom_adjust(pr, -ZOOM_INCREMENT);
+                                       break;
+                               case 'Z': case 'z': case GDK_KP_Divide: case '1':
+                                       pixbuf_renderer_zoom_set(pr, 1.0);
+                                       break;
+                               case '2':
+                                       pixbuf_renderer_zoom_set(pr, 2.0);
+                                       break;
+                               case '3':
+                                       pixbuf_renderer_zoom_set(pr, 3.0);
+                                       break;
+                               case '4':
+                                       pixbuf_renderer_zoom_set(pr, 4.0);
+                                       break;
+                               case '7':
+                                       pixbuf_renderer_zoom_set(pr, -4.0);
+                                       break;
+                               case '8':
+                                       pixbuf_renderer_zoom_set(pr, -3.0);
+                                       break;
+                               case '9':
+                                       pixbuf_renderer_zoom_set(pr, -2.0);
+                                       break;
+                               case 'F': case 'f':
+                               case 'V': case 'v':
+                                       pan_fullscreen_toggle(pw, FALSE);
+                                       break;
+                               case 'I': case 'i':
+#if 0
+                                       pan_overlay_toggle(pw);
+#endif
+                                       break;
+                               case GDK_Delete: case GDK_KP_Delete:
+                                       break;
+                               case '/':
+                                       if (!pw->fs)
+                                               {
+                                               if (GTK_WIDGET_VISIBLE(pw->search_box))
+                                                       {
+                                                       gtk_widget_grab_focus(pw->search_entry);
+                                                       }
+                                               else
+                                                       {
+                                                       gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(pw->search_button), TRUE);
+                                                       }
+                                               }
+                                       else
+                                               {
+                                               stop_signal = FALSE;
+                                               }
+                                       break;
+                               case GDK_Escape:
+                                       if (pw->fs)
+                                               {
+                                               pan_fullscreen_toggle(pw, TRUE);
+                                               }
+                                       else if (GTK_WIDGET_VISIBLE(pw->search_entry))
+                                               {
+                                               gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(pw->search_button), FALSE);
+                                               }
+                                       else
+                                               {
+                                               stop_signal = FALSE;
+                                               }
+                                       break;
+                               case GDK_Menu:
+                               case GDK_F10:
+                                       menu = pan_popup_menu(pw);
+                                       gtk_menu_popup(GTK_MENU(menu), NULL, NULL, pan_window_menu_pos_cb, pw, 0, GDK_CURRENT_TIME);
+                                       break;
+                               default:
+                                       stop_signal = FALSE;
+                                       break;
+                               }
+                       }
+               else
+                       {
+                       stop_signal = TRUE;
+                       switch (event->keyval)
+                               {
+                               case GDK_Escape:
+                                       if (pw->fs)
+                                               {
+                                               pan_fullscreen_toggle(pw, TRUE);
+                                               }
+                                       else if (GTK_WIDGET_HAS_FOCUS(pw->search_entry))
+                                               {
+                                               gtk_widget_grab_focus(GTK_WIDGET(pw->imd->widget));
+                                               gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(pw->search_button), FALSE);
+                                               }
+                                       else
+                                               {
+                                               stop_signal = FALSE;
+                                               }
                                break;
+                               default:
+                                       stop_signal = FALSE;
+                                       break;
+                               }
                        }
                }
 
-       if (x != 0 || y!= 0)
-               {
-               keyboard_scroll_calc(&x, &y, event);
-               pixbuf_renderer_scroll(pr, x, y);
-               }
-
        return stop_signal;
 }
 
index f50b52c..76014d3 100644 (file)
@@ -1186,6 +1186,7 @@ static gint search_result_keypress_cb(GtkWidget *widget, GdkEventKey *event, gpo
                {
                gint edit_val = -1;
 
+               stop_signal = TRUE;
                switch (event->keyval)
                        {
                        case '1':
@@ -1219,23 +1220,18 @@ static gint search_result_keypress_cb(GtkWidget *widget, GdkEventKey *event, gpo
                                edit_val = 9;
                                break;
                        case 'C': case 'c':
-                               stop_signal = TRUE;
                                file_util_copy(NULL, search_result_selection_list(sd), NULL, widget);
                                break;
                        case 'M': case 'm':
-                               stop_signal = TRUE;
                                file_util_move(NULL, search_result_selection_list(sd), NULL, widget);
                                break;
                        case 'R': case 'r':
-                               stop_signal = TRUE;
                                file_util_rename(NULL, search_result_selection_list(sd), widget);
                                break;
                        case 'D': case 'd':
-                               stop_signal = TRUE;
                                file_util_delete(NULL, search_result_selection_list(sd), widget);
                                break;
                        case 'P': case 'p':
-                               stop_signal = TRUE;
                                info_window_new(NULL,  search_result_selection_list(sd));
                                break;
                        case 'A': case 'a':
@@ -1247,29 +1243,27 @@ static gint search_result_keypress_cb(GtkWidget *widget, GdkEventKey *event, gpo
                                        {
                                        gtk_tree_selection_select_all(selection);
                                        }
-                               stop_signal = TRUE;
                                break;
                        case GDK_Delete: case GDK_KP_Delete:
                                search_result_clear(sd);
-                               stop_signal = TRUE;
                                break;
                        default:
+                               stop_signal = FALSE;
                                break;
                        }
 
                if (edit_val >= 0)
                        {
                        search_result_edit_selected(sd, edit_val);
-                       stop_signal = TRUE;
                        }
                }
        else
                {
+               stop_signal = TRUE;
                switch (event->keyval)
                        {
                        case GDK_Return: case GDK_KP_Enter:
                                if (fd) layout_image_set_path(NULL, fd->path);
-                               stop_signal = TRUE;
                                break;
                        case 'V': case 'v':
                                {
@@ -1278,16 +1272,13 @@ static gint search_result_keypress_cb(GtkWidget *widget, GdkEventKey *event, gpo
                                list = search_result_selection_list(sd);
                                view_window_new_from_list(list);
                                path_list_free(list);
-                               stop_signal = TRUE;
                                }
                                break;
                        case GDK_Delete: case GDK_KP_Delete:
                                search_result_remove_selection(sd);
-                               stop_signal = TRUE;
                                break;
                        case 'C': case 'c':
                                search_result_collection_from_selection(sd);
-                               stop_signal = TRUE;
                                break;
                        case GDK_Menu:
                        case GDK_F10:
@@ -1298,10 +1289,10 @@ static gint search_result_keypress_cb(GtkWidget *widget, GdkEventKey *event, gpo
                                menu = search_result_menu(sd, (fd != NULL), (search_result_count(sd, NULL) > 0));
                                gtk_menu_popup(GTK_MENU(menu), NULL, NULL,
                                               search_result_menu_pos_cb, sd, 0, GDK_CURRENT_TIME);
-                               stop_signal = TRUE;
                                }
                                break;
                        default:
+                               stop_signal = FALSE;
                                break;
                        }
                }
@@ -1316,18 +1307,18 @@ static gint search_window_keypress_cb(GtkWidget *widget, GdkEventKey *event, gpo
 
        if (event->state & GDK_CONTROL_MASK)
                {
+               stop_signal = TRUE;
                switch (event->keyval)
                        {
                        case 'T': case 't':
                                gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(sd->button_thumbs),
                                        !gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(sd->button_thumbs)));
-                               stop_signal = TRUE;
                                break;
                        case 'W': case 'w':
                                search_window_close(sd);
-                               stop_signal = TRUE;
                                break;
                        default:
+                               stop_signal = FALSE;
                                break;
                        }
                }
index 43f2fe0..c230050 100644 (file)
@@ -1164,46 +1164,39 @@ static void vfi_menu_position_cb(GtkMenu *menu, gint *x, gint *y, gboolean *push
 static gint vficon_press_key_cb(GtkWidget *widget, GdkEventKey *event, gpointer data)
 {
        ViewFileIcon *vfi = data;
-       gint stop_signal = FALSE;
        gint focus_row = 0;
        gint focus_col = 0;
        FileData *fd;
+       gint stop_signal;
 
+       stop_signal = TRUE;
        switch (event->keyval)
                {
                case GDK_Left: case GDK_KP_Left:
                        focus_col = -1;
-                       stop_signal = TRUE;
                        break;
                case GDK_Right: case GDK_KP_Right:
                        focus_col = 1;
-                       stop_signal = TRUE;
                        break;
                case GDK_Up: case GDK_KP_Up:
                        focus_row = -1;
-                       stop_signal = TRUE;
                        break;
                case GDK_Down: case GDK_KP_Down:
                        focus_row = 1;
-                       stop_signal = TRUE;
                        break;
                case GDK_Page_Up: case GDK_KP_Page_Up:
                        focus_row = -page_height(vfi);
-                       stop_signal = TRUE;
                        break;
                case GDK_Page_Down: case GDK_KP_Page_Down:
                        focus_row = page_height(vfi);
-                       stop_signal = TRUE;
                        break;
                case GDK_Home: case GDK_KP_Home:
                        focus_row = -vfi->focus_row;
                        focus_col = -vfi->focus_column;
-                       stop_signal = TRUE;
                        break;
                case GDK_End: case GDK_KP_End:
                        focus_row = vfi->rows - 1 - vfi->focus_row;
                        focus_col = vfi->columns - 1 - vfi->focus_column;
-                       stop_signal = TRUE;
                        break;
                case GDK_space:
                        fd = vficon_find_data(vfi, vfi->focus_row, vfi->focus_column, NULL);
@@ -1232,7 +1225,6 @@ static gint vficon_press_key_cb(GtkWidget *widget, GdkEventKey *event, gpointer
                                        vficon_send_layout_select(vfi, fd);
                                        }
                                }
-                       stop_signal = TRUE;
                        break;
                case GDK_Menu:
                        fd = vficon_find_data(vfi, vfi->focus_row, vfi->focus_column, NULL);
@@ -1243,9 +1235,9 @@ static gint vficon_press_key_cb(GtkWidget *widget, GdkEventKey *event, gpointer
 
                        vfi->popup = vficon_pop_menu(vfi, (fd != NULL));
                        gtk_menu_popup(GTK_MENU(vfi->popup), NULL, NULL, vfi_menu_position_cb, vfi, 0, GDK_CURRENT_TIME);
-                       stop_signal = TRUE;
                        break;
                default:
+                       stop_signal = FALSE;
                        break;
                }
 
@@ -1289,7 +1281,9 @@ static gint vficon_press_key_cb(GtkWidget *widget, GdkEventKey *event, gpointer
 
        if (stop_signal)
                {
+#if 0
                g_signal_stop_emission_by_name(GTK_OBJECT(widget), "key_press_event");
+#endif
                tip_unschedule(vfi);
                }