]> git.saurik.com Git - wxWidgets.git/commitdiff
More border rationalisation. GetDefaultBorder is now mostly defined in base class...
authorJulian Smart <julian@anthemion.co.uk>
Tue, 13 Nov 2007 12:10:34 +0000 (12:10 +0000)
committerJulian Smart <julian@anthemion.co.uk>
Tue, 13 Nov 2007 12:10:34 +0000 (12:10 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@49893 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

31 files changed:
include/wx/aui/auibook.h
include/wx/bookctrl.h
include/wx/button.h
include/wx/checkbox.h
include/wx/control.h
include/wx/gauge.h
include/wx/hyperlink.h
include/wx/mac/carbon/tglbtn.h
include/wx/motif/tglbtn.h
include/wx/msw/choice.h
include/wx/msw/datectrl.h
include/wx/msw/slider95.h
include/wx/msw/statbmp.h
include/wx/msw/statbox.h
include/wx/msw/stattext.h
include/wx/msw/tglbtn.h
include/wx/msw/window.h
include/wx/slider.h
include/wx/statbmp.h
include/wx/statbox.h
include/wx/statline.h
include/wx/stattext.h
include/wx/univ/tglbtn.h
include/wx/window.h
src/common/ctrlcmn.cpp
src/msw/control.cpp
src/msw/statbmp.cpp
src/msw/statbox.cpp
src/msw/stattext.cpp
src/msw/tglbtn.cpp
src/msw/window.cpp

index 618e42af7cb3b4505262510c005cfd75fbb67f23..51632fbd7eb710f7c9ac55b57f5bff9d0c38b03f 100644 (file)
@@ -455,6 +455,8 @@ public:
     bool IsDragging() const { return m_is_dragging; }
 
 protected:
+    // choose the default border for this window
+    virtual wxBorder GetDefaultBorder() const { return wxBORDER_NONE; }
 
     void OnPaint(wxPaintEvent& evt);
     void OnEraseBackground(wxEraseEvent& evt);
@@ -580,6 +582,8 @@ public:
     // virtual bool AcceptsFocus() const { return false; }
 
 protected:
+    // choose the default border for this window
+    virtual wxBorder GetDefaultBorder() const { return wxBORDER_NONE; }
 
     // these can be overridden
     virtual void UpdateTabCtrlHeight();
index 15dd227715d3cf27ac11c4e4d1867c0af3073728..60ceefc8554bbef470ba25280bb2ac1790a58dab 100644 (file)
@@ -243,6 +243,9 @@ protected:
         SetSelection_SendEvent = 1
     };
 
+    // choose the default border for this window
+    virtual wxBorder GetDefaultBorder() const { return wxBORDER_NONE; }
+
     // set the selection to the given page, sending the events (which can
     // possibly prevent the page change from taking place) if SendEvent flag is
     // included
index bf32419366c35d8969677f2dcfce0a51af393885..58f8ab55fe4fb9058e863729558c98149ebf28a4 100644 (file)
@@ -78,6 +78,9 @@ public:
     static wxSize GetDefaultSize();
 
 protected:
+    // choose the default border for this window
+    virtual wxBorder GetDefaultBorder() const { return wxBORDER_NONE; }
+
     DECLARE_NO_COPY_CLASS(wxButtonBase)
 };
 
index 47ba77a0e22ad38d81a1aef428f6d7b18ded107b..8b0348fe374dd609f5376a94dd6a8635f573897b 100644 (file)
@@ -118,6 +118,9 @@ public:
     }
 
 protected:
+    // choose the default border for this window
+    virtual wxBorder GetDefaultBorder() const { return wxBORDER_NONE; }
+
     virtual void DoSet3StateValue(wxCheckBoxState WXUNUSED(state)) { wxFAIL; }
 
     virtual wxCheckBoxState DoGet3StateValue() const
index fcc3b923f82b7de17cabec7e0adac04aa1cb9245..08e9aeceea97d08a872f936af53896283f70c995 100644 (file)
@@ -92,6 +92,9 @@ public:
     virtual void DoUpdateWindowUI(wxUpdateUIEvent& event);
 
 protected:
+    // choose the default border for this window
+    virtual wxBorder GetDefaultBorder() const;
+
     // creates the control (calls wxWindowBase::CreateBase inside) and adds it
     // to the list of parents children
     bool CreateControl(wxWindowBase *parent,
index 2156e05a8788d9945ca7e64865adc7d9a28002d1..11605c9d1a14942148c4306c098f936668bb9a07 100644 (file)
@@ -88,6 +88,8 @@ public:
     virtual bool AcceptsFocus() const { return false; }
 
 protected:
+    virtual wxBorder GetDefaultBorder() const { return wxBORDER_NONE; }
+
     // the max position
     int m_rangeMax;
 
index 9e0f90ddc16577a15d6cad9fb7317fee1e719592..264b7712824763dacd578f132fb2d81a21f80c62 100644 (file)
@@ -69,6 +69,8 @@ public:
     //       wxWindow::Get/SetFont, wxWindow::Get/SetCursor are important !
 
 protected:
+    virtual wxBorder GetDefaultBorder() const { return wxBORDER_NONE; }
+
     // checks for validity some of the ctor/Create() function parameters
     void CheckParams(const wxString& label, const wxString& url, long style);
 
index 7031d4a6a9aaa800c3f7ae9e3262591bed08f4f0..b27bdeb59ca34406a9283a3456f516b2cd59e45e 100644 (file)
@@ -49,6 +49,7 @@ public:
     virtual void Command(wxCommandEvent& event);
 
 protected:
+    virtual wxBorder GetDefaultBorder() const { return wxBORDER_NONE; }
     virtual wxSize DoGetBestSize() const;
 
 private:
index d6cdadd00938b6247448f8ec3e6e130fdcb4d5b3..0fd827b953934f8621306bbf2d0f844a5dd883e3 100644 (file)
@@ -37,6 +37,10 @@ public:
                  long style = 0,
                  const wxValidator& val = wxDefaultValidator,
                  const wxString &name = wxCheckBoxNameStr );
+
+protected:
+    virtual wxBorder GetDefaultBorder() const { return wxBORDER_NONE; }
+
 private:
     DECLARE_DYNAMIC_CLASS(wxToggleButton)
 
index 20d8edb5fd993ac078f00139b3ba5d2408c9472a..402948e08af5e24c0602f27fc16c45cd1caf3778 100644 (file)
@@ -86,6 +86,9 @@ public:
     virtual bool CanApplyThemeBorder() const { return false; }
 
 protected:
+    // choose the default border for this window
+    virtual wxBorder GetDefaultBorder() const { return wxBORDER_NONE; }
+
     // common part of all ctors
     void Init() { m_lastAcceptedSelection = wxID_NONE; }
 
index c5d43d93a2009e682cdcd3fd5ed3af9b7621983f..b92a88ea38b1befa879d9ec1904d8af4f63c4cb4 100644 (file)
@@ -61,6 +61,7 @@ public:
     virtual bool CanApplyThemeBorder() const { return false; }
 
 protected:
+    virtual wxBorder GetDefaultBorder() const { return wxBORDER_NONE; }
     virtual wxSize DoGetBestSize() const;
 
     // the date currently shown by the control, may be invalid
index 5702f1824a32f8fe915a8e85eb79085e8d04168d..08cf96528a69e9978f3d83dc410f0823e100b630 100644 (file)
@@ -116,9 +116,6 @@ protected:
     virtual void DoMoveWindow(int x, int y, int width, int height);
     virtual wxSize DoGetBestSize() const;
 
-    virtual wxBorder GetDefaultBorder() const { return wxBORDER_NONE; }
-
-
     // the labels windows, if any
     wxSubwindows *m_labels;
 
index ba494939a7b641de6aa4f3c0dd0cfdf561c674b1..ba61d269efb904e74a70fc288780f774bc608b7c 100644 (file)
@@ -58,7 +58,6 @@ public:
     virtual bool CanApplyThemeBorder() const { return false; }
 
 protected:
-    virtual wxBorder GetDefaultBorder() const;
     virtual wxSize DoGetBestSize() const;
 
     // ctor/dtor helpers
index 8d48ba933e3d8dd4446c21d0e8e636b24bae2a00..e51ede32cfd9f29826daf0edae56a644df7c0d1d 100644 (file)
@@ -46,9 +46,6 @@ public:
 protected:
     virtual wxSize DoGetBestSize() const;
 
-    // choose the default border for this window
-    virtual wxBorder GetDefaultBorder() const;
-
 #ifndef __WXWINCE__
 public:
     virtual WXLRESULT MSWWindowProc(WXUINT nMsg, WXWPARAM wParam, WXLPARAM lParam);
index 1c05fbf758a4d770aed46038c6d04005ea23f15e..b9c4b6ad2191d5f7c7278580d68462b0686aeb9c 100644 (file)
@@ -44,7 +44,6 @@ public:
 
 protected:
     // implement/override some base class virtuals
-    virtual wxBorder GetDefaultBorder() const;
     virtual void DoSetSize(int x, int y, int w, int h,
                            int sizeFlags = wxSIZE_AUTO);
     virtual wxSize DoGetBestSize() const;
index 02650d58ed7da9cfe0a277da1c8f614e99a81827..8680717340d0c00a9deae7352d7136ef604523e1 100644 (file)
@@ -52,8 +52,8 @@ public:
     virtual bool CanApplyThemeBorder() const { return false; }
 
 protected:
+    virtual wxBorder GetDefaultBorder() const { return wxBORDER_NONE; }
     virtual wxSize DoGetBestSize() const;
-    virtual wxBorder GetDefaultBorder() const;
 
 private:
     DECLARE_DYNAMIC_CLASS_NO_COPY(wxToggleButton)
index c88d22e299f540efcfa8f22b78e94ff6270397bb..cfab751f413f51a51e80aea3c312c21c70d0d9d3 100644 (file)
@@ -448,6 +448,10 @@ protected:
     // choose the default border for this window
     virtual wxBorder GetDefaultBorder() const;
 
+    // Translate wxBORDER_THEME (and other border styles if necessary to the value
+    // that makes most sense for this Windows environment
+    virtual wxBorder TranslateBorder(wxBorder border) const;
+
 #if wxUSE_MENUS_NATIVE
     virtual bool DoPopupMenu( wxMenu *menu, int x, int y );
 #endif // wxUSE_MENUS_NATIVE
index 99167e7474ae242f5d358deb1a3703f5464bbd74..14aca4445b102050a1a30e140d9021118d0f8dc6 100644 (file)
@@ -105,6 +105,9 @@ public:
 
 protected:
 
+    // choose the default border for this window
+    virtual wxBorder GetDefaultBorder() const { return wxBORDER_NONE; }
+
     // adjust value according to wxSL_INVERSE style
     virtual int ValueInvertOrNot(int value) const
     {
index 24281700b402d7996afc8377ca80428b7fdbff6f..b80459f3ff517192db273ba7c5238761fb69b9d6 100644 (file)
@@ -45,6 +45,9 @@ public:
     virtual bool HasTransparentBackground() { return true; }
 
 protected:
+    // choose the default border for this window
+    virtual wxBorder GetDefaultBorder() const { return wxBORDER_NONE; }
+
     virtual wxSize DoGetBestSize() const;
 
     DECLARE_NO_COPY_CLASS(wxStaticBitmapBase)
index 039df42af356b4a0dc597941cb6bb5a40c4316f5..7eee31685e5865e01c88ca1b31a2afd9a20ea0de 100644 (file)
@@ -47,6 +47,9 @@ public:
     }
 
 private:
+    // choose the default border for this window
+    virtual wxBorder GetDefaultBorder() const { return wxBORDER_NONE; }
+
     DECLARE_NO_COPY_CLASS(wxStaticBoxBase)
 };
 
index b1046d6d5e72017957c60d1655c51eeafdbacced..87115f6f138e19f0d8ca285e6e24c238d13276b4 100644 (file)
@@ -50,6 +50,9 @@ public:
     virtual bool AcceptsFocus() const { return false; }
 
 protected:
+    // choose the default border for this window
+    virtual wxBorder GetDefaultBorder() const { return wxBORDER_NONE; }
+
     // set the right size for the right dimension
     wxSize AdjustSize(const wxSize& size) const
     {
index 05059831bb41531cc24ef37e8fcdbae8f87f3de7..395b19066aa4718e07631b285a6bbf7f38d2e037 100644 (file)
@@ -72,6 +72,9 @@ public:
 
 protected:      // functions required for wxST_ELLIPSIZE_* support
 
+    // choose the default border for this window
+    virtual wxBorder GetDefaultBorder() const { return wxBORDER_NONE; }
+
     // just calls RemoveMarkup & Ellipsize on the original label.
     virtual wxString GetEllipsizedLabelWithoutMarkup() const;
 
index 35d3667e0e21b718febab2c654b5efdd13187495..8f78e3a7b86097753b639e6716383e92a3ebc5dd 100644 (file)
@@ -57,6 +57,8 @@ public:
     bool GetValue() const { return m_value; }
 
 protected:
+    virtual wxBorder GetDefaultBorder() const { return wxBORDER_NONE; }
+
     // the current value
     bool m_value;
 
index d09acb8c5b792d169f34379989d4812df19ffb1f..972fb886b45ca5c53714b166fb27c78415e6ef7b 100644 (file)
@@ -1244,7 +1244,8 @@ public:
     // area (normal windows can't, but e.g. menubar or statusbar can):
     virtual bool CanBeOutsideClientArea() const { return false; }
 
-    // returns true if the platform should explicitly apply a theme border
+    // returns true if the platform should explicitly apply a theme border. Currently
+    // used only by Windows
     virtual bool CanApplyThemeBorder() const { return true; }
 
 protected:
@@ -1409,7 +1410,7 @@ protected:
     // this allows you to implement standard control borders without
     // repeating the code in different classes that are not derived from
     // wxControl
-    virtual wxBorder GetDefaultBorderForControl() const { return wxBORDER_SUNKEN; }
+    virtual wxBorder GetDefaultBorderForControl() const { return wxBORDER_THEME; }
 
     // Get the default size for the new window if no explicit size given. TLWs
     // have their own default size so this is just for non top-level windows.
index 3e4fbb119f3a8c2681661ace87cb1df0d859cfa0..83f789b8243ff5180ca36e507d0827f207262db7 100644 (file)
@@ -158,6 +158,12 @@ wxString wxControlBase::RemoveMnemonics(const wxString& str)
     return wxStripMenuCodes(str, wxStrip_Mnemonics);
 }
 
+wxBorder wxControlBase::GetDefaultBorder() const
+{
+    return wxBORDER_THEME;
+}
+
+
 // ----------------------------------------------------------------------------
 // wxStaticBitmap
 // ----------------------------------------------------------------------------
index 857cc3325be5a15c89d68dc1081766b5a4db71b0..f0d866b275270dfe0117375824a0399d5ac20531 100644 (file)
@@ -245,7 +245,9 @@ wxSize wxControl::DoGetBestSize() const
 
 wxBorder wxControl::GetDefaultBorder() const
 {
-       return GetDefaultBorderForControl();
+    return wxControlBase::GetDefaultBorder();
+
+//  return GetDefaultBorderForControl();
 }
 
 // This is a helper for all wxControls made with UPDOWN native control.
index cd03008f89e66d50df44c2d1c863af9ed8b4644f..537c193d847663f98ec2b54b57b339194baaff67 100644 (file)
@@ -171,11 +171,6 @@ bool wxStaticBitmap::Create(wxWindow *parent,
     return true;
 }
 
-wxBorder wxStaticBitmap::GetDefaultBorder() const
-{
-    return wxBORDER_NONE;
-}
-
 WXDWORD wxStaticBitmap::MSWGetStyle(long style, WXDWORD *exstyle) const
 {
     WXDWORD msStyle = wxControl::MSWGetStyle(style, exstyle);
index 0d4df55d134be0bcf1fac94128fdca2891fc4bfe..e568f4475de2872161d571a7c17e98b184d2021f 100644 (file)
@@ -138,11 +138,6 @@ bool wxStaticBox::Create(wxWindow *parent,
     return true;
 }
 
-wxBorder wxStaticBox::GetDefaultBorder() const
-{
-    return wxBORDER_NONE;
-}
-
 WXDWORD wxStaticBox::MSWGetStyle(long style, WXDWORD *exstyle) const
 {
     long styleWin = wxStaticBoxBase::MSWGetStyle(style, exstyle);
index 2df67c28b877ba53c7820930b1f730876c4f481c..a3b52cac708b295275d8efa28bcc9182565aa9ea 100644 (file)
@@ -100,11 +100,6 @@ bool wxStaticText::Create(wxWindow *parent,
     return true;
 }
 
-wxBorder wxStaticText::GetDefaultBorder() const
-{
-    return wxBORDER_NONE;
-}
-
 WXDWORD wxStaticText::MSWGetStyle(long style, WXDWORD *exstyle) const
 {
     WXDWORD msStyle = wxControl::MSWGetStyle(style, exstyle);
@@ -220,9 +215,9 @@ void wxStaticText::SetLabel(const wxString& label)
     if ( HasFlag(wxST_ELLIPSIZE_END) &&
           wxGetOsVersion() == wxOS_WINDOWS_NT )
     {
-        // adding SS_ENDELLIPSIS or SS_ENDELLIPSIS "disables" the correct 
-        // newline handling in static texts: the newlines in the labels are 
-        // shown as square. Thus we don't use it even on newer OS when 
+        // adding SS_ENDELLIPSIS or SS_ENDELLIPSIS "disables" the correct
+        // newline handling in static texts: the newlines in the labels are
+        // shown as square. Thus we don't use it even on newer OS when
         // the static label contains a newline.
         if ( label.Contains(wxT('\n')) )
             styleReal &= ~SS_ENDELLIPSIS;
index 906c430116b868ffc6c16c2313b09b020dea3745..7a0e49c862c76766b01e3eb86500300557419da8 100644 (file)
@@ -83,11 +83,6 @@ bool wxToggleButton::Create(wxWindow *parent, wxWindowID id,
     return true;
 }
 
-wxBorder wxToggleButton::GetDefaultBorder() const
-{
-    return wxBORDER_NONE;
-}
-
 WXDWORD wxToggleButton::MSWGetStyle(long style, WXDWORD *exstyle) const
 {
     WXDWORD msStyle = wxControl::MSWGetStyle(style, exstyle);
index 87122d67bdf3295da8ac4daa4d876b90a63d4663..c3b83772f41859620de33b87d3cd0c44184c206d 100644 (file)
@@ -1309,9 +1309,38 @@ wxBorder wxWindowMSW::GetDefaultBorderForControl() const
 
 wxBorder wxWindowMSW::GetDefaultBorder() const
 {
-    return GetDefaultBorderForControl();
+    // return GetDefaultBorderForControl();
+    return wxWindowBase::GetDefaultBorder();
 }
 
+// Translate wxBORDER_THEME (and other border styles if necessary to the value
+// that makes most sense for this Windows environment
+wxBorder wxWindowMSW::TranslateBorder(wxBorder border) const
+{
+#if defined(__POCKETPC__) || defined(__SMARTPHONE__)
+    if (border == wxBORDER_THEME || border == wxBORDER_SUNKEN || border == wxBORDER_SIMPLE)
+        return wxBORDER_SIMPLE;
+    else
+        return wxBORDER_NONE;
+#else
+#if wxUSE_UXTHEME
+    if (border == wxBORDER_THEME)
+    {
+        if (CanApplyThemeBorder())
+        {
+            wxUxThemeEngine* theme = wxUxThemeEngine::GetIfActive();
+            if (theme)
+                return wxBORDER_THEME;
+        }
+    }
+#endif
+    return border;
+#endif
+
+    return border;
+}
+
+
 WXDWORD wxWindowMSW::MSWGetStyle(long flags, WXDWORD *exstyle) const
 {
     // translate common wxWidgets styles to Windows ones
@@ -1341,7 +1370,10 @@ WXDWORD wxWindowMSW::MSWGetStyle(long flags, WXDWORD *exstyle) const
     if ( flags & wxHSCROLL )
         style |= WS_HSCROLL;
 
-    const wxBorder border = GetBorder(flags);
+    const wxBorder border = TranslateBorder(GetBorder(flags));
+
+    // After translation, border is now optimized for the specific version of Windows
+    // and theme engine presence.
 
     // WS_BORDER is only required for wxBORDER_SIMPLE
     if ( border == wxBORDER_SIMPLE )
@@ -3260,7 +3292,8 @@ WXLRESULT wxWindowMSW::MSWWindowProc(WXUINT message, WXWPARAM wParam, WXLPARAM l
         case WM_NCCALCSIZE:
             {
                 wxUxThemeEngine* theme = wxUxThemeEngine::GetIfActive();
-                if (theme && GetBorder() == wxBORDER_THEME)
+                const wxBorder border = TranslateBorder(GetBorder());
+                if (theme && border == wxBORDER_THEME)
                 {
                     // first ask the widget to calculate the border size
                     rc.result = MSWDefWindowProc(message, wParam, lParam);
@@ -3300,7 +3333,8 @@ WXLRESULT wxWindowMSW::MSWWindowProc(WXUINT message, WXWPARAM wParam, WXLPARAM l
         case WM_NCPAINT:
             {
                 wxUxThemeEngine* theme = wxUxThemeEngine::GetIfActive();
-                if (theme && GetBorder() == wxBORDER_THEME)
+                const wxBorder border = TranslateBorder(GetBorder());
+                if (theme && border == wxBORDER_THEME)
                 {
                     // first ask the widget to paint its non-client area, such as scrollbars, etc.
                     rc.result = MSWDefWindowProc(message, wParam, lParam);