diff src/layout_util.c @ 84:ba3c39002a24

Fri Oct 20 08:00:08 2006 John Ellis <johne@verizon.net> * img-view.c, layout_image.c, layout_util.c: Keypress signal handler code clean-up round 1: the main windows. Also fixes [Shift]+[F] from deactivating full screen [F].
author gqview
date Fri, 20 Oct 2006 12:03:16 +0000
parents a4c1b7014e6e
children cade6a52a165
line wrap: on
line diff
--- a/src/layout_util.c	Thu Oct 19 19:32:31 2006 +0000
+++ b/src/layout_util.c	Fri Oct 20 12:03:16 2006 +0000
@@ -103,142 +103,133 @@
 	if (lw->image &&
 	    (GTK_WIDGET_HAS_FOCUS(lw->image->widget) || (lw->tools && widget == lw->window)) )
 		{
+		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_BackSpace:
 			case 'B': case 'b':
 				layout_image_prev(lw);
-				stop_signal = TRUE;
 				break;
 			case GDK_space:
 			case 'N': case 'n':
 				layout_image_next(lw);
-				stop_signal = TRUE;
 				break;
 			case GDK_Menu:
 				layout_image_menu_popup(lw);
-				stop_signal = TRUE;
+				break;
+			default:
+				stop_signal = FALSE;
 				break;
 			}
 		}
 
-	if (!stop_signal && !(event->state & GDK_CONTROL_MASK) )
-	    switch (event->keyval)
-		{
-		case '+': case GDK_KP_Add:
-			layout_image_zoom_adjust(lw, get_zoom_increment());
-			stop_signal = TRUE;
-			break;
-		case GDK_KP_Subtract:
-			layout_image_zoom_adjust(lw, -get_zoom_increment());
-			stop_signal = TRUE;
-			break;
-		case GDK_KP_Multiply:
-			layout_image_zoom_set(lw, 0.0);
-			stop_signal = TRUE;
-			break;
-		case GDK_KP_Divide:
-		case '1':
-			layout_image_zoom_set(lw, 1.0);
-			stop_signal = TRUE;
-			break;
-		case '2':
-			layout_image_zoom_set(lw, 2.0);
-			stop_signal = TRUE;
-			break;
-		case '3':
-			layout_image_zoom_set(lw, 3.0);
-			stop_signal = TRUE;
-			break;
-		case '4':
-			layout_image_zoom_set(lw, 4.0);
-			stop_signal = TRUE;
-			break;
-		case '7':
-			layout_image_zoom_set(lw, -4.0);
-			stop_signal = TRUE;
-			break;
-		case '8':
-			layout_image_zoom_set(lw, -3.0);
-			stop_signal = TRUE;
-			break;
-		case '9':
-			layout_image_zoom_set(lw, -2.0);
-			stop_signal = TRUE;
-			break;
-		case 'W': case 'w':
-			layout_image_zoom_set_fill_geometry(lw, FALSE);
-			break;
-		case 'H': case 'h':
-			layout_image_zoom_set_fill_geometry(lw, TRUE);
-			break;
-		case GDK_Page_Up: case GDK_KP_Page_Up:
-			layout_image_prev(lw);
-			stop_signal = TRUE;
-			break;
-		case GDK_Page_Down: case GDK_KP_Page_Down:
-			layout_image_next(lw);
-			stop_signal = TRUE;
-			break;
-		case GDK_Home: case GDK_KP_Home:
-			layout_image_first(lw);
-			stop_signal = TRUE;
-			break;
-		case GDK_End: case GDK_KP_End:
-			layout_image_last(lw);
-			stop_signal = TRUE;
-			break;
-		case GDK_Delete: case GDK_KP_Delete:
-			if (enable_delete_key)
-				{
-				file_util_delete(NULL, layout_selection_list(lw), widget);
-				stop_signal = TRUE;
-				}
-			break;
-		case GDK_Escape:
-			/* FIXME:interrupting thumbs no longer allowed */
-#if 0
-			interrupt_thumbs();
-#endif
-			stop_signal = TRUE;
-			break;
-		case 'P': case 'p':
-			layout_image_slideshow_pause_toggle(lw);
-			break;
-		case 'V': case 'v':
-			if (!(event->state & GDK_MOD1_MASK)) layout_image_full_screen_toggle(lw);
-			break;
-		}
-
-	if (event->state & GDK_SHIFT_MASK)
-		{
-		x *= 3;
-		y *= 3;
-		}
-
 	if (x != 0 || y!= 0)
 		{
+		if (event->state & GDK_SHIFT_MASK)
+			{
+			x *= 3;
+			y *= 3;
+			}
+
 		keyboard_scroll_calc(&x, &y, event);
 		layout_image_scroll(lw, x, y);
 		}
 
+	if (stop_signal) return stop_signal;
+
+	if (!(event->state & GDK_CONTROL_MASK))
+		{
+		stop_signal = TRUE;
+		switch (event->keyval)
+			{
+			case '+': case GDK_KP_Add:
+				layout_image_zoom_adjust(lw, get_zoom_increment());
+				break;
+			case GDK_KP_Subtract:
+				layout_image_zoom_adjust(lw, -get_zoom_increment());
+				break;
+			case GDK_KP_Multiply:
+				layout_image_zoom_set(lw, 0.0);
+				break;
+			case GDK_KP_Divide:
+			case '1':
+				layout_image_zoom_set(lw, 1.0);
+				break;
+			case '2':
+				layout_image_zoom_set(lw, 2.0);
+				break;
+			case '3':
+				layout_image_zoom_set(lw, 3.0);
+				break;
+			case '4':
+				layout_image_zoom_set(lw, 4.0);
+				break;
+			case '7':
+				layout_image_zoom_set(lw, -4.0);
+				break;
+			case '8':
+				layout_image_zoom_set(lw, -3.0);
+				break;
+			case '9':
+				layout_image_zoom_set(lw, -2.0);
+				break;
+			case 'W': case 'w':
+				layout_image_zoom_set_fill_geometry(lw, FALSE);
+				break;
+			case 'H': case 'h':
+				layout_image_zoom_set_fill_geometry(lw, TRUE);
+				break;
+			case GDK_Page_Up: case GDK_KP_Page_Up:
+				layout_image_prev(lw);
+				break;
+			case GDK_Page_Down: case GDK_KP_Page_Down:
+				layout_image_next(lw);
+				break;
+			case GDK_Home: case GDK_KP_Home:
+				layout_image_first(lw);
+				break;
+			case GDK_End: case GDK_KP_End:
+				layout_image_last(lw);
+				break;
+			case GDK_Delete: case GDK_KP_Delete:
+				if (enable_delete_key)
+					{
+					file_util_delete(NULL, layout_selection_list(lw), widget);
+					}
+				break;
+			case GDK_Escape:
+				/* FIXME:interrupting thumbs no longer allowed */
+#if 0
+				interrupt_thumbs();
+#endif
+				break;
+			case 'P': case 'p':
+				layout_image_slideshow_pause_toggle(lw);
+				break;
+			case 'V': case 'v':
+				if (!(event->state & GDK_MOD1_MASK)) layout_image_full_screen_toggle(lw);
+				break;
+			default:
+				stop_signal = FALSE;
+				break;
+			}
+		}
+
+#if 0
 	if (stop_signal) g_signal_stop_emission_by_name(G_OBJECT(widget), "key_press_event");
+#endif
 
 	return stop_signal;
 }