f-spot r4348 - in trunk: . src



Author: sdelcroix
Date: Mon Sep 15 14:27:07 2008
New Revision: 4348
URL: http://svn.gnome.org/viewvc/f-spot?rev=4348&view=rev

Log:
2008-09-15  Stephane Delcroix  <sdelcroix novell com>

	* src/MainWindows.cs
	* src/FullScreenView.cs:
	* src/f-spot.glade: some key handling refactoring, allow rating
	and deleting in fullscreen. Patch from Anton Keks, fixes bgo #552145.


Modified:
   trunk/ChangeLog
   trunk/src/FullScreenView.cs
   trunk/src/MainWindow.cs
   trunk/src/f-spot.glade

Modified: trunk/src/FullScreenView.cs
==============================================================================
--- trunk/src/FullScreenView.cs	(original)
+++ trunk/src/FullScreenView.cs	Mon Sep 15 14:27:07 2008
@@ -234,7 +234,7 @@
 			this.Destroy ();
 		}
 
-	        private void HideToolbarAction (object sender, System.EventArgs args)
+		private void HideToolbarAction (object sender, System.EventArgs args)
 		{
 			scroll.HideControls (true);
 			controls.Dismiss ();
@@ -316,45 +316,30 @@
 
 		protected override bool OnKeyPressEvent (Gdk.EventKey key)
 		{
-			bool allow_quit = false;
-			
 			switch (key.Key) {
 			// quit only on certain keys
 			case Gdk.Key.F:
 			case Gdk.Key.f:
+			case Gdk.Key.Q:
+			case Gdk.Key.q:
 			case Gdk.Key.F11:
 			case Gdk.Key.Escape:
-				allow_quit = true;
-				break;
+				Quit ();
+				return true;
 			// display infobox for 'i' key
 			case Gdk.Key.i:
 			case Gdk.Key.I:
 				InfoAction (info_button, null);
-				break;
+				return true;
 			case Gdk.Key.bracketleft:
 				new RotateLeftAction (view.Item).Activate ();
-				break;
+				return true;
 			case Gdk.Key.bracketright:
 				new RotateRightAction (view.Item).Activate ();
-				break;
-			}
-
-			if (key == null) {
-				Log.Debug ("Key == null: " + key);
-				return false;
+				return true;
 			}
 
-			if (view == null) {
-				Log.Debug ("view == null: " + key);
-				return false;
-			}
-			
-			bool retval = base.OnKeyPressEvent (key);
-			if (allow_quit && !retval)
-				Quit ();
-			else 
-				view.Fit = false;
-			return retval;
+			return base.OnKeyPressEvent (key);
 		}
 	}
 }

Modified: trunk/src/MainWindow.cs
==============================================================================
--- trunk/src/MainWindow.cs	(original)
+++ trunk/src/MainWindow.cs	Mon Sep 15 14:27:07 2008
@@ -1310,58 +1310,6 @@
 		args.RetVal = true;
 	}
 
-	void HandleIconViewKeyPressEvent (object sender, Gtk.KeyPressEventArgs args)
-	{
-		bool alt = ModifierType.Mod1Mask == (args.Event.State & ModifierType.Mod1Mask);
-		bool shift = ModifierType.ShiftMask == (args.Event.State & ModifierType.ShiftMask);
-
-		switch (args.Event.Key) {
-		case Gdk.Key.Delete:
-			if (shift)
-				HandleDeleteCommand (sender, (EventArgs) args);
-			else
-				HandleRemoveCommand (sender, (EventArgs) args);
-			args.RetVal = true;
-			break;
-		case Gdk.Key.Key_0:
-			if (alt) {
-				HandleRatingMenuSelected (0);
-				args.RetVal = true;
-			}
-			break;
-		case Gdk.Key.Key_1:
-			if (alt) {
-				HandleRatingMenuSelected (1);
-				args.RetVal = true;
-			}
-			break;
-		case Gdk.Key.Key_2:
-			if (alt) {
-				HandleRatingMenuSelected (2);
-				args.RetVal = true;
-			}
-			break;
-		case Gdk.Key.Key_3:
-			if (alt) {
-				HandleRatingMenuSelected (3);
-				args.RetVal = true;
-			}
-			break;
-		case Gdk.Key.Key_4:
-			if (alt) {
-				HandleRatingMenuSelected (4);
-				args.RetVal = true;
-			}
-			break;
-		case Gdk.Key.Key_5:
-			if (alt) {
-				HandleRatingMenuSelected (5);
-				args.RetVal = true;
-			}
-			break;
-		}
-	}
-
 	public void ImportUriList (UriList list, bool copy) 
 	{
 		ImportCommand command = new ImportCommand (main_window);
@@ -1470,72 +1418,99 @@
 		}
 	}
 
-	//
-	// PhotoView event handlers.
-	//
-	
-	void HandlePhotoViewKeyPressEvent (object sender, Gtk.KeyPressEventArgs args)
-	{
+	public void HandleCommonPhotoCommands (object sender, Gtk.KeyPressEventArgs args) {
 		bool alt = ModifierType.Mod1Mask == (args.Event.State & ModifierType.Mod1Mask);
 		bool shift = ModifierType.ShiftMask == (args.Event.State & ModifierType.ShiftMask);
+		bool handled = true;
 		
 		switch (args.Event.Key) {
-		case Gdk.Key.F:
-		case Gdk.Key.f:
-			HandleViewFullscreen (sender, args);
-			args.RetVal = true;
-			break;
-		case Gdk.Key.Escape:
-			SetViewMode (ModeType.IconView);
-			args.RetVal = true;
-			break;
 		case Gdk.Key.Delete:
 			if (shift)
-				HandleDeleteCommand (sender, (EventArgs) args);
+				HandleDeleteCommand (sender, args);
 			else
-				HandleRemoveCommand (sender, (EventArgs) args);
-			args.RetVal = true;
+				HandleRemoveCommand (sender, args);
 			break;
 		case Gdk.Key.Key_0:
-			if (alt) {
+			if (alt)
 				HandleRatingMenuSelected (0);
-				args.RetVal = true;
-			}
 			break;
 		case Gdk.Key.Key_1:
-			if (alt) {
+			if (alt)
 				HandleRatingMenuSelected (1);
-				args.RetVal = true;
-			}
 			break;
 		case Gdk.Key.Key_2:
-			if (alt) {
+			if (alt)
 				HandleRatingMenuSelected (2);
-				args.RetVal = true;
-			}
 			break;
 		case Gdk.Key.Key_3:
-			if (alt) {
+			if (alt)
 				HandleRatingMenuSelected (3);
-				args.RetVal = true;
-			}
 			break;
 		case Gdk.Key.Key_4:
-			if (alt) {
+			if (alt)
 				HandleRatingMenuSelected (4);
-				args.RetVal = true;
-			}
 			break;
 		case Gdk.Key.Key_5:
-			if (alt) {
+			if (alt)
 				HandleRatingMenuSelected (5);
-				args.RetVal = true;
-			}
 			break;
 		default:
+			handled = false;
+			break;
+		}
+
+		if (handled)
+			args.RetVal = result;
+	}
+
+	void HandleIconViewKeyPressEvent (object sender, Gtk.KeyPressEventArgs args)
+	{
+		HandleCommonPhotoCommands (sender, args);
+		if ((bool)args.RetVal)
+			return;
+
+		switch (args.Event.Key) {
+		case Gdk.Key.F:
+		case Gdk.Key.f:
+			HandleViewFullscreen (sender, args);
+			args.RetVal = true;
+			break;
+		}
+	}
+
+	//
+	// FullScreenView event handlers.
+	//
+
+	void HandleFullScreenViewKeyPressEvent (object sender, Gtk.KeyPressEventArgs args)
+	{
+		HandleCommonPhotoCommands (sender, args);
+		if ((bool)args.RetVal)
+			// this will hide any panels again that might have appeared above the fullscreen view
+			fsview.Present ();
+	}
+
+	//
+	// PhotoView event handlers.
+	//
+
+	void HandlePhotoViewKeyPressEvent (object sender, Gtk.KeyPressEventArgs args)
+	{
+		HandleCommonPhotoCommands (sender, args);
+		if ((bool)args.RetVal)
+			return;
+
+		switch (args.Event.Key) {
+		case Gdk.Key.F:
+		case Gdk.Key.f:
+			HandleViewFullscreen (sender, args);
+			args.RetVal = true;
+			break;
+		case Gdk.Key.Escape:
+			SetViewMode (ModeType.IconView);
+			args.RetVal = true;
 			break;
 		}
-		return;
 	}
 
 	void HandlePhotoViewUpdateStarted (PhotoView sender)
@@ -2233,6 +2208,7 @@
 		if (fsview == null) {
 			fsview = new FSpot.FullScreenView (query, main_window);
 			fsview.Destroyed += HandleFullScreenViewDestroy;
+			fsview.KeyPressEvent += HandleFullScreenViewKeyPressEvent;
 			fsview.View.Item.Index = active;
 		} else {
 			// FIXME this needs to be another mode like PhotoView and IconView mode.
@@ -2393,7 +2369,7 @@
 		Widget wsender = sender as Widget;
 		Gtk.Window toplevel = null;
 
-		if (wsender != null)
+		if (wsender != null && !(wsender is MenuItem))
 			toplevel = (Gtk.Window) wsender.Toplevel;
 		else if (fsview != null)
 			toplevel = fsview;
@@ -2415,8 +2391,6 @@
 								 photos.Length);
 		string ok_caption = Catalog.GetPluralString ("_Delete photo", "_Delete photos", photos.Length);
 		
-
-
 		if (ResponseType.Ok == HigMessageDialog.RunHigConfirmation(GetToplevel (sender), 
 									   DialogFlags.DestroyWithParent, 
 									   MessageType.Warning, 

Modified: trunk/src/f-spot.glade
==============================================================================
--- trunk/src/f-spot.glade	(original)
+++ trunk/src/f-spot.glade	Mon Sep 15 14:27:07 2008
@@ -3291,6 +3291,7 @@
                         <property name="label" translatable="yes">_Delete From Drive</property>
                         <property name="use_underline">True</property>
                         <signal name="activate" handler="HandleDeleteCommand"/>
+			<accelerator key="Delete" modifiers="GDK_SHIFT_MASK" signal="activate"/>
                       </widget>
                     </child>
                     <child>
@@ -3299,6 +3300,7 @@
                         <property name="label" translatable="yes">_Remove From Catalog</property>
                         <property name="use_underline">True</property>
                         <signal name="activate" handler="HandleRemoveCommand"/>
+			<accelerator key="Delete" signal="activate"/>
                       </widget>
                     </child>
                     <child>



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]