summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--embeddedobj/Library_emboleobj.mk1
-rw-r--r--embeddedobj/source/msole/xdialogcreator.cxx8
-rw-r--r--include/vcl/winscheduler.hxx39
-rw-r--r--vcl/Library_vcl.mk1
-rw-r--r--vcl/source/app/winscheduler.cxx37
5 files changed, 79 insertions, 7 deletions
diff --git a/embeddedobj/Library_emboleobj.mk b/embeddedobj/Library_emboleobj.mk
index 3bfbec56d89d..9e3c1b5950d2 100644
--- a/embeddedobj/Library_emboleobj.mk
+++ b/embeddedobj/Library_emboleobj.mk
@@ -14,7 +14,6 @@ $(eval $(call gb_Library_set_componentfile,emboleobj,embeddedobj/source/msole/em
$(eval $(call gb_Library_set_include,emboleobj,\
-I$(SRCDIR)/embeddedobj/source/inc \
- $(if $(filter WNT,$(OS)),-I$(SRCDIR)/vcl/inc) \
$$(INCLUDE) \
))
diff --git a/embeddedobj/source/msole/xdialogcreator.cxx b/embeddedobj/source/msole/xdialogcreator.cxx
index be26a300d298..836f198eb867 100644
--- a/embeddedobj/source/msole/xdialogcreator.cxx
+++ b/embeddedobj/source/msole/xdialogcreator.cxx
@@ -43,10 +43,7 @@
#ifdef _WIN32
#include <oledlg.h>
-
-#include <svsys.h>
-#include <win/saldata.hxx>
-#include <win/salinst.h>
+#include <vcl/winscheduler.hxx>
class InitializedOleGuard
{
@@ -180,8 +177,7 @@ embed::InsertedObjectInfo SAL_CALL MSOLEDialogObjectCreator::createInstanceByDia
// 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!");
+ WinScheduler::SetForceRealTimer();
uTemp=pInsertFct(&io);
diff --git a/include/vcl/winscheduler.hxx b/include/vcl/winscheduler.hxx
new file mode 100644
index 000000000000..02d86116bb38
--- /dev/null
+++ b/include/vcl/winscheduler.hxx
@@ -0,0 +1,39 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed
+ * with this work for additional information regarding copyright
+ * ownership. The ASF licenses this file to you under the Apache
+ * License, Version 2.0 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of
+ * the License at http://www.apache.org/licenses/LICENSE-2.0 .
+ */
+
+#ifndef INCLUDED_VCL_WINSCHEDULER_HXX
+#define INCLUDED_VCL_WINSCHEDULER_HXX
+
+#ifndef _WIN32
+#error This header is just useable on Windows
+#else
+
+#include <vcl/dllapi.h>
+
+struct VCL_DLLPUBLIC WinScheduler final
+{
+ /// Hack for Windows native dialogs, which run the main loop, so we can't
+ /// use the direct processing shortcut.
+ static void SetForceRealTimer();
+};
+
+#endif // _WIN32
+#endif // INCLUDED_VCL_WINSCHEDULER_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/vcl/Library_vcl.mk b/vcl/Library_vcl.mk
index 4bd1469a6d34..da9bc387ca2f 100644
--- a/vcl/Library_vcl.mk
+++ b/vcl/Library_vcl.mk
@@ -380,6 +380,7 @@ $(eval $(call gb_Library_add_exception_objects,vcl,\
vcl/source/app/unohelp2 \
vcl/source/app/unohelp \
vcl/source/app/vclevent \
+ vcl/source/app/winscheduler \
vcl/source/components/dtranscomp \
vcl/source/components/factory \
vcl/source/components/fontident \
diff --git a/vcl/source/app/winscheduler.cxx b/vcl/source/app/winscheduler.cxx
new file mode 100644
index 000000000000..f8a90f3f638d
--- /dev/null
+++ b/vcl/source/app/winscheduler.cxx
@@ -0,0 +1,37 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed
+ * with this work for additional information regarding copyright
+ * ownership. The ASF licenses this file to you under the Apache
+ * License, Version 2.0 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of
+ * the License at http://www.apache.org/licenses/LICENSE-2.0 .
+ */
+
+#ifdef _WIN32
+
+#include <vcl/winscheduler.hxx>
+
+#include <svsys.h>
+#include <win/saldata.hxx>
+#include <win/salinst.h>
+
+void WinScheduler::SetForceRealTimer()
+{
+ BOOL const ret
+ = PostMessageW(GetSalData()->mpInstance->mhComWnd, SAL_MSG_FORCE_REAL_TIMER, 0, 0);
+ SAL_WARN_IF(0 == ret, "vcl.schedule", "ERROR: PostMessage() failed!");
+}
+
+#endif // _WIN32
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */