]> git.saurik.com Git - wxWidgets.git/blobdiff - src/stc/ScintillaWX.cpp
Define wxLongLong_t for Intel compiler.
[wxWidgets.git] / src / stc / ScintillaWX.cpp
index 90779336696f95d3832491d179269ae123865c7e..84c0d35baaf22bb65da06ce50f67b55d45a4425a 100644 (file)
@@ -244,7 +244,8 @@ ScintillaWX::ScintillaWX(wxStyledTextCtrl* win) {
     focusEvent = false;
     wMain = win;
     stc   = win;
     focusEvent = false;
     wMain = win;
     stc   = win;
-    wheelRotation = 0;
+    wheelVRotation = 0;
+    wheelHRotation = 0;
     Initialise();
 #ifdef __WXMSW__
     sysCaretBitmap = 0;
     Initialise();
 #ifdef __WXMSW__
     sysCaretBitmap = 0;
@@ -830,13 +831,28 @@ void ScintillaWX::DoVScroll(int type, int pos) {
     ScrollTo(topLineNew);
 }
 
     ScrollTo(topLineNew);
 }
 
-void ScintillaWX::DoMouseWheel(int rotation, int delta,
-                               int linesPerAction, int ctrlDown,
-                               bool isPageScroll ) {
+void ScintillaWX::DoMouseWheel(wxMouseWheelAxis axis, int rotation, int delta,
+                               int linesPerAction, int columnsPerAction,
+                               bool ctrlDown, bool isPageScroll) {
     int topLineNew = topLine;
     int lines;
     int topLineNew = topLine;
     int lines;
-
-    if (ctrlDown) {  // Zoom the fonts if Ctrl key down
+    int xPos = xOffset;
+    int pixels;
+
+    if (axis == wxMOUSE_WHEEL_HORIZONTAL) {
+        wheelHRotation += rotation * (columnsPerAction * vs.spaceWidth);
+        pixels = wheelHRotation / delta;
+        wheelHRotation -= pixels * delta;
+        if (pixels != 0) {
+            xPos += pixels;
+            PRectangle rcText = GetTextRectangle();
+            if (xPos > scrollWidth - rcText.Width()) {
+                xPos = scrollWidth - rcText.Width();
+            }
+            HorizontalScrollTo(xPos);
+        }
+    }
+    else if (ctrlDown) {  // Zoom the fonts if Ctrl key down
         if (rotation > 0) {
             KeyCommand(SCI_ZOOMIN);
         }
         if (rotation > 0) {
             KeyCommand(SCI_ZOOMIN);
         }
@@ -847,9 +863,9 @@ void ScintillaWX::DoMouseWheel(int rotation, int delta,
     else { // otherwise just scroll the window
         if ( !delta )
             delta = 120;
     else { // otherwise just scroll the window
         if ( !delta )
             delta = 120;
-        wheelRotation += rotation;
-        lines = wheelRotation / delta;
-        wheelRotation -= lines * delta;
+        wheelVRotation += rotation;
+        lines = wheelVRotation / delta;
+        wheelVRotation -= lines * delta;
         if (lines != 0) {
             if (isPageScroll)
                 lines = lines * LinesOnScreen();  // lines is either +1 or -1
         if (lines != 0) {
             if (isPageScroll)
                 lines = lines * LinesOnScreen();  // lines is either +1 or -1