]> git.saurik.com Git - wxWidgets.git/blobdiff - src/os2/button.cpp
Add missing WXK constants for the control keys
[wxWidgets.git] / src / os2 / button.cpp
index 3e831bcf91fb8eb03c2786b3518e76dae9037901..684ee92aa67035410c052b9987a5265875be0c44 100644 (file)
@@ -1,5 +1,5 @@
 /////////////////////////////////////////////////////////////////////////////
-// Name:        button.cpp
+// Name:        src/os2/button.cpp
 // Purpose:     wxButton
 // Author:      David Webster
 // Modified by:
 // For compilers that support precompilation, includes "wx.h".
 #include "wx/wxprec.h"
 
+#include "wx/button.h"
+
 #ifndef WX_PRECOMP
     #include "wx/app.h"
-    #include "wx/button.h"
     #include "wx/brush.h"
     #include "wx/panel.h"
     #include "wx/bmpbuttn.h"
     #include "wx/settings.h"
     #include "wx/dcscreen.h"
     #include "wx/scrolwin.h"
+    #include "wx/toplevel.h"
 #endif
 
 #include "wx/stockitem.h"
@@ -37,8 +39,6 @@
 #define BST_CHECKED 0x0001
 #endif
 
-IMPLEMENT_DYNAMIC_CLASS(wxButton, wxControl)
-
 // Button
 
 bool wxButton::Create( wxWindow*          pParent,
@@ -78,7 +78,7 @@ bool wxButton::Create( wxWindow*          pParent,
 
     m_hWnd = (WXHWND)::WinCreateWindow( GetHwndOf(pParent)   // Parent handle
                                        ,WC_BUTTON            // A Button class window
-                                       ,(PSZ)sLabel.c_str()  // Button text
+                                       ,sLabel.c_str()  // Button text
                                        ,lStyle               // Button style
                                        ,0, 0, 0, 0           // Location and size
                                        ,GetHwndOf(pParent)   // Owner handle
@@ -89,7 +89,7 @@ bool wxButton::Create( wxWindow*          pParent,
                                       );
     if (m_hWnd == 0)
     {
-        return FALSE;
+        return false;
     }
 
     //
@@ -115,16 +115,16 @@ bool wxButton::Create( wxWindow*          pParent,
 
 wxButton::~wxButton()
 {
-    wxPanel*                        pPanel = wxDynamicCast(GetParent(), wxPanel);
+    wxTopLevelWindow *tlw = wxDynamicCast(wxGetTopLevelParent(this), wxTopLevelWindow);
 
-    if (pPanel)
+    if (tlw)
     {
-        if (pPanel->GetDefaultItem() == this)
+        if (tlw->GetDefaultItem() == this)
         {
             //
             // Don't leave the panel with invalid default item
             //
-            pPanel->SetDefaultItem(NULL);
+            tlw->SetDefaultItem(NULL);
         }
     }
 } // end of wxButton::~wxButton
@@ -229,43 +229,41 @@ bool wxButton::SendClickEvent()
     return ProcessCommand(vEvent);
 } // end of wxButton::SendClickEvent
 
-void wxButton::SetDefault()
+wxWindow *wxButton::SetDefault()
 {
-    wxWindow*                       pParent = GetParent();
-
-    wxCHECK_RET( pParent, _T("button without parent?") );
-
     //
     // Set this one as the default button both for wxWidgets and Windows
     //
-    wxWindow*                       pWinOldDefault = pParent->SetDefaultItem(this);
+    wxWindow* pWinOldDefault = wxButtonBase::SetDefault();
 
     SetDefaultStyle( wxDynamicCast(pWinOldDefault, wxButton), false);
     SetDefaultStyle( this, true );
+
+    return pWinOldDefault;
 } // end of wxButton::SetDefault
 
 void wxButton::SetTmpDefault()
 {
-    wxWindow*                       pParent = GetParent();
+    wxTopLevelWindow *tlw = wxDynamicCast(wxGetTopLevelParent(this), wxTopLevelWindow);
 
-    wxCHECK_RET( pParent, _T("button without parent?") );
+    wxCHECK_RET( tlw, wxT("button without top level window?") );
 
-    wxWindow*                       pWinOldDefault = pParent->GetDefaultItem();
+    wxWindow*                       pWinOldDefault = tlw->GetDefaultItem();
 
-    pParent->SetTmpDefaultItem(this);
+    tlw->SetTmpDefaultItem(this);
     SetDefaultStyle( wxDynamicCast(pWinOldDefault, wxButton), false);
     SetDefaultStyle( this, true );
 } // end of wxButton::SetTmpDefault
 
 void wxButton::UnsetTmpDefault()
 {
-    wxWindow*                       pParent = GetParent();
+    wxTopLevelWindow *tlw = wxDynamicCast(wxGetTopLevelParent(this), wxTopLevelWindow);
 
-    wxCHECK_RET( pParent, _T("button without parent?") );
+    wxCHECK_RET( tlw, wxT("button without top level window?") );
 
-    pParent->SetTmpDefaultItem(NULL);
+    tlw->SetTmpDefaultItem(NULL);
 
-    wxWindow*                       pWinOldDefault = pParent->GetDefaultItem();
+    wxWindow*                       pWinOldDefault = tlw->GetDefaultItem();
 
     SetDefaultStyle( this, false );
     SetDefaultStyle( wxDynamicCast(pWinOldDefault, wxButton), true );
@@ -383,7 +381,7 @@ WXDWORD wxButton::OS2GetStyle(
 
     //
     // We must use WS_CLIPSIBLINGS with the buttons or they would draw over
-    // each other in any resizeable dialog which has more than one button in
+    // each other in any resizable dialog which has more than one button in
     // the bottom
     //
     dwStyle |= WS_CLIPSIBLINGS;