From 40636dcbfedd1ea17d6403de942404b80ebb093d Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Sat, 2 May 2009 17:06:39 +0000 Subject: [PATCH] don't use dialog size gripper under CE (should close #10765) git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@60481 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- include/wx/msw/dialog.h | 19 +++++++++++++++---- src/msw/dialog.cpp | 12 ++++++++++++ 2 files changed, 27 insertions(+), 4 deletions(-) diff --git a/include/wx/msw/dialog.h b/include/wx/msw/dialog.h index 02afe5be8a..51edf8c071 100644 --- a/include/wx/msw/dialog.h +++ b/include/wx/msw/dialog.h @@ -14,6 +14,15 @@ #include "wx/panel.h" +// this option is always enabled (there doesn't seem to be any good reason to +// disable it) for desktop Windows versions but Windows CE dialogs are usually +// not resizeable and never show resize gripper anyhow so don't use it there +#ifdef __WXWINCE__ + #define wxUSE_DIALOG_SIZEGRIP 0 +#else + #define wxUSE_DIALOG_SIZEGRIP 1 +#endif + extern WXDLLIMPEXP_DATA_CORE(const char) wxDialogNameStr[]; class WXDLLIMPEXP_FWD_CORE wxDialogModalData; @@ -108,6 +117,8 @@ protected: // common part of all ctors void Init(); +private: +#if wxUSE_DIALOG_SIZEGRIP // these functions deal with the gripper window shown in the corner of // resizeable dialogs void CreateGripper(); @@ -115,11 +126,14 @@ protected: void ShowGripper(bool show); void ResizeGripper(); -private: // this function is used to adjust Z-order of new children relative to the // gripper if we have one void OnWindowCreate(wxWindowCreateEvent& event); + // gripper window for a resizable dialog, NULL if we're not resizable + WXHWND m_hGripper; +#endif // wxUSE_DIALOG_SIZEGRIP + #if wxUSE_TOOLBAR && defined(__POCKETPC__) wxToolBar* m_dialogToolBar; #endif @@ -127,9 +141,6 @@ private: // this pointer is non-NULL only while the modal event loop is running wxDialogModalData *m_modalData; - // gripper window for a resizable dialog, NULL if we're not resizable - WXHWND m_hGripper; - DECLARE_DYNAMIC_CLASS(wxDialog) wxDECLARE_NO_COPY_CLASS(wxDialog); }; diff --git a/src/msw/dialog.cpp b/src/msw/dialog.cpp index 1f9459d57d..49a1997784 100644 --- a/src/msw/dialog.cpp +++ b/src/msw/dialog.cpp @@ -150,7 +150,9 @@ void wxDialog::Init() #if wxUSE_TOOLBAR && defined(__POCKETPC__) m_dialogToolBar = NULL; #endif +#if wxUSE_DIALOG_SIZEGRIP m_hGripper = 0; +#endif // wxUSE_DIALOG_SIZEGRIP } bool wxDialog::Create(wxWindow *parent, @@ -179,6 +181,7 @@ bool wxDialog::Create(wxWindow *parent, CreateToolBar(); #endif +#if wxUSE_DIALOG_SIZEGRIP if ( HasFlag(wxRESIZE_BORDER) ) { CreateGripper(); @@ -186,6 +189,7 @@ bool wxDialog::Create(wxWindow *parent, Connect(wxEVT_CREATE, wxWindowCreateEventHandler(wxDialog::OnWindowCreate)); } +#endif // wxUSE_DIALOG_SIZEGRIP return true; } @@ -195,7 +199,9 @@ wxDialog::~wxDialog() // this will also reenable all the other windows for a modal dialog Show(false); +#if wxUSE_DIALOG_SIZEGRIP DestroyGripper(); +#endif // wxUSE_DIALOG_SIZEGRIP } // ---------------------------------------------------------------------------- @@ -306,6 +312,8 @@ void wxDialog::EndModal(int retCode) // wxDialog gripper handling // ---------------------------------------------------------------------------- +#if wxUSE_DIALOG_SIZEGRIP + void wxDialog::SetWindowStyleFlag(long style) { wxDialogBase::SetWindowStyleFlag(style); @@ -394,6 +402,8 @@ void wxDialog::OnWindowCreate(wxWindowCreateEvent& event) event.Skip(); } +#endif // wxUSE_DIALOG_SIZEGRIP + // ---------------------------------------------------------------------------- // wxWin event handlers // ---------------------------------------------------------------------------- @@ -475,6 +485,7 @@ WXLRESULT wxDialog::MSWWindowProc(WXUINT message, WXWPARAM wParam, WXLPARAM lPar break; case WM_SIZE: +#if wxUSE_DIALOG_SIZEGRIP if ( m_hGripper ) { switch ( wParam ) @@ -487,6 +498,7 @@ WXLRESULT wxDialog::MSWWindowProc(WXUINT message, WXWPARAM wParam, WXLPARAM lPar ShowGripper(true); } } +#endif // wxUSE_DIALOG_SIZEGRIP // the Windows dialogs unfortunately are not meant to be resizeable // at all and their standard class doesn't include CS_[VH]REDRAW -- 2.45.2