changeset 85:9d5c75b5ec28

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.
author gqview
date Fri, 20 Oct 2006 13:25:03 +0000
parents ba3c39002a24
children cade6a52a165
files ChangeLog src/collect-table.c src/collect.c src/dupe.c src/pan-view.c src/search.c src/view_file_icon.c
diffstat 7 files changed, 253 insertions(+), 269 deletions(-) [+]
line wrap: on
line diff
--- a/ChangeLog	Fri Oct 20 12:03:16 2006 +0000
+++ b/ChangeLog	Fri Oct 20 13:25:03 2006 +0000
@@ -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
--- a/src/collect-table.c	Fri Oct 20 12:03:16 2006 +0000
+++ b/src/collect-table.c	Fri Oct 20 13:25:03 2006 +0000
@@ -1024,46 +1024,39 @@
 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 @@
 					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 @@
 
 			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 @@
 
 	if (stop_signal)
 		{
+#if 0
 		g_signal_stop_emission_by_name(GTK_OBJECT(widget), "key_press_event");
+#endif
 		tip_unschedule(ct);
 		}
 
--- a/src/collect.c	Fri Oct 20 12:03:16 2006 +0000
+++ b/src/collect.c	Fri Oct 20 13:25:03 2006 +0000
@@ -780,6 +780,7 @@
 
 	if (event->state & GDK_CONTROL_MASK)
 		{
+		stop_signal = TRUE;
 		switch (event->keyval)
 			{
 			case '1':
@@ -821,7 +822,6 @@
 					{
 					collection_table_select_all(cw->table);
 					}
-				stop_signal = TRUE;
 				break;
 			case 'L': case 'l':
 				list = layout_list(NULL);
@@ -830,53 +830,45 @@
 					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 @@
 					{
 					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 @@
 					{
 					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 @@
 		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;
--- a/src/dupe.c	Fri Oct 20 12:03:16 2006 +0000
+++ b/src/dupe.c	Fri Oct 20 13:25:03 2006 +0000
@@ -2831,140 +2831,135 @@
 		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 @@
 					}
 				break;
 			default:
+				stop_signal = FALSE;
 				break;
 			}
 		}
--- a/src/pan-view.c	Fri Oct 20 12:03:16 2006 +0000
+++ b/src/pan-view.c	Fri Oct 20 13:25:03 2006 +0000
@@ -3413,23 +3413,20 @@
 
 	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 @@
 			case GDK_End: case GDK_KP_End:
 				pixbuf_renderer_scroll(pr, pr->vis_width / 2, 0);
 				break;
+			default:
+				stop_signal = FALSE;
+				break;
+			}
+
+		if (x != 0 || y!= 0)
+			{
+			if (event->state & GDK_SHIFT_MASK)
+				{
+				x *= 3;
+				y *= 3;
+				}
+			keyboard_scroll_calc(&x, &y, event);
+			pixbuf_renderer_scroll(pr, x, y);
 			}
 		}
 
-	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))
-				{
-				gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(pw->search_button), FALSE);
-				stop_signal = TRUE;
-				}
-			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;
-		}
+	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 @@
 			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 @@
 				pan_fullscreen_toggle(pw, TRUE);
 				}
 			start_editor_from_file(n, path);
-			stop_signal = TRUE;
 			}
 		}
-	else if (event->state & GDK_SHIFT_MASK)
+	else
 		{
-		x *= 3;
-		y *= 3;
-		}
-	else if (!focused)
-		{
-		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;
 }
 
--- a/src/search.c	Fri Oct 20 12:03:16 2006 +0000
+++ b/src/search.c	Fri Oct 20 13:25:03 2006 +0000
@@ -1186,6 +1186,7 @@
 		{
 		gint edit_val = -1;
 
+		stop_signal = TRUE;
 		switch (event->keyval)
 			{
 			case '1':
@@ -1219,23 +1220,18 @@
 				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 @@
 					{
 					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 @@
 				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 @@
 				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 @@
 
 	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;
 			}
 		}
--- a/src/view_file_icon.c	Fri Oct 20 12:03:16 2006 +0000
+++ b/src/view_file_icon.c	Fri Oct 20 13:25:03 2006 +0000
@@ -1164,46 +1164,39 @@
 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 @@
 					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 @@
 
 			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 @@
 
 	if (stop_signal)
 		{
+#if 0
 		g_signal_stop_emission_by_name(GTK_OBJECT(widget), "key_press_event");
+#endif
 		tip_unschedule(vfi);
 		}