// 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
// 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
// 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
// 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
// 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
// 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
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
#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__)
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;
+ }
+}
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;
+ }
+}
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;
+ }
+}
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;
+ }
+}
// 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;
+ }
+}
}
}
+bool wxSystemSettings::GetCapability(int index)
+{
+ switch (index)
+ {
+ case wxSYS_CAN_ICONIZE_FRAME:
+ case wxSYS_CAN_DRAW_FRAME_DECORATIONS:
+ return TRUE; break;
+ default:
+ return FALSE;
+ }
+}
// __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;
+ }
+}
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;
+ }
+}
// ============================================================================
int wxTopLevelWindow::ms_drawDecorations = -1;
+int wxTopLevelWindow::ms_canIconize = -1;
void wxTopLevelWindow::Init()
{
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 )
{
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 )
{