From 253293c10326afa0226932eab4753d188e1e22e2 Mon Sep 17 00:00:00 2001 From: =?utf8?q?V=C3=A1clav=20Slav=C3=ADk?= Date: Tue, 30 Oct 2001 23:30:04 +0000 Subject: [PATCH] changed wxSystemSettings::HasFrameDecorations to more general GetCapability(index) git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@12222 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- include/wx/gtk/settings.h | 4 ++-- include/wx/gtk1/settings.h | 4 ++-- include/wx/mac/settings.h | 5 +++-- include/wx/mgl/settings.h | 4 ++-- include/wx/motif/settings.h | 5 +++-- include/wx/msw/settings.h | 5 ++--- include/wx/os2/settings.h | 2 +- include/wx/settings.h | 4 ++++ src/gtk/settings.cpp | 13 +++++++++++++ src/gtk1/settings.cpp | 13 +++++++++++++ src/mac/carbon/settings.cpp | 11 +++++++++++ src/mac/settings.cpp | 11 +++++++++++ src/mgl/settings.cpp | 13 +++++++++++++ src/motif/settings.cpp | 11 +++++++++++ src/msw/settings.cpp | 11 +++++++++++ src/os2/settings.cpp | 11 +++++++++++ src/univ/topluniv.cpp | 15 ++++++++++++--- 17 files changed, 125 insertions(+), 17 deletions(-) diff --git a/include/wx/gtk/settings.h b/include/wx/gtk/settings.h index 901678da41..0292adb6f0 100644 --- a/include/wx/gtk/settings.h +++ b/include/wx/gtk/settings.h @@ -36,8 +36,8 @@ public: // Get a system metric, e.g. scrollbar size static int GetSystemMetric(int index); - // Return true if the port can draw frame titlebar (i.e. doesn't need wxUniv for it) - static bool HasFrameDecorations() { return TRUE; } + // Return true if the port has certain feature + static bool GetCapability(int index); }; #endif diff --git a/include/wx/gtk1/settings.h b/include/wx/gtk1/settings.h index 901678da41..0292adb6f0 100644 --- a/include/wx/gtk1/settings.h +++ b/include/wx/gtk1/settings.h @@ -36,8 +36,8 @@ public: // Get a system metric, e.g. scrollbar size static int GetSystemMetric(int index); - // Return true if the port can draw frame titlebar (i.e. doesn't need wxUniv for it) - static bool HasFrameDecorations() { return TRUE; } + // Return true if the port has certain feature + static bool GetCapability(int index); }; #endif diff --git a/include/wx/mac/settings.h b/include/wx/mac/settings.h index d274901abb..90aa26f794 100644 --- a/include/wx/mac/settings.h +++ b/include/wx/mac/settings.h @@ -128,8 +128,9 @@ public: // Get a system metric, e.g. scrollbar size static int GetSystemMetric(int index); - // Return true if the port can draw frame titlebar (i.e. doesn't need wxUniv for it) - static bool HasFrameDecorations() { return TRUE; } + // Return true if the port has certain feature + static bool GetCapability(int index); + }; #endif diff --git a/include/wx/mgl/settings.h b/include/wx/mgl/settings.h index ac1d270413..49ca2427b1 100644 --- a/include/wx/mgl/settings.h +++ b/include/wx/mgl/settings.h @@ -37,8 +37,8 @@ public: // Get a system metric, e.g. scrollbar size static int GetSystemMetric(int index); - // Return true if the port can draw frame titlebar (i.e. doesn't need wxUniv for it) - static bool HasFrameDecorations() { return FALSE; } + // Return true if the port has certain feature + static bool GetCapability(int index); }; #endif diff --git a/include/wx/motif/settings.h b/include/wx/motif/settings.h index 2dd0d45953..03c367e816 100644 --- a/include/wx/motif/settings.h +++ b/include/wx/motif/settings.h @@ -37,8 +37,9 @@ public: // Get a system metric, e.g. scrollbar size static int GetSystemMetric(int index); - // Return true if the port can draw frame titlebar (i.e. doesn't need wxUniv for it) - static bool HasFrameDecorations() { return TRUE; } + // Return true if the port has certain feature + static bool GetCapability(int index); + }; #endif diff --git a/include/wx/msw/settings.h b/include/wx/msw/settings.h index 4c7c1c3561..bf24eb5bc6 100644 --- a/include/wx/msw/settings.h +++ b/include/wx/msw/settings.h @@ -33,9 +33,8 @@ public: // Get a system metric, e.g. scrollbar size static int GetSystemMetric(int index); - // Return true if the port can draw frame titlebar (i.e. doesn't need wxUniv for it) - static bool HasFrameDecorations() { return TRUE; } - + // Return true if the port has certain feature + static bool GetCapability(int index); }; #endif diff --git a/include/wx/os2/settings.h b/include/wx/os2/settings.h index d3f75e0404..c9dfaabd02 100644 --- a/include/wx/os2/settings.h +++ b/include/wx/os2/settings.h @@ -24,7 +24,7 @@ public: static wxColour GetSystemColour(int index); static wxFont GetSystemFont(int index); static int GetSystemMetric(int index); - static bool HasFrameDecorations() { return TRUE; } + static bool GetCapability(int index); }; // end of CLASS wxSystemSettings #endif diff --git a/include/wx/settings.h b/include/wx/settings.h index 14b487a92a..9018019918 100644 --- a/include/wx/settings.h +++ b/include/wx/settings.h @@ -106,6 +106,10 @@ #define wxSYS_SHOW_SOUNDS 36 #define wxSYS_SWAP_BUTTONS 37 +// Platform capabilities +#define wxSYS_CAN_DRAW_FRAME_DECORATIONS 1 +#define wxSYS_CAN_ICONIZE_FRAME 2 + #if defined(__WXMSW__) #include "wx/msw/settings.h" #elif defined(__WXMOTIF__) diff --git a/src/gtk/settings.cpp b/src/gtk/settings.cpp index 36662eb0a5..85b2c7c312 100644 --- a/src/gtk/settings.cpp +++ b/src/gtk/settings.cpp @@ -369,3 +369,16 @@ int wxSystemSettings::GetSystemMetric( int index ) return 0; } + +bool wxSystemSettings::GetCapability(int index) +{ + switch (index) + { + case wxSYS_CAN_ICONIZE_FRAME: + return FALSE; break; + case wxSYS_CAN_DRAW_FRAME_DECORATIONS: + return TRUE; break; + default: + return FALSE; + } +} diff --git a/src/gtk1/settings.cpp b/src/gtk1/settings.cpp index 36662eb0a5..85b2c7c312 100644 --- a/src/gtk1/settings.cpp +++ b/src/gtk1/settings.cpp @@ -369,3 +369,16 @@ int wxSystemSettings::GetSystemMetric( int index ) return 0; } + +bool wxSystemSettings::GetCapability(int index) +{ + switch (index) + { + case wxSYS_CAN_ICONIZE_FRAME: + return FALSE; break; + case wxSYS_CAN_DRAW_FRAME_DECORATIONS: + return TRUE; break; + default: + return FALSE; + } +} diff --git a/src/mac/carbon/settings.cpp b/src/mac/carbon/settings.cpp index df2800a97b..dcfe365753 100644 --- a/src/mac/carbon/settings.cpp +++ b/src/mac/carbon/settings.cpp @@ -220,3 +220,14 @@ int wxSystemSettings::GetSystemMetric(int index) return 0; } +bool wxSystemSettings::GetCapability(int index) +{ + switch (index) + { + case wxSYS_CAN_ICONIZE_FRAME: + case wxSYS_CAN_DRAW_FRAME_DECORATIONS: + return TRUE; break; + default: + return FALSE; + } +} diff --git a/src/mac/settings.cpp b/src/mac/settings.cpp index df2800a97b..dcfe365753 100644 --- a/src/mac/settings.cpp +++ b/src/mac/settings.cpp @@ -220,3 +220,14 @@ int wxSystemSettings::GetSystemMetric(int index) return 0; } +bool wxSystemSettings::GetCapability(int index) +{ + switch (index) + { + case wxSYS_CAN_ICONIZE_FRAME: + case wxSYS_CAN_DRAW_FRAME_DECORATIONS: + return TRUE; break; + default: + return FALSE; + } +} diff --git a/src/mgl/settings.cpp b/src/mgl/settings.cpp index 735674f249..4e6b6d28f8 100644 --- a/src/mgl/settings.cpp +++ b/src/mgl/settings.cpp @@ -32,3 +32,16 @@ int wxSystemSettings::GetSystemMetric(int WXUNUSED(index)) // FIXME_MGL return 1; } + +bool wxSystemSettings::GetCapability(int index) +{ + switch (index) + { + case wxSYS_CAN_ICONIZE_FRAME: + return FALSE; break; + case wxSYS_CAN_DRAW_FRAME_DECORATIONS: + return FALSE; break; + default: + return FALSE; + } +} diff --git a/src/motif/settings.cpp b/src/motif/settings.cpp index 62e04d0be8..b75b68efc9 100644 --- a/src/motif/settings.cpp +++ b/src/motif/settings.cpp @@ -231,3 +231,14 @@ int wxSystemSettings::GetSystemMetric(int index) } } +bool wxSystemSettings::GetCapability(int index) +{ + switch (index) + { + case wxSYS_CAN_ICONIZE_FRAME: + case wxSYS_CAN_DRAW_FRAME_DECORATIONS: + return TRUE; break; + default: + return FALSE; + } +} diff --git a/src/msw/settings.cpp b/src/msw/settings.cpp index 360e8a2fc3..e5e54f5017 100644 --- a/src/msw/settings.cpp +++ b/src/msw/settings.cpp @@ -267,3 +267,14 @@ int wxSystemSettings::GetSystemMetric(int index) // __WXMICROWIN__ } +bool wxSystemSettings::GetCapability(int index) +{ + switch (index) + { + case wxSYS_CAN_ICONIZE_FRAME: + case wxSYS_CAN_DRAW_FRAME_DECORATIONS: + return TRUE; break; + default: + return FALSE; + } +} diff --git a/src/os2/settings.cpp b/src/os2/settings.cpp index 05ba3aaf80..c608065962 100644 --- a/src/os2/settings.cpp +++ b/src/os2/settings.cpp @@ -357,3 +357,14 @@ int wxSystemSettings::GetSystemMetric(int index) return 0; } +bool wxSystemSettings::GetCapability(int index) +{ + switch (index) + { + case wxSYS_CAN_ICONIZE_FRAME: + case wxSYS_CAN_DRAW_FRAME_DECORATIONS: + return TRUE; break; + default: + return FALSE; + } +} diff --git a/src/univ/topluniv.cpp b/src/univ/topluniv.cpp index c68373a528..27a2633365 100644 --- a/src/univ/topluniv.cpp +++ b/src/univ/topluniv.cpp @@ -55,6 +55,7 @@ WX_FORWARD_TO_INPUT_CONSUMER(wxTopLevelWindow) // ============================================================================ int wxTopLevelWindow::ms_drawDecorations = -1; +int wxTopLevelWindow::ms_canIconize = -1; void wxTopLevelWindow::Init() { @@ -76,10 +77,18 @@ bool wxTopLevelWindow::Create(wxWindow *parent, exstyleOrig = 0; if ( ms_drawDecorations == -1 ) - ms_drawDecorations = !wxSystemSettings::HasFrameDecorations() || - wxGetEnv(wxT("WXDECOR"), NULL); + { + ms_drawDecorations = + !wxSystemSettings::GetCapability(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 + } + + if ( ms_canIconize == -1 ) + { + ms_canIconize = wxSystemSettings::GetCapability(wxSYS_CAN_ICONIZE_FRAME); + } if ( ms_drawDecorations ) { @@ -138,7 +147,7 @@ long wxTopLevelWindow::GetDecorationsStyle() const if ( m_windowStyle & wxCAPTION ) { style |= wxTOPLEVEL_TITLEBAR | wxTOPLEVEL_BUTTON_CLOSE; - if ( m_windowStyle & wxMINIMIZE_BOX ) + if ( (m_windowStyle & wxMINIMIZE_BOX) && ms_canIconize ) style |= wxTOPLEVEL_BUTTON_ICONIZE; if ( m_windowStyle & wxMAXIMIZE_BOX ) { -- 2.45.2