X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/f618020a15f1647a83aaeab1fe315f90497a9876..0d91b2342a1f83b3b9db145c7210efd5d9547cc8:/src/univ/topluniv.cpp?ds=sidebyside diff --git a/src/univ/topluniv.cpp b/src/univ/topluniv.cpp index 35debbc1fe..ec7f1d6652 100644 --- a/src/univ/topluniv.cpp +++ b/src/univ/topluniv.cpp @@ -1,5 +1,5 @@ ///////////////////////////////////////////////////////////////////////////// -// Name: topluniv.cpp +// Name: src/univ/topluniv.cpp // Author: Vaclav Slavik // Id: $Id$ // Copyright: (c) 2001-2002 SciTech Software, Inc. (www.scitechsoft.com) @@ -14,28 +14,24 @@ // headers // ---------------------------------------------------------------------------- -#ifdef __GNUG__ - #pragma implementation "univtoplevel.h" -#endif - // For compilers that support precompilation, includes "wx.h". #include "wx/wxprec.h" #ifdef __BORLANDC__ -#pragma hdrstop + #pragma hdrstop #endif -#include "wx/defs.h" +#include "wx/toplevel.h" #ifndef WX_PRECOMP #include "wx/dcclient.h" #include "wx/settings.h" + #include "wx/bitmap.h" + #include "wx/image.h" + #include "wx/frame.h" #endif -#include "wx/toplevel.h" #include "wx/univ/renderer.h" -#include "wx/bitmap.h" -#include "wx/image.h" #include "wx/cshelp.h" #include "wx/evtloop.h" @@ -61,7 +57,7 @@ int wxTopLevelWindow::ms_canIconize = -1; void wxTopLevelWindow::Init() { - m_isActive = FALSE; + m_isActive = false; m_windowStyle = 0; m_pressedButton = 0; } @@ -80,8 +76,8 @@ bool wxTopLevelWindow::Create(wxWindow *parent, if ( ms_drawDecorations == -1 ) { - ms_drawDecorations = - !wxSystemSettings::HasFeature(wxSYS_CAN_DRAW_FRAME_DECORATIONS) + ms_drawDecorations = + !wxSystemSettings::HasFeature(wxSYS_CAN_DRAW_FRAME_DECORATIONS) || wxGetEnv(wxT("WXDECOR"), NULL); // FIXME -- wxUniv should provide a way to force non-native decorations! // $WXDECOR is just a hack in absence of better wxUniv solution @@ -100,15 +96,14 @@ bool wxTopLevelWindow::Create(wxWindow *parent, exstyleOrig = GetExtraStyle(); style &= ~(wxCAPTION | wxMINIMIZE_BOX | wxMAXIMIZE_BOX | wxSYSTEM_MENU | wxRESIZE_BORDER | wxFRAME_TOOL_WINDOW | - wxTHICK_FRAME); - style = wxSIMPLE_BORDER; - SetExtraStyle(exstyleOrig & - ~(wxFRAME_EX_CONTEXTHELP | wxDIALOG_EX_CONTEXTHELP)); + wxRESIZE_BORDER); + style |= wxSIMPLE_BORDER; + SetExtraStyle(exstyleOrig & ~wxWS_EX_CONTEXTHELP); } if ( !wxTopLevelWindowNative::Create(parent, id, title, pos, size, style, name) ) - return FALSE; + return false; if ( ms_drawDecorations ) { @@ -116,12 +111,12 @@ bool wxTopLevelWindow::Create(wxWindow *parent, m_exStyle = exstyleOrig; } - return TRUE; + return true; } bool wxTopLevelWindow::ShowFullScreen(bool show, long style) { - if ( show == IsFullScreen() ) return FALSE; + if ( show == IsFullScreen() ) return false; if ( ms_drawDecorations ) { @@ -159,13 +154,13 @@ long wxTopLevelWindow::GetDecorationsStyle() const style |= wxTOPLEVEL_BUTTON_MAXIMIZE; } #if wxUSE_HELP - if ( m_exStyle & (wxFRAME_EX_CONTEXTHELP | wxDIALOG_EX_CONTEXTHELP)) + if ( m_exStyle & wxWS_EX_CONTEXTHELP) style |= wxTOPLEVEL_BUTTON_HELP; #endif } if ( (m_windowStyle & (wxSIMPLE_BORDER | wxNO_BORDER)) == 0 ) style |= wxTOPLEVEL_BORDER; - if ( m_windowStyle & (wxRESIZE_BORDER | wxTHICK_FRAME) ) + if ( m_windowStyle & (wxRESIZE_BORDER | wxRESIZE_BORDER) ) style |= wxTOPLEVEL_RESIZEABLE; if ( IsMaximized() ) @@ -238,19 +233,14 @@ void wxTopLevelWindow::DoSetClientSize(int width, int height) wxTopLevelWindowNative::DoSetClientSize(width, height); } -void wxTopLevelWindow::OnNcPaint(wxPaintEvent& event) +void wxTopLevelWindow::OnNcPaint(wxNcPaintEvent& event) { if ( !ms_drawDecorations || !m_renderer ) event.Skip(); else { // get the window rect - wxRect rect; - wxSize size = GetSize(); - rect.x = - rect.y = 0; - rect.width = size.x; - rect.height = size.y; + wxRect rect(GetSize()); wxWindowDC dc(this); m_renderer->DrawFrameTitleBar(dc, rect, @@ -305,7 +295,7 @@ void wxTopLevelWindow::SetIcons(const wxIconBundle& icons) wxSize size = m_renderer->GetFrameIconSize(); const wxIcon& icon = icons.GetIcon( size ); - if ( !icon.Ok() || size.x == -1 ) + if ( !icon.Ok() || size.x == wxDefaultCoord ) m_titlebarIcon = icon; else { @@ -315,12 +305,14 @@ void wxTopLevelWindow::SetIcons(const wxIconBundle& icons) m_titlebarIcon = wxNullIcon; else if ( bmp1.GetWidth() == size.x && bmp1.GetHeight() == size.y ) m_titlebarIcon = icon; +#if wxUSE_IMAGE else { wxImage img = bmp1.ConvertToImage(); img.Rescale(size.x, size.y); m_titlebarIcon.CopyFromBitmap(wxBitmap(img)); } +#endif // wxUSE_IMAGE } } } @@ -353,13 +345,12 @@ static bool wxGetResizingCursor(long hitTestResult, wxCursor& cursor) cursor = wxCursor(wxCURSOR_SIZENWSE); break; default: - return FALSE; - break; + return false; } - return TRUE; + return true; } - - return FALSE; + + return false; } #define wxINTERACTIVE_RESIZE_DIR \ @@ -382,7 +373,7 @@ class wxInteractiveMoveHandler : public wxEvtHandler { public: wxInteractiveMoveHandler(wxInteractiveMoveData& data) : m_data(data) {} - + private: DECLARE_EVENT_TABLE() void OnMouseMove(wxMouseEvent& event); @@ -401,7 +392,7 @@ BEGIN_EVENT_TABLE(wxInteractiveMoveHandler, wxEvtHandler) END_EVENT_TABLE() -static inline LINKAGEMODE +static inline LINKAGEMODE void wxApplyResize(wxInteractiveMoveData& data, const wxPoint& diff) { if ( data.m_flags & wxINTERACTIVE_RESIZE_W ) @@ -422,26 +413,26 @@ void wxApplyResize(wxInteractiveMoveData& data, const wxPoint& diff) { data.m_rect.height += diff.y; } - - if ( data.m_minSize.x != -1 && data.m_rect.width < data.m_minSize.x ) + + if ( data.m_minSize.x != wxDefaultCoord && data.m_rect.width < data.m_minSize.x ) { if ( data.m_flags & wxINTERACTIVE_RESIZE_W ) data.m_rect.x -= data.m_minSize.x - data.m_rect.width; data.m_rect.width = data.m_minSize.x; } - if ( data.m_maxSize.x != -1 && data.m_rect.width > data.m_maxSize.x ) + if ( data.m_maxSize.x != wxDefaultCoord && data.m_rect.width > data.m_maxSize.x ) { if ( data.m_flags & wxINTERACTIVE_RESIZE_W ) data.m_rect.x -= data.m_minSize.x - data.m_rect.width; data.m_rect.width = data.m_maxSize.x; } - if ( data.m_minSize.y != -1 && data.m_rect.height < data.m_minSize.y ) + if ( data.m_minSize.y != wxDefaultCoord && data.m_rect.height < data.m_minSize.y ) { if ( data.m_flags & wxINTERACTIVE_RESIZE_N ) data.m_rect.y -= data.m_minSize.y - data.m_rect.height; data.m_rect.height = data.m_minSize.y; } - if ( data.m_maxSize.y != -1 && data.m_rect.height > data.m_maxSize.y ) + if ( data.m_maxSize.y != wxDefaultCoord && data.m_rect.height > data.m_maxSize.y ) { if ( data.m_flags & wxINTERACTIVE_RESIZE_N ) data.m_rect.y -= data.m_minSize.y - data.m_rect.height; @@ -471,7 +462,7 @@ void wxInteractiveMoveHandler::OnMouseMove(wxMouseEvent& event) } } -void wxInteractiveMoveHandler::OnMouseDown(wxMouseEvent& event) +void wxInteractiveMoveHandler::OnMouseDown(wxMouseEvent& WXUNUSED(event)) { if ( m_data.m_flags & wxINTERACTIVE_WAIT_FOR_INPUT ) { @@ -481,8 +472,8 @@ void wxInteractiveMoveHandler::OnMouseDown(wxMouseEvent& event) void wxInteractiveMoveHandler::OnKeyDown(wxKeyEvent& event) { - wxPoint diff(-1,-1); - + wxPoint diff(wxDefaultCoord,wxDefaultCoord); + switch ( event.GetKeyCode() ) { case WXK_UP: diff = wxPoint(0, -16); break; @@ -497,8 +488,8 @@ void wxInteractiveMoveHandler::OnKeyDown(wxKeyEvent& event) m_data.m_evtLoop->Exit(); return; } - - if ( diff.x != -1 ) + + if ( diff.x != wxDefaultCoord ) { if ( m_data.m_flags & wxINTERACTIVE_WAIT_FOR_INPUT ) { @@ -506,19 +497,19 @@ void wxInteractiveMoveHandler::OnKeyDown(wxKeyEvent& event) if ( m_data.m_sizingCursor ) { wxEndBusyCursor(); - m_data.m_sizingCursor = FALSE; + m_data.m_sizingCursor = false; } if ( m_data.m_flags & wxINTERACTIVE_MOVE ) { - m_data.m_pos = m_data.m_window->GetPosition() + + m_data.m_pos = m_data.m_window->GetPosition() + wxPoint(m_data.m_window->GetSize().x/2, 8); } } wxPoint warp; - bool changeCur = FALSE; - + bool changeCur = false; + if ( m_data.m_flags & wxINTERACTIVE_MOVE ) { m_data.m_rect.Offset(diff); @@ -527,38 +518,38 @@ void wxInteractiveMoveHandler::OnKeyDown(wxKeyEvent& event) } else /* wxINTERACTIVE_RESIZE */ { - if ( !(m_data.m_flags & + if ( !(m_data.m_flags & (wxINTERACTIVE_RESIZE_N | wxINTERACTIVE_RESIZE_S)) ) { if ( diff.y < 0 ) { m_data.m_flags |= wxINTERACTIVE_RESIZE_N; m_data.m_pos.y = m_data.m_window->GetPosition().y; - changeCur = TRUE; + changeCur = true; } else if ( diff.y > 0 ) { m_data.m_flags |= wxINTERACTIVE_RESIZE_S; m_data.m_pos.y = m_data.m_window->GetPosition().y + m_data.m_window->GetSize().y; - changeCur = TRUE; + changeCur = true; } } - if ( !(m_data.m_flags & + if ( !(m_data.m_flags & (wxINTERACTIVE_RESIZE_W | wxINTERACTIVE_RESIZE_E)) ) { if ( diff.x < 0 ) { m_data.m_flags |= wxINTERACTIVE_RESIZE_W; m_data.m_pos.x = m_data.m_window->GetPosition().x; - changeCur = TRUE; + changeCur = true; } else if ( diff.x > 0 ) { m_data.m_flags |= wxINTERACTIVE_RESIZE_E; m_data.m_pos.x = m_data.m_window->GetPosition().x + m_data.m_window->GetSize().x; - changeCur = TRUE; + changeCur = true; } } @@ -592,13 +583,13 @@ void wxInteractiveMoveHandler::OnKeyDown(wxKeyEvent& event) if ( m_data.m_sizingCursor ) wxEndBusyCursor(); wxBeginBusyCursor(&cur); - m_data.m_sizingCursor = TRUE; + m_data.m_sizingCursor = true; } } } } -void wxInteractiveMoveHandler::OnMouseUp(wxMouseEvent& event) +void wxInteractiveMoveHandler::OnMouseUp(wxMouseEvent& WXUNUSED(event)) { m_data.m_evtLoop->Exit(); } @@ -609,26 +600,26 @@ void wxTopLevelWindow::InteractiveMove(int flags) wxASSERT_MSG( !((flags & wxINTERACTIVE_MOVE) && (flags & wxINTERACTIVE_RESIZE)), wxT("can't move and resize window at the same time") ); - wxASSERT_MSG( !(flags & wxINTERACTIVE_RESIZE) || - (flags & wxINTERACTIVE_WAIT_FOR_INPUT) || + wxASSERT_MSG( !(flags & wxINTERACTIVE_RESIZE) || + (flags & wxINTERACTIVE_WAIT_FOR_INPUT) || (flags & wxINTERACTIVE_RESIZE_DIR), wxT("direction of resizing not specified") ); wxInteractiveMoveData data; wxEventLoop loop; - + SetFocus(); -#ifndef __WXGTK__ +#ifndef __WXGTK__ if ( flags & wxINTERACTIVE_WAIT_FOR_INPUT ) { wxCursor sizingCursor(wxCURSOR_SIZING); wxBeginBusyCursor(&sizingCursor); - data.m_sizingCursor = TRUE; + data.m_sizingCursor = true; } else #endif - data.m_sizingCursor = FALSE; + data.m_sizingCursor = false; data.m_window = this; data.m_evtLoop = &loop; @@ -691,7 +682,7 @@ void wxTopLevelWindow::ClickTitleBarButton(long button) bool wxTopLevelWindow::PerformAction(const wxControlAction& action, long numArg, - const wxString& strArg) + const wxString& WXUNUSED(strArg)) { bool isActive = numArg != 0; @@ -702,21 +693,21 @@ bool wxTopLevelWindow::PerformAction(const wxControlAction& action, m_isActive = isActive; RefreshTitleBar(); } - return TRUE; + return true; } else if ( action == wxACTION_TOPLEVEL_BUTTON_PRESS ) { m_pressedButton = numArg; RefreshTitleBar(); - return TRUE; + return true; } else if ( action == wxACTION_TOPLEVEL_BUTTON_RELEASE ) { m_pressedButton = 0; RefreshTitleBar(); - return TRUE; + return true; } else if ( action == wxACTION_TOPLEVEL_BUTTON_CLICK ) @@ -724,13 +715,13 @@ bool wxTopLevelWindow::PerformAction(const wxControlAction& action, m_pressedButton = 0; RefreshTitleBar(); ClickTitleBarButton(numArg); - return TRUE; + return true; } else if ( action == wxACTION_TOPLEVEL_MOVE ) { InteractiveMove(wxINTERACTIVE_MOVE); - return TRUE; + return true; } else if ( action == wxACTION_TOPLEVEL_RESIZE ) @@ -745,17 +736,17 @@ bool wxTopLevelWindow::PerformAction(const wxControlAction& action, if ( numArg & wxHT_TOPLEVEL_BORDER_E ) flags |= wxINTERACTIVE_RESIZE_E; InteractiveMove(flags); - return TRUE; + return true; } else - return FALSE; + return false; } void wxTopLevelWindow::OnSystemMenu(wxCommandEvent& event) { - bool ret = TRUE; - + bool ret = true; + switch (event.GetId()) { case wxID_CLOSE_FRAME: @@ -782,9 +773,9 @@ void wxTopLevelWindow::OnSystemMenu(wxCommandEvent& event) break; default: - ret = FALSE; + ret = false; } - + if ( !ret ) event.Skip(); } @@ -800,7 +791,7 @@ wxStdFrameInputHandler::wxStdFrameInputHandler(wxInputHandler *inphand) m_winCapture = NULL; m_winHitTest = 0; m_winPressed = 0; - m_borderCursorOn = FALSE; + m_borderCursorOn = false; } bool wxStdFrameInputHandler::HandleMouse(wxInputConsumer *consumer, @@ -828,18 +819,18 @@ bool wxStdFrameInputHandler::HandleMouse(wxInputConsumer *consumer, m_winHitTest = hit; m_winPressed = hit; consumer->PerformAction(wxACTION_TOPLEVEL_BUTTON_PRESS, m_winPressed); - return TRUE; + return true; } else if ( (hit & wxHT_TOPLEVEL_TITLEBAR) && !w->IsMaximized() ) { consumer->PerformAction(wxACTION_TOPLEVEL_MOVE); - return TRUE; + return true; } else if ( (consumer->GetInputWindow()->GetWindowStyle() & wxRESIZE_BORDER) && (hit & wxHT_TOPLEVEL_ANY_BORDER) ) { consumer->PerformAction(wxACTION_TOPLEVEL_RESIZE, hit); - return TRUE; + return true; } } @@ -853,7 +844,7 @@ bool wxStdFrameInputHandler::HandleMouse(wxInputConsumer *consumer, if ( m_winHitTest == m_winPressed ) { consumer->PerformAction(wxACTION_TOPLEVEL_BUTTON_CLICK, m_winPressed); - return TRUE; + return true; } } //else: the mouse was released outside the window, this doesn't @@ -879,7 +870,7 @@ bool wxStdFrameInputHandler::HandleMouseMove(wxInputConsumer *consumer, consumer->PerformAction(wxACTION_TOPLEVEL_BUTTON_PRESS, m_winPressed); m_winHitTest = hit; - return TRUE; + return true; } } else if ( consumer->GetInputWindow()->GetWindowStyle() & wxRESIZE_BORDER ) @@ -894,7 +885,7 @@ bool wxStdFrameInputHandler::HandleMouseMove(wxInputConsumer *consumer, if ( m_borderCursorOn ) { - m_borderCursorOn = FALSE; + m_borderCursorOn = false; win->SetCursor(m_origCursor); } @@ -921,8 +912,8 @@ bool wxStdFrameInputHandler::HandleActivation(wxInputConsumer *consumer, if ( m_borderCursorOn ) { consumer->GetInputWindow()->SetCursor(m_origCursor); - m_borderCursorOn = FALSE; + m_borderCursorOn = false; } consumer->PerformAction(wxACTION_TOPLEVEL_ACTIVATE, activated); - return FALSE; + return false; }