]> git.saurik.com Git - wxWidgets.git/blobdiff - src/os2/frame.cpp
Metrowerks Objective-C++ is more strict about types than Apple's.
[wxWidgets.git] / src / os2 / frame.cpp
index 646295e41179ad7a82a812cf69bfd9d0a071cdf1..8a8545f7c8e50b186748da3c3c83a2cc2d28bc8b 100644 (file)
@@ -51,7 +51,6 @@
 // globals
 // ----------------------------------------------------------------------------
 
 // globals
 // ----------------------------------------------------------------------------
 
-extern wxWindowList wxModelessWindows;
 extern wxList WXDLLEXPORT wxPendingDelete;
 
 #if wxUSE_MENUS_NATIVE
 extern wxList WXDLLEXPORT wxPendingDelete;
 
 #if wxUSE_MENUS_NATIVE
@@ -142,7 +141,6 @@ bool wxFrame::Create(
                                   ,rsName
                                  ))
         return FALSE;
                                   ,rsName
                                  ))
         return FALSE;
-    wxModelessWindows.Append(this);
     return TRUE;
 } // end of wxFrame::Create
 
     return TRUE;
 } // end of wxFrame::Create
 
@@ -173,15 +171,13 @@ void wxFrame::DoGetClientSize(
 
 //
 // Set the client size (i.e. leave the calculation of borders etc.
 
 //
 // Set the client size (i.e. leave the calculation of borders etc.
-// to wxWindows)
+// to wxWidgets)
 //
 void wxFrame::DoSetClientSize(
   int                               nWidth
 , int                               nHeight
 )
 {
 //
 void wxFrame::DoSetClientSize(
   int                               nWidth
 , int                               nHeight
 )
 {
-    wxStatusBar*                    pStatusBar = GetStatusBar();
-
     //
     // Statusbars are not part of the OS/2 Client but parent frame
     // so no statusbar consideration
     //
     // Statusbars are not part of the OS/2 Client but parent frame
     // so no statusbar consideration
@@ -217,8 +213,6 @@ wxStatusBar* wxFrame::OnCreateStatusBar(
 )
 {
     wxStatusBar*                    pStatusBar = NULL;
 )
 {
     wxStatusBar*                    pStatusBar = NULL;
-    SWP                             vSwp;
-    ERRORID                         vError;
     wxString                        sError;
 
     pStatusBar = wxFrameBase::OnCreateStatusBar( nNumber
     wxString                        sError;
 
     pStatusBar = wxFrameBase::OnCreateStatusBar( nNumber
@@ -281,7 +275,6 @@ void wxFrame::PositionStatusBar()
         int                         nY;
         int                         nStatbarWidth;
         int                         nStatbarHeight;
         int                         nY;
         int                         nStatbarWidth;
         int                         nStatbarHeight;
-        HWND                        hWndClient;
         RECTL                       vRect;
         RECTL                       vFRect;
 
         RECTL                       vRect;
         RECTL                       vFRect;
 
@@ -311,7 +304,7 @@ void wxFrame::PositionStatusBar()
         {
             vError = ::WinGetLastError(vHabmain);
             sError = wxPMErrorToStr(vError);
         {
             vError = ::WinGetLastError(vHabmain);
             sError = wxPMErrorToStr(vError);
-            wxLogError("Error setting parent for StautsBar. Error: %s\n", sError);
+            wxLogError("Error setting parent for StautsBar. Error: %s\n", sError.c_str());
             return;
         }
     }
             return;
         }
     }
@@ -355,17 +348,7 @@ void wxFrame::SetMenuBar(
   wxMenuBar*                        pMenuBar
 )
 {
   wxMenuBar*                        pMenuBar
 )
 {
-    ERRORID                         vError;
     wxString                        sError;
     wxString                        sError;
-    HWND                            hTitlebar = NULLHANDLE;
-    HWND                            hHScroll = NULLHANDLE;
-    HWND                            hVScroll = NULLHANDLE;
-    HWND                            hMenuBar = NULLHANDLE;
-    SWP                             vSwp;
-    SWP                             vSwpTitlebar;
-    SWP                             vSwpVScroll;
-    SWP                             vSwpHScroll;
-    SWP                             vSwpMenu;
 
     if (!pMenuBar)
     {
 
     if (!pMenuBar)
     {
@@ -384,7 +367,7 @@ void wxFrame::SetMenuBar(
         //
         // Can set a menubar several times.
         // TODO: how to prevent a memory leak if you have a currently-unattached
         //
         // Can set a menubar several times.
         // TODO: how to prevent a memory leak if you have a currently-unattached
-        // menubar? wxWindows assumes that the frame will delete the menu (otherwise
+        // menubar? wxWidgets assumes that the frame will delete the menu (otherwise
         // there are problems for MDI).
         //
         if (pMenuBar->GetHMenu())
         // there are problems for MDI).
         //
         if (pMenuBar->GetHMenu())
@@ -454,14 +437,14 @@ void wxFrame::InternalSetMenuBar()
     {
         vError = ::WinGetLastError(vHabmain);
         sError = wxPMErrorToStr(vError);
     {
         vError = ::WinGetLastError(vHabmain);
         sError = wxPMErrorToStr(vError);
-        wxLogError("Error setting parent for submenu. Error: %s\n", sError);
+        wxLogError("Error setting parent for submenu. Error: %s\n", sError.c_str());
     }
 
     if (!::WinSetOwner(m_hMenu, m_hFrame))
     {
         vError = ::WinGetLastError(vHabmain);
         sError = wxPMErrorToStr(vError);
     }
 
     if (!::WinSetOwner(m_hMenu, m_hFrame))
     {
         vError = ::WinGetLastError(vHabmain);
         sError = wxPMErrorToStr(vError);
-        wxLogError("Error setting parent for submenu. Error: %s\n", sError);
+        wxLogError("Error setting parent for submenu. Error: %s\n", sError.c_str());
     }
     ::WinSendMsg(m_hFrame, WM_UPDATEFRAME, (MPARAM)FCF_MENU, (MPARAM)0);
 } // end of wxFrame::InternalSetMenuBar
     }
     ::WinSendMsg(m_hFrame, WM_UPDATEFRAME, (MPARAM)FCF_MENU, (MPARAM)0);
 } // end of wxFrame::InternalSetMenuBar
@@ -695,29 +678,13 @@ bool wxFrame::ShowFullScreen(
 // Checks if there is a toolbar, and returns the first free client position
 wxPoint wxFrame::GetClientAreaOrigin() const
 {
 // Checks if there is a toolbar, and returns the first free client position
 wxPoint wxFrame::GetClientAreaOrigin() const
 {
-    wxPoint                         vPoint(0, 0);
-
-#if wxUSE_TOOLBAR
-    if (GetToolBar())
-    {
-        int                         nWidth;
-        int                         nHeight;
-
-        GetToolBar()->GetSize( &nWidth
-                              ,&nHeight
-                             );
+    wxPoint                         vPoint = wxTopLevelWindow::GetClientAreaOrigin();
 
 
-        if (GetToolBar()->GetWindowStyleFlag() & wxTB_VERTICAL)
-        {
-            vPoint.x += nWidth;
-        }
-        else
-        {
-            // PM is backwards from windows
-            vPoint.y += nHeight;
-        }
-    }
-#endif //wxUSE_TOOLBAR
+    //
+    // In OS/2 the toolbar and statusbar are frame extensions so there is no
+    // adjustment.  The client is supposedly resized for a toolbar in OS/2
+    // as it is for the status bar.
+    //
     return vPoint;
 } // end of wxFrame::GetClientAreaOrigin
 
     return vPoint;
 } // end of wxFrame::GetClientAreaOrigin
 
@@ -754,10 +721,8 @@ void wxFrame::PositionToolBar()
     if (!pToolBar)
         return;
 
     if (!pToolBar)
         return;
 
-    HWND                            hWndClient;
     RECTL                           vRect;
     RECTL                           vFRect;
     RECTL                           vRect;
     RECTL                           vFRect;
-    SWP                             vSwp;
     wxPoint                         vPos;
 
     ::WinQueryWindowRect(m_hFrame, &vRect);
     wxPoint                         vPos;
 
     ::WinQueryWindowRect(m_hFrame, &vRect);
@@ -814,6 +779,10 @@ void wxFrame::IconizeChildFrames(
   bool                              bIconize
 )
 {
   bool                              bIconize
 )
 {
+  // FIXME: Generic MDI does not use Frames for the Childs, so this does _not_
+  //        work. Possibly, the right thing is simply to eliminate this
+  //        functions and all the calls to it from within this file.
+#if 0
     for (wxWindowList::Node* pNode = GetChildren().GetFirst();
          pNode;
          pNode = pNode->GetNext() )
     for (wxWindowList::Node* pNode = GetChildren().GetFirst();
          pNode;
          pNode = pNode->GetNext() )
@@ -845,6 +814,7 @@ void wxFrame::IconizeChildFrames(
                 pFrame->Iconize(bIconize);
         }
     }
                 pFrame->Iconize(bIconize);
         }
     }
+#endif
 } // end of wxFrame::IconizeChildFrames
 
 WXHICON wxFrame::GetDefaultIcon() const
 } // end of wxFrame::IconizeChildFrames
 
 WXHICON wxFrame::GetDefaultIcon() const
@@ -915,7 +885,6 @@ bool wxFrame::HandlePaint()
 
             if (hIcon)
             {
 
             if (hIcon)
             {
-                HWND                            hWndClient;
                 RECTL                           vRect3;
 
                 ::WinQueryWindowRect(GetHwnd(), &vRect3);
                 RECTL                           vRect3;
 
                 ::WinQueryWindowRect(GetHwnd(), &vRect3);
@@ -1198,7 +1167,7 @@ MRESULT EXPENTRY wxFrameMainWndProc(
                         }
                         else
                         {
                         }
                         else
                         {
-                            pSWP[i].x    = vRectl.xLeft;
+                            pSWP[i].x    = vRectl.xLeft + nWidth;
                             pSWP[i].y    = vRectl.yBottom + nHeight;
                             pSWP[i].cx   = vRectl.xRight - (vRectl.xLeft + nWidth);
                             pSWP[i].cy   = vRectl.yTop - vRectl.yBottom - nHeight;
                             pSWP[i].y    = vRectl.yBottom + nHeight;
                             pSWP[i].cx   = vRectl.xRight - (vRectl.xLeft + nWidth);
                             pSWP[i].cy   = vRectl.yTop - vRectl.yBottom - nHeight;
@@ -1243,7 +1212,6 @@ MRESULT EXPENTRY wxFrameWndProc(
     //
 
     MRESULT                         rc = (MRESULT)0;
     //
 
     MRESULT                         rc = (MRESULT)0;
-    bool                            bProcessed = FALSE;
 
     //
     // Stop right here if we don't have a valid handle in our wxWindow object.
 
     //
     // Stop right here if we don't have a valid handle in our wxWindow object.
@@ -1341,8 +1309,6 @@ MRESULT wxFrame::OS2WindowProc(
 
         case WM_SIZE:
             {
 
         case WM_SIZE:
             {
-                SHORT               nScxold = SHORT1FROMMP(wParam); // Old horizontal size.
-                SHORT               nScyold = SHORT2FROMMP(wParam); // Old vertical size.
                 SHORT               nScxnew = SHORT1FROMMP(lParam); // New horizontal size.
                 SHORT               nScynew = SHORT2FROMMP(lParam); // New vertical size.
 
                 SHORT               nScxnew = SHORT1FROMMP(lParam); // New horizontal size.
                 SHORT               nScynew = SHORT2FROMMP(lParam); // New vertical size.
 
@@ -1436,3 +1402,22 @@ wxWindow* wxFrame::GetClient()
 {
     return wxFindWinFromHandle((WXHWND)::WinWindowFromID(m_hFrame, FID_CLIENT));
 }
 {
     return wxFindWinFromHandle((WXHWND)::WinWindowFromID(m_hFrame, FID_CLIENT));
 }
+
+void wxFrame::SendSizeEvent()
+{
+    if (!m_bIconized)
+    {
+        RECTL                       vRect = wxGetWindowRect(GetHwnd());
+
+        ::WinPostMsg( GetHwnd()
+                     ,WM_SIZE
+                     ,MPFROM2SHORT( vRect.xRight - vRect.xLeft
+                                   ,vRect.xRight - vRect.xLeft
+                                  )
+                     ,MPFROM2SHORT( vRect.yTop - vRect.yBottom
+                                   ,vRect.yTop - vRect.yBottom
+                                  )
+                    );
+    }
+}
+