From 47aecd317897a3968f4f1ff01789c32eab154699 Mon Sep 17 00:00:00 2001 From: Alfredo Braunstein Date: Fri, 24 Sep 2004 06:32:22 +0000 Subject: [PATCH] John Spray's gtk scrolling patch git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@9002 a592a061-630c-0410-9148-cb99ea01b6c8 --- src/frontends/gtk/ChangeLog | 7 ++++++- src/frontends/gtk/GWorkArea.C | 19 +++++++++++++++++++ src/frontends/gtk/GWorkArea.h | 1 + 3 files changed, 26 insertions(+), 1 deletion(-) diff --git a/src/frontends/gtk/ChangeLog b/src/frontends/gtk/ChangeLog index d6e2d36eb5..5bbff031f6 100644 --- a/src/frontends/gtk/ChangeLog +++ b/src/frontends/gtk/ChangeLog @@ -1,6 +1,11 @@ +2004-09-23 John Spray + + * GWorkArea.[Ch]: Add GWorkArea::onScrollWheel to implement + mouse-wheel scrolling of document + 2004-07-24 Lars Gullik Bjonnes - * GPainter.C (text): sue boost::scoped_array to store the + * GPainter.C (text): use boost::scoped_array to store the temporary wchar_t pointer * lyx_gui.C: change "support/std_sstream.h" to diff --git a/src/frontends/gtk/GWorkArea.C b/src/frontends/gtk/GWorkArea.C index ffae993a42..0381187ae6 100644 --- a/src/frontends/gtk/GWorkArea.C +++ b/src/frontends/gtk/GWorkArea.C @@ -174,6 +174,8 @@ GWorkArea::GWorkArea(LyXView & owner, int width, int height) workArea_.show(); vscrollbar_.get_adjustment()->signal_value_changed().connect( SigC::slot(*this, &GWorkArea::onScroll)); + workArea_.signal_scroll_event().connect( + SigC::slot(*this, &GWorkArea::onScrollWheel)); vscrollbar_.show(); hbox_.children().push_back(Gtk::Box_Helpers::Element(workArea_)); hbox_.children().push_back( @@ -340,6 +342,23 @@ void GWorkArea::onScroll() scrollDocView(static_cast(val)); } +bool GWorkArea::onScrollWheel(GdkEventScroll * event) +{ + Gtk::Adjustment * adjustment = vscrollbar_.get_adjustment(); + + double step; + if (event->state & GDK_CONTROL_MASK) + step = adjustment->get_page_increment(); + else + step = adjustment->get_step_increment(); + + if (event->direction == GDK_SCROLL_UP) + step *= -1.0f; + + adjustment->set_value(adjustment->get_value() + step); + + return true; +} bool GWorkArea::onButtonPress(GdkEventButton * event) { diff --git a/src/frontends/gtk/GWorkArea.h b/src/frontends/gtk/GWorkArea.h index 8264a8bb70..7ba06fde64 100644 --- a/src/frontends/gtk/GWorkArea.h +++ b/src/frontends/gtk/GWorkArea.h @@ -93,6 +93,7 @@ private: bool onExpose(GdkEventExpose * event); bool onConfigure(GdkEventConfigure * event); void onScroll(); + bool onScrollWheel(GdkEventScroll * event); bool onButtonPress(GdkEventButton * event); bool onButtonRelease(GdkEventButton * event); bool onMotionNotify(GdkEventMotion * event); -- 2.39.2