Use correct style for the dialog shown by generic file/dir pickers.

The picker styles don't make sense for the button so we don't use them when
creating the button but we do need to somehow use the style the picker was
created with to create an appropriate dialog when it's clicked.

Fix the problem by simply storing the style in a member variable and using it
instead of wxWindow::m_windowStyle.

Closes #11635.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@63654 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin 2010-03-08 19:37:08 +00:00
parent 49e714e127
commit 8eca1205e2
2 changed files with 15 additions and 8 deletions

View File

@ -77,6 +77,11 @@ public:
protected:
wxString m_message, m_wildcard;
// we just store the style passed to the ctor here instead of passing it to
// wxButton as some of our bits can conflict with wxButton styles and it
// just doesn't make sense to use picker styles for wxButton anyhow
long m_pickerStyle;
};
@ -112,15 +117,15 @@ public: // overrideable
{
long filedlgstyle = 0;
if (this->HasFlag(wxFLP_OPEN))
if ( m_pickerStyle & wxFLP_OPEN )
filedlgstyle |= wxFD_OPEN;
if (this->HasFlag(wxFLP_SAVE))
if ( m_pickerStyle & wxFLP_SAVE )
filedlgstyle |= wxFD_SAVE;
if (this->HasFlag(wxFLP_OVERWRITE_PROMPT))
if ( m_pickerStyle & wxFLP_OVERWRITE_PROMPT )
filedlgstyle |= wxFD_OVERWRITE_PROMPT;
if (this->HasFlag(wxFLP_FILE_MUST_EXIST))
if ( m_pickerStyle & wxFLP_FILE_MUST_EXIST )
filedlgstyle |= wxFD_FILE_MUST_EXIST;
if (this->HasFlag(wxFLP_CHANGE_DIR))
if ( m_pickerStyle & wxFLP_CHANGE_DIR )
filedlgstyle |= wxFD_CHANGE_DIR;
return filedlgstyle;
@ -182,9 +187,9 @@ public: // overrideable
{
long dirdlgstyle = wxDD_DEFAULT_STYLE;
if (this->HasFlag(wxDIRP_DIR_MUST_EXIST))
if ( m_pickerStyle & wxDIRP_DIR_MUST_EXIST )
dirdlgstyle |= wxDD_DIR_MUST_EXIST;
if (this->HasFlag(wxDIRP_CHANGE_DIR))
if ( m_pickerStyle & wxDIRP_CHANGE_DIR )
dirdlgstyle |= wxDD_CHANGE_DIR;
return dirdlgstyle;

View File

@ -48,10 +48,12 @@ bool wxGenericFileDirButton::Create(wxWindow *parent,
const wxString& wildcard,
const wxPoint& pos,
const wxSize& size,
long WXUNUSED(style),
long style,
const wxValidator& validator,
const wxString& name)
{
m_pickerStyle = style;
// create this button
if ( !wxButton::Create(parent, id, label, pos, size, 0, validator, name) )
{