summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Alexey Yakovenko <wakeroid@gmail.com>2009-07-30 20:23:19 +0200
committerGravatar Alexey Yakovenko <wakeroid@gmail.com>2009-07-30 20:23:19 +0200
commita7c62b19b089ed133eb73b7d3a08cd7b2500aaad (patch)
treee9a0ee4847a411c74b2130473c4d8e316eeff18e
parent7fbee61bcf22c3a73ca3127eb9a1fcdfdb45cdd7 (diff)
fixed playlist scrolling using mousewheel
-rw-r--r--callbacks.c12
-rw-r--r--gtkplaylist.c24
-rw-r--r--gtkplaylist.h3
3 files changed, 28 insertions, 11 deletions
diff --git a/callbacks.c b/callbacks.c
index d319186f..daccf00a 100644
--- a/callbacks.c
+++ b/callbacks.c
@@ -236,18 +236,8 @@ on_playlist_scroll_event (GtkWidget *widget,
GdkEvent *event,
gpointer user_data)
{
- // pass event to scrollbar
- GtkWidget *range = lookup_widget (mainwin, "playscroll");
GdkEventScroll *ev = (GdkEventScroll*)event;
- GtkAdjustment* adj = gtk_range_get_adjustment (GTK_RANGE (range));
- int newscroll = gtk_range_get_value (GTK_RANGE (range));
- if (ev->direction == GDK_SCROLL_UP) {
- newscroll -= 10;//gtk_adjustment_get_page_increment (adj);
- }
- else if (ev->direction == GDK_SCROLL_DOWN) {
- newscroll += 10;//gtk_adjustment_get_page_increment (adj);
- }
- gtk_range_set_value (GTK_RANGE (range), newscroll);
+ gtkps_handle_scroll_event (ev->direction);
return FALSE;
}
diff --git a/gtkplaylist.c b/gtkplaylist.c
index 6190b30d..4835fda0 100644
--- a/gtkplaylist.c
+++ b/gtkplaylist.c
@@ -288,6 +288,30 @@ gtkps_mouse1_clicked (GtkWidget *widget, int state, int ex, int ey, double time)
}
void
+gtkps_handle_scroll_event (int direction) {
+ GtkWidget *range = lookup_widget (mainwin, "playscroll");
+ GtkWidget *playlist = lookup_widget (mainwin, "playlist");
+ int h = playlist->allocation.height / rowheight;
+ int size = ps_getcount ();
+ if (h >= size) {
+ size = 0;
+ }
+ if (size == 0) {
+ return;
+ }
+ // pass event to scrollbar
+ GtkAdjustment* adj = gtk_range_get_adjustment (GTK_RANGE (range));
+ int newscroll = gtk_range_get_value (GTK_RANGE (range));
+ if (direction == GDK_SCROLL_UP) {
+ newscroll -= 10;//gtk_adjustment_get_page_increment (adj);
+ }
+ else if (direction == GDK_SCROLL_DOWN) {
+ newscroll += 10;//gtk_adjustment_get_page_increment (adj);
+ }
+ gtk_range_set_value (GTK_RANGE (range), newscroll);
+}
+
+void
gtkps_scroll (int newscroll) {
if (newscroll != scrollpos) {
scrollpos = newscroll;
diff --git a/gtkplaylist.h b/gtkplaylist.h
index ade41a15..507bda4c 100644
--- a/gtkplaylist.h
+++ b/gtkplaylist.h
@@ -61,4 +61,7 @@ gtkps_update_songinfo (void);
void
gtkps_songchanged (int from, int to);
+void
+gtkps_handle_scroll_event (int direction);
+
#endif