summaryrefslogtreecommitdiff
path: root/embeddedobj/source/msole/xdialogcreator.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'embeddedobj/source/msole/xdialogcreator.cxx')
-rw-r--r--embeddedobj/source/msole/xdialogcreator.cxx9
1 files changed, 9 insertions, 0 deletions
diff --git a/embeddedobj/source/msole/xdialogcreator.cxx b/embeddedobj/source/msole/xdialogcreator.cxx
index f94020a65a8f..be26a300d298 100644
--- a/embeddedobj/source/msole/xdialogcreator.cxx
+++ b/embeddedobj/source/msole/xdialogcreator.cxx
@@ -44,6 +44,10 @@
#include <oledlg.h>
+#include <svsys.h>
+#include <win/saldata.hxx>
+#include <win/salinst.h>
+
class InitializedOleGuard
{
public:
@@ -174,6 +178,11 @@ embed::InsertedObjectInfo SAL_CALL MSOLEDialogObjectCreator::createInstanceByDia
if( !pInsertFct )
throw uno::RuntimeException();
+ // Disable any event loop shortcuts by enabling a real timer.
+ // This way the native windows dialog won't block our own processing.
+ BOOL const ret = PostMessageW(GetSalData()->mpInstance->mhComWnd, SAL_MSG_FORCE_REAL_TIMER, 0, 0);
+ SAL_WARN_IF(0 == ret, "embeddedobj.ole", "ERROR: PostMessage() failed!");
+
uTemp=pInsertFct(&io);
if ( OLEUI_OK != uTemp )