added wxICON_NONE and implement support for it in wxGTK (closes #2897)

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@61234 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin
2009-06-28 16:25:37 +00:00
parent 78eecde086
commit 7e3204b45c
5 changed files with 34 additions and 16 deletions

View File

@@ -1824,7 +1824,7 @@ enum wxBorder
#define wxICON_INFORMATION 0x00000800 #define wxICON_INFORMATION 0x00000800
#define wxICON_STOP wxICON_HAND #define wxICON_STOP wxICON_HAND
#define wxICON_ASTERISK wxICON_INFORMATION #define wxICON_ASTERISK wxICON_INFORMATION
#define wxICON_MASK (0x00000100|0x00000200|0x00000400|0x00000800) #define wxICON_MASK (wxICON_EXCLAMATION|wxICON_HAND|wxICON_QUESTION|wxICON_INFORMATION)
#define wxFORWARD 0x00001000 #define wxFORWARD 0x00001000
#define wxBACKWARD 0x00002000 #define wxBACKWARD 0x00002000
@@ -1832,6 +1832,7 @@ enum wxBorder
#define wxHELP 0x00008000 #define wxHELP 0x00008000
#define wxMORE 0x00010000 #define wxMORE 0x00010000
#define wxSETUP 0x00020000 #define wxSETUP 0x00020000
#define wxICON_NONE 0x00040000
/* /*
* Background styles. See wxWindow::SetBackgroundStyle * Background styles. See wxWindow::SetBackgroundStyle

View File

@@ -31,10 +31,16 @@
@style{wxOK_DEFAULT} @style{wxOK_DEFAULT}
Makes the "OK" button default, this is the default behaviour and Makes the "OK" button default, this is the default behaviour and
this flag exists solely for symmetry with @c wxCANCEL_DEFAULT. this flag exists solely for symmetry with @c wxCANCEL_DEFAULT.
@style{wxICON_NONE}
Displays no icon in the dialog if possible (an icon might still be
displayed if the current platform mandates its use). This style may be
used to prevent the dialog from using the default icon based on @c
wxYES_NO presence as explained in @c wxICON_QUESTION and @c
wxICON_INFORMATION documentation below.
@style{wxICON_EXCLAMATION} @style{wxICON_EXCLAMATION}
Displays an exclamation mark symbol. Displays an exclamation, or warning, icon in the dialog.
@style{wxICON_ERROR} @style{wxICON_ERROR}
Displays an error symbol. Displays an error icon in the dialog.
@style{wxICON_HAND} @style{wxICON_HAND}
Displays an error symbol, this is a MSW-inspired synonym for @c wxICON_ERROR. Displays an error symbol, this is a MSW-inspired synonym for @c wxICON_ERROR.
@style{wxICON_QUESTION} @style{wxICON_QUESTION}

View File

@@ -2458,12 +2458,14 @@ TestMessageBoxDialog::TestMessageBoxDialog(wxWindow *parent)
// icon choice // icon choice
const wxString icons[] = { const wxString icons[] = {
"&Information", "&Question", "&Warning", "&Error" "&None", "&Information", "&Question", "&Warning", "&Error"
}; };
m_icons = new wxRadioBox(this, wxID_ANY, "&Icon:", m_icons = new wxRadioBox(this, wxID_ANY, "&Icons",
wxDefaultPosition, wxDefaultSize, wxDefaultPosition, wxDefaultSize,
WXSIZEOF(icons), icons); WXSIZEOF(icons), icons);
// Make the 'Information' icon the default one:
m_icons->SetSelection(1);
sizerTop->Add(m_icons, wxSizerFlags().Expand().Border()); sizerTop->Add(m_icons, wxSizerFlags().Expand().Border());
@@ -2524,10 +2526,11 @@ void TestMessageBoxDialog::OnApply(wxCommandEvent& WXUNUSED(event))
switch ( m_icons->GetSelection() ) switch ( m_icons->GetSelection() )
{ {
case 0: style |= wxICON_INFORMATION; break; case 0: style |= wxICON_NONE; break;
case 1: style |= wxICON_QUESTION; break; case 1: style |= wxICON_INFORMATION; break;
case 2: style |= wxICON_WARNING; break; case 2: style |= wxICON_QUESTION; break;
case 3: style |= wxICON_ERROR; break; case 3: style |= wxICON_WARNING; break;
case 4: style |= wxICON_ERROR; break;
} }
if ( m_chkCentre->IsChecked() ) if ( m_chkCentre->IsChecked() )

View File

@@ -1283,14 +1283,14 @@ wxWindow* wxGenericFindWindowAtPoint(const wxPoint& pt)
int wxMessageBox(const wxString& message, const wxString& caption, long style, int wxMessageBox(const wxString& message, const wxString& caption, long style,
wxWindow *parent, int WXUNUSED(x), int WXUNUSED(y) ) wxWindow *parent, int WXUNUSED(x), int WXUNUSED(y) )
{ {
long decorated_style = style; // add the appropriate icon unless this was explicitly disabled by use of
// wxICON_NONE
if ( ( style & ( wxICON_EXCLAMATION | wxICON_HAND | wxICON_INFORMATION | wxICON_QUESTION ) ) == 0 ) if ( !(style & wxICON_NONE) && !(style & wxICON_MASK) )
{ {
decorated_style |= ( style & wxYES ) ? wxICON_QUESTION : wxICON_INFORMATION ; style |= style & wxYES ? wxICON_QUESTION : wxICON_INFORMATION;
} }
wxMessageDialog dialog(parent, message, caption, decorated_style); wxMessageDialog dialog(parent, message, caption, style);
int ans = dialog.ShowModal(); int ans = dialog.ShowModal();
switch ( ans ) switch ( ans )

View File

@@ -86,7 +86,9 @@ void wxMessageDialog::GTKCreateMsgDialog()
#if wxUSE_LIBHILDON #if wxUSE_LIBHILDON
const char *stockIcon; const char *stockIcon;
if ( m_dialogStyle & wxICON_ERROR ) if ( m_dialogStyle & wxICON_NONE )
stockIcon = "";
else if ( m_dialogStyle & wxICON_ERROR )
stockIcon = "qgn_note_gene_syserror"; stockIcon = "qgn_note_gene_syserror";
else if ( m_dialogStyle & wxICON_EXCLAMATION ) else if ( m_dialogStyle & wxICON_EXCLAMATION )
stockIcon = "qgn_note_gene_syswarning"; stockIcon = "qgn_note_gene_syswarning";
@@ -127,6 +129,11 @@ void wxMessageDialog::GTKCreateMsgDialog()
} }
} }
#ifdef __WXGTK210__
if ( gtk_check_version(2, 10, 0) == NULL && (m_dialogStyle & wxICON_NONE))
type = GTK_MESSAGE_OTHER;
else
#endif // __WXGTK210__
if (m_dialogStyle & wxICON_EXCLAMATION) if (m_dialogStyle & wxICON_EXCLAMATION)
type = GTK_MESSAGE_WARNING; type = GTK_MESSAGE_WARNING;
else if (m_dialogStyle & wxICON_ERROR) else if (m_dialogStyle & wxICON_ERROR)
@@ -137,7 +144,8 @@ void wxMessageDialog::GTKCreateMsgDialog()
type = GTK_MESSAGE_QUESTION; type = GTK_MESSAGE_QUESTION;
else else
{ {
// GTK+ doesn't have a "typeless" msg box, so try to auto detect... // if no style is explicitly specified, detect the suitable icon
// ourselves (this can be disabled by using wxICON_NONE)
type = m_dialogStyle & wxYES ? GTK_MESSAGE_QUESTION : GTK_MESSAGE_INFO; type = m_dialogStyle & wxYES ? GTK_MESSAGE_QUESTION : GTK_MESSAGE_INFO;
} }