Mercurial > geeqie.yaz
diff src/pan-view.c @ 97:ddde49aace00
Fri Nov 3 21:15:40 2006 John Ellis <johne@verizon.net>
* pan-view.c: Fix shortcuts to work regardless of what has the focus.
Make [Control]+F (in addition to [/] show the find bar and [Control]+G
go to next match. Add folder location field to info popup.
author | gqview |
---|---|
date | Sat, 04 Nov 2006 02:20:32 +0000 |
parents | eb9bb29cbd65 |
children | d19b0de6d0bb |
line wrap: on
line diff
--- a/src/pan-view.c Fri Nov 03 16:53:56 2006 +0000 +++ b/src/pan-view.c Sat Nov 04 02:20:32 2006 +0000 @@ -302,6 +302,9 @@ static GtkWidget *pan_popup_menu(PanWindow *pw); static void pan_fullscreen_toggle(PanWindow *pw, gint force_off); +static void pan_search_toggle_visible(PanWindow *pw, gint enable); +static void pan_search_activate(PanWindow *pw); + static void pan_window_close(PanWindow *pw); static void pan_window_dnd_init(PanWindow *pw); @@ -3423,11 +3426,14 @@ gint x = 0; gint y = 0; gint focused; + gint on_entry; pr = PIXBUF_RENDERER(pw->imd->pr); path = pan_menu_click_path(pw); focused = (pw->fs || GTK_WIDGET_HAS_FOCUS(GTK_WIDGET(pw->imd->widget))); + on_entry = (GTK_WIDGET_HAS_FOCUS(pw->path_entry) || + GTK_WIDGET_HAS_FOCUS(pw->search_entry)); if (focused) { @@ -3529,6 +3535,12 @@ case 'P': case 'p': if (path) info_window_new(path, NULL); break; + case 'F': case 'f': + pan_search_toggle_visible(pw, TRUE); + break; + case 'G': case 'g': + pan_search_activate(pw); + break; case 'W': case 'w': pan_window_close(pw); break; @@ -3548,7 +3560,27 @@ } else { - if (focused) + stop_signal = TRUE; + switch (event->keyval) + { + case GDK_Escape: + if (pw->fs) + { + pan_fullscreen_toggle(pw, TRUE); + } + else + { + pan_search_toggle_visible(pw, FALSE); + } + break; + default: + stop_signal = FALSE; + break; + } + + if (stop_signal) return stop_signal; + + if (!on_entry) { stop_signal = TRUE; switch (event->keyval) @@ -3592,67 +3624,15 @@ 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; + gtk_menu_popup(GTK_MENU(menu), NULL, NULL, + pan_window_menu_pos_cb, pw, 0, GDK_CURRENT_TIME); 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; + case '/': + pan_search_toggle_visible(pw, TRUE); + break; default: stop_signal = FALSE; break; @@ -3913,6 +3893,9 @@ ta = pan_text_alignment_new(pw, pbox->x + PREF_PAD_BORDER, pbox->y + PREF_PAD_BORDER, "info"); pan_text_alignment_add(ta, _("Filename:"), pi->fd->name); + buf = remove_level_from_path(pi->fd->path); + pan_text_alignment_add(ta, _("Location:"), buf); + g_free(buf); pan_text_alignment_add(ta, _("Date:"), text_from_time(pi->fd->date)); buf = text_from_size(pi->fd->size); pan_text_alignment_add(ta, _("Size:"), buf); @@ -4288,6 +4271,22 @@ pan_search_status(pw, _("no match")); } +static void pan_search_activate(PanWindow *pw) +{ + gchar *text; + +#if 0 + if (!GTK_WIDGET_VISIBLE(pw->search_box)) + { + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(pw->search_button), TRUE); + } +#endif + + text = g_strdup(gtk_entry_get_text(GTK_ENTRY(pw->search_entry))); + pan_search_activate_cb(text, pw); + g_free(text); +} + static void pan_search_toggle_cb(GtkWidget *button, gpointer data) { PanWindow *pw = data; @@ -4309,6 +4308,34 @@ } } +static void pan_search_toggle_visible(PanWindow *pw, gint enable) +{ + if (pw->fs) return; + + if (enable) + { + 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 + { + if (GTK_WIDGET_VISIBLE(pw->search_entry)) + { + 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); + } + } +} + /* *-----------------------------------------------------------------------------