FLTK logo

Re: [RFE] STR #3521: Allow shift+scroll for horizontal scrolling

FLTK matrix user chat room
(using Element browser app)   FLTK gitter user chat room   GitHub FLTK Project   FLTK News RSS Feed  
  FLTK Apps      FLTK Library      Forums      Links     Login 
 All Forums  |  Back to fltk.bugs  ]
 
Previous Message ]New Message | Reply ]Next Message ]

Re: [RFE] STR #3521: Allow shift+scroll for horizontal scrolling Manolo Gouy May 28, 2019  
 
DO NOT REPLY TO THIS MESSAGE.  INSTEAD, POST ANY RESPONSES TO THE LINK BELOW.

[STR Pending]

Link: https://www.fltk.org/str.php?L3521
Version: 1.4-feature


Attached file "scroll.patch"...


Link: https://www.fltk.org/str.php?L3521
Version: 1.4-feature
diff --git a/src/Fl_win32.cxx b/src/Fl_win32.cxx
index bc2cb5d90..ba2e222b6 100644
--- a/src/Fl_win32.cxx
+++ b/src/Fl_win32.cxx
@@ -1514,7 +1514,9 @@ static LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lPar
 	break; // WM_KEYDOWN ... WM_SYSKEYUP, WM_DEADCHAR ... WM_SYSCHAR
       } // case WM_DEADCHAR ... WM_SYSCHAR
 
-      case WM_MOUSEWHEEL: {
+      case WM_MOUSEWHEEL:
+//fprintf(stderr,"WM_MOUSEWHEEL shift=%d\n", Fl::event_shift());
+       if ( ! Fl::event_shift() ) {
 	static int delta = 0; // running total of all motion
 	delta += (SHORT)(HIWORD(wParam));
 	Fl::e_dx = 0;
@@ -1524,10 +1526,11 @@ static LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lPar
 	  Fl::handle(FL_MOUSEWHEEL, window);
 	return 0;
       }
-
+       // FALLTHROUGH
       case WM_MOUSEHWHEEL: {
 	static int delta = 0; // running total of all motion
 	delta += (SHORT)(HIWORD(wParam));
+//fprintf(stderr,"WM_MOUSEHWHEEL shift=%d delta=%d\n", Fl::event_shift(), delta);
 	Fl::e_dy = 0;
 	Fl::e_dx = delta / WHEEL_DELTA;
 	delta -= Fl::e_dx * WHEEL_DELTA;
diff --git a/src/Fl_x.cxx b/src/Fl_x.cxx
index 36418ffe8..0061bc42d 100644
--- a/src/Fl_x.cxx
+++ b/src/Fl_x.cxx
@@ -1974,16 +1974,16 @@ int fl_handle(const XEvent& thisevent)
     Fl::e_keysym = FL_Button + xevent.xbutton.button;
     set_event_xy(window);
     Fl::e_dx = Fl::e_dy = 0;
-    if (xevent.xbutton.button == Button4) {
+    if (xevent.xbutton.button == Button4 && !Fl::event_shift()) {
       Fl::e_dy = -1; // Up
       event = FL_MOUSEWHEEL;
-    } else if (xevent.xbutton.button == Button5) {
+    } else if (xevent.xbutton.button == Button5 && !Fl::event_shift()) {
       Fl::e_dy = +1; // Down
       event = FL_MOUSEWHEEL;
-    } else if (xevent.xbutton.button == 6) {
+    } else if (xevent.xbutton.button == 6 || (xevent.xbutton.button == Button4 && Fl::event_shift())) {
 	Fl::e_dx = -1; // Left
 	event = FL_MOUSEWHEEL;
-    } else if (xevent.xbutton.button == 7) {
+    } else if (xevent.xbutton.button == 7 || (xevent.xbutton.button == Button5 && Fl::event_shift())) {
 	Fl::e_dx = +1; // Right
 	event = FL_MOUSEWHEEL;
     } else {
Direct Link to Message ]
 
     
Previous Message ]New Message | Reply ]Next Message ]
 
 

Comments are owned by the poster. All other content is copyright 1998-2024 by Bill Spitzak and others. This project is hosted by The FLTK Team. Please report site problems to 'erco@seriss.com'.