]> git.saurik.com Git - wxWidgets.git/blobdiff - contrib/src/fl/toolwnd.cpp
fix memory leak as Dimitri suggested
[wxWidgets.git] / contrib / src / fl / toolwnd.cpp
index 4a97f944caedc0e6a6eb2e741cc89c63e4da4708..5c846c27ef430a7801941eb4cc6cf54676214b45 100644 (file)
@@ -1,12 +1,12 @@
 /////////////////////////////////////////////////////////////////////////////
-// Name:        No names yet.
-// Purpose:     Contrib. demo
+// Name:        toolwnd.cpp
+// Purpose:     wxToolWindow implementation.
 // Author:      Aleksandras Gluchovas
 // Modified by:
 // Created:     06/09/98
 // RCS-ID:      $Id$
 // Copyright:   (c) Aleksandras Gluchovas
-// Licence:    wxWindows license
+// Licence:    wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
 #ifdef __GNUG__
@@ -41,9 +41,9 @@ static const unsigned char _gCheckerImg[16] = { _IMG_A,_IMG_B,_IMG_C,_IMG_D,
 
 /***** Implementation for class wxToolWindow *****/
 
-IMPLEMENT_DYNAMIC_CLASS( wxToolWindow, wxWindow )
+IMPLEMENT_DYNAMIC_CLASS( wxToolWindow, wxFrame)
 
-BEGIN_EVENT_TABLE( wxToolWindow, wxWindow )
+BEGIN_EVENT_TABLE( wxToolWindow, wxFrame )
 
        EVT_PAINT    ( wxToolWindow::OnPaint )
        EVT_MOTION   ( wxToolWindow::OnMotion )
@@ -165,15 +165,17 @@ void wxToolWindow::OnPaint( wxPaintEvent& event )
        int w,h;
        GetSize( &w, &h );
 
-       dc.SetBrush( *wxLIGHT_GREY_BRUSH );
-       dc.SetPen( *wxTRANSPARENT_PEN );
+    wxBrush backGround( wxSystemSettings::GetSystemColour(wxSYS_COLOUR_BTNFACE), wxSOLID );
+    //dc.SetBrush( *wxLIGHT_GREY_BRUSH );
+    dc.SetBrush( backGround ); 
+    dc.SetPen( *wxTRANSPARENT_PEN );
 
-       int y = mWndVertGap + mTitleHeight + mClntVertGap + 1;
-       dc.DrawRectangle( 0,0, w, y );
-       dc.DrawRectangle( 0,y-1, mWndHorizGap + mClntHorizGap + 1, h - y );
-       dc.DrawRectangle( w - ( mWndHorizGap + mClntHorizGap ), y-1,
-                                         mWndHorizGap + mClntHorizGap, h - y );
-       dc.DrawRectangle( 0, h - mWndVertGap - mClntVertGap, w, mWndVertGap + mClntVertGap );
+    int y = mWndVertGap + mTitleHeight + mClntVertGap;
+    dc.DrawRectangle( 0,0, w, y );                                      // Top grey part.
+    dc.DrawRectangle( 0,y-1, mWndHorizGap + mClntHorizGap, h - y );     // Left grey part.
+    dc.DrawRectangle( w - ( mWndHorizGap + mClntHorizGap ), y-1,
+                      mWndHorizGap + mClntHorizGap, h - y );            // Right grey part.
+    dc.DrawRectangle( 0, h - mWndVertGap - mClntVertGap, w, mWndVertGap + mClntVertGap ); // Bottom grey part.
 
        // draw shades
        dc.SetPen( *wxLIGHT_GREY_PEN );
@@ -336,21 +338,20 @@ void wxToolWindow::DrawHintRect( const wxRect& r )
 
 void wxToolWindow::SetHintCursor( int type )
 {
-       if ( mResizeStarted ) return;
+       if ( mResizeStarted )
+        return;
 
        if ( type == HITS_WND_NOTHING || type == HITS_WND_CLIENT )
        {
                // the cursor is out of window - reset to arrow
 
-               if ( mMouseCaptured && !mResizeStarted )
+               if ( mMouseCaptured )
                {
                        ReleaseMouse();
                        mMouseCaptured = FALSE;
                }
 
-               if ( mCursorType == HITS_WND_NOTHING && !mResizeStarted )
-
-                       SetCursor( wxCURSOR_ARROW );
+               SetCursor( wxCURSOR_ARROW );
 
                mCursorType = type;
 
@@ -496,7 +497,7 @@ void wxToolWindow::CalcResizedRect( wxRect& rect, wxPoint& delta, const wxSize&
        }
        else
        {
-               wxFAIL( _T("what did the cursor hit?") );
+               wxFAIL_MSG( _T("what did the cursor hit?") );
        }
 
        rect.x = left;
@@ -570,6 +571,8 @@ void wxToolWindow::OnMotion( wxMouseEvent& event )
                {
                        DrawHintRect( mPrevHintRect );
                        DrawHintRect( finalRect );
+
+            ::wxLogTrace("%d,%d / %d,%d\n", finalRect.x, finalRect.y, finalRect.width, finalRect.height);
                }
 
                mPrevHintRect = finalRect;
@@ -679,14 +682,12 @@ void wxToolWindow::OnSize( wxSizeEvent& event )
                int x = mWndHorizGap + mClntHorizGap;
                int y = mWndVertGap  + mTitleHeight + mClntVertGap;
 
-#if 1
-               mpClientWnd->SetSize( x -1, y -1, 
-                                                         w - 2*(mWndHorizGap + mClntHorizGap),
-                                                         h - y - mClntVertGap - mWndVertGap, 
-                                                         0  
-                                                       );
-#endif
-       }
+        mpClientWnd->SetSize( x-1, y-1, 
+                              w - 2*(mWndHorizGap + mClntHorizGap),
+                              h - y - mClntVertGap - mWndVertGap, 
+                              0  
+                            );
+    }
 
        LayoutMiniButtons();
 }
@@ -868,7 +869,7 @@ void cbMiniButton::Reset()
 
 void cbCloseBox::Draw( wxDC& dc )
 {
-#ifdef __WXGTK__
+#if defined(__WXGTK__) || defined(__WXX11__)
 
     cbMiniButton::Draw( dc );