banshee r5002 - in trunk/banshee: . libbanshee src/Core/Banshee.Widgets/Banshee.Widgets



Author: gburt
Date: Tue Feb  3 17:41:51 2009
New Revision: 5002
URL: http://svn.gnome.org/viewvc/banshee?rev=5002&view=rev

Log:
2009-02-03  Gabriel Burt  <gabriel burt gmail com>

	* libbanshee/banshee-player.c:
	* src/Core/Banshee.Widgets/Banshee.Widgets/SeekSlider.cs: Slightly
	modified patch from Moritz SchallabÃck that makes CanSeek always false if
	the duration is zero, and that imroves the seek slider by letting you
	scroll-wheel over it or left-click to jump (BGO #565795)

Modified:
   trunk/banshee/ChangeLog
   trunk/banshee/libbanshee/banshee-player.c
   trunk/banshee/src/Core/Banshee.Widgets/Banshee.Widgets/SeekSlider.cs

Modified: trunk/banshee/libbanshee/banshee-player.c
==============================================================================
--- trunk/banshee/libbanshee/banshee-player.c	(original)
+++ trunk/banshee/libbanshee/banshee-player.c	Tue Feb  3 17:41:51 2009
@@ -267,7 +267,7 @@
     gst_query_parse_seeking (query, NULL, &can_seek, NULL, NULL);
     gst_query_unref (query);
     
-    return can_seek;
+    return can_seek && bp_get_duration (player) > 0;
 }
 
 P_INVOKE void

Modified: trunk/banshee/src/Core/Banshee.Widgets/Banshee.Widgets/SeekSlider.cs
==============================================================================
--- trunk/banshee/src/Core/Banshee.Widgets/Banshee.Widgets/SeekSlider.cs	(original)
+++ trunk/banshee/src/Core/Banshee.Widgets/Banshee.Widgets/SeekSlider.cs	Tue Feb  3 17:41:51 2009
@@ -61,7 +61,16 @@
             can_set_value = false;
             return base.OnButtonPressEvent(evnt);
         }
-        
+
+        protected override bool OnScrollEvent(Gdk.EventScroll evnt) {
+            if (can_seek) {
+                SeekValue += (evnt.Direction.Equals (Gdk.ScrollDirection.Down) ? -1 : 1) * 10000; // skip 10s
+                OnSeekRequested();
+            }
+            
+            return base.OnScrollEvent (evnt);
+        }
+
         protected override bool OnButtonReleaseEvent(Gdk.EventButton evnt)
         {
             can_set_value = true;
@@ -70,7 +79,12 @@
                 GLib.Source.Remove(timeout);
             }
             
-            OnSeekRequested();
+            if (can_seek) {
+                if (evnt.Button == 1) {
+                    SeekValue = (long) (evnt.X / WidthRequest * Duration); // seek to clicked position
+                }
+                OnSeekRequested();
+            }
             
             return base.OnButtonReleaseEvent(evnt);
         }



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