]> git.saurik.com Git - wxWidgets.git/blobdiff - src/stc/ScintillaWX.cpp
Document steps needed to update to newer Scintilla. (From memory, will need to be...
[wxWidgets.git] / src / stc / ScintillaWX.cpp
index 8241114798dd8bf894d46374691d748a259240a2..02d536c358fc489484f7b9d3a5d758f3046da709 100644 (file)
@@ -733,25 +733,47 @@ sptr_t ScintillaWX::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam)
 void ScintillaWX::DoPaint(wxDC* dc, wxRect rect) {
 
     paintState = painting;
-    Surface* surfaceWindow = Surface::Allocate();
-    surfaceWindow->Init(dc, wMain.GetID());
-    rcPaint = PRectangleFromwxRect(rect);
-    PRectangle rcClient = GetClientRectangle();
-    paintingAllText = rcPaint.Contains(rcClient);
-
-    ClipChildren(*dc, rcPaint);
-    Paint(surfaceWindow, rcPaint);
+    AutoSurface surfaceWindow(dc, this);
+    if (surfaceWindow) {
+        rcPaint = PRectangleFromwxRect(rect);
+        PRectangle rcClient = GetClientRectangle();
+        paintingAllText = rcPaint.Contains(rcClient);
+
+        ClipChildren(*dc, rcPaint);
+        Paint(surfaceWindow, rcPaint);
+        surfaceWindow->Release();
+    }
 
-    delete surfaceWindow;
     if (paintState == paintAbandoned) {
         // Painting area was insufficient to cover new styling or brace
         // highlight positions
-        FullPaint();
+        FullPaintDC(dc);
+    }
+    paintState = notPainting;
+}
+
+
+// Force the whole window to be repainted
+void ScintillaWX::FullPaint() {
+    wxClientDC dc(stc);
+    FullPaintDC(&dc);
+}
+
+
+void ScintillaWX::FullPaintDC(wxDC* dc) {
+    paintState = painting;
+    rcPaint = GetClientRectangle();
+    paintingAllText = true;
+    AutoSurface surfaceWindow(dc, this);
+    if (surfaceWindow) {
+        Paint(surfaceWindow, rcPaint);
+        surfaceWindow->Release();
     }
     paintState = notPainting;
 }
 
 
+
 void ScintillaWX::DoHScroll(int type, int pos) {
     int xPos = xOffset;
     PRectangle rcText = GetTextRectangle();
@@ -805,7 +827,7 @@ void ScintillaWX::DoMouseWheel(int rotation, int delta,
     int lines;
 
     if (ctrlDown) {  // Zoom the fonts if Ctrl key down
-        if (rotation < 0) {
+        if (rotation > 0) {
             KeyCommand(SCI_ZOOMIN);
         }
         else {
@@ -1080,13 +1102,6 @@ void ScintillaWX::DoDragLeave() {
 #endif // wxUSE_DRAG_AND_DROP
 //----------------------------------------------------------------------
 
-// Force the whole window to be repainted
-void ScintillaWX::FullPaint() {
-    stc->Refresh(false);
-    stc->Update();
-}
-
-
 void ScintillaWX::DoScrollToLine(int line) {
     ScrollTo(line);
 }