]> git.saurik.com Git - wxWidgets.git/commitdiff
Add wxAutomationInstance_SilentIfNone flag for wxMSW OLE code.
authorVadim Zeitlin <vadim@wxwidgets.org>
Sat, 19 Feb 2011 12:33:08 +0000 (12:33 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Sat, 19 Feb 2011 12:33:08 +0000 (12:33 +0000)
This flag allows to suppress the error message in case there are no currently
running instances of this object and can be useful if the caller doesn't know
in advance whether it's available or not.

Closes #12734.

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

docs/changes.txt
include/wx/msw/ole/automtn.h
interface/wx/msw/ole/automtn.h
src/msw/ole/automtn.cpp

index bb79b65387bc6e75c8c2dcb308a5abea3ee56ba8..d1769863ed3ce7da15ce847f4071c4dab08dd6f9 100644 (file)
@@ -178,7 +178,9 @@ Changes in behaviour not resulting in compilation errors, please read this!
 - wxMSW-specific wxAutomationObject::GetInstance() method now creates a new
   instance if needed instead of failing if the application providing the
   requested ProgID is not running. Pass wxAutomationInstance_UseExistingOnly
-  flag to it to revert to the old behaviour.
+  flag to it to revert to the old behaviour. It is also possible to use the
+  wxAutomationInstance_SilentIfNone flag to prevent the error message if no
+  currently running instances of this object are available.
 
 
 Changes in behaviour which may result in compilation errors
index 63b9414d29ab344933f90208a8ec659ce2788da6..beae01b33ec337e96eeba3e3f520b7e30bdaa7e1 100644 (file)
@@ -33,7 +33,11 @@ enum wxAutomationInstanceFlags
     wxAutomationInstance_UseExistingOnly = 0,
 
     // Create a new instance if there are no existing ones.
-    wxAutomationInstance_CreateIfNeeded = 1
+    wxAutomationInstance_CreateIfNeeded = 1,
+
+    // Do not log errors if we failed to get the existing instance because none
+    // is available.
+    wxAutomationInstance_SilentIfNone = 2
 };
 
 /*
index c351d20e88723d7ad5d1c102b91bc08778a76c6e..916bc1b80dce8ae267bbec0bcfeedb6df7808800 100644 (file)
@@ -31,7 +31,15 @@ enum wxAutomationInstanceFlags
         instance failed, we should call wxAutomationObject::CreateInstance() to
         create a new one.
      */
-    wxAutomationInstance_CreateIfNeeded = 1
+    wxAutomationInstance_CreateIfNeeded = 1,
+
+    /**
+        Do not show an error message if no existing instance is currently
+        running.
+
+        All other errors will still be reported as usual.
+     */
+    wxAutomationInstance_SilentIfNone = 2
 };
 
 
@@ -134,6 +142,10 @@ public:
 
         If attaching to an existing object failed and @a flags includes
         wxAutomationInstance_CreateIfNeeded flag, a new object will be created.
+        Otherwise this function will normally log an error message which may be
+        undesirable if the object may or may not exist. The
+        wxAutomationInstance_SilentIfNone flag can be used to prevent the error
+        from being logged in this case.
 
         Returns @true if a pointer was successfully retrieved, @false
         otherwise.
index dce44ebc5a77bb8c5dc19e079ca82144315a8548..12a46ffcad35495faff534e8a4442cfafda588ec 100644 (file)
@@ -545,8 +545,15 @@ bool wxAutomationObject::GetInstance(const wxString& progId, int flags) const
         }
         else
         {
-            wxLogSysError(hr,
-                          _("Cannot get an active instance of \"%s\""), progId);
+            // Log an error except if we're supposed to fail silently when the
+            // error is that no current instance exists.
+            if ( hr != MK_E_UNAVAILABLE ||
+                    !(flags & wxAutomationInstance_SilentIfNone) )
+            {
+                wxLogSysError(hr,
+                              _("Cannot get an active instance of \"%s\""),
+                              progId);
+            }
         }
 
         return false;