]> git.saurik.com Git - wxWidgets.git/blobdiff - src/os2/toplevel.cpp
Fixed wxMessageBox with only an OK button returning wxCANCEL under MSW.
[wxWidgets.git] / src / os2 / toplevel.cpp
index afa7e6754bb5dce3eae316d3fb34e11affc2f721..b7df26740e151c5fe5f37fd5823d22c0a1811370 100644 (file)
@@ -6,7 +6,7 @@
 // Created:     30.12.01
 // RCS-ID:      $Id$
 // Copyright:   (c) 2001 SciTech Software, Inc. (www.scitechsoft.com)
 // Created:     30.12.01
 // RCS-ID:      $Id$
 // Copyright:   (c) 2001 SciTech Software, Inc. (www.scitechsoft.com)
-// License:     wxWindows licence
+// Licence:     wxWindows licence
 ///////////////////////////////////////////////////////////////////////////////
 
 // ============================================================================
 ///////////////////////////////////////////////////////////////////////////////
 
 // ============================================================================
     #pragma hdrstop
 #endif
 
     #pragma hdrstop
 #endif
 
+#include "wx/toplevel.h"
+
 #ifndef WX_PRECOMP
     #include "wx/app.h"
 #ifndef WX_PRECOMP
     #include "wx/app.h"
-    #include "wx/toplevel.h"
     #include "wx/dialog.h"
     #include "wx/string.h"
     #include "wx/log.h"
     #include "wx/dialog.h"
     #include "wx/string.h"
     #include "wx/log.h"
@@ -35,9 +36,9 @@
     #include "wx/control.h"
     #include "wx/containr.h"        // wxSetFocusToChild()
     #include "wx/settings.h"
     #include "wx/control.h"
     #include "wx/containr.h"        // wxSetFocusToChild()
     #include "wx/settings.h"
+    #include "wx/module.h"        // wxSetFocusToChild()
 #endif //WX_PRECOMP
 
 #endif //WX_PRECOMP
 
-#include "wx/module.h"        // wxSetFocusToChild()
 #include "wx/os2/private.h"
 
 // ----------------------------------------------------------------------------
 #include "wx/os2/private.h"
 
 // ----------------------------------------------------------------------------
@@ -149,7 +150,7 @@ void wxTopLevelWindowOS2::Init()
     m_hFrame    = NULLHANDLE;
     memset(&m_vSwp, 0, sizeof(SWP));
     memset(&m_vSwpClient, 0, sizeof(SWP));
     m_hFrame    = NULLHANDLE;
     memset(&m_vSwp, 0, sizeof(SWP));
     memset(&m_vSwpClient, 0, sizeof(SWP));
-    m_pWinLastFocused = (wxWindow *)NULL;
+    m_pWinLastFocused = NULL;
 } // end of wxTopLevelWindowIOS2::Init
 
 void wxTopLevelWindowOS2::OnActivate(
 } // end of wxTopLevelWindowIOS2::Init
 
 void wxTopLevelWindowOS2::OnActivate(
@@ -161,7 +162,7 @@ void wxTopLevelWindowOS2::OnActivate(
         //
         // Restore focus to the child which was last focused
         //
         //
         // Restore focus to the child which was last focused
         //
-        wxLogTrace(_T("focus"), _T("wxTLW %08lx activated."), m_hWnd);
+        wxLogTrace(wxT("focus"), wxT("wxTLW %08lx activated."), m_hWnd);
 
         wxWindow*                   pParent = m_pWinLastFocused ? m_pWinLastFocused->GetParent()
                                                                 : NULL;
 
         wxWindow*                   pParent = m_pWinLastFocused ? m_pWinLastFocused->GetParent()
                                                                 : NULL;
@@ -199,8 +200,8 @@ void wxTopLevelWindowOS2::OnActivate(
             pWin = pWin->GetParent();
         }
 
             pWin = pWin->GetParent();
         }
 
-        wxLogTrace(_T("focus"),
-                   _T("wxTLW %08lx deactivated, last focused: %08lx."),
+        wxLogTrace(wxT("focus"),
+                   wxT("wxTLW %08lx deactivated, last focused: %08lx."),
                    m_hWnd,
                    m_pWinLastFocused ? GetHwndOf(m_pWinLastFocused)
                                      : NULL);
                    m_hWnd,
                    m_pWinLastFocused ? GetHwndOf(m_pWinLastFocused)
                                      : NULL);
@@ -245,9 +246,7 @@ WXDWORD wxTopLevelWindowOS2::OS2GetStyle(
         // Invalid for frame windows under PM
     }
 
         // Invalid for frame windows under PM
     }
 
-    if (lStyle & wxTINY_CAPTION_VERT)
-        lMsflags |= FCF_TASKLIST;
-    if (lStyle & wxTINY_CAPTION_HORIZ)
+    if (lStyle & wxTINY_CAPTION)
         lMsflags |= FCF_TASKLIST;
 
     if ((lStyle & wxRESIZE_BORDER) == 0)
         lMsflags |= FCF_TASKLIST;
 
     if ((lStyle & wxRESIZE_BORDER) == 0)
@@ -280,7 +279,7 @@ WXHWND wxTopLevelWindowOS2::OS2GetParent() const
             //
             // This flag doesn't make sense then and will be ignored
             //
             //
             // This flag doesn't make sense then and will be ignored
             //
-            wxFAIL_MSG( _T("wxFRAME_FLOAT_ON_PARENT but no parent?") );
+            wxFAIL_MSG( wxT("wxFRAME_FLOAT_ON_PARENT but no parent?") );
         }
         else
         {
         }
         else
         {
@@ -483,8 +482,8 @@ bool wxTopLevelWindowOS2::CreateFrame( const wxString& rsTitle,
      hFrame = ::WinCreateStdWindow( hParent
                                    ,ulStyleFlags          // frame-window style
                                    ,(PULONG)&lFlags       // window style
      hFrame = ::WinCreateStdWindow( hParent
                                    ,ulStyleFlags          // frame-window style
                                    ,(PULONG)&lFlags       // window style
-                                   ,(PSZ)wxFrameClassName // class name
-                                   ,(PSZ)rsTitle.c_str()  // window title
+                                   ,wxString(wxFrameClassName).c_str() // class name
+                                   ,rsTitle.c_str()       // window title
                                    ,0L                    // default client style
                                    ,NULLHANDLE            // resource in executable file
                                    ,0                     // resource id
                                    ,0L                    // default client style
                                    ,NULLHANDLE            // resource in executable file
                                    ,0                     // resource id
@@ -494,7 +493,7 @@ bool wxTopLevelWindowOS2::CreateFrame( const wxString& rsTitle,
     {
         vError = ::WinGetLastError(vHabmain);
         sError = wxPMErrorToStr(vError);
     {
         vError = ::WinGetLastError(vHabmain);
         sError = wxPMErrorToStr(vError);
-        wxLogError(_T("Error creating frame. Error: %s\n"), sError.c_str());
+        wxLogError(wxT("Error creating frame. Error: %s\n"), sError.c_str());
         return false;
     }
 
         return false;
     }
 
@@ -518,7 +517,7 @@ bool wxTopLevelWindowOS2::CreateFrame( const wxString& rsTitle,
     {
         vError = ::WinGetLastError(vHabmain);
         sError = wxPMErrorToStr(vError);
     {
         vError = ::WinGetLastError(vHabmain);
         sError = wxPMErrorToStr(vError);
-        wxLogError(_T("Error creating frame. Error: %s\n"), sError.c_str());
+        wxLogError(wxT("Error creating frame. Error: %s\n"), sError.c_str());
         return false;
     }
 
         return false;
     }
 
@@ -552,7 +551,7 @@ bool wxTopLevelWindowOS2::CreateFrame( const wxString& rsTitle,
     //
     if (nWidth == (int)CW_USEDEFAULT)
     {
     //
     if (nWidth == (int)CW_USEDEFAULT)
     {
-       //
+        //
         // The exact number doesn't matter, the dialog will be resized
         // again soon anyhow but it should be big enough to allow
         // calculation relying on "totalSize - clientSize > 0" work, i.e.
         // The exact number doesn't matter, the dialog will be resized
         // again soon anyhow but it should be big enough to allow
         // calculation relying on "totalSize - clientSize > 0" work, i.e.
@@ -587,7 +586,7 @@ bool wxTopLevelWindowOS2::CreateFrame( const wxString& rsTitle,
     {
         vError = ::WinGetLastError(vHabmain);
         sError = wxPMErrorToStr(vError);
     {
         vError = ::WinGetLastError(vHabmain);
         sError = wxPMErrorToStr(vError);
-        wxLogError(_T("Error sizing frame. Error: %s\n"), sError.c_str());
+        wxLogError(wxT("Error sizing frame. Error: %s\n"), sError.c_str());
         return false;
     }
     lStyle =  ::WinQueryWindowULong( m_hWnd
         return false;
     }
     lStyle =  ::WinQueryWindowULong( m_hWnd
@@ -639,8 +638,8 @@ bool wxTopLevelWindowOS2::Create(
     {
         //
         // We have different dialog templates to allow creation of dialogs
     {
         //
         // We have different dialog templates to allow creation of dialogs
-        // with & without captions under OS2indows, resizeable or not (but a
-        // resizeable dialog always has caption - otherwise it would look too
+        // with & without captions under OS2indows, resizable or not (but a
+        // resizable dialog always has caption - otherwise it would look too
         // strange)
         //
         ULONG                       ulDlgTemplate;
         // strange)
         //
         ULONG                       ulDlgTemplate;
@@ -789,7 +788,7 @@ bool wxTopLevelWindowOS2::Show( bool bShow )
         ::WinEnableWindow(m_hFrame, TRUE);
 
         vEvent.SetEventObject(this);
         ::WinEnableWindow(m_hFrame, TRUE);
 
         vEvent.SetEventObject(this);
-        GetEventHandler()->ProcessEvent(vEvent);
+        HandleWindowEvent(vEvent);
     }
     else
     {
     }
     else
     {
@@ -871,17 +870,28 @@ void wxTopLevelWindowOS2::Restore()
 } // end of wxTopLevelWindowOS2::Restore
 
 // generate an artificial resize event
 } // end of wxTopLevelWindowOS2::Restore
 
 // generate an artificial resize event
-void wxTopLevelWindowOS2::SendSizeEvent()
+void wxTopLevelWindowOS2::SendSizeEvent(int flags)
 {
     if (!m_bIconized)
     {
         RECTL                       vRect = wxGetWindowRect(GetHwnd());
 
 {
     if (!m_bIconized)
     {
         RECTL                       vRect = wxGetWindowRect(GetHwnd());
 
-        (void)::WinPostMsg( m_hFrame
-                           ,WM_SIZE
-                           ,MPFROM2SHORT(vRect.xRight - vRect.xLeft, vRect.yTop - vRect.yBottom)
-                           ,MPFROM2SHORT(vRect.xRight - vRect.xLeft, vRect.yTop - vRect.yBottom)
-                          );
+        if ( flags & wxSEND_EVENT_POST )
+        {
+            (void)::WinPostMsg( m_hFrame
+                               ,WM_SIZE
+                               ,MPFROM2SHORT(vRect.xRight - vRect.xLeft, vRect.yTop - vRect.yBottom)
+                               ,MPFROM2SHORT(vRect.xRight - vRect.xLeft, vRect.yTop - vRect.yBottom)
+                              );
+        }
+        else // send it
+        {
+            (void)::WinSendMsg( m_hFrame
+                               ,WM_SIZE
+                               ,MPFROM2SHORT(vRect.xRight - vRect.xLeft, vRect.yTop - vRect.yBottom)
+                               ,MPFROM2SHORT(vRect.xRight - vRect.xLeft, vRect.yTop - vRect.yBottom)
+                              );
+        }
     }
 } // end of wxTopLevelWindowOS2::SendSizeEvent
 
     }
 } // end of wxTopLevelWindowOS2::SendSizeEvent
 
@@ -964,7 +974,7 @@ bool wxTopLevelWindowOS2::ShowFullScreen( bool bShow,
 
         wxSize full( nWidth, nHeight );
         wxSizeEvent vEvent( full, GetId() );
 
         wxSize full( nWidth, nHeight );
         wxSizeEvent vEvent( full, GetId() );
-        GetEventHandler()->ProcessEvent(vEvent);
+        HandleWindowEvent(vEvent);
         return true;
     }
     else
         return true;
     }
     else
@@ -994,13 +1004,6 @@ bool wxTopLevelWindowOS2::ShowFullScreen( bool bShow,
 // wxTopLevelWindowOS2 misc
 // ----------------------------------------------------------------------------
 
 // wxTopLevelWindowOS2 misc
 // ----------------------------------------------------------------------------
 
-void wxTopLevelWindowOS2::SetIcon(
-  const wxIcon&                     rIcon
-)
-{
-    SetIcons(wxIconBundle(rIcon));
-} // end of wxTopLevelWindowOS2::SetIcon
-
 void wxTopLevelWindowOS2::SetIcons(
   const wxIconBundle&               rIcons
 )
 void wxTopLevelWindowOS2::SetIcons(
   const wxIconBundle&               rIcons
 )
@@ -1010,9 +1013,9 @@ void wxTopLevelWindowOS2::SetIcons(
     //
     wxTopLevelWindowBase::SetIcons(rIcons);
 
     //
     wxTopLevelWindowBase::SetIcons(rIcons);
 
-    const wxIcon&                   vIcon = rIcons.GetIcon(wxSize(32, 32));
+    const wxIcon& vIcon = rIcons.GetIconOfExactSize(32);
 
 
-    if (vIcon.Ok() && vIcon.GetWidth() == 32 && vIcon.GetHeight() == 32)
+    if (vIcon.IsOk())
     {
         ::WinSendMsg( m_hFrame
                      ,WM_SETICON
     {
         ::WinSendMsg( m_hFrame
                      ,WM_SETICON
@@ -1036,7 +1039,7 @@ bool wxTopLevelWindowOS2::EnableCloseButton( bool bEnable )
 
     if (!hMenu)
     {
 
     if (!hMenu)
     {
-        wxLogLastError(_T("GetSystemMenu"));
+        wxLogLastError(wxT("GetSystemMenu"));
         return false;
     }
 
         return false;
     }
 
@@ -1088,7 +1091,7 @@ void wxTLWHiddenParentModule::OnExit()
     {
         if (!::WinDestroyWindow(m_shWnd))
         {
     {
         if (!::WinDestroyWindow(m_shWnd))
         {
-            wxLogLastError(_T("DestroyWindow(hidden TLW parent)"));
+            wxLogLastError(wxT("DestroyWindow(hidden TLW parent)"));
         }
         m_shWnd = NULL;
     }
         }
         m_shWnd = NULL;
     }
@@ -1103,7 +1106,7 @@ HWND wxTLWHiddenParentModule::GetHWND()
     {
         if (!m_szClassName)
         {
     {
         if (!m_szClassName)
         {
-            static const wxChar*    zHIDDEN_PARENT_CLASS = _T("wxTLWHiddenParent");
+            static const wxChar*    zHIDDEN_PARENT_CLASS = wxT("wxTLWHiddenParent");
 
             if (!::WinRegisterClass( wxGetInstance()
                                     ,(PSZ)zHIDDEN_PARENT_CLASS
 
             if (!::WinRegisterClass( wxGetInstance()
                                     ,(PSZ)zHIDDEN_PARENT_CLASS
@@ -1112,7 +1115,7 @@ HWND wxTLWHiddenParentModule::GetHWND()
                                     ,sizeof(ULONG)
                                    ))
             {
                                     ,sizeof(ULONG)
                                    ))
             {
-                wxLogLastError(_T("RegisterClass(\"wxTLWHiddenParent\")"));
+                wxLogLastError(wxT("RegisterClass(\"wxTLWHiddenParent\")"));
             }
             else
             {
             }
             else
             {
@@ -1134,7 +1137,7 @@ HWND wxTLWHiddenParentModule::GetHWND()
                                      NULL );
         if (!m_shWnd)
         {
                                      NULL );
         if (!m_shWnd)
         {
-            wxLogLastError(_T("CreateWindow(hidden TLW parent)"));
+            wxLogLastError(wxT("CreateWindow(hidden TLW parent)"));
         }
     }
     return m_shWnd;
         }
     }
     return m_shWnd;