X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/77ffb5937e89927b621128789401db8921fe580f..a8cb1a4947bbbf5e18ce52448f4c3bb4cff4daee:/src/os2/toplevel.cpp diff --git a/src/os2/toplevel.cpp b/src/os2/toplevel.cpp index 1d52bad531..b57f915139 100644 --- a/src/os2/toplevel.cpp +++ b/src/os2/toplevel.cpp @@ -1,12 +1,12 @@ /////////////////////////////////////////////////////////////////////////////// -// Name: os2/toplevel.cpp +// Name: src/os2/toplevel.cpp // Purpose: implements wxTopLevelWindow for OS/2 // Author: Vadim Zeitlin // Modified by: // Created: 30.12.01 // RCS-ID: $Id$ // Copyright: (c) 2001 SciTech Software, Inc. (www.scitechsoft.com) -// License: wxWidgets licence +// License: wxWindows licence /////////////////////////////////////////////////////////////////////////////// // ============================================================================ @@ -17,10 +17,6 @@ // headers // ---------------------------------------------------------------------------- -#ifdef __GNUG__ - #pragma implementation "toplevel.h" -#endif - // For compilers that support precompilation, includes "wx.h". #include "wx/wxprec.h" @@ -52,15 +48,11 @@ // globals // ---------------------------------------------------------------------------- -// list of all frames and modeless dialogs -wxWindowList wxModelessWindows; - // the name of the default wxWidgets class -extern void wxAssociateWinWithHandle( HWND hWnd - ,wxWindowOS2* pWin - ); -bool wxTopLevelWindowOS2::m_sbInitialized = FALSE; -wxWindow* wxTopLevelWindowOS2::m_spHiddenParent = NULL; +extern void wxAssociateWinWithHandle( HWND hWnd, wxWindowOS2* pWin ); + +bool wxTopLevelWindowOS2::m_sbInitialized = false; +wxWindow* wxTopLevelWindowOS2::m_spHiddenParent = NULL; // ============================================================================ // wxTopLevelWindowOS2 implementation @@ -122,12 +114,12 @@ private: // // The HWND of the hidden parent // - static HWND m_shWnd; + static HWND m_shWnd; // // The class used to create it // - static const wxChar* m_szClassName; + static const wxChar* m_szClassName; DECLARE_DYNAMIC_CLASS(wxTLWHiddenParentModule) }; // end of CLASS wxTLWHiddenParentModule @@ -139,19 +131,19 @@ IMPLEMENT_DYNAMIC_CLASS(wxTLWHiddenParentModule, wxModule) void wxTopLevelWindowOS2::Init() { - m_bIconized = m_bMaximizeOnShow = FALSE; + m_bIconized = m_bMaximizeOnShow = false; // // Unlike (almost?) all other windows, frames are created hidden // - m_isShown = FALSE; + m_isShown = false; // // Data to save/restore when calling ShowFullScreen m_lFsStyle = 0; m_lFsOldWindowStyle = 0; - m_bFsIsMaximized = FALSE; - m_bFsIsShowing = FALSE; + m_bFsIsMaximized = false; + m_bFsIsShowing = false; m_hFrame = NULLHANDLE; memset(&m_vSwp, 0, sizeof(SWP)); @@ -310,12 +302,11 @@ WXHWND wxTopLevelWindowOS2::OS2GetParent() const return (WXHWND)hWndParent; } // end of wxTopLevelWindowOS2::OS2GetParent -bool wxTopLevelWindowOS2::CreateDialog( - ULONG ulDlgTemplate -, const wxString& rsTitle -, const wxPoint& rPos -, const wxSize& rSize -) + +bool wxTopLevelWindowOS2::CreateDialog( ULONG ulDlgTemplate, + const wxString& WXUNUSED(rsTitle), + const wxPoint& rPos, + const wxSize& rSize ) { wxWindow* pParent = GetParent(); @@ -368,7 +359,7 @@ bool wxTopLevelWindowOS2::CreateDialog( wxLogSysError(wxT("Can't create dialog using template '%ld'"), ulDlgTemplate); - return FALSE; + return false; } // @@ -416,7 +407,7 @@ bool wxTopLevelWindowOS2::CreateDialog( nX = (vSizeDpy.x - nWidth) / 2; nY = (vSizeDpy.y - nHeight) / 2; } - m_backgroundColour.Set(wxString("LIGHT GREY")); + m_backgroundColour.Set(wxString(wxT("LIGHT GREY"))); LONG lColor = (LONG)m_backgroundColour.GetPixel(); @@ -426,7 +417,7 @@ bool wxTopLevelWindowOS2::CreateDialog( ,(PVOID)&lColor )) { - return FALSE; + return false; } ::WinSetWindowPos( GetHwnd() @@ -440,29 +431,27 @@ bool wxTopLevelWindowOS2::CreateDialog( ::WinQueryWindowPos(GetHwnd(), GetSwp()); m_hFrame = m_hWnd; SubclassWin(m_hWnd); - return TRUE; + return true; } // end of wxTopLevelWindowOS2::CreateDialog -bool wxTopLevelWindowOS2::CreateFrame( - const wxString& rsTitle -, const wxPoint& rPos -, const wxSize& rSize -) +bool wxTopLevelWindowOS2::CreateFrame( const wxString& rsTitle, + const wxPoint& rPos, + const wxSize& rSize ) { - WXDWORD lExflags; - WXDWORD lFlags = OS2GetCreateWindowFlags(&lExflags); - long lStyle = GetWindowStyleFlag(); - int nX = rPos.x; - int nY = rPos.y; - int nWidth = rSize.x; - int nHeight = rSize.y; - ULONG ulStyleFlags = 0L; - ERRORID vError; - wxString sError; - wxWindow* pParent = GetParent(); - HWND hParent; - HWND hFrame; - HWND hClient; + WXDWORD lExflags; + WXDWORD lFlags = OS2GetCreateWindowFlags(&lExflags); + long lStyle = GetWindowStyleFlag(); + int nX = rPos.x; + int nY = rPos.y; + int nWidth = rSize.x; + int nHeight = rSize.y; + ULONG ulStyleFlags = 0L; + ERRORID vError; + wxString sError; + wxWindow* pParent = GetParent(); + HWND hParent; + HWND hFrame; + HWND hClient; if (pParent) hParent = GetHwndOf(pParent); @@ -478,7 +467,7 @@ bool wxTopLevelWindowOS2::CreateFrame( // Clear the visible flag, we always call show // ulStyleFlags &= (unsigned long)~WS_VISIBLE; - m_bIconized = FALSE; + m_bIconized = false; // // Create the frame window: We break ranks with other ports now @@ -501,8 +490,8 @@ bool wxTopLevelWindowOS2::CreateFrame( { vError = ::WinGetLastError(vHabmain); sError = wxPMErrorToStr(vError); - wxLogError("Error creating frame. Error: %s\n", sError.c_str()); - return FALSE; + wxLogError(_T("Error creating frame. Error: %s\n"), sError.c_str()); + return false; } // @@ -513,7 +502,7 @@ bool wxTopLevelWindowOS2::CreateFrame( wxAssociateWinWithHandle(m_hWnd, this); wxAssociateWinWithHandle(m_hFrame, this); - m_backgroundColour.Set(wxString("MEDIUM GREY")); + m_backgroundColour.Set(wxString(wxT("MEDIUM GREY"))); LONG lColor = (LONG)m_backgroundColour.GetPixel(); @@ -525,8 +514,8 @@ bool wxTopLevelWindowOS2::CreateFrame( { vError = ::WinGetLastError(vHabmain); sError = wxPMErrorToStr(vError); - wxLogError("Error creating frame. Error: %s\n", sError.c_str()); - return FALSE; + wxLogError(_T("Error creating frame. Error: %s\n"), sError.c_str()); + return false; } // @@ -562,8 +551,8 @@ bool wxTopLevelWindowOS2::CreateFrame( { vError = ::WinGetLastError(vHabmain); sError = wxPMErrorToStr(vError); - wxLogError("Error sizing frame. Error: %s\n", sError.c_str()); - return FALSE; + wxLogError(_T("Error sizing frame. Error: %s\n"), sError.c_str()); + return false; } lStyle = ::WinQueryWindowULong( m_hWnd ,QWL_STYLE @@ -573,7 +562,7 @@ bool wxTopLevelWindowOS2::CreateFrame( ,QWL_STYLE ,lStyle ); - return TRUE; + return true; } // end of wxTopLevelWindowOS2::CreateFrame bool wxTopLevelWindowOS2::Create( @@ -613,7 +602,7 @@ bool wxTopLevelWindowOS2::Create( if (GetExtraStyle() & wxTOPLEVEL_EX_DIALOG) { // - // We have different dialog templates to allows 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 // strange) @@ -643,9 +632,6 @@ bool wxTopLevelWindowOS2::Create( wxTopLevelWindowOS2::~wxTopLevelWindowOS2() { - if (wxModelessWindows.Find(this)) - wxModelessWindows.DeleteObject(this); - // // After destroying an owned window, Windows activates the next top level // window in Z order but it may be different from our owner (to reproduce @@ -724,12 +710,10 @@ void wxTopLevelWindowOS2::DoShowWindow( m_bIconized = nShowCmd == SWP_MINIMIZE; } // end of wxTopLevelWindowOS2::DoShowWindow -bool wxTopLevelWindowOS2::Show( - bool bShow -) +bool wxTopLevelWindowOS2::Show( bool bShow ) { - int nShowCmd; - SWP vSwp; + int nShowCmd; + SWP vSwp; if (bShow != IsShown() ) { @@ -737,14 +721,14 @@ bool wxTopLevelWindowOS2::Show( } else { - return FALSE; + return false; } if (bShow) { if (m_bMaximizeOnShow) { nShowCmd = SWP_MAXIMIZE; - m_bMaximizeOnShow = FALSE; + m_bMaximizeOnShow = false; } else { @@ -759,10 +743,10 @@ bool wxTopLevelWindowOS2::Show( if (bShow) { - wxActivateEvent vEvent(wxEVT_ACTIVATE, TRUE, m_windowId); + wxActivateEvent vEvent(wxEVT_ACTIVATE, true, m_windowId); ::WinQueryWindowPos(m_hFrame, &vSwp); - m_bIconized = vSwp.fl & SWP_MINIMIZE; + m_bIconized = ( vSwp.fl & SWP_MINIMIZE ) == SWP_MINIMIZE ; ::WinQueryWindowPos(m_hWnd, &m_vSwpClient); ::WinSendMsg(m_hFrame, WM_UPDATEFRAME, (MPARAM)~0, 0); ::WinQueryWindowPos(m_hWnd, &vSwp); @@ -782,14 +766,14 @@ bool wxTopLevelWindowOS2::Show( // if (GetParent()) { - HWND hWndParent = GetHwndOf(GetParent()); + HWND hWndParent = GetHwndOf(GetParent()); ::WinQueryWindowPos(hWndParent, &vSwp); - m_bIconized = vSwp.fl & SWP_MINIMIZE; + m_bIconized = (vSwp.fl & SWP_MINIMIZE)==SWP_MINIMIZE; ::WinEnableWindow(hWndParent, TRUE); } } - return TRUE; + return true; } // end of wxTopLevelWindowOS2::Show // ---------------------------------------------------------------------------- @@ -819,14 +803,21 @@ void wxTopLevelWindowOS2::Maximize( bool wxTopLevelWindowOS2::IsMaximized() const { - ::WinQueryWindowPos(m_hFrame, (PSWP)&m_vSwp); - return (m_vSwp.fl & SWP_MAXIMIZE); + return (m_vSwp.fl & SWP_MAXIMIZE) == SWP_MAXIMIZE; } // end of wxTopLevelWindowOS2::IsMaximized -void wxTopLevelWindowOS2::Iconize( - bool bIconize -) +void wxTopLevelWindowOS2::SetTitle( const wxString& title) +{ + SetLabel(title); +} + +wxString wxTopLevelWindowOS2::GetTitle() const +{ + return GetLabel(); +} + +void wxTopLevelWindowOS2::Iconize( bool bIconize ) { DoShowWindow(bIconize ? SWP_MINIMIZE : SWP_RESTORE); } // end of wxTopLevelWindowOS2::Iconize @@ -836,9 +827,9 @@ bool wxTopLevelWindowOS2::IsIconized() const // also update the current state ::WinQueryWindowPos(m_hFrame, (PSWP)&m_vSwp); if (m_vSwp.fl & SWP_MINIMIZE) - ((wxTopLevelWindow*)this)->m_bIconized = TRUE; + ((wxTopLevelWindow*)this)->m_bIconized = true; else - ((wxTopLevelWindow*)this)->m_bIconized = FALSE; + ((wxTopLevelWindow*)this)->m_bIconized = false; return m_bIconized; } // end of wxTopLevelWindowOS2::IsIconized @@ -866,17 +857,15 @@ void wxTopLevelWindowOS2::SendSizeEvent() // wxTopLevelWindowOS2 fullscreen // ---------------------------------------------------------------------------- -bool wxTopLevelWindowOS2::ShowFullScreen( - bool bShow -, long lStyle -) +bool wxTopLevelWindowOS2::ShowFullScreen( bool bShow, + long lStyle ) { if (bShow) { if (IsFullScreen()) - return FALSE; + return false; - m_bFsIsShowing = TRUE; + m_bFsIsShowing = true; m_lFsStyle = lStyle; // @@ -899,8 +888,8 @@ bool wxTopLevelWindowOS2::ShowFullScreen( // // Decide which window lStyle flags to turn off // - LONG lNewStyle = m_lFsOldWindowStyle; - LONG lOffFlags = 0; + LONG lNewStyle = m_lFsOldWindowStyle; + LONG lOffFlags = 0; if (lStyle & wxFULLSCREEN_NOBORDER) lOffFlags |= FCF_BORDER; @@ -920,16 +909,14 @@ bool wxTopLevelWindowOS2::ShowFullScreen( // // Resize to the size of the desktop // - int nWidth; - int nHeight; - RECTL vRect = wxGetWindowRect(HWND_DESKTOP); + int nWidth; + int nHeight; + RECTL vRect = wxGetWindowRect(HWND_DESKTOP); nWidth = vRect.xRight - vRect.xLeft; nHeight = vRect.yTop - vRect.yBottom; - SetSize( nWidth - ,nHeight - ); + SetSize( nWidth, nHeight ); // // Now flush the window style cache and actually go full-screen @@ -943,21 +930,17 @@ bool wxTopLevelWindowOS2::ShowFullScreen( ,SWP_SIZE | SWP_MOVE ); - wxSizeEvent vEvent( wxSize( nWidth - ,nHeight - ) - ,GetId() - ); - + wxSize full( nWidth, nHeight ); + wxSizeEvent vEvent( full, GetId() ); GetEventHandler()->ProcessEvent(vEvent); - return TRUE; + return true; } else { if (!IsFullScreen()) - return FALSE; + return false; - m_bFsIsShowing = FALSE; + m_bFsIsShowing = false; Maximize(m_bFsIsMaximized); ::WinSetWindowULong( (HWND)GetHWND() ,QWL_STYLE @@ -971,7 +954,7 @@ bool wxTopLevelWindowOS2::ShowFullScreen( ,m_vFsOldSize.height ,SWP_SIZE | SWP_MOVE ); - return TRUE; + return true; } } // end of wxTopLevelWindowOS2::ShowFullScreen @@ -1012,19 +995,17 @@ void wxTopLevelWindowOS2::SetIcons( } } // end of wxTopLevelWindowOS2::SetIcon -bool wxTopLevelWindowOS2::EnableCloseButton( - bool bEnable -) +bool wxTopLevelWindowOS2::EnableCloseButton( bool bEnable ) { // // Get system (a.k.a. window) menu // - HMENU hMenu = ::WinWindowFromID(m_hFrame, FID_SYSMENU); + HMENU hMenu = ::WinWindowFromID(m_hFrame, FID_SYSMENU); if (!hMenu) { wxLogLastError(_T("GetSystemMenu")); - return FALSE; + return false; } // @@ -1052,7 +1033,7 @@ bool wxTopLevelWindowOS2::EnableCloseButton( ,(MPARAM)FCF_MENU ,(MPARAM)0 ); - return TRUE; + return true; } // end of wxTopLevelWindowOS2::EnableCloseButton // ============================================================================ @@ -1066,7 +1047,7 @@ bool wxTLWHiddenParentModule::OnInit() { m_shWnd = NULL; m_szClassName = NULL; - return TRUE; + return true; } // end of wxTLWHiddenParentModule::OnInit void wxTLWHiddenParentModule::OnExit() @@ -1093,7 +1074,7 @@ HWND wxTLWHiddenParentModule::GetHWND() static const wxChar* zHIDDEN_PARENT_CLASS = _T("wxTLWHiddenParent"); if (!::WinRegisterClass( wxGetInstance() - ,zHIDDEN_PARENT_CLASS + ,(PSZ)zHIDDEN_PARENT_CLASS ,NULL ,0 ,sizeof(ULONG) @@ -1106,20 +1087,19 @@ HWND wxTLWHiddenParentModule::GetHWND() m_szClassName = zHIDDEN_PARENT_CLASS; } } - m_shWnd = ::WinCreateWindow( HWND_DESKTOP - ,m_szClassName - ,"" - ,0L - ,(LONG)0L - ,(LONG)0L - ,(LONG)0L - ,(LONG)0L - ,NULLHANDLE - ,HWND_TOP - ,0L - ,NULL - ,NULL - ); + m_shWnd = ::WinCreateWindow( HWND_DESKTOP, + (PSZ)m_szClassName, + "", + 0L, + (LONG)0L, + (LONG)0L, + (LONG)0L, + (LONG)0L, + NULLHANDLE, + HWND_TOP, + 0L, + NULL, + NULL ); if (!m_shWnd) { wxLogLastError(_T("CreateWindow(hidden TLW parent)"));