From 2c2857f923c99ea38c63289702496feb46f9e7ca Mon Sep 17 00:00:00 2001 From: Jorge Arellano Cid Date: Sat, 18 Jun 2011 10:07:29 -0400 Subject: Made dillorc's middle_click_drags_page=NO operative again * Added setDragScroll(bool) to the viewport to enable/disable it * Made middle-click paste URL upon FL_RELEASE --- dw/fltkviewport.cc | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) (limited to 'dw/fltkviewport.cc') diff --git a/dw/fltkviewport.cc b/dw/fltkviewport.cc index 75c4e569..992df22b 100644 --- a/dw/fltkviewport.cc +++ b/dw/fltkviewport.cc @@ -23,6 +23,7 @@ #include #include +#include #include #include "../lout/msg.h" @@ -64,6 +65,7 @@ FltkViewport::FltkViewport (int X, int Y, int W, int H, const char *label): vscrollbar->hide(); add (vscrollbar); + hasDragScroll = 1; scrollX = scrollY = scrollDX = scrollDY = 0; horScrolling = verScrolling = dragScrolling = 0; @@ -223,7 +225,7 @@ void FltkViewport::draw () int FltkViewport::handle (int event) { - _MSG("FltkViewport::handle %d\n", event); + _MSG("FltkViewport::handle %s\n", fl_eventnames[event]); switch(event) { case FL_KEYBOARD: @@ -249,13 +251,18 @@ int FltkViewport::handle (int event) } else if (hscrollbar->visible() && Fl::event_inside(hscrollbar)) { if (hscrollbar->handle(event)) horScrolling = 1; - } else if (FltkWidgetView::handle (event) == 0 && - Fl::event_button() == FL_MIDDLE_MOUSE) { - /* pass event so that middle click can open link in new window */ - dragScrolling = 1; - dragX = Fl::event_x(); - dragY = Fl::event_y(); - setCursor (core::style::CURSOR_MOVE); + } else if (FltkWidgetView::handle(event) == 0 && + Fl::event_button() == FL_MIDDLE_MOUSE) { + if (!hasDragScroll) { + /* let the parent widget handle it... */ + return 0; + } else { + /* receive FL_DRAG and FL_RELEASE */ + dragScrolling = 1; + dragX = Fl::event_x(); + dragY = Fl::event_y(); + setCursor (core::style::CURSOR_MOVE); + } } return 1; break; -- cgit v1.2.3