]> git.saurik.com Git - wxWidgets.git/commitdiff
Add support for wxICON_AUTH_NEEDED to wxMessageDialog.
authorVadim Zeitlin <vadim@wxwidgets.org>
Mon, 29 Apr 2013 12:54:08 +0000 (12:54 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Mon, 29 Apr 2013 12:54:08 +0000 (12:54 +0000)
Allow showing the standard "Authentication needed" dialog in the message boxes
under MSW.

Closes #15121.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@73877 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

docs/changes.txt
include/wx/defs.h
include/wx/msgdlg.h
include/wx/msw/msgdlg.h
interface/wx/msgdlg.h
samples/dialogs/dialogs.cpp
samples/dialogs/dialogs.h
src/msw/msgdlg.cpp

index f53582277b43992099b25140bff2b2602f9ec901..061af1a26f4f03428a73e7976ba1c69a40bcb921 100644 (file)
@@ -666,6 +666,7 @@ wxMSW:
 - Generate menu highlight events for popup menus in wxDialog (Sam Partington).
 - Return more native shell icons from wxArtProvider (Markus Juergens).
 - Fix filter checks in wxDir::FindFirst/Next() (Catalin Raceanu).
 - Generate menu highlight events for popup menus in wxDialog (Sam Partington).
 - Return more native shell icons from wxArtProvider (Markus Juergens).
 - Fix filter checks in wxDir::FindFirst/Next() (Catalin Raceanu).
+- Add support for wxICON_AUTH_NEEDED to wxMessageDialog (Chris Spencer).
 
 wxOSX/Cocoa:
 
 
 wxOSX/Cocoa:
 
index f95bb7cc34fa70d0d0099696c7ebd6da552da5ea..d7d08a7469a96e66e692e6b00391b40d6c568503 100644 (file)
@@ -1924,9 +1924,10 @@ enum wxBorder
 #define wxMORE                  0x00010000
 #define wxSETUP                 0x00020000
 #define wxICON_NONE             0x00040000
 #define wxMORE                  0x00010000
 #define wxSETUP                 0x00020000
 #define wxICON_NONE             0x00040000
+#define wxICON_AUTH_NEEDED      0x00080000
 
 #define wxICON_MASK \
 
 #define wxICON_MASK \
-    (wxICON_EXCLAMATION|wxICON_HAND|wxICON_QUESTION|wxICON_INFORMATION|wxICON_NONE)
+    (wxICON_EXCLAMATION|wxICON_HAND|wxICON_QUESTION|wxICON_INFORMATION|wxICON_NONE|wxICON_AUTH_NEEDED)
 
 /*
  * Background styles. See wxWindow::SetBackgroundStyle
 
 /*
  * Background styles. See wxWindow::SetBackgroundStyle
index 4dbd2d5ac2620f0c7e949123aaa146349375d022..14df02f9614cfd3c271e159ba93591fb27dd7f63 100644 (file)
@@ -209,8 +209,9 @@ public:
         { return m_help.empty() ? GetDefaultHelpLabel() : m_help; }
 
     // based on message dialog style, returns exactly one of: wxICON_NONE,
         { return m_help.empty() ? GetDefaultHelpLabel() : m_help; }
 
     // based on message dialog style, returns exactly one of: wxICON_NONE,
-    // wxICON_ERROR, wxICON_WARNING, wxICON_QUESTION, wxICON_INFORMATION
-    long GetEffectiveIcon() const
+    // wxICON_ERROR, wxICON_WARNING, wxICON_QUESTION, wxICON_INFORMATION,
+    // wxICON_AUTH_NEEDED
+    virtual long GetEffectiveIcon() const
     {
         if ( m_dialogStyle & wxICON_NONE )
             return wxICON_NONE;
     {
         if ( m_dialogStyle & wxICON_NONE )
             return wxICON_NONE;
index 30573d8eacc2d1540b4dcb32b9f103b0313de157..6b2f11004bc3682d2ebe5483b229dd43121722ea 100644 (file)
@@ -27,6 +27,8 @@ public:
 
     virtual int ShowModal();
 
 
     virtual int ShowModal();
 
+    virtual long GetEffectiveIcon() const;
+
     // implementation-specific
 
     // return the font used for the text in the message box
     // implementation-specific
 
     // return the font used for the text in the message box
index 1dde94ee778c7eb8816bcb03b5edfe5ace2e67c1..378fa4624e2443941a50ec4f27940d95e4dbd790 100644 (file)
@@ -68,6 +68,15 @@ const char wxMessageBoxCaptionStr[] = "Message";
         Displays an information symbol. This icon is used by default if
         @c wxYES_NO is not given so it is usually unnecessary to specify it
         explicitly.
         Displays an information symbol. This icon is used by default if
         @c wxYES_NO is not given so it is usually unnecessary to specify it
         explicitly.
+    @style{wxICON_AUTH_NEEDED}
+        Displays an authentication needed symbol. This style is only supported
+        for message dialogs under wxMSW when a task dialog is used to implement
+        them (i.e. when running under Windows Vista or later). In other cases
+        the default icon selection logic will be used. Note this can be
+        combined with other styles to provide a fallback. For instance, using
+        wxICON_AUTH_NEEDED | wxICON_QUESTION will show a shield symbol on
+        Windows Vista or above and a question symbol on other platforms.
+        @since 2.9.5
     @style{wxSTAY_ON_TOP}
         Makes the message box stay on top of all other windows and not only
         just its parent (currently implemented only under MSW and GTK).
     @style{wxSTAY_ON_TOP}
         Makes the message box stay on top of all other windows and not only
         just its parent (currently implemented only under MSW and GTK).
index 7cc3287cefb2667a9f61a0d2e7e97ea2d8ace416..679838a4dd63ebdc109c716dcebf3e7b190bee14 100644 (file)
@@ -3005,7 +3005,8 @@ bool TestMessageBoxDialog::Create()
         "&Information icon",
         "&Question icon",
         "&Warning icon",
         "&Information icon",
         "&Question icon",
         "&Warning icon",
-        "&Error icon"
+        "&Error icon",
+        "A&uth needed icon"
     };
 
    wxCOMPILE_TIME_ASSERT( WXSIZEOF(icons) == MsgDlgIcon_Max, IconMismatch );
     };
 
    wxCOMPILE_TIME_ASSERT( WXSIZEOF(icons) == MsgDlgIcon_Max, IconMismatch );
@@ -3106,6 +3107,10 @@ long TestMessageBoxDialog::GetStyle()
         case MsgDlgIcon_Error:
             style |= wxICON_ERROR;
             break;
         case MsgDlgIcon_Error:
             style |= wxICON_ERROR;
             break;
+
+        case MsgDlgIcon_AuthNeeded:
+            style |= wxICON_AUTH_NEEDED;
+            break;
     }
 
     if ( m_chkCentre->IsChecked() )
     }
 
     if ( m_chkCentre->IsChecked() )
index 54a2fe31383ec57cdf344319b883cc78b3a2810c..f92379f33f652359aedafefc118833cf994ab5d7 100644 (file)
@@ -249,6 +249,7 @@ private:
         MsgDlgIcon_Question,
         MsgDlgIcon_Warning,
         MsgDlgIcon_Error,
         MsgDlgIcon_Question,
         MsgDlgIcon_Warning,
         MsgDlgIcon_Error,
+        MsgDlgIcon_AuthNeeded,
         MsgDlgIcon_Max
     };
 
         MsgDlgIcon_Max
     };
 
index edff0a0f5a55c7523c79fb55989e8e5014a2b2b3..e9b25735a90bfd0bbbf7d7f36682288ba23de459 100644 (file)
@@ -629,6 +629,18 @@ int wxMessageDialog::ShowModal()
     return ShowMessageBox();
 }
 
     return ShowMessageBox();
 }
 
+long wxMessageDialog::GetEffectiveIcon() const
+{
+    // only use the auth needed icon if available, otherwise fallback to the default logic
+    if ( (m_dialogStyle & wxICON_AUTH_NEEDED) &&
+        wxMSWMessageDialog::HasNativeTaskDialog() )
+    {
+        return wxICON_AUTH_NEEDED;
+    }
+
+    return wxMessageDialogBase::GetEffectiveIcon();
+}
+
 void wxMessageDialog::DoCentre(int dir)
 {
 #ifdef wxHAS_MSW_TASKDIALOG
 void wxMessageDialog::DoCentre(int dir)
 {
 #ifdef wxHAS_MSW_TASKDIALOG
@@ -738,6 +750,10 @@ void wxMSWTaskDialogConfig::MSWCommonTaskDialogInit(TASKDIALOGCONFIG &tdc)
         case wxICON_INFORMATION:
             tdc.pszMainIcon = TD_INFORMATION_ICON;
             break;
         case wxICON_INFORMATION:
             tdc.pszMainIcon = TD_INFORMATION_ICON;
             break;
+
+        case wxICON_AUTH_NEEDED:
+            tdc.pszMainIcon = TD_SHIELD_ICON;
+            break;
     }
 
     // custom label button array that can hold all buttons in use
     }
 
     // custom label button array that can hold all buttons in use