From f3291a824a192f7d672ff9e52aef5987b8795a34 Mon Sep 17 00:00:00 2001 From: Stefan Csomor Date: Sat, 23 Aug 2003 22:49:08 +0000 Subject: [PATCH] window flags extensions, streaming callback git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@23148 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- src/msw/button.cpp | 83 ++++++++++++++++++---------------------------- src/msw/window.cpp | 14 +++++++- 2 files changed, 45 insertions(+), 52 deletions(-) diff --git a/src/msw/button.cpp b/src/msw/button.cpp index 8ee6217a77..783f0cd051 100644 --- a/src/msw/button.cpp +++ b/src/msw/button.cpp @@ -48,65 +48,46 @@ #if wxUSE_EXTENDED_RTTI -enum wxButtonStyleBits -{ - wxButtonExactFitBit = 0 , - wxButtonLeftBit = 6 , - wxButtonTopBit = 7 , - wxButtonRightBit = 8 , - wxButtonBottomBit = 9 , - -// wxNoFullRepaintOnResizeBit = 16 , -// wxPopUpWindowBit = 17 , - wxWantCharsBit = 18 , -// wxTabTraversalBit = 19 , - - wxTransparentWindowBit = 20 , - wxBorderNoneBit = 21 , -// wxClipChildrenBit = 22 , -// wxAlwaysShowScrollBarsBit = 23 , - - wxBorderStaticBit = 24 , - wxBorderSimpleBit = 25 , - wxBorderRaisedBit = 26 , - wxBorderSunkenBit = 27 , - - wxBorderDoubleBit = 28 , -// wxCaptionBit = 29 , -// wxClipSiblingsBit = 29 , // caption not used for non toplevel -// wxHScrolBit = 30 , -// wxVScrollBit = 31 , -} ; - -typedef wxFlags wxButtonStyleFlags ; - -WX_BEGIN_ENUM( wxButtonStyleBits) - WX_ENUM_MEMBER( wxButtonExactFitBit) - WX_ENUM_MEMBER( wxButtonLeftBit) - WX_ENUM_MEMBER( wxButtonTopBit) - WX_ENUM_MEMBER( wxButtonRightBit) - WX_ENUM_MEMBER( wxButtonBottomBit) - WX_ENUM_MEMBER( wxWantCharsBit) - WX_ENUM_MEMBER( wxTransparentWindowBit) - WX_ENUM_MEMBER( wxBorderNoneBit) - WX_ENUM_MEMBER( wxBorderStaticBit) - WX_ENUM_MEMBER( wxBorderSimpleBit) - WX_ENUM_MEMBER( wxBorderRaisedBit) - WX_ENUM_MEMBER( wxBorderSunkenBit) - WX_ENUM_MEMBER( wxBorderDoubleBit) -WX_END_ENUM( wxButtonStyleBits) - -WX_IMPLEMENT_SET_STREAMING( wxButtonStyleFlags , wxButtonStyleBits) +WX_DEFINE_FLAGS( wxButtonStyle ) + +WX_BEGIN_FLAGS( wxButtonStyle ) + // new style border flags, we put them first to + // use them for streaming out + WX_FLAGS_MEMBER(wxBORDER_SIMPLE) + WX_FLAGS_MEMBER(wxBORDER_SUNKEN) + WX_FLAGS_MEMBER(wxBORDER_DOUBLE) + WX_FLAGS_MEMBER(wxBORDER_RAISED) + WX_FLAGS_MEMBER(wxBORDER_STATIC) + WX_FLAGS_MEMBER(wxBORDER_NONE) + + // old style border flags + WX_FLAGS_MEMBER(wxSIMPLE_BORDER) + WX_FLAGS_MEMBER(wxSUNKEN_BORDER) + WX_FLAGS_MEMBER(wxDOUBLE_BORDER) + WX_FLAGS_MEMBER(wxRAISED_BORDER) + WX_FLAGS_MEMBER(wxSTATIC_BORDER) + WX_FLAGS_MEMBER(wxNO_BORDER) + + WX_FLAGS_MEMBER(wxTRANSPARENT_WINDOW) + WX_FLAGS_MEMBER(wxWANTS_CHARS) + WX_FLAGS_MEMBER(wxNO_FULL_REPAINT_ON_RESIZE) + + WX_FLAGS_MEMBER(wxBU_LEFT) + WX_FLAGS_MEMBER(wxBU_RIGHT) + WX_FLAGS_MEMBER(wxBU_TOP) + WX_FLAGS_MEMBER(wxBU_BOTTOM) + WX_FLAGS_MEMBER(wxBU_EXACTFIT) +WX_END_FLAGS( wxButtonStyle ) IMPLEMENT_DYNAMIC_CLASS_XTI(wxButton, wxControl,"wx/button.h") WX_BEGIN_PROPERTIES_TABLE(wxButton) - WX_DELEGATE( OnClick , wxEVT_COMMAND_BUTTON_CLICKED , wxCommandEvent , 0 /*flags*/ , wxT("Helpstring") , wxT("group")) + WX_DELEGATE( OnClick , wxEVT_COMMAND_BUTTON_CLICKED , wxCommandEvent) WX_PROPERTY( Font , wxFont , SetFont , GetFont , , 0 /*flags*/ , wxT("Helpstring") , wxT("group")) WX_PROPERTY( Label, wxString , SetLabel, GetLabel, wxEmptyString, 0 /*flags*/ , wxT("Helpstring") , wxT("group") ) - WX_PROPERTY_FLAGS( WindowStyle , wxButtonStyleFlags , long , SetWindowStyleFlag , GetWindowStyleFlag , , 0 /*flags*/ , wxT("Helpstring") , wxT("group")) // style + WX_PROPERTY_FLAGS( WindowStyle , wxButtonStyle , long , SetWindowStyleFlag , GetWindowStyleFlag , , 0 /*flags*/ , wxT("Helpstring") , wxT("group")) // style WX_END_PROPERTIES_TABLE() diff --git a/src/msw/window.cpp b/src/msw/window.cpp index 4b8c32fb00..a6afbf21da 100644 --- a/src/msw/window.cpp +++ b/src/msw/window.cpp @@ -231,7 +231,19 @@ static inline void wxBringWindowToTop(HWND hwnd) #else // __WXMSW__ #if wxUSE_EXTENDED_RTTI -IMPLEMENT_DYNAMIC_CLASS_XTI(wxWindow, wxWindowBase,"wx/window.h") +// windows that are created from a parent window during its Create method, eg. spin controls in a calendar controls +// must never been streamed out separately otherwise chaos occurs. Right now easiest is to test for negative ids, as +// windows with negative ids never can be recreated anyway + +bool wxWindowStreamingCallback( const wxObject *object, wxWriter * , wxPersister * , wxxVariantArray & ) +{ + const wxWindow * win = dynamic_cast(object) ; + if ( win && win->GetId() < 0 ) + return false ; + return true ; +} + +IMPLEMENT_DYNAMIC_CLASS_XTI_CALLBACK(wxWindow, wxWindowBase,"wx/window.h", wxWindowStreamingCallback) // make wxWindowList known before the property is used -- 2.45.2