]> git.saurik.com Git - wxWidgets.git/commitdiff
added wxICON_NONE and implement support for it in wxGTK (closes #2897)
authorVadim Zeitlin <vadim@wxwidgets.org>
Sun, 28 Jun 2009 16:25:37 +0000 (16:25 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Sun, 28 Jun 2009 16:25:37 +0000 (16:25 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@61234 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

include/wx/defs.h
interface/wx/msgdlg.h
samples/dialogs/dialogs.cpp
src/common/utilscmn.cpp
src/gtk/msgdlg.cpp

index 75d36d81b3f452db39d7deb118683cef0ac6bf01..633ddf114725d90ba34782d9977607c800dfb29b 100644 (file)
@@ -1824,7 +1824,7 @@ enum wxBorder
 #define wxICON_INFORMATION      0x00000800
 #define wxICON_STOP             wxICON_HAND
 #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  wxBACKWARD             0x00002000
@@ -1832,6 +1832,7 @@ enum wxBorder
 #define  wxHELP                 0x00008000
 #define  wxMORE                 0x00010000
 #define  wxSETUP                0x00020000
+#define wxICON_NONE             0x00040000
 
 /*
  * Background styles. See wxWindow::SetBackgroundStyle
index 4477d22675551a434c6c5fff97398c37ce6a931c..6a88ff8558d77632b9e04cfb80c614f2b92c97c9 100644 (file)
     @style{wxOK_DEFAULT}
         Makes the "OK" button default, this is the default behaviour and
         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}
-        Displays an exclamation mark symbol.
+        Displays an exclamation, or warning, icon in the dialog.
     @style{wxICON_ERROR}
-        Displays an error symbol.
+        Displays an error icon in the dialog.
     @style{wxICON_HAND}
         Displays an error symbol, this is a MSW-inspired synonym for @c wxICON_ERROR.
     @style{wxICON_QUESTION}
index d9cd57f0795ee558f8d4bdce031612d3ae185408..b33421162209fd8843881580ece6038bd6d4055f 100644 (file)
@@ -2458,12 +2458,14 @@ TestMessageBoxDialog::TestMessageBoxDialog(wxWindow *parent)
 
     // icon choice
     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,
                              WXSIZEOF(icons), icons);
+    // Make the 'Information' icon the default one:
+    m_icons->SetSelection(1);
     sizerTop->Add(m_icons, wxSizerFlags().Expand().Border());
 
 
@@ -2524,10 +2526,11 @@ void TestMessageBoxDialog::OnApply(wxCommandEvent& WXUNUSED(event))
 
     switch ( m_icons->GetSelection() )
     {
-        case 0: style |= wxICON_INFORMATION; break;
-        case 1: style |= wxICON_QUESTION; break;
-        case 2: style |= wxICON_WARNING; break;
-        case 3: style |= wxICON_ERROR; break;
+        case 0: style |= wxICON_NONE; break;
+        case 1: style |= wxICON_INFORMATION; break;
+        case 2: style |= wxICON_QUESTION; break;
+        case 3: style |= wxICON_WARNING; break;
+        case 4: style |= wxICON_ERROR; break;
     }
 
     if ( m_chkCentre->IsChecked() )
index afcfa394ddb4521b5965efc97bd2e170bd8d064e..2a8dbf931b420cd56b3a588b9de388f0a247ccd1 100644 (file)
@@ -1283,14 +1283,14 @@ wxWindow* wxGenericFindWindowAtPoint(const wxPoint& pt)
 int wxMessageBox(const wxString& message, const wxString& caption, long style,
                  wxWindow *parent, int WXUNUSED(x), int WXUNUSED(y) )
 {
-    long decorated_style = style;
-
-    if ( ( style & ( wxICON_EXCLAMATION | wxICON_HAND | wxICON_INFORMATION | wxICON_QUESTION ) ) == 0 )
+    // add the appropriate icon unless this was explicitly disabled by use of
+    // wxICON_NONE
+    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();
     switch ( ans )
index d7b27a4777e399efd0bfe7fccce45b67964f925b..cca4971b6e2bf2c7c765af3f845bc895bf853b51 100644 (file)
@@ -86,7 +86,9 @@ void wxMessageDialog::GTKCreateMsgDialog()
 
 #if wxUSE_LIBHILDON
     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";
     else if ( m_dialogStyle & wxICON_EXCLAMATION )
         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)
         type = GTK_MESSAGE_WARNING;
     else if (m_dialogStyle & wxICON_ERROR)
@@ -137,7 +144,8 @@ void wxMessageDialog::GTKCreateMsgDialog()
         type = GTK_MESSAGE_QUESTION;
     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;
     }