diff options
author | waker <wakeroid@gmail.com> | 2012-05-16 18:58:21 +0200 |
---|---|---|
committer | waker <wakeroid@gmail.com> | 2012-05-16 18:58:21 +0200 |
commit | 527ba48d8209a8e854c791d571106a5daf2fdd29 (patch) | |
tree | 2a7231305e64367bdb1b4d5e9329532f0a8edcac | |
parent | cd1b634e3a2d6ddc4221d97141945948cc05bee0 (diff) |
show info in seekbar while dragging
-rw-r--r-- | plugins/gtkui/ddbseekbar.c | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/plugins/gtkui/ddbseekbar.c b/plugins/gtkui/ddbseekbar.c index 544083b9..6f0d01fe 100644 --- a/plugins/gtkui/ddbseekbar.c +++ b/plugins/gtkui/ddbseekbar.c @@ -148,6 +148,26 @@ static gboolean ddb_seekbar_real_motion_notify_event (GtkWidget* base, GdkEventM _tmp0_ = *event; _tmp1_ = on_seekbar_motion_notify_event ((GtkWidget*) self, &_tmp0_); result = _tmp1_; + + DB_playItem_t *trk = deadbeef->streamer_get_playing_track (); + if (trk) { + GtkAllocation a; + gtk_widget_get_allocation (base, &a); + float time = (event->x - a.x) * deadbeef->pl_get_item_duration (trk) / (a.width); + if (time < 0) { + time = 0; + } + deadbeef->pl_item_unref (trk); + char s[1000]; + int hr = time/360; + int mn = (time-hr*360)/60; + int sc = time-hr*360-mn*60; + snprintf (s, sizeof (s), "%02d:%02d:%02d", hr, mn, sc); + + printf ("set tooltip text %s\n", s); + gtk_widget_set_tooltip_text (base, s); + gtk_widget_trigger_tooltip_query (base); + } return result; } @@ -206,6 +226,7 @@ static void ddb_seekbar_class_init (DdbSeekbarClass * klass) { static void ddb_seekbar_instance_init (DdbSeekbar * self) { gtk_widget_set_has_window ((GtkWidget*) self, FALSE); + gtk_widget_set_has_tooltip ((GtkWidget*) self, TRUE); } |