From faa49bfd39592406f8d7a732eb5ae4e25887ca60 Mon Sep 17 00:00:00 2001 From: =?utf8?q?W=C5=82odzimierz=20Skiba?= Date: Thu, 3 Nov 2005 16:47:29 +0000 Subject: [PATCH] Get/SetTitle only for wxTopLevelWindow (wxMSW part). git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@36075 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- include/wx/bmpbuttn.h | 2 +- include/wx/msw/toplevel.h | 3 ++- include/wx/msw/window.h | 9 ++++----- include/wx/toplevel.h | 11 +++++++---- include/wx/window.h | 23 +++++++++++++---------- src/common/docview.cpp | 17 ++++++++++------- src/msw/radiobox.cpp | 5 ++--- src/msw/toplevel.cpp | 20 ++++++++++++++------ src/msw/window.cpp | 28 ++++++++++++++++------------ 9 files changed, 69 insertions(+), 49 deletions(-) diff --git a/include/wx/bmpbuttn.h b/include/wx/bmpbuttn.h index 6f912b3..775d90b 100644 --- a/include/wx/bmpbuttn.h +++ b/include/wx/bmpbuttn.h @@ -70,7 +70,7 @@ public: // prevent virtual function hiding virtual void SetLabel(const wxString& label) - { wxWindowBase::SetLabel(label); } + { wxWindow::SetLabel(label); } #endif // WXWIN_COMPATIBILITY_2_6 protected: diff --git a/include/wx/msw/toplevel.h b/include/wx/msw/toplevel.h index c0abd56..8e28a4b 100644 --- a/include/wx/msw/toplevel.h +++ b/include/wx/msw/toplevel.h @@ -46,6 +46,8 @@ public: virtual ~wxTopLevelWindowMSW(); // implement base class pure virtuals + virtual void SetTitle( const wxString& title); + virtual wxString GetTitle() const; virtual void Maximize(bool maximize = true); virtual bool IsMaximized() const; virtual void Iconize(bool iconize = true); @@ -166,4 +168,3 @@ protected: }; #endif // _WX_MSW_TOPLEVEL_H_ - diff --git a/include/wx/msw/window.h b/include/wx/msw/window.h index 2a91ebb..01fed31 100644 --- a/include/wx/msw/window.h +++ b/include/wx/msw/window.h @@ -1,6 +1,6 @@ ///////////////////////////////////////////////////////////////////////////// // Name: wx/msw/window.h -// Purpose: wxWindow class +// Purpose: wxWindowMSW class // Author: Julian Smart // Modified by: Vadim Zeitlin on 13.05.99: complete refont of message handling, // elimination of Default(), ... @@ -62,8 +62,8 @@ public: const wxString& name = wxPanelNameStr); // implement base class pure virtuals - virtual void SetTitle( const wxString& title); - virtual wxString GetTitle() const; + virtual void SetLabel(const wxString& label); + virtual wxString GetLabel() const; virtual void Raise(); virtual void Lower(); @@ -557,5 +557,4 @@ WX_DECLARE_HASH(wxWindowMSW, wxWindowList, wxWinHashTable); extern wxWinHashTable *wxWinHandleHash; -#endif - // _WX_WINDOW_H_ +#endif // _WX_WINDOW_H_ diff --git a/include/wx/toplevel.h b/include/wx/toplevel.h index 86805fe..140f8e7 100644 --- a/include/wx/toplevel.h +++ b/include/wx/toplevel.h @@ -154,13 +154,16 @@ public: // return true if the frame is in fullscreen mode virtual bool IsFullScreen() const = 0; - /* - for now we already have them in wxWindow, but this is wrong: these - methods really only make sense for wxTopLevelWindow! +#ifdef __WXMSW__ + // FIXME: This is work in progress about moving SetTitle/GetTitle from wxWindow + // to wxTopLevelWindow so initially enabled in wxMSW only to observe results + // and continue on other platforms + // the title (or label, see below) of the window: the text which the + // window shows virtual void SetTitle(const wxString& title) = 0; virtual wxString GetTitle() const = 0; - */ +#endif // Set the shape of the window to the given region. // Returns true if the platform supports this feature (and the diff --git a/include/wx/window.h b/include/wx/window.h index 7f516e5..29a3b50 100644 --- a/include/wx/window.h +++ b/include/wx/window.h @@ -168,19 +168,24 @@ public: // window attributes // ----------------- - // NB: in future versions of wxWidgets Set/GetTitle() will only work - // with the top level windows (such as dialogs and frames) and - // Set/GetLabel() only with the other ones (i.e. all controls). +#ifndef __WXMSW__ + // FIXME: This is work in progress about moving SetTitle/GetTitle from wxWindow + // to wxTopLevelWindow so initially enabled in wxMSW only to observe results + // and continue on other platforms - // the title (or label, see below) of the window: the text which the - // window shows virtual void SetTitle( const wxString& WXUNUSED(title) ) {} virtual wxString GetTitle() const { return wxEmptyString; } - // label is just the same as the title (but for, e.g., buttons it - // makes more sense to speak about labels) + // label is just the same as the title (but for, e.g., buttons it + // makes more sense to speak about labels) virtual void SetLabel(const wxString& label) { SetTitle(label); } virtual wxString GetLabel() const { return GetTitle(); } +#else + // label is just the same as the title (but for, e.g., buttons it + // makes more sense to speak about labels) + virtual void SetLabel(const wxString& label) = 0; + virtual wxString GetLabel() const = 0; +#endif // the window name is used for ressource setting in X, it is not the // same as the window title/label @@ -1536,6 +1541,4 @@ public: #endif // wxUSE_ACCESSIBILITY -#endif - // _WX_WINDOW_H_BASE_ - +#endif // _WX_WINDOW_H_BASE_ diff --git a/src/common/docview.cpp b/src/common/docview.cpp index 5e2cada..8673687 100644 --- a/src/common/docview.cpp +++ b/src/common/docview.cpp @@ -656,14 +656,18 @@ void wxView::OnUpdate(wxView *WXUNUSED(sender), wxObject *WXUNUSED(hint)) void wxView::OnChangeFilename() { - if (GetFrame() && GetDocument()) - { - wxString title; + // GetFrame can return wxWindow rather than wxTopLevelWindow due to + // generic MDI implementation so use SetLabel rather than SetTitle. + // It should cause SetTitle() for top level windows. + wxWindow *win = GetFrame(); + if (!win) return; - GetDocument()->GetPrintableName(title); + wxDocument *doc = GetDocument(); + if (!doc) return; - GetFrame()->SetTitle(title); - } + wxString name; + doc->GetPrintableName(name); + win->SetLabel(name); } void wxView::SetDocument(wxDocument *doc) @@ -2441,4 +2445,3 @@ bool wxTransferStreamToFile(wxInputStream& stream, const wxString& filename) #endif // wxUSE_STD_IOSTREAM/!wxUSE_STD_IOSTREAM #endif // wxUSE_DOC_VIEW_ARCHITECTURE - diff --git a/src/msw/radiobox.cpp b/src/msw/radiobox.cpp index 35860e2..baeb42a 100644 --- a/src/msw/radiobox.cpp +++ b/src/msw/radiobox.cpp @@ -1,5 +1,5 @@ ///////////////////////////////////////////////////////////////////////////// -// Name: msw/radiobox.cpp +// Name: src/msw/radiobox.cpp // Purpose: wxRadioBox implementation // Author: Julian Smart // Modified by: @@ -484,7 +484,7 @@ wxSize wxRadioBox::GetTotalButtonSize(const wxSize& sizeBtn) const // and also wide enough for its label int widthLabel; - GetTextExtent(GetTitle(), &widthLabel, NULL); + GetTextExtent(GetLabel(), &widthLabel, NULL); widthLabel += RADIO_SIZE; // FIXME this is bogus too if ( widthLabel > width ) width = widthLabel; @@ -862,4 +862,3 @@ LRESULT APIENTRY _EXPORT wxRadioBtnWndProc(HWND hwnd, } #endif // wxUSE_RADIOBOX - diff --git a/src/msw/toplevel.cpp b/src/msw/toplevel.cpp index 82f995b..2a76e65 100644 --- a/src/msw/toplevel.cpp +++ b/src/msw/toplevel.cpp @@ -1,5 +1,5 @@ /////////////////////////////////////////////////////////////////////////////// -// Name: msw/toplevel.cpp +// Name: src/msw/toplevel.cpp // Purpose: implements wxTopLevelWindow for MSW // Author: Vadim Zeitlin // Modified by: @@ -205,7 +205,7 @@ WXDWORD wxTopLevelWindowMSW::MSWGetStyle(long style, WXDWORD *exflags) const if ( style & wxMAXIMIZE_BOX ) msflags |= WS_MAXIMIZEBOX; -#ifndef __WXWINCE__ +#ifndef __WXWINCE__ if ( style & wxSYSTEM_MENU ) msflags |= WS_SYSMENU; #endif @@ -414,11 +414,11 @@ bool wxTopLevelWindowMSW::CreateDialog(const void *dlgTemplate, } SubclassWin(m_hWnd); - + #ifdef __SMARTPHONE__ // Work around title non-display glitch Show(false); -#endif +#endif return true; #endif // __WXMICROWIN__/!__WXMICROWIN__ @@ -813,6 +813,16 @@ bool wxTopLevelWindowMSW::ShowFullScreen(bool show, long style) // wxTopLevelWindowMSW misc // ---------------------------------------------------------------------------- +void wxTopLevelWindowMSW::SetTitle( const wxString& title) +{ + SetLabel(title); +} + +wxString wxTopLevelWindowMSW::GetTitle() const +{ + return GetLabel(); +} + void wxTopLevelWindowMSW::SetIcon(const wxIcon& icon) { SetIcons( wxIconBundle( icon ) ); @@ -1140,5 +1150,3 @@ HWND wxTLWHiddenParentModule::GetHWND() return ms_hwnd; } - - diff --git a/src/msw/window.cpp b/src/msw/window.cpp index bc738d5..b45efc0 100644 --- a/src/msw/window.cpp +++ b/src/msw/window.cpp @@ -1,6 +1,6 @@ ///////////////////////////////////////////////////////////////////////////// -// Name: src/msw/windows.cpp -// Purpose: wxWindow +// Name: src/msw/window.cpp +// Purpose: wxWindowMSW // Author: Julian Smart // Modified by: VZ on 13.05.99: no more Default(), MSWOnXXX() reorganisation // Created: 04/01/98 @@ -739,16 +739,6 @@ void wxWindowMSW::Lower() SWP_NOMOVE | SWP_NOSIZE | SWP_NOACTIVATE); } -void wxWindowMSW::SetTitle( const wxString& title) -{ - SetWindowText(GetHwnd(), title.c_str()); -} - -wxString wxWindowMSW::GetTitle() const -{ - return wxGetWindowText(GetHWND()); -} - void wxWindowMSW::DoCaptureMouse() { HWND hWnd = GetHwnd(); @@ -3553,6 +3543,20 @@ bool wxWindowMSW::HandleKillFocus(WXHWND hwnd) } // --------------------------------------------------------------------------- +// labels +// --------------------------------------------------------------------------- + +void wxWindowMSW::SetLabel( const wxString& label) +{ + SetWindowText(GetHwnd(), label.c_str()); +} + +wxString wxWindowMSW::GetLabel() const +{ + return wxGetWindowText(GetHWND()); +} + +// --------------------------------------------------------------------------- // miscellaneous // --------------------------------------------------------------------------- -- 2.7.4