summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJan-Marek Glogowski <glogow@fbihome.de>2021-12-10 13:19:27 +0100
committerJan-Marek Glogowski <glogow@fbihome.de>2021-12-10 14:09:13 +0100
commit77cb655a60a238100b4942b9a41a1a989031c39c (patch)
tree0d51ddd633c086ccc37d9945ef3b286c5b622f36
parentbab898c7c9e1f7e39c5ac22fdcf823c7dbc493b6 (diff)
Change-Id: I61e9916a667a92e6bd5489e5ed1d1dead2a61765
-rw-r--r--basic/source/runtime/methods1.cxx16
-rw-r--r--config_host/config_wasm_strip.h.in2
-rw-r--r--configmgr/source/xcuparser.cxx4
-rw-r--r--configure.ac2
-rw-r--r--cppu/source/uno/lbenv.cxx6
-rw-r--r--cppu/source/uno/lbmap.cxx2
-rw-r--r--cui/source/factory/dlgfact.cxx4
-rw-r--r--desktop/CustomTarget_soffice.mk2
-rw-r--r--desktop/source/app/app.cxx2
-rw-r--r--sfx2/source/appl/appserv.cxx2
-rw-r--r--sfx2/source/control/dispatch.cxx34
-rw-r--r--solenv/bin/image-sort.py2
-rw-r--r--solenv/gbuild/platform/EMSCRIPTEN_INTEL_GCC.mk2
-rw-r--r--static/CustomTarget_wasm_fs_image.mk20
-rw-r--r--static/soffice_args.js5
-rw-r--r--vcl/Module_vcl.mk2
-rw-r--r--vcl/inc/qt5/QtInstance.hxx1
-rw-r--r--vcl/qt5/QtFrame.cxx36
-rw-r--r--vcl/qt5/QtInstance.cxx12
-rw-r--r--vcl/qt5/QtWidget.cxx5
-rw-r--r--xmloff/Library_xo.mk2
21 files changed, 104 insertions, 59 deletions
diff --git a/basic/source/runtime/methods1.cxx b/basic/source/runtime/methods1.cxx
index 8e78776bc7f8..fca27708962a 100644
--- a/basic/source/runtime/methods1.cxx
+++ b/basic/source/runtime/methods1.cxx
@@ -2973,13 +2973,6 @@ void SbRtl_CompatibilityMode(StarBASIC *, SbxArray & rPar, bool)
rPar.Get(0)->PutBool(bEnabled);
}
-bool LibreOffice6FloatingPointMode()
-{
- static bool bMode = std::getenv("LIBREOFFICE6FLOATINGPOINTMODE") != nullptr;
-
- return bMode || officecfg::Office::Scripting::Basic::Compatibility::UseLibreOffice6FloatingPointConversion::get();
-}
-
void SbRtl_Input(StarBASIC *, SbxArray & rPar, bool)
{
// 2 parameters needed
@@ -3030,7 +3023,14 @@ void SbRtl_Me(StarBASIC *, SbxArray & rPar, bool)
refVar->PutObject( pClassModuleObject );
}
-#endif
+#endif // HAVE_FEATURE_SCRIPTING
+
+bool LibreOffice6FloatingPointMode()
+{
+ static bool bMode = std::getenv("LIBREOFFICE6FLOATINGPOINTMODE") != nullptr;
+
+ return bMode || officecfg::Office::Scripting::Basic::Compatibility::UseLibreOffice6FloatingPointConversion::get();
+}
sal_Int16 implGetWeekDay( double aDate, bool bFirstDayParam, sal_Int16 nFirstDay )
{
diff --git a/config_host/config_wasm_strip.h.in b/config_host/config_wasm_strip.h.in
index 0e74a2a568ad..fe3d8b908eca 100644
--- a/config_host/config_wasm_strip.h.in
+++ b/config_host/config_wasm_strip.h.in
@@ -17,7 +17,7 @@
#define ENABLE_WASM_STRIP_PINGUSER
#define ENABLE_WASM_STRIP_PREMULTIPLY
#define ENABLE_WASM_STRIP_RECENT
-#define ENABLE_WASM_STRIP_RECOVERYUI
+// #define ENABLE_WASM_STRIP_RECOVERYUI
#define ENABLE_WASM_STRIP_SPLASH
#define ENABLE_WASM_STRIP_SWEXPORTS
#endif
diff --git a/configmgr/source/xcuparser.cxx b/configmgr/source/xcuparser.cxx
index af21518abd78..53020a9d21c1 100644
--- a/configmgr/source/xcuparser.cxx
+++ b/configmgr/source/xcuparser.cxx
@@ -286,7 +286,7 @@ void XcuParser::handleComponentData(xmlreader::XmlReader & reader) {
data_.getComponents().findNode(valueParser_.getLayer(),
componentName_));
if (!node.is()) {
- SAL_WARN(
+ SAL_INFO(
"configmgr",
"unknown component \"" << componentName_ << "\" in \""
<< reader.getUrl() << '"');
@@ -898,7 +898,7 @@ void XcuParser::handleSetNode(xmlreader::XmlReader & reader, SetNode * set) {
switch (op) {
case OPERATION_MODIFY:
if (i == members.end()) {
- SAL_WARN(
+ SAL_INFO(
"configmgr",
"ignoring modify of unknown set member node \"" << name
<< "\" in \"" << reader.getUrl() << '"');
diff --git a/configure.ac b/configure.ac
index 5c554c4ca35a..a5c55e8d6e04 100644
--- a/configure.ac
+++ b/configure.ac
@@ -3038,7 +3038,7 @@ ENABLE_SERVICES_RDB_FROM_BUILD=
if test "$enable_services_rdb_from_build" = yes; then
ENABLE_SERVICES_RDB_FROM_BUILD=TRUE
if test -n "$with_locales" -a "$with_locales" != en -a "$with_locales" != ALL; then
- AC_MSG_ERROR([Currently just --with-locales=all or en is supported with --enable-services-rdb-from-build])
+ AC_MSG_ERROR([Currently just --with-locales=ALL or en is supported with --enable-services-rdb-from-build])
fi
fi
AC_SUBST(ENABLE_SERVICES_RDB_FROM_BUILD)
diff --git a/cppu/source/uno/lbenv.cxx b/cppu/source/uno/lbenv.cxx
index f2e8a27581ab..f19d8e725e4f 100644
--- a/cppu/source/uno/lbenv.cxx
+++ b/cppu/source/uno/lbenv.cxx
@@ -1002,7 +1002,6 @@ void EnvironmentsData::getRegisteredEnvironments(
bool loadEnv(OUString const & cLibStem,
uno_Environment * pEnv)
{
-#ifndef __EMSCRIPTEN__
#ifdef DISABLE_DYNLOADING
uno_initEnvironmentFunc fpInit;
@@ -1042,11 +1041,6 @@ bool loadEnv(OUString const & cLibStem,
(*fpInit)( pEnv ); // init of environment
return true;
-#else
- (void)cLibStem;
- (void)pEnv;
- return false;
-#endif
}
}
diff --git a/cppu/source/uno/lbmap.cxx b/cppu/source/uno/lbmap.cxx
index a670e3bcc820..43818eb85025 100644
--- a/cppu/source/uno/lbmap.cxx
+++ b/cppu/source/uno/lbmap.cxx
@@ -328,10 +328,8 @@ static void setNegativeBridge( const OUString & rBridgeName )
static uno_ext_getMappingFunc selectMapFunc( const OUString & rBridgeName )
{
-#ifndef EMSCRIPTEN
if (rBridgeName.equalsAscii( CPPU_CURRENT_LANGUAGE_BINDING_NAME "_uno" ))
return CPPU_ENV_uno_ext_getMapping;
-#endif
#if HAVE_FEATURE_JAVA
if (rBridgeName.equalsAscii( "java" "_uno" ))
return java_uno_ext_getMapping;
diff --git a/cui/source/factory/dlgfact.cxx b/cui/source/factory/dlgfact.cxx
index d67cdd3f9aa7..01647789881b 100644
--- a/cui/source/factory/dlgfact.cxx
+++ b/cui/source/factory/dlgfact.cxx
@@ -1514,8 +1514,8 @@ AbstractDialogFactory_Impl::CreateTipOfTheDayDialog(weld::Window* pParent)
VclPtr<VclAbstractDialog>
AbstractDialogFactory_Impl::CreateToolbarmodeDialog(weld::Window* pParent)
{
- return VclPtr<CuiAbstractController_Impl>::Create(
- std::make_unique<ToolbarmodeDialog>(pParent));
+ return VclPtr<CuiAbstractControllerAsync_Impl>::Create(
+ std::make_shared<ToolbarmodeDialog>(pParent));
}
VclPtr<AbstractDiagramDialog>
diff --git a/desktop/CustomTarget_soffice.mk b/desktop/CustomTarget_soffice.mk
index c7ac35e46f9b..e493d061b4cd 100644
--- a/desktop/CustomTarget_soffice.mk
+++ b/desktop/CustomTarget_soffice.mk
@@ -13,7 +13,7 @@ $(call gb_CustomTarget_get_target,desktop/soffice) : \
$(call gb_CustomTarget_get_workdir,desktop/soffice)/soffice.sh
$(call gb_CustomTarget_get_workdir,desktop/soffice)/soffice.sh : \
- $(SRCDIR)/desktop/scripts/soffice$(if $(DISABLE_DYNLOADING),_nodyn).sh \
+ $(SRCDIR)/desktop/scripts/soffice.sh \
$(BUILDDIR)/config_host.mk \
| $(call gb_CustomTarget_get_workdir,desktop/soffice)/.dir
$(call gb_Output_announce,$(subst $(WORKDIR)/,,$@),$(true),SED,1)
diff --git a/desktop/source/app/app.cxx b/desktop/source/app/app.cxx
index 3df0efe8ed34..51c19fa19323 100644
--- a/desktop/source/app/app.cxx
+++ b/desktop/source/app/app.cxx
@@ -2003,7 +2003,6 @@ void Desktop::OpenClients()
handleCrashReport();
#endif
-#if 0
if ( ! bAllowRecoveryAndSessionManagement )
{
try
@@ -2080,7 +2079,6 @@ void Desktop::OpenClients()
}
}
}
-#endif
// write this information here to avoid depending on vcl in the crash reporter lib
CrashReporter::addKeyValue("Language", Application::GetSettings().GetLanguageTag().getBcp47(), CrashReporter::Create);
diff --git a/sfx2/source/appl/appserv.cxx b/sfx2/source/appl/appserv.cxx
index 30f813d0df3c..8dcb90caac4d 100644
--- a/sfx2/source/appl/appserv.cxx
+++ b/sfx2/source/appl/appserv.cxx
@@ -953,7 +953,7 @@ void SfxApplication::MiscExec_Impl( SfxRequest& rReq )
SfxAbstractDialogFactory* pFact = SfxAbstractDialogFactory::Create();
ScopedVclPtr<VclAbstractDialog> pDlg(
pFact->CreateToolbarmodeDialog(rReq.GetFrameWeld()));
- pDlg->Execute();
+ pDlg->StartExecuteAsync(nullptr);
bDone = true;
break;
}
diff --git a/sfx2/source/control/dispatch.cxx b/sfx2/source/control/dispatch.cxx
index 7dd13bdeb912..36d63319405e 100644
--- a/sfx2/source/control/dispatch.cxx
+++ b/sfx2/source/control/dispatch.cxx
@@ -29,6 +29,7 @@
#include <boost/property_tree/json_parser.hpp>
#include <com/sun/star/awt/PopupMenuDirection.hpp>
+#include <com/sun/star/awt/XPopupMenuAsync.hpp>
#include <com/sun/star/beans/XPropertySet.hpp>
#include <com/sun/star/frame/XDispatchRecorderSupplier.hpp>
#include <com/sun/star/frame/XLayoutManager.hpp>
@@ -1697,19 +1698,27 @@ struct SfxDispatcherPopupFinish final
css::uno::Reference<css::frame::XPopupMenuController> m_xPopupController;
std::function<void(sal_Int16)> m_aCloseFunc;
rtl::Reference<::svt::DialogClosedListener> m_xDialogListener;
- VclPtr<PopupMenu> m_pPopupMenu;
+ css::uno::Reference<css::awt::XPopupMenu> m_xPopupMenu;
DECL_LINK(PopupClosedHdl, css::ui::dialogs::DialogClosedEvent*, void);
SfxDispatcherPopupFinish(css::uno::Reference<css::frame::XPopupMenuController> xPopupController,
- const std::function<void(sal_Int16)>& rCloseFunc, PopupMenu& rVCLMenu)
+ const std::function<void(sal_Int16)>& rCloseFunc,
+ css::uno::Reference<css::awt::XPopupMenu> xPopupMenu)
: m_xPopupController(xPopupController)
, m_aCloseFunc(rCloseFunc)
, m_xDialogListener(new ::svt::DialogClosedListener())
- , m_pPopupMenu(&rVCLMenu)
+ , m_xPopupMenu(xPopupMenu)
{
m_xDialogListener->SetDialogClosedLink(LINK(this, SfxDispatcherPopupFinish, PopupClosedHdl));
}
+
+ void Finish(sal_Int16 nResult)
+ {
+ css::uno::Reference<css::uno::XInterface> xInterface(m_xPopupMenu, css::uno::UNO_QUERY);
+ css::ui::dialogs::DialogClosedEvent aEvt(xInterface, nResult);
+ m_xDialogListener->dialogClosed(aEvt);
+ }
};
IMPL_LINK(SfxDispatcherPopupFinish, PopupClosedHdl, css::ui::dialogs::DialogClosedEvent*, pEvt, void)
@@ -1722,8 +1731,11 @@ IMPL_LINK(SfxDispatcherPopupFinish, PopupClosedHdl, css::ui::dialogs::DialogClos
css::uno::Reference<css::lang::XComponent> xComponent(m_xPopupController, css::uno::UNO_QUERY);
if (xComponent.is())
xComponent->dispose();
- m_pPopupMenu->Finish();
- m_pPopupMenu.disposeAndClear();
+
+ VCLXMenu* pAwtMenu = comphelper::getFromUnoTunnel<VCLXMenu>(m_xPopupMenu);
+ PopupMenu* pPopupMenu = static_cast< PopupMenu*>(pAwtMenu->GetMenu());
+ pPopupMenu->Finish();
+
SfxDispatcher_Impl::m_pActivePopupController = nullptr;
delete this;
}
@@ -1815,15 +1827,11 @@ void SfxDispatcher::ExecutePopup( const OUString& rResName, vcl::Window* pWin, c
const sal_Int16 nFlags = css::awt::PopupMenuDirection::EXECUTE_DOWN;
const css::awt::Rectangle aRect(aPos.X(), aPos.Y(), 1, 1);
css::uno::Reference<css::awt::XWindowPeer> xParent(aEvent.SourceWindow, css::uno::UNO_QUERY);
- css::uno::Reference<css::awt::XPopupMenuAsync xAsyncPopup(xPopupMenu, css::uno::UNO_QUERY);
- pFin = new SfxDispatcherPopupFinish(xPopupController, rCloseFunc, *pVCLMenu);
+ css::uno::Reference<css::awt::XPopupMenuAsync> xAsyncPopup(xPopupMenu, css::uno::UNO_QUERY);
+ pFin = new SfxDispatcherPopupFinish(xPopupController, rCloseFunc, xPopupMenu);
SfxDispatcher_Impl::m_pActivePopupController = &pFin->m_xPopupController;
- if (!rCloseFunc || !xAsyncPopup.is() || !xAsyncPopup->popup(pWindow, aRect, nFlags, pFin->m_xDialogListener))
- {
- css::uno::Reference<css::uno::XInterface> xInterface(*pAwtMenu, css::uno::UNO_QUERY);
- css::ui::dialogs::DialogClosedEvent aEvt(xInterface, xPopupMenu->execute(xParent, aRect, nFlags));
- pFin->m_xDialogListener->dialogClosed(aEvt);
- }
+ if (!rCloseFunc || !xAsyncPopup.is() || !xAsyncPopup->popup(xParent, aRect, nFlags, pFin->m_xDialogListener))
+ pFin->Finish(xPopupMenu->execute(xParent, aRect, nFlags));
}
}
diff --git a/solenv/bin/image-sort.py b/solenv/bin/image-sort.py
index 75b5da6ce0e7..5d248684b4a6 100644
--- a/solenv/bin/image-sort.py
+++ b/solenv/bin/image-sort.py
@@ -30,7 +30,7 @@ def read_icons(fname):
full_path = os.path.join(args.base_path, fname)
if not os.path.exists(full_path):
if not args.quiet:
- print("Skipping non-existent {}\n".format(full_path), file=sys.stderr)
+ print("Skipping non-existent {}".format(full_path), file=sys.stderr)
return images
with open(full_path) as fp:
for line in fp:
diff --git a/solenv/gbuild/platform/EMSCRIPTEN_INTEL_GCC.mk b/solenv/gbuild/platform/EMSCRIPTEN_INTEL_GCC.mk
index 2f254057c957..fd96be05f17e 100644
--- a/solenv/gbuild/platform/EMSCRIPTEN_INTEL_GCC.mk
+++ b/solenv/gbuild/platform/EMSCRIPTEN_INTEL_GCC.mk
@@ -22,7 +22,7 @@ gb_EMSCRIPTEN_CPPFLAGS := -pthread -s USE_PTHREADS=1
# To keep the link time (and memory) down, prevent all rewriting options from wasm-emscripten-finalize
# See emscrypten.py, finalize_wasm, modify_wasm = True
# So we need WASM_BIGINT=1 and ASSERTIONS=1 (2 implies STACK_OVERFLOW_CHECK)
-gb_EMSCRIPTEN_LDFLAGS := $(gb_EMSCRIPTEN_CPPFLAGS) --bind -s TOTAL_MEMORY=1GB -s PTHREAD_POOL_SIZE=4 -s FORCE_FILESYSTEM=1 -s WASM_BIGINT=1 -s ERROR_ON_UNDEFINED_SYMBOLS=1 -s FETCH=1 -s ASSERTIONS=1 -s EXIT_RUNTIME=0 -s EXPORTED_RUNTIME_METHODS=["UTF16ToString","stringToUTF16"]
+gb_EMSCRIPTEN_LDFLAGS := $(gb_EMSCRIPTEN_CPPFLAGS) --bind -s TOTAL_MEMORY=512MB -s PTHREAD_POOL_SIZE=4 -s FORCE_FILESYSTEM=1 -s WASM_BIGINT=1 -s ERROR_ON_UNDEFINED_SYMBOLS=1 -s FETCH=1 -s ASSERTIONS=1 -s EXIT_RUNTIME=0 -s EXPORTED_RUNTIME_METHODS=["UTF16ToString","stringToUTF16"]
gb_EMSCRIPTEN_QTDEFS := -DQT_NO_LINKED_LIST -DQT_NO_JAVA_STYLE_ITERATORS -DQT_NO_EXCEPTIONS -D_LARGEFILE64_SOURCE -D_LARGEFILE_SOURCE -DQT_NO_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB
gb_Executable_EXT := .html
diff --git a/static/CustomTarget_wasm_fs_image.mk b/static/CustomTarget_wasm_fs_image.mk
index ff7182b6d203..c7f4ff76f930 100644
--- a/static/CustomTarget_wasm_fs_image.mk
+++ b/static/CustomTarget_wasm_fs_image.mk
@@ -1146,6 +1146,23 @@ gb_wasm_image_filelist := \
$(INSTROOT)/$(LIBO_SHARE_FOLDER)/fontconfig/conf.d/90-synthetic.conf \
$(INSTROOT)/$(LIBO_SHARE_FOLDER)/fontconfig/fonts.conf \
$(INSTROOT)/$(LIBO_SHARE_FOLDER)/fonts/truetype/fc_local.conf \
+ $(INSTROOT)/$(LIBO_SHARE_FOLDER)/gallery/fontwork.sdg \
+ $(INSTROOT)/$(LIBO_SHARE_FOLDER)/gallery/fontwork.sdv \
+ $(INSTROOT)/$(LIBO_SHARE_FOLDER)/gallery/fontwork.thm \
+ $(INSTROOT)/$(LIBO_SHARE_FOLDER)/liblangtag/common/bcp47/calendar.xml \
+ $(INSTROOT)/$(LIBO_SHARE_FOLDER)/liblangtag/common/bcp47/collation.xml \
+ $(INSTROOT)/$(LIBO_SHARE_FOLDER)/liblangtag/common/bcp47/currency.xml \
+ $(INSTROOT)/$(LIBO_SHARE_FOLDER)/liblangtag/common/bcp47/number.xml \
+ $(INSTROOT)/$(LIBO_SHARE_FOLDER)/liblangtag/common/bcp47/timezone.xml \
+ $(INSTROOT)/$(LIBO_SHARE_FOLDER)/liblangtag/common/bcp47/transform_ime.xml \
+ $(INSTROOT)/$(LIBO_SHARE_FOLDER)/liblangtag/common/bcp47/transform_keyboard.xml \
+ $(INSTROOT)/$(LIBO_SHARE_FOLDER)/liblangtag/common/bcp47/transform_mt.xml \
+ $(INSTROOT)/$(LIBO_SHARE_FOLDER)/liblangtag/common/bcp47/transform_private_use.xml \
+ $(INSTROOT)/$(LIBO_SHARE_FOLDER)/liblangtag/common/bcp47/transform.xml \
+ $(INSTROOT)/$(LIBO_SHARE_FOLDER)/liblangtag/common/bcp47/variant.xml \
+ $(INSTROOT)/$(LIBO_SHARE_FOLDER)/liblangtag/common/supplemental/likelySubtags.xml \
+ $(INSTROOT)/$(LIBO_SHARE_FOLDER)/liblangtag/common/supplemental/supplementalMetadata.xml \
+ $(INSTROOT)/$(LIBO_SHARE_FOLDER)/liblangtag/language-subtag-registry.xml \
$(INSTROOT)/$(LIBO_SHARE_FOLDER)/registry/cjk.xcd \
$(INSTROOT)/$(LIBO_SHARE_FOLDER)/registry/ctlseqcheck.xcd \
$(INSTROOT)/$(LIBO_SHARE_FOLDER)/registry/ctl.xcd \
@@ -1169,6 +1186,7 @@ gb_wasm_image_filelist := \
$(INSTROOT)/$(LIBO_SHARE_RESOURCE_FOLDER)/common/fonts/opens___.ttf \
$(INSTROOT)/$(LIBO_URE_ETC_FOLDER)/$(call gb_Helper_get_rcfile,uno) \
$(INSTROOT)/$(LIBO_URE_MISC_FOLDER)/services.rdb \
+ $(SRCDIR)/android/default-document/example3.odt \
$(SRCDIR)/android/default-document/example.odt \
ifneq ($(filter MORE_FONTS,$(BUILD_TYPE)),)
@@ -1413,7 +1431,7 @@ gb_wasm_image_filelist += \
$(INSTROOT)/$(LIBO_SHARE_FOLDER)/config/soffice.cfg/modules/schart/ui/tp_Trendline.ui \
$(INSTROOT)/$(LIBO_SHARE_FOLDER)/config/soffice.cfg/modules/schart/ui/wizelementspage.ui \
-endif
+endif # !ENABLE_WASM_STRIP_CHART
wasm_fs_image_WORKDIR := $(call gb_CustomTarget_get_workdir,static/wasm_fs_image)
diff --git a/static/soffice_args.js b/static/soffice_args.js
index 4db43905aa07..df6d394f7b4b 100644
--- a/static/soffice_args.js
+++ b/static/soffice_args.js
@@ -1 +1,4 @@
-Module['arguments'] = ['/android/default-document/example.odt'];
+Module['arguments'] = [
+ '--norestore',
+ '/android/default-document/example.odt'
+];
diff --git a/vcl/Module_vcl.mk b/vcl/Module_vcl.mk
index 54f7bceea9cb..945e495d80ce 100644
--- a/vcl/Module_vcl.mk
+++ b/vcl/Module_vcl.mk
@@ -36,7 +36,7 @@ $(eval $(call gb_Module_add_targets,vcl,\
Package_skia_denylist ) \
$(if $(filter DESKTOP,$(BUILD_TYPE)), \
StaticLibrary_vclmain \
- $(if $(or $(DISABLE_GUI),$(DISABLE_DYNLOADING)),Executable_vcldemo, \
+ $(if $(or $(DISABLE_GUI),$(DISABLE_DYNLOADING)),, \
$(if $(ENABLE_MACOSX_SANDBOX),, \
Executable_ui-previewer) \
$(if $(filter LINUX MACOSX SOLARIS WNT %BSD,$(OS)), \
diff --git a/vcl/inc/qt5/QtInstance.hxx b/vcl/inc/qt5/QtInstance.hxx
index 674ba87428c1..c16dc1d03bc6 100644
--- a/vcl/inc/qt5/QtInstance.hxx
+++ b/vcl/inc/qt5/QtInstance.hxx
@@ -74,6 +74,7 @@ private Q_SLOTS:
bool ImplYield(bool bWait, bool bHandleAllCurrentEvents);
static void deleteObjectLater(QObject* pObject);
static void localeChanged();
+ void virtualGeometryChanged(const QRect& rect);
Q_SIGNALS:
bool ImplYieldSignal(bool bWait, bool bHandleAllCurrentEvents);
diff --git a/vcl/qt5/QtFrame.cxx b/vcl/qt5/QtFrame.cxx
index 7c066c92f7f7..022915837d3c 100644
--- a/vcl/qt5/QtFrame.cxx
+++ b/vcl/qt5/QtFrame.cxx
@@ -149,10 +149,10 @@ QtFrame::QtFrame(QtFrame* pParent, SalFrameStyleFlags nStyle, bool bUseCairo)
else if (nStyle & SalFrameStyleFlags::TOOLTIP)
aWinFlags = Qt::ToolTip;
// Can't use Qt::Popup, because it grabs the input focus and generates
- // a focus-out event, reaching the combo box. This used to map to
- // Qt::ToolTip, which doesn't feel that correct...
+ // a focus-out event, reaching the combo box. So we could also use
+ // aWinFlags = Qt::Window | Qt::FramelessWindowHint | Qt::BypassWindowManagerHint;
else if (isPopup())
- aWinFlags = Qt::Window | Qt::FramelessWindowHint | Qt::BypassWindowManagerHint;
+ aWinFlags = Qt::ToolTip | Qt::FramelessWindowHint;
else if (nStyle & SalFrameStyleFlags::TOOLWINDOW)
aWinFlags = Qt::Tool;
// top level windows can't be transient in Qt, so make them dialogs, if they have a parent. At least
@@ -176,8 +176,8 @@ QtFrame::QtFrame(QtFrame* pParent, SalFrameStyleFlags nStyle, bool bUseCairo)
if (pParent && !(pParent->m_nStyle & SalFrameStyleFlags::PLUG))
{
- QWindow* pParentWindow = pParent->GetQWidget()->window()->windowHandle();
- QWindow* pChildWindow = asChild()->window()->windowHandle();
+ QWindow* pParentWindow = pParent->windowHandle();
+ QWindow* pChildWindow = windowHandle();
if (pParentWindow && pChildWindow && (pParentWindow != pChildWindow))
pChildWindow->setTransientParent(pParentWindow);
}
@@ -351,7 +351,11 @@ QWindow* QtFrame::windowHandle() const
{
// set attribute 'Qt::WA_NativeWindow' first to make sure a window handle actually exists
QWidget* pChild = asChild();
+ assert(pChild->window() == pChild);
+#ifndef EMSCRIPTEN
+ // no idea, why this breaks the menubar for EMSCRIPTEN
pChild->setAttribute(Qt::WA_NativeWindow);
+#endif
return pChild->windowHandle();
}
@@ -430,21 +434,27 @@ void QtFrame::modalReparent(bool bVisible)
if (!bVisible)
{
- m_pQWidget->setParent(m_pParent ? m_pParent->asChild() : nullptr,
- m_pQWidget->windowFlags());
+ QWidget* pNewParent = m_pParent ? m_pParent->asChild() : nullptr;
+ if (pNewParent != m_pQWidget->parent())
+ m_pQWidget->setParent(pNewParent, m_pQWidget->windowFlags());
return;
}
if (!QGuiApplication::modalWindow())
return;
+ if (m_pParent->windowHandle() == QGuiApplication::modalWindow())
+ return;
+
QtInstance* pInst = static_cast<QtInstance*>(GetSalData()->m_pInstance);
for (auto* pFrame : pInst->getFrames())
{
- QWidget* pQWidget = static_cast<QtFrame*>(pFrame)->asChild();
- if (pQWidget->windowHandle() == QGuiApplication::modalWindow())
+ QtFrame* pQtFrame = static_cast<QtFrame*>(pFrame);
+ if (pQtFrame->windowHandle() == QGuiApplication::modalWindow())
{
- m_pQWidget->setParent(pQWidget, m_pQWidget->windowFlags());
+ QWidget* pNewParent = pQtFrame->asChild();
+ if (pNewParent != m_pQWidget->parent())
+ m_pQWidget->setParent(pNewParent, m_pQWidget->windowFlags());
break;
}
}
@@ -462,7 +472,7 @@ void QtFrame::Show(bool bVisible, bool bNoActivate)
if (!bVisible) // hide
{
pSalInst->RunInMainThread([this]() {
- asChild()->hide();
+ asChild()->setVisible(false);
if (m_pQWidget->isModal())
modalReparent(false);
});
@@ -477,9 +487,9 @@ void QtFrame::Show(bool bVisible, bool bNoActivate)
QWidget* const pChild = asChild();
if (m_pQWidget->isModal())
modalReparent(true);
- pChild->show();
+ pChild->setVisible(true);
pChild->raise();
- if (!bNoActivate && !isPopup())
+ if (!bNoActivate)
{
pChild->activateWindow();
pChild->setFocus();
diff --git a/vcl/qt5/QtInstance.cxx b/vcl/qt5/QtInstance.cxx
index 00cff01f0d74..6074d8ada93e 100644
--- a/vcl/qt5/QtInstance.cxx
+++ b/vcl/qt5/QtInstance.cxx
@@ -40,6 +40,7 @@
#include <QtCore/QAbstractEventDispatcher>
#include <QtCore/QThread>
+#include <QtGui/QScreen>
#include <QtWidgets/QApplication>
#include <QtWidgets/QWidget>
@@ -248,6 +249,10 @@ QtInstance::QtInstance(std::unique_ptr<QApplication>& pQApp, bool bUseCairo)
connect(QGuiApplication::inputMethod(), &QInputMethod::localeChanged, this,
&QtInstance::localeChanged);
+ for (const QScreen* pCurScreen : QApplication::screens())
+ connect(pCurScreen, &QScreen::virtualGeometryChanged, this,
+ &QtInstance::virtualGeometryChanged);
+
#ifndef EMSCRIPTEN
m_bSupportsOpenGL = true;
#endif
@@ -602,6 +607,13 @@ void* QtInstance::CreateGStreamerSink(const SystemChildWindow* pWindow)
#endif
}
+void QtInstance::virtualGeometryChanged(const QRect&)
+{
+ SalFrame* pAnyFrame = anyFrame();
+ if (pAnyFrame)
+ pAnyFrame->CallCallback(SalEvent::DisplayChanged, nullptr);
+}
+
void QtInstance::AllocFakeCmdlineArgs(std::unique_ptr<char* []>& rFakeArgv,
std::unique_ptr<int>& rFakeArgc,
std::vector<FreeableCStr>& rFakeArgvFreeable)
diff --git a/vcl/qt5/QtWidget.cxx b/vcl/qt5/QtWidget.cxx
index 3078a7133764..edad48d660f8 100644
--- a/vcl/qt5/QtWidget.cxx
+++ b/vcl/qt5/QtWidget.cxx
@@ -630,7 +630,10 @@ QtWidget::QtWidget(QtFrame& rFrame, Qt::WindowFlags f)
{
create();
setMouseTracking(true);
- setFocusPolicy(Qt::StrongFocus);
+ if (!rFrame.isPopup())
+ setFocusPolicy(Qt::StrongFocus);
+ else
+ setFocusPolicy(Qt::ClickFocus);
}
static ExtTextInputAttr lcl_MapUndrelineStyle(QTextCharFormat::UnderlineStyle us)
diff --git a/xmloff/Library_xo.mk b/xmloff/Library_xo.mk
index 7486996d194b..ec98dc671fb6 100644
--- a/xmloff/Library_xo.mk
+++ b/xmloff/Library_xo.mk
@@ -21,9 +21,9 @@ $(eval $(call gb_Library_Library,xo))
$(eval $(call gb_Library_set_componentfiles,xo, \
xmloff/util/xo \
+ xmloff/util/xo.draw \
$(if $(ENABLE_WASM_STRIP_CHART),,xmloff/util/xo.chart) \
$(if $(ENABLE_WASM_STRIP_BASIC_CALC_DRAW_MATH_IMPRESS),, \
- xmloff/util/xo.draw \
xmloff/util/xo.impress \
xmloff/util/xo.writer \
) \