diff options
author | Michael Drake <tlsa@netsurf-browser.org> | 2013-05-07 14:56:42 +0100 |
---|---|---|
committer | Michael Drake <tlsa@netsurf-browser.org> | 2013-05-07 14:56:42 +0100 |
commit | 8b6665fe0383fd565ac7d7cd6a2bf6243ebc9937 (patch) | |
tree | ffa2ae68c2f87f19cbbd13b7e79a632a682202ee /gtk | |
parent | 3afd9c97310d58c0c6588d18887244328590731e (diff) | |
parent | f4af0d86e240948bb37a1d318d4e2559f04c6a79 (diff) | |
download | netsurf-8b6665fe0383fd565ac7d7cd6a2bf6243ebc9937.tar.gz netsurf-8b6665fe0383fd565ac7d7cd6a2bf6243ebc9937.tar.bz2 |
Merge branch 'master' of git://git.netsurf-browser.org/netsurf into tlsa/selection-search-refactor
Diffstat (limited to 'gtk')
-rw-r--r-- | gtk/res/cookies.gtk3.ui | 1 | ||||
-rw-r--r-- | gtk/res/hotlist.gtk3.ui | 1 | ||||
-rw-r--r-- | gtk/res/tabcontents.gtk2.ui | 4 | ||||
-rw-r--r-- | gtk/window.c | 112 |
4 files changed, 53 insertions, 65 deletions
diff --git a/gtk/res/cookies.gtk3.ui b/gtk/res/cookies.gtk3.ui index 3ccc04bce..44dcb80b8 100644 --- a/gtk/res/cookies.gtk3.ui +++ b/gtk/res/cookies.gtk3.ui @@ -188,6 +188,7 @@ <property name="visible">True</property> <property name="app_paintable">True</property> <property name="can_focus">False</property> + <property name="events">GDK_EXPOSURE_MASK | GDK_POINTER_MOTION_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK | GDK_KEY_PRESS_MASK | GDK_KEY_RELEASE_MASK | GDK_LEAVE_NOTIFY_MASK | GDK_STRUCTURE_MASK</property> </object> </child> </object> diff --git a/gtk/res/hotlist.gtk3.ui b/gtk/res/hotlist.gtk3.ui index 78a81672b..b0e075c4b 100644 --- a/gtk/res/hotlist.gtk3.ui +++ b/gtk/res/hotlist.gtk3.ui @@ -237,6 +237,7 @@ <object class="GtkDrawingArea" id="hotlistDrawingArea"> <property name="visible">True</property> <property name="can_focus">False</property> + <property name="events">GDK_EXPOSURE_MASK | GDK_POINTER_MOTION_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK | GDK_KEY_PRESS_MASK | GDK_KEY_RELEASE_MASK | GDK_LEAVE_NOTIFY_MASK | GDK_STRUCTURE_MASK</property> </object> </child> </object> diff --git a/gtk/res/tabcontents.gtk2.ui b/gtk/res/tabcontents.gtk2.ui index e87249e74..63e290e8b 100644 --- a/gtk/res/tabcontents.gtk2.ui +++ b/gtk/res/tabcontents.gtk2.ui @@ -79,13 +79,13 @@ </object> <object class="GtkAdjustment" id="layouthadjustment"> <property name="upper">100</property> - <property name="step_increment">1</property> + <property name="step_increment">30</property> <property name="page_increment">10</property> <property name="page_size">10</property> </object> <object class="GtkAdjustment" id="layoutvadjustment"> <property name="upper">100</property> - <property name="step_increment">1</property> + <property name="step_increment">30</property> <property name="page_increment">10</property> <property name="page_size">10</property> </object> diff --git a/gtk/window.c b/gtk/window.c index 7642e3b82..663ff32a3 100644 --- a/gtk/window.c +++ b/gtk/window.c @@ -384,105 +384,91 @@ static gboolean nsgtk_window_button_release_event(GtkWidget *widget, return TRUE; } -static gboolean nsgtk_window_scroll_event(GtkWidget *widget, - GdkEventScroll *event, gpointer data) +static gboolean +nsgtk_window_scroll_event(GtkWidget *widget, + GdkEventScroll *event, + gpointer data) { struct gui_window *g = data; double value; + double deltax = 0; + double deltay = 0; GtkAdjustment *vscroll = nsgtk_layout_get_vadjustment(g->layout); GtkAdjustment *hscroll = nsgtk_layout_get_hadjustment(g->layout); GtkAllocation alloc; - LOG(("%d", event->direction)); switch (event->direction) { case GDK_SCROLL_LEFT: - if (browser_window_scroll_at_point(g->bw, - event->x / g->bw->scale, - event->y / g->bw->scale, - -100, 0) != true) { - /* core did not handle event do horizontal scroll */ - - value = gtk_adjustment_get_value(hscroll) - - (nsgtk_adjustment_get_step_increment(hscroll) *2); - - if (value < nsgtk_adjustment_get_lower(hscroll)) { - value = nsgtk_adjustment_get_lower(hscroll); - } - - gtk_adjustment_set_value(hscroll, value); - } + deltax = -1.0; break; case GDK_SCROLL_UP: - if (browser_window_scroll_at_point(g->bw, - event->x / g->bw->scale, - event->y / g->bw->scale, - 0, -100) != true) { - /* core did not handle event change vertical - * adjustment. - */ + deltay = -1.0; + break; - value = gtk_adjustment_get_value(vscroll) - - (nsgtk_adjustment_get_step_increment(vscroll) * 2); + case GDK_SCROLL_RIGHT: + deltax = 1.0; + break; - if (value < nsgtk_adjustment_get_lower(vscroll)) { - value = nsgtk_adjustment_get_lower(vscroll); - } + case GDK_SCROLL_DOWN: + deltay = 1.0; + break; - gtk_adjustment_set_value(vscroll, value); - } +#if GTK_CHECK_VERSION(3,4,0) + case GDK_SCROLL_SMOOTH: + gdk_event_get_scroll_deltas((GdkEvent *)event, &deltax, &deltay); break; +#endif + default: + LOG(("Unhandled mouse scroll direction")); + return TRUE; + } - case GDK_SCROLL_RIGHT: - if (browser_window_scroll_at_point(g->bw, - event->x / g->bw->scale, - event->y / g->bw->scale, - 100, 0) != true) { + deltax *= nsgtk_adjustment_get_step_increment(hscroll); + deltay *= nsgtk_adjustment_get_step_increment(vscroll); + + LOG(("Scrolling %f, %f", deltax, deltay)); - /* core did not handle event change horizontal - * adjustment. - */ + if (browser_window_scroll_at_point(g->bw, + event->x / g->bw->scale, + event->y / g->bw->scale, + deltax, deltay) != true) { - value = gtk_adjustment_get_value(hscroll) + - (nsgtk_adjustment_get_step_increment(hscroll) * 2); + /* core did not handle event so change adjustments */ + + /* Horizontal */ + if (deltax != 0) { + value = gtk_adjustment_get_value(hscroll) + deltax; /* @todo consider gtk_widget_get_allocated_width() */ nsgtk_widget_get_allocation(GTK_WIDGET(g->layout), &alloc); if (value > nsgtk_adjustment_get_upper(hscroll) - alloc.width) { - value = nsgtk_adjustment_get_upper(hscroll) - - alloc.width; + value = nsgtk_adjustment_get_upper(hscroll) - alloc.width; + } + if (value < nsgtk_adjustment_get_lower(hscroll)) { + value = nsgtk_adjustment_get_lower(hscroll); } gtk_adjustment_set_value(hscroll, value); } - break; - case GDK_SCROLL_DOWN: - if (browser_window_scroll_at_point(g->bw, - event->x / g->bw->scale, - event->y / g->bw->scale, - 0, 100) != true) { - /* core did not handle event change vertical - * adjustment. - */ - - value = gtk_adjustment_get_value(vscroll) + - (nsgtk_adjustment_get_step_increment(vscroll) * 2); + /* Vertical */ + if (deltay != 0) { + value = gtk_adjustment_get_value(vscroll) + deltay; + /* @todo consider gtk_widget_get_allocated_height */ nsgtk_widget_get_allocation(GTK_WIDGET(g->layout), &alloc); - if (value > nsgtk_adjustment_get_upper(vscroll) - alloc.height) { - value = nsgtk_adjustment_get_upper(vscroll) - - alloc.height; + if (value > (nsgtk_adjustment_get_upper(vscroll) - alloc.height)) { + value = nsgtk_adjustment_get_upper(vscroll) - alloc.height; + } + if (value < nsgtk_adjustment_get_lower(vscroll)) { + value = nsgtk_adjustment_get_lower(vscroll); } gtk_adjustment_set_value(vscroll, value); } - break; - - default: - break; } return TRUE; |