]> git.saurik.com Git - wxWidgets.git/blobdiff - src/x11/window.cpp
don't allow clicking disabled buttons
[wxWidgets.git] / src / x11 / window.cpp
index 13a199db536eafaf5f7cb3623cec62c355cecb8d..a83a67877cfed6d59a209b3a5cd59d3ef6307401 100644 (file)
@@ -383,7 +383,7 @@ void wxWindowX11::DoCaptureMouse()
             return;
         }
 
             return;
         }
 
-        wxLogDebug("Grabbed pointer in %s", GetName().c_str() );
+        // wxLogDebug("Grabbed pointer in %s", GetName().c_str() );
 
 #if 0
         res = XGrabButton(wxGlobalDisplay(), AnyButton, AnyModifier,
 
 #if 0
         res = XGrabButton(wxGlobalDisplay(), AnyButton, AnyModifier,
@@ -443,7 +443,7 @@ void wxWindowX11::DoReleaseMouse()
 #endif
     }
     
 #endif
     }
     
-    wxLogDebug( "Ungrabbed pointer in %s", GetName().c_str() );
+    // wxLogDebug( "Ungrabbed pointer in %s", GetName().c_str() );
 
     m_winCaptured = FALSE;
 }
 
     m_winCaptured = FALSE;
 }
@@ -479,7 +479,7 @@ bool wxWindowX11::SetCursor(const wxCursor& cursor)
 
     Cursor xcursor = (Cursor) cursorToUse.GetCursor();
 
 
     Cursor xcursor = (Cursor) cursorToUse.GetCursor();
 
-    XDefineCursor( (Display*) wxGlobalDisplay(), xwindow, xcursor );
+    XDefineCursor( wxGlobalDisplay(), xwindow, xcursor );
 
     return TRUE;
 }
 
     return TRUE;
 }
@@ -529,14 +529,15 @@ void wxWindowX11::ScrollWindow(int dx, int dy, const wxRect *rect)
     GC xgc = XCreateGC( xdisplay, xwindow, 0, NULL );
     XSetGraphicsExposures( xdisplay, xgc, True );
 
     GC xgc = XCreateGC( xdisplay, xwindow, 0, NULL );
     XSetGraphicsExposures( xdisplay, xgc, True );
 
-    int s_x;
-    int s_y;
+    int s_x = 0;
+    int s_y = 0;
     int cw;
     int ch;
     if (rect)
     {
         s_x = rect->x;
         s_y = rect->y;
     int cw;
     int ch;
     if (rect)
     {
         s_x = rect->x;
         s_y = rect->y;
+        
         cw = rect->width;
         ch = rect->height;
     }
         cw = rect->width;
         ch = rect->height;
     }
@@ -550,7 +551,7 @@ void wxWindowX11::ScrollWindow(int dx, int dy, const wxRect *rect)
     wxPoint offset = GetClientAreaOrigin();
     s_x += offset.x;
     s_y += offset.y;
     wxPoint offset = GetClientAreaOrigin();
     s_x += offset.x;
     s_y += offset.y;
-
+        
     int w = cw - abs(dx);
     int h = ch - abs(dy);
         
     int w = cw - abs(dx);
     int h = ch - abs(dy);
         
@@ -561,23 +562,24 @@ void wxWindowX11::ScrollWindow(int dx, int dy, const wxRect *rect)
     else
     {
         wxRect rect;
     else
     {
         wxRect rect;
-        if (dx < 0) rect.x = cw+dx; else rect.x = s_x;
-        if (dy < 0) rect.y = ch+dy; else rect.y = s_y;
+        if (dx < 0) rect.x = cw+dx + offset.x; else rect.x = s_x;
+        if (dy < 0) rect.y = ch+dy + offset.y; else rect.y = s_y;
         if (dy != 0) rect.width = cw; else rect.width = abs(dx);
         if (dx != 0) rect.height = ch; else rect.height = abs(dy);
     
         int d_x = s_x;
         int d_y = s_y;
         if (dy != 0) rect.width = cw; else rect.width = abs(dx);
         if (dx != 0) rect.height = ch; else rect.height = abs(dy);
     
         int d_x = s_x;
         int d_y = s_y;
+        
         if (dx < 0) s_x += -dx;
         if (dy < 0) s_y += -dy;
         if (dx < 0) s_x += -dx;
         if (dy < 0) s_y += -dy;
-        if (dx > 0) d_x = dx;
-        if (dy > 0) d_y = dy;
+        if (dx > 0) d_x = dx + offset.x;
+        if (dy > 0) d_y = dy + offset.y;
 
         XCopyArea( xdisplay, xwindow, xwindow, xgc, s_x, s_y, w, h, d_x, d_y );
         
 
         XCopyArea( xdisplay, xwindow, xwindow, xgc, s_x, s_y, w, h, d_x, d_y );
         
-        // printf( "s_x %d s_y %d w %d h %d d_x %d d_y %d\n", s_x, s_y, w, h, d_x, d_y );
+        // wxLogDebug( "Copy: s_x %d s_y %d w %d h %d d_x %d d_y %d", s_x, s_y, w, h, d_x, d_y );
 
 
-        // printf( "rect %d %d %d %d\n", rect.x, rect.y, rect.width, rect.height );
+        // wxLogDebug( "Update: %d %d %d %d", rect.x, rect.y, rect.width, rect.height );
 
         m_updateRegion.Union( rect );
         m_clearRegion.Union( rect );
 
         m_updateRegion.Union( rect );
         m_clearRegion.Union( rect );
@@ -634,7 +636,7 @@ void wxWindowX11::DoGetSize(int *x, int *y) const
 
     wxCHECK_RET( xwindow, wxT("invalid window") );
     
 
     wxCHECK_RET( xwindow, wxT("invalid window") );
     
-    XSync(wxGlobalDisplay(), False);
+    // XSync(wxGlobalDisplay(), False);
 
     XWindowAttributes attr;
     Status status = XGetWindowAttributes( wxGlobalDisplay(), xwindow, &attr );
 
     XWindowAttributes attr;
     Status status = XGetWindowAttributes( wxGlobalDisplay(), xwindow, &attr );
@@ -652,7 +654,7 @@ void wxWindowX11::DoGetPosition(int *x, int *y) const
     Window window = (Window) m_mainWidget;
     if (window)
     {
     Window window = (Window) m_mainWidget;
     if (window)
     {
-        XSync(wxGlobalDisplay(), False);
+        // XSync(wxGlobalDisplay(), False);
         XWindowAttributes attr;
         Status status = XGetWindowAttributes(wxGlobalDisplay(), window, & attr);
         wxASSERT(status);
         XWindowAttributes attr;
         Status status = XGetWindowAttributes(wxGlobalDisplay(), window, & attr);
         wxASSERT(status);
@@ -706,7 +708,7 @@ void wxWindowX11::DoGetClientSize(int *x, int *y) const
 
     if (window)
     {
 
     if (window)
     {
-        XSync(wxGlobalDisplay(), False);  // Is this really a good idea?
+        // XSync(wxGlobalDisplay(), False);  // Is this really a good idea?
         XWindowAttributes attr;
         Status status = XGetWindowAttributes( wxGlobalDisplay(), window, &attr );
         wxASSERT(status);
         XWindowAttributes attr;
         Status status = XGetWindowAttributes( wxGlobalDisplay(), window, &attr );
         wxASSERT(status);
@@ -794,17 +796,6 @@ wxPoint wxWindowX11::GetClientAreaOrigin() const
     return wxPoint(0, 0);
 }
 
     return wxPoint(0, 0);
 }
 
-// Makes an adjustment to the window position (for example, a frame that has
-// a toolbar that it manages itself).
-void wxWindowX11::AdjustForParentClientOrigin(int& x, int& y, int sizeFlags)
-{
-    if (((sizeFlags & wxSIZE_NO_ADJUSTMENTS) == 0) && GetParent())
-    {
-        wxPoint pt(GetParent()->GetClientAreaOrigin());
-        x += pt.x; y += pt.y;
-    }
-}
-
 void wxWindowX11::SetSizeHints(int minW, int minH, int maxW, int maxH, int incW, int incH)
 {
     m_minWidth = minW;
 void wxWindowX11::SetSizeHints(int minW, int minH, int maxW, int maxH, int incW, int incH)
 {
     m_minWidth = minW;
@@ -969,6 +960,7 @@ void wxWindowX11::Update()
 {
     if (!m_updateRegion.IsEmpty())
     {
 {
     if (!m_updateRegion.IsEmpty())
     {
+        //        wxLogDebug("wxWindowX11::Update: %s", GetClassInfo()->GetClassName());
         // Actually send erase events.
         SendEraseEvents();
         
         // Actually send erase events.
         SendEraseEvents();
         
@@ -996,7 +988,7 @@ void wxWindowX11::SendEraseEvents()
         
         wxEraseEvent erase_event( GetId(), &dc );
         erase_event.SetEventObject( this );
         
         wxEraseEvent erase_event( GetId(), &dc );
         erase_event.SetEventObject( this );
-    
+
         if (!GetEventHandler()->ProcessEvent(erase_event))
         {
             Window xwindow = (Window) GetMainWindow();
         if (!GetEventHandler()->ProcessEvent(erase_event))
         {
             Window xwindow = (Window) GetMainWindow();
@@ -1031,9 +1023,8 @@ void wxWindowX11::SendPaintEvents()
     wxPaintEvent paint_event( GetId() );
     paint_event.SetEventObject( this );
     GetEventHandler()->ProcessEvent( paint_event );
     wxPaintEvent paint_event( GetId() );
     paint_event.SetEventObject( this );
     GetEventHandler()->ProcessEvent( paint_event );
-
-    m_updateRegion.Clear();
     
     
+    m_updateRegion.Clear();
     m_clipPaintRegion = FALSE;
 }
 
     m_clipPaintRegion = FALSE;
 }
 
@@ -1071,7 +1062,9 @@ void wxWindowX11::OnInternalIdle()
 
     // Set the input focus if couldn't do it before
     if (m_needsInputFocus)
 
     // Set the input focus if couldn't do it before
     if (m_needsInputFocus)
+    {
        SetFocus();
        SetFocus();
+    }
 }
 
 // ----------------------------------------------------------------------------
 }
 
 // ----------------------------------------------------------------------------