You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
947 lines
40 KiB
947 lines
40 KiB
From 44686bc81055c7bee7f41f9e219c35115ce8119f Mon Sep 17 00:00:00 2001
|
|
From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= <caolanm@redhat.com>
|
|
Date: Wed, 20 Dec 2017 15:29:39 +0000
|
|
Subject: [PATCH] request installation of langpack via packagekit
|
|
MIME-Version: 1.0
|
|
Content-Type: text/plain; charset=UTF-8
|
|
Content-Transfer-Encoding: 8bit
|
|
|
|
if ui is set to track the locale automatically and the current locale
|
|
has no match in installed resources but has a match in the list of
|
|
languages that libreoffice was compiled to contain
|
|
|
|
so e.g. de_AT locale shouldn't trigger the installation of anything if
|
|
langpack-de is already installed and yue_HK shouldn't trigger install
|
|
of anything cause that not supported (at time of writing) for libreoffice
|
|
|
|
put Fedora/RHEL/Ubuntu naming schemes in here.
|
|
|
|
I moved the lang code from svl to svtools so I could use the restart dialog
|
|
to prompt to restart after the langpack is installed, but packagekit's blocking
|
|
mode seems to be no longer blocking and control returns immediately which is a
|
|
change since the last time I played with this stuff, so drop the restart thing
|
|
for now. The lack of a blocking modal also makes the "run this on idle when there's
|
|
a toplevel window up and running" a bit futile, but lets keep that for now anyway.
|
|
|
|
also...
|
|
|
|
set dbus id for existing DbusSessionHelper users
|
|
|
|
Change-Id: I64329e21ae79b6607856de9781bee0274b9cb136
|
|
Reviewed-on: https://gerrit.libreoffice.org/46854
|
|
Tested-by: Jenkins <ci@libreoffice.org>
|
|
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
|
|
Tested-by: Caolán McNamara <caolanm@redhat.com>
|
|
(cherry picked from commit 7cf4eeed81fd333c87dedffa792f5d547b7981f0)
|
|
|
|
Change-Id: Ice731be539850338ccdd8af87839e0b4d83f01e7
|
|
---
|
|
config_host/config_langs.h.in | 10 ++
|
|
config_host/config_vendor.h.in | 10 ++
|
|
configure.ac | 4 +
|
|
cui/source/options/optgdlg.cxx | 3 +-
|
|
desktop/source/app/langselect.cxx | 3 +-
|
|
include/svl/languageoptions.hxx | 3 -
|
|
include/svtools/langhelp.hxx | 3 +
|
|
offapi/org/freedesktop/PackageKit/XModify.idl | 22 ++--
|
|
.../registry/data/org/openoffice/Office/Common.xcu | 3 +
|
|
.../schema/org/openoffice/Office/Common.xcs | 6 +
|
|
sfx2/source/appl/appserv.cxx | 3 +-
|
|
.../sessioninstall/SyncDbusSessionHelper.cxx | 57 +++++----
|
|
.../sessioninstall/SyncDbusSessionHelper.hxx | 20 ++--
|
|
svl/source/config/languageoptions.cxx | 33 ------
|
|
svtools/source/misc/langhelp.cxx | 130 ++++++++++++++++++++-
|
|
sw/source/uibase/app/apphdl.cxx | 3 +-
|
|
vcl/inc/unx/fontmanager.hxx | 6 +-
|
|
vcl/unx/generic/fontmanager/fontconfig.cxx | 93 ++-------------
|
|
vcl/unx/generic/fontmanager/fontmanager.cxx | 2 -
|
|
19 files changed, 235 insertions(+), 179 deletions(-)
|
|
create mode 100644 config_host/config_langs.h.in
|
|
create mode 100644 config_host/config_vendor.h.in
|
|
|
|
diff --git a/config_host/config_langs.h.in b/config_host/config_langs.h.in
|
|
new file mode 100644
|
|
index 0000000..d60a5c1
|
|
--- /dev/null
|
|
+++ b/config_host/config_langs.h.in
|
|
@@ -0,0 +1,10 @@
|
|
+/* Configuration of restriction on supported ui languages, by the
|
|
+ * --with-lang option.
|
|
+ */
|
|
+
|
|
+#ifndef CONFIG_LANGS_H
|
|
+#define CONFIG_LANGS_H
|
|
+
|
|
+#define WITH_LANG ""
|
|
+
|
|
+#endif
|
|
diff --git a/config_host/config_vendor.h.in b/config_host/config_vendor.h.in
|
|
new file mode 100644
|
|
index 0000000..3260221
|
|
--- /dev/null
|
|
+++ b/config_host/config_vendor.h.in
|
|
@@ -0,0 +1,10 @@
|
|
+/* Configuration of restriction on supported ui languages, by the
|
|
+ * --with-lang option.
|
|
+ */
|
|
+
|
|
+#ifndef CONFIG_VENDOR_H
|
|
+#define CONFIG_VENDOR_H
|
|
+
|
|
+#define OOO_VENDOR ""
|
|
+
|
|
+#endif
|
|
diff --git a/configure.ac b/configure.ac
|
|
index bbb47e6..55e2aa0 100644
|
|
--- a/configure.ac
|
|
+++ b/configure.ac
|
|
@@ -11777,6 +11777,7 @@ if test "$enable_release_build" = "" -o "$enable_release_build" = "no"; then
|
|
ALL_LANGS=`echo $ALL_LANGS qtz`
|
|
fi
|
|
AC_SUBST(ALL_LANGS)
|
|
+AC_DEFINE_UNQUOTED(WITH_LANG,"$WITH_LANG")
|
|
AC_SUBST(WITH_LANG)
|
|
AC_SUBST(WITH_LANG_LIST)
|
|
AC_SUBST(GIT_NEEDED_SUBMODULES)
|
|
@@ -11925,6 +11926,7 @@ else
|
|
OOO_VENDOR="$with_vendor"
|
|
AC_MSG_RESULT([$OOO_VENDOR])
|
|
fi
|
|
+AC_DEFINE_UNQUOTED(OOO_VENDOR,"$OOO_VENDOR")
|
|
AC_SUBST(OOO_VENDOR)
|
|
|
|
if test "$_os" = "Android" ; then
|
|
@@ -12538,6 +12540,7 @@ AC_CONFIG_HEADERS([config_host/config_gio.h])
|
|
AC_CONFIG_HEADERS([config_host/config_global.h])
|
|
AC_CONFIG_HEADERS([config_host/config_gpgme.h])
|
|
AC_CONFIG_HEADERS([config_host/config_java.h])
|
|
+AC_CONFIG_HEADERS([config_host/config_langs.h])
|
|
AC_CONFIG_HEADERS([config_host/config_lgpl.h])
|
|
AC_CONFIG_HEADERS([config_host/config_liblangtag.h])
|
|
AC_CONFIG_HEADERS([config_host/config_locales.h])
|
|
@@ -12549,6 +12552,7 @@ AC_CONFIG_HEADERS([config_host/config_options.h])
|
|
AC_CONFIG_HEADERS([config_host/config_options_calc.h])
|
|
AC_CONFIG_HEADERS([config_host/config_test.h])
|
|
AC_CONFIG_HEADERS([config_host/config_typesizes.h])
|
|
+AC_CONFIG_HEADERS([config_host/config_vendor.h])
|
|
AC_CONFIG_HEADERS([config_host/config_vcl.h])
|
|
AC_CONFIG_HEADERS([config_host/config_vclplug.h])
|
|
AC_CONFIG_HEADERS([config_host/config_version.h])
|
|
diff --git a/cui/source/options/optgdlg.cxx b/cui/source/options/optgdlg.cxx
|
|
index 1c90931..7965179 100644
|
|
--- a/cui/source/options/optgdlg.cxx
|
|
+++ b/cui/source/options/optgdlg.cxx
|
|
@@ -21,6 +21,7 @@
|
|
#include <svl/zforlist.hxx>
|
|
#include <svl/currencytable.hxx>
|
|
#include <svtools/grfmgr.hxx>
|
|
+#include <svtools/langhelp.hxx>
|
|
#include <svl/flagitem.hxx>
|
|
#include <sfx2/dispatch.hxx>
|
|
#include <unotools/lingucfg.hxx>
|
|
@@ -1122,7 +1123,7 @@ namespace
|
|
LanguageTag GetInstalledLocaleForSystemUILanguage()
|
|
{
|
|
css::uno::Sequence<OUString> inst(officecfg::Setup::Office::InstalledLocales::get()->getElementNames());
|
|
- return LanguageTag(getInstalledLocaleForSystemUILanguage(inst)).makeFallback();
|
|
+ return LanguageTag(getInstalledLocaleForSystemUILanguage(inst, false)).makeFallback();
|
|
}
|
|
}
|
|
|
|
diff --git a/desktop/source/app/langselect.cxx b/desktop/source/app/langselect.cxx
|
|
index 4ce877a..86ce743 100644
|
|
--- a/desktop/source/app/langselect.cxx
|
|
+++ b/desktop/source/app/langselect.cxx
|
|
@@ -37,6 +37,7 @@
|
|
#include <sal/log.hxx>
|
|
#include <sal/types.h>
|
|
#include <svl/languageoptions.hxx>
|
|
+#include <svtools/langhelp.hxx>
|
|
|
|
#include <app.hxx>
|
|
|
|
@@ -103,7 +104,7 @@ bool prepareLocale() {
|
|
}
|
|
}
|
|
if (locale.isEmpty()) {
|
|
- locale = getInstalledLocaleForSystemUILanguage(inst);
|
|
+ locale = getInstalledLocaleForSystemUILanguage(inst, true);
|
|
}
|
|
if (locale.isEmpty()) {
|
|
return false;
|
|
diff --git a/include/svl/languageoptions.hxx b/include/svl/languageoptions.hxx
|
|
index f386cb6..6de8eb5 100644
|
|
--- a/include/svl/languageoptions.hxx
|
|
+++ b/include/svl/languageoptions.hxx
|
|
@@ -131,9 +131,6 @@ public:
|
|
bool isCJKKeyboardLayoutInstalled() const;
|
|
};
|
|
|
|
-OUString SVL_DLLPUBLIC getInstalledLocaleForLanguage(css::uno::Sequence<OUString> const & installed, OUString const & locale);
|
|
-OUString SVL_DLLPUBLIC getInstalledLocaleForSystemUILanguage(css::uno::Sequence<OUString> const & installed);
|
|
-
|
|
#endif // INCLUDED_SVL_LANGUAGEOPTIONS_HXX
|
|
|
|
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|
|
diff --git a/include/svtools/langhelp.hxx b/include/svtools/langhelp.hxx
|
|
index a3a84df..db22bb3 100644
|
|
--- a/include/svtools/langhelp.hxx
|
|
+++ b/include/svtools/langhelp.hxx
|
|
@@ -22,6 +22,9 @@
|
|
*/
|
|
SVT_DLLPUBLIC void localizeWebserviceURI( OUString& io_rURI );
|
|
|
|
+OUString SVT_DLLPUBLIC getInstalledLocaleForLanguage(css::uno::Sequence<OUString> const & installed, OUString const & locale);
|
|
+OUString SVT_DLLPUBLIC getInstalledLocaleForSystemUILanguage(css::uno::Sequence<OUString> const & installed, bool bRequestInstallIfMissing);
|
|
+
|
|
#endif
|
|
|
|
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|
|
diff --git a/offapi/org/freedesktop/PackageKit/XModify.idl b/offapi/org/freedesktop/PackageKit/XModify.idl
|
|
index a712bb5..69544e9 100644
|
|
--- a/offapi/org/freedesktop/PackageKit/XModify.idl
|
|
+++ b/offapi/org/freedesktop/PackageKit/XModify.idl
|
|
@@ -22,7 +22,7 @@ module PackageKit
|
|
* The interface used for modifying the package database.
|
|
*
|
|
* @sa
|
|
- * https://git.gnome.org/browse/gnome-software/tree/src/org.freedesktop.PackageKit.xml
|
|
+ * https://git.gnome.org/browse/gnome-software/tree/src/org.freedesktop.PackageKit.Modify2.xml
|
|
* for documentation of the corresponding D-Bus interface
|
|
*/
|
|
interface XModify : com::sun::star::uno::XInterface
|
|
@@ -32,70 +32,70 @@ interface XModify : com::sun::star::uno::XInterface
|
|
* @since LibreOffice 4.0
|
|
*/
|
|
|
|
- void InstallPackageFiles( [in] unsigned long xid, [in] sequence< string > files, [in] string interaction);
|
|
+ void InstallPackageFiles([in] sequence< string > files, [in] string interaction);
|
|
|
|
/**
|
|
* Installs sequence< string > packages to provide sequence< string > files.
|
|
* @since LibreOffice 4.0
|
|
*/
|
|
|
|
- void InstallProvideFiles( [in] unsigned long xid, [in] sequence< string > files, [in] string interaction);
|
|
+ void InstallProvideFiles([in] sequence< string > files, [in] string interaction);
|
|
|
|
/**
|
|
* Installs sequence< string > packages to provide sequence< string > files.
|
|
* @since LibreOffice 4.0
|
|
*/
|
|
|
|
- void InstallCatalogs( [in] unsigned long xid, [in] sequence< string > files, [in] string interaction);
|
|
+ void InstallCatalogs([in] sequence< string > files, [in] string interaction);
|
|
|
|
/**
|
|
* Installs sequence< string > packages from a configured software source.
|
|
* @since LibreOffice 4.0
|
|
*/
|
|
|
|
- void InstallPackageNames( [in] unsigned long xid, [in] sequence< string > packages, [in] string interaction);
|
|
+ void InstallPackageNames([in] sequence< string > packages, [in] string interaction);
|
|
|
|
/**
|
|
* Installs mimetype handlers from a configured software source.
|
|
* @since LibreOffice 4.0
|
|
*/
|
|
|
|
- void InstallMimeTypes( [in] unsigned long xid, [in] sequence< string > mimeTypes, [in] string interaction);
|
|
+ void InstallMimeTypes([in] sequence< string > mimeTypes, [in] string interaction);
|
|
|
|
/**
|
|
* Installs fontconfig resources ( [in] usually fonts) from a configured software source.
|
|
* @since LibreOffice 4.0
|
|
*/
|
|
|
|
- void InstallFontconfigResources( [in] unsigned long xid, [in] sequence< string > resources, [in] string interaction);
|
|
+ void InstallFontconfigResources([in] sequence< string > resources, [in] string interaction);
|
|
|
|
/**
|
|
* Installs GStreamer resources ( [in] usually codecs) from a configured software source.
|
|
* @since LibreOffice 4.0
|
|
*/
|
|
|
|
- void InstallGStreamerResources( [in] unsigned long xid, [in] sequence< string > resources, [in] string interaction);
|
|
+ void InstallGStreamerResources([in] sequence< string > resources, [in] string interaction);
|
|
|
|
/**
|
|
* Installs resources of a given type from a configured software source.
|
|
* @since LibreOffice 4.0
|
|
*/
|
|
|
|
- void InstallResources( [in] unsigned long xid, [in] sequence< string > types, [in] sequence< string > resources, [in] string interaction);
|
|
+ void InstallResources([in] sequence< string > types, [in] sequence< string > resources, [in] string interaction);
|
|
|
|
/**
|
|
* Removes sequence< string > packages that provide the given local sequence< string > files.
|
|
* @since LibreOffice 4.0
|
|
*/
|
|
|
|
- void RemovePackageByFiles( [in] unsigned long xid, [in] sequence< string > files, [in] string interaction);
|
|
+ void RemovePackageByFiles([in] sequence< string > files, [in] string interaction);
|
|
|
|
/**
|
|
* Installs printer drivers from a configured software source.
|
|
* @since LibreOffice 4.0
|
|
*/
|
|
|
|
- void InstallPrinterDrivers( [in] unsigned long xid, [in] sequence< string > files, [in] string interaction);
|
|
+ void InstallPrinterDrivers([in] sequence< string > files, [in] string interaction);
|
|
};
|
|
|
|
} ; // PackageKit
|
|
diff --git a/officecfg/registry/data/org/openoffice/Office/Common.xcu b/officecfg/registry/data/org/openoffice/Office/Common.xcu
|
|
index 6b94ff9..26d1ba0 100644
|
|
--- a/officecfg/registry/data/org/openoffice/Office/Common.xcu
|
|
+++ b/officecfg/registry/data/org/openoffice/Office/Common.xcu
|
|
@@ -535,6 +535,9 @@
|
|
<prop oor:name="EnableFontInstallation" oor:type="xs:boolean">
|
|
<value install:module="unx">true</value>
|
|
</prop>
|
|
+ <prop oor:name="EnableLangpackInstallation" oor:type="xs:boolean">
|
|
+ <value install:module="unx">true</value>
|
|
+ </prop>
|
|
</node>
|
|
<node oor:name="Classification">
|
|
<prop oor:name="Policy" oor:type="xs:short">
|
|
diff --git a/officecfg/registry/schema/org/openoffice/Office/Common.xcs b/officecfg/registry/schema/org/openoffice/Office/Common.xcs
|
|
index f9816fc..2884179 100644
|
|
--- a/officecfg/registry/schema/org/openoffice/Office/Common.xcs
|
|
+++ b/officecfg/registry/schema/org/openoffice/Office/Common.xcs
|
|
@@ -6382,6 +6382,12 @@
|
|
</info>
|
|
<value>true</value>
|
|
</prop>
|
|
+ <prop oor:name="EnableLangpackInstallation" oor:type="xs:boolean" oor:nillable="false">
|
|
+ <info>
|
|
+ <desc>Specifies if missing langpack installation should be triggered.</desc>
|
|
+ </info>
|
|
+ <value>true</value>
|
|
+ </prop>
|
|
</group>
|
|
<group oor:name="Classification">
|
|
<info>
|
|
diff --git a/sfx2/source/appl/appserv.cxx b/sfx2/source/appl/appserv.cxx
|
|
index 1e2a2ec..e48e5aa 100644
|
|
--- a/sfx2/source/appl/appserv.cxx
|
|
+++ b/sfx2/source/appl/appserv.cxx
|
|
@@ -59,6 +59,7 @@
|
|
#include <unotools/configmgr.hxx>
|
|
#include <tools/diagnose_ex.h>
|
|
#include <vcl/layout.hxx>
|
|
+#include <vcl/sysdata.hxx>
|
|
#include <svl/intitem.hxx>
|
|
#include <svl/eitem.hxx>
|
|
#include <svl/stritem.hxx>
|
|
@@ -196,7 +197,7 @@ namespace
|
|
using namespace svtools;
|
|
Reference< XSyncDbusSessionHelper > xSyncDbusSessionHelper(SyncDbusSessionHelper::create(comphelper::getProcessComponentContext()));
|
|
Sequence< OUString > vPackages { "libreoffice-base" };
|
|
- xSyncDbusSessionHelper->InstallPackageNames(0, vPackages, OUString());
|
|
+ xSyncDbusSessionHelper->InstallPackageNames(vPackages, OUString());
|
|
// Ill be back (hopefully)!
|
|
SolarMutexGuard aGuard;
|
|
executeRestartDialog(comphelper::getProcessComponentContext(), nullptr, RESTART_REASON_BIBLIOGRAPHY_INSTALL);
|
|
diff --git a/shell/source/sessioninstall/SyncDbusSessionHelper.cxx b/shell/source/sessioninstall/SyncDbusSessionHelper.cxx
|
|
index a1211f7..1938077 100644
|
|
--- a/shell/source/sessioninstall/SyncDbusSessionHelper.cxx
|
|
+++ b/shell/source/sessioninstall/SyncDbusSessionHelper.cxx
|
|
@@ -18,7 +18,7 @@ using namespace ::com::sun::star::uno;
|
|
|
|
namespace
|
|
{
|
|
- struct GVariantDeleter { void operator()(GVariant* pV) { g_variant_unref(pV); } };
|
|
+ struct GVariantDeleter { void operator()(GVariant* pV) { if (pV) g_variant_unref(pV); } };
|
|
struct GVariantBuilderDeleter { void operator()(GVariantBuilder* pVB) { g_variant_builder_unref(pVB); } };
|
|
template <typename T> struct GObjectDeleter { void operator()(T* pO) { g_object_unref(pO); } };
|
|
class GErrorWrapper
|
|
@@ -55,8 +55,15 @@ namespace
|
|
return proxy;
|
|
}
|
|
|
|
+ static GVariant* pk_make_platform_data()
|
|
+ {
|
|
+ GVariantBuilder builder;
|
|
+ g_variant_builder_init(&builder, G_VARIANT_TYPE("a{sv}"));
|
|
+ return g_variant_builder_end(&builder);
|
|
+ }
|
|
+
|
|
void request(
|
|
- char const * method, sal_uInt32 xid,
|
|
+ char const * method,
|
|
css::uno::Sequence<OUString> const & resources,
|
|
OUString const & interaction)
|
|
{
|
|
@@ -70,14 +77,14 @@ void request(
|
|
}
|
|
auto iactUtf8(OUStringToOString(interaction, RTL_TEXTENCODING_UTF8));
|
|
std::shared_ptr<GDBusProxy> proxy(
|
|
- lcl_GetPackageKitProxy("Modify"), GObjectDeleter<GDBusProxy>());
|
|
+ lcl_GetPackageKitProxy("Modify2"), GObjectDeleter<GDBusProxy>());
|
|
GErrorWrapper error;
|
|
- g_dbus_proxy_call_sync(
|
|
+ std::shared_ptr<GVariant> result(g_dbus_proxy_call_sync(
|
|
proxy.get(), method,
|
|
g_variant_new(
|
|
- "(uass)", static_cast<guint32>(xid), builder.get(),
|
|
- iactUtf8.getStr()),
|
|
- G_DBUS_CALL_FLAGS_NONE, -1, nullptr, &error.getRef());
|
|
+ "(asss@a{sv})", builder.get(), iactUtf8.getStr(),
|
|
+ "libreoffice-startcenter.desktop", pk_make_platform_data()),
|
|
+ G_DBUS_CALL_FLAGS_NONE, -1, nullptr, &error.getRef()), GVariantDeleter());
|
|
}
|
|
|
|
}
|
|
@@ -92,66 +99,66 @@ namespace shell { namespace sessioninstall
|
|
}
|
|
|
|
void SyncDbusSessionHelper::InstallPackageFiles(
|
|
- sal_uInt32 xid, css::uno::Sequence<OUString> const & files,
|
|
+ css::uno::Sequence<OUString> const & files,
|
|
OUString const & interaction)
|
|
{
|
|
- request("InstallPackageFiles", xid, files, interaction);
|
|
+ request("InstallPackageFiles", files, interaction);
|
|
}
|
|
|
|
void SyncDbusSessionHelper::InstallProvideFiles(
|
|
- sal_uInt32 xid, css::uno::Sequence<OUString> const & files,
|
|
+ css::uno::Sequence<OUString> const & files,
|
|
OUString const & interaction)
|
|
{
|
|
- request("InstallProvideFiles", xid, files, interaction);
|
|
+ request("InstallProvideFiles", files, interaction);
|
|
}
|
|
|
|
void SyncDbusSessionHelper::InstallCatalogs(
|
|
- sal_uInt32 xid, css::uno::Sequence<OUString> const & files,
|
|
+ css::uno::Sequence<OUString> const & files,
|
|
OUString const & interaction)
|
|
{
|
|
- request("InstallCatalogs", xid, files, interaction);
|
|
+ request("InstallCatalogs", files, interaction);
|
|
}
|
|
|
|
void SyncDbusSessionHelper::InstallPackageNames(
|
|
- sal_uInt32 xid, css::uno::Sequence<OUString> const & packages,
|
|
+ css::uno::Sequence<OUString> const & packages,
|
|
OUString const & interaction)
|
|
{
|
|
- request("InstallPackageNames", xid, packages, interaction);
|
|
+ request("InstallPackageNames", packages, interaction);
|
|
}
|
|
|
|
void SyncDbusSessionHelper::InstallMimeTypes(
|
|
- sal_uInt32 xid, css::uno::Sequence<OUString> const & mimeTypes,
|
|
+ css::uno::Sequence<OUString> const & mimeTypes,
|
|
OUString const & interaction)
|
|
{
|
|
- request("InstallMimeTypes", xid, mimeTypes, interaction);
|
|
+ request("InstallMimeTypes", mimeTypes, interaction);
|
|
}
|
|
|
|
void SyncDbusSessionHelper::InstallFontconfigResources(
|
|
- sal_uInt32 xid, css::uno::Sequence<OUString> const & resources,
|
|
+ css::uno::Sequence<OUString> const & resources,
|
|
OUString const & interaction)
|
|
{
|
|
- request("InstallFontconfigResources", xid, resources, interaction);
|
|
+ request("InstallFontconfigResources", resources, interaction);
|
|
}
|
|
|
|
void SyncDbusSessionHelper::InstallGStreamerResources(
|
|
- sal_uInt32 xid, css::uno::Sequence<OUString> const & resources,
|
|
+ css::uno::Sequence<OUString> const & resources,
|
|
OUString const & interaction)
|
|
{
|
|
- request("InstallGStreamerResources", xid, resources, interaction);
|
|
+ request("InstallGStreamerResources", resources, interaction);
|
|
}
|
|
|
|
void SyncDbusSessionHelper::RemovePackageByFiles(
|
|
- sal_uInt32 xid, css::uno::Sequence<OUString> const & files,
|
|
+ css::uno::Sequence<OUString> const & files,
|
|
OUString const & interaction)
|
|
{
|
|
- request("RemovePackageByFiles", xid, files, interaction);
|
|
+ request("RemovePackageByFiles", files, interaction);
|
|
}
|
|
|
|
void SyncDbusSessionHelper::InstallPrinterDrivers(
|
|
- sal_uInt32 xid, css::uno::Sequence<OUString> const & files,
|
|
+ css::uno::Sequence<OUString> const & files,
|
|
OUString const & interaction)
|
|
{
|
|
- request("InstallPrinteDrivers", xid, files, interaction);
|
|
+ request("InstallPrinteDrivers", files, interaction);
|
|
}
|
|
|
|
void SAL_CALL SyncDbusSessionHelper::IsInstalled( const OUString& sPackagename, const OUString& sInteraction, sal_Bool& o_isInstalled )
|
|
diff --git a/shell/source/sessioninstall/SyncDbusSessionHelper.hxx b/shell/source/sessioninstall/SyncDbusSessionHelper.hxx
|
|
index 731b649..72b17ba 100644
|
|
--- a/shell/source/sessioninstall/SyncDbusSessionHelper.hxx
|
|
+++ b/shell/source/sessioninstall/SyncDbusSessionHelper.hxx
|
|
@@ -23,26 +23,26 @@ namespace shell { namespace sessioninstall
|
|
SyncDbusSessionHelper(css::uno::Reference< css::uno::XComponentContext> const&);
|
|
|
|
// XModify Methods
|
|
- virtual void SAL_CALL InstallPackageFiles( ::sal_uInt32 xid, const css::uno::Sequence< OUString >& files, const OUString& interaction ) override;
|
|
+ virtual void SAL_CALL InstallPackageFiles( const css::uno::Sequence< OUString >& files, const OUString& interaction ) override;
|
|
|
|
- virtual void SAL_CALL InstallProvideFiles( ::sal_uInt32 xid, const css::uno::Sequence< OUString >& files, const OUString& interaction ) override;
|
|
+ virtual void SAL_CALL InstallProvideFiles( const css::uno::Sequence< OUString >& files, const OUString& interaction ) override;
|
|
|
|
- virtual void SAL_CALL InstallCatalogs( ::sal_uInt32 xid, const css::uno::Sequence< OUString >& files, const OUString& interaction ) override;
|
|
+ virtual void SAL_CALL InstallCatalogs( const css::uno::Sequence< OUString >& files, const OUString& interaction ) override;
|
|
|
|
- virtual void SAL_CALL InstallPackageNames( ::sal_uInt32 xid, const css::uno::Sequence< OUString >& packages, const OUString& interaction ) override;
|
|
+ virtual void SAL_CALL InstallPackageNames( const css::uno::Sequence< OUString >& packages, const OUString& interaction ) override;
|
|
|
|
- virtual void SAL_CALL InstallMimeTypes( ::sal_uInt32 xid, const css::uno::Sequence< OUString >& mimeTypes, const OUString& interaction ) override;
|
|
+ virtual void SAL_CALL InstallMimeTypes( const css::uno::Sequence< OUString >& mimeTypes, const OUString& interaction ) override;
|
|
|
|
- virtual void SAL_CALL InstallFontconfigResources( ::sal_uInt32 xid, const css::uno::Sequence< OUString >& resources, const OUString& interaction ) override;
|
|
+ virtual void SAL_CALL InstallFontconfigResources( const css::uno::Sequence< OUString >& resources, const OUString& interaction ) override;
|
|
|
|
- virtual void SAL_CALL InstallGStreamerResources( ::sal_uInt32 xid, const css::uno::Sequence< OUString >& resources, const OUString& interaction ) override;
|
|
+ virtual void SAL_CALL InstallGStreamerResources( const css::uno::Sequence< OUString >& resources, const OUString& interaction ) override;
|
|
|
|
- virtual void SAL_CALL InstallResources( ::sal_uInt32 /* xid */, const css::uno::Sequence< OUString >& /* types */, const css::uno::Sequence< OUString >& /* resources */, const OUString& /* interaction */ ) override
|
|
+ virtual void SAL_CALL InstallResources( const css::uno::Sequence< OUString >& /* types */, const css::uno::Sequence< OUString >& /* resources */, const OUString& /* interaction */ ) override
|
|
{ throw css::uno::RuntimeException(); } // not implemented
|
|
|
|
- virtual void SAL_CALL RemovePackageByFiles( ::sal_uInt32 xid, const css::uno::Sequence< OUString >& files, const OUString& interaction ) override;
|
|
+ virtual void SAL_CALL RemovePackageByFiles( const css::uno::Sequence< OUString >& files, const OUString& interaction ) override;
|
|
|
|
- virtual void SAL_CALL InstallPrinterDrivers( ::sal_uInt32 xid, const css::uno::Sequence< OUString >& files, const OUString& interaction ) override;
|
|
+ virtual void SAL_CALL InstallPrinterDrivers( const css::uno::Sequence< OUString >& files, const OUString& interaction ) override;
|
|
|
|
// XQuery Methods
|
|
virtual void SAL_CALL IsInstalled( const OUString& /* package_name */, const OUString& /* interaction */, sal_Bool& /* installed */ ) override;
|
|
diff --git a/svl/source/config/languageoptions.cxx b/svl/source/config/languageoptions.cxx
|
|
index 9f9fe45..74af031 100644
|
|
--- a/svl/source/config/languageoptions.cxx
|
|
+++ b/svl/source/config/languageoptions.cxx
|
|
@@ -27,7 +27,6 @@
|
|
#include <rtl/instance.hxx>
|
|
#include <com/sun/star/i18n/ScriptType.hpp>
|
|
#include <unotools/syslocale.hxx>
|
|
-#include <officecfg/System.hxx>
|
|
|
|
#ifdef _WIN32
|
|
#if !defined WIN32_LEAN_AND_MEAN
|
|
@@ -256,41 +255,9 @@ bool SvtSystemLanguageOptions::isKeyboardLayoutTypeInstalled(sal_Int16 scriptTyp
|
|
return isInstalled;
|
|
}
|
|
|
|
-
|
|
bool SvtSystemLanguageOptions::isCJKKeyboardLayoutInstalled() const
|
|
{
|
|
return isKeyboardLayoutTypeInstalled(css::i18n::ScriptType::ASIAN);
|
|
}
|
|
|
|
-OUString getInstalledLocaleForLanguage(css::uno::Sequence<OUString> const & installed, OUString const & locale)
|
|
-{
|
|
- if (locale.isEmpty())
|
|
- return OUString(); // do not attempt to resolve anything
|
|
-
|
|
- for (sal_Int32 i = 0; i != installed.getLength(); ++i) {
|
|
- if (installed[i] == locale) {
|
|
- return installed[i];
|
|
- }
|
|
- }
|
|
- std::vector<OUString> fallbacks(LanguageTag(locale).getFallbackStrings(false));
|
|
- for (OUString & rf : fallbacks) {
|
|
- for (sal_Int32 i = 0; i != installed.getLength(); ++i) {
|
|
- if (installed[i] == rf) {
|
|
- return installed[i];
|
|
- }
|
|
- }
|
|
- }
|
|
- return OUString();
|
|
-}
|
|
-
|
|
-OUString getInstalledLocaleForSystemUILanguage(const css::uno::Sequence<OUString>& rLocaleElementNames)
|
|
-{
|
|
- OUString locale = getInstalledLocaleForLanguage(rLocaleElementNames, officecfg::System::L10N::UILocale::get());
|
|
- if (locale.isEmpty())
|
|
- locale = getInstalledLocaleForLanguage(rLocaleElementNames, "en-US");
|
|
- if (locale.isEmpty() && rLocaleElementNames.hasElements())
|
|
- locale = rLocaleElementNames[0];
|
|
- return locale;
|
|
-}
|
|
-
|
|
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|
|
diff --git a/svtools/source/misc/langhelp.cxx b/svtools/source/misc/langhelp.cxx
|
|
index 16a3a1d..1e4c5c5 100644
|
|
--- a/svtools/source/misc/langhelp.cxx
|
|
+++ b/svtools/source/misc/langhelp.cxx
|
|
@@ -7,12 +7,20 @@
|
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
|
*/
|
|
|
|
-
|
|
+#include <comphelper/sequence.hxx>
|
|
+#include <i18nlangtag/mslangid.hxx>
|
|
+#include <officecfg/Office/Common.hxx>
|
|
+#include <officecfg/System.hxx>
|
|
+#include <org/freedesktop/PackageKit/SyncDbusSessionHelper.hpp>
|
|
+#include <rtl/ustring.hxx>
|
|
#include <svtools/langhelp.hxx>
|
|
-
|
|
+#include <vcl/idle.hxx>
|
|
#include <vcl/svapp.hxx>
|
|
+#include <vcl/sysdata.hxx>
|
|
#include <vcl/settings.hxx>
|
|
-#include <rtl/ustring.hxx>
|
|
+#include <vcl/window.hxx>
|
|
+#include <config_langs.h>
|
|
+#include <config_vendor.h>
|
|
|
|
void localizeWebserviceURI( OUString& rURI )
|
|
{
|
|
@@ -33,4 +41,120 @@ void localizeWebserviceURI( OUString& rURI )
|
|
rURI += aLang;
|
|
}
|
|
|
|
+OUString getInstalledLocaleForLanguage(css::uno::Sequence<OUString> const & installed, OUString const & locale)
|
|
+{
|
|
+ if (locale.isEmpty())
|
|
+ return OUString(); // do not attempt to resolve anything
|
|
+
|
|
+ for (sal_Int32 i = 0; i != installed.getLength(); ++i) {
|
|
+ if (installed[i] == locale) {
|
|
+ return installed[i];
|
|
+ }
|
|
+ }
|
|
+ std::vector<OUString> fallbacks(LanguageTag(locale).getFallbackStrings(false));
|
|
+ for (OUString & rf : fallbacks) {
|
|
+ for (sal_Int32 i = 0; i != installed.getLength(); ++i) {
|
|
+ if (installed[i] == rf) {
|
|
+ return installed[i];
|
|
+ }
|
|
+ }
|
|
+ }
|
|
+ return OUString();
|
|
+}
|
|
+
|
|
+static std::unique_ptr<Idle> xLangpackInstaller;
|
|
+
|
|
+class InstallLangpack : public Idle
|
|
+{
|
|
+ std::vector<OUString> m_aPackages;
|
|
+public:
|
|
+ explicit InstallLangpack(const std::vector<OUString>& rPackages)
|
|
+ : Idle("install langpack")
|
|
+ , m_aPackages(rPackages)
|
|
+ {
|
|
+ SetPriority(TaskPriority::LOWEST);
|
|
+ }
|
|
+
|
|
+ virtual void Invoke() override
|
|
+ {
|
|
+ vcl::Window* pTopWindow = Application::GetActiveTopWindow();
|
|
+ if (!pTopWindow)
|
|
+ pTopWindow = Application::GetFirstTopLevelWindow();
|
|
+ if (!pTopWindow)
|
|
+ {
|
|
+ Start();
|
|
+ return;
|
|
+ }
|
|
+ try
|
|
+ {
|
|
+ using namespace org::freedesktop::PackageKit;
|
|
+ css::uno::Reference<XSyncDbusSessionHelper> xSyncDbusSessionHelper(SyncDbusSessionHelper::create(comphelper::getProcessComponentContext()));
|
|
+ xSyncDbusSessionHelper->InstallPackageNames(comphelper::containerToSequence(m_aPackages), OUString());
|
|
+ }
|
|
+ catch (const css::uno::Exception& e)
|
|
+ {
|
|
+ SAL_INFO("svl", "trying to install a LibreOffice langpack, caught " << e);
|
|
+ }
|
|
+ xLangpackInstaller.reset();
|
|
+ }
|
|
+};
|
|
+
|
|
+OUString getInstalledLocaleForSystemUILanguage(const css::uno::Sequence<OUString>& rLocaleElementNames, bool bRequestInstallIfMissing)
|
|
+{
|
|
+ OUString wantedLocale = officecfg::System::L10N::UILocale::get();
|
|
+ OUString locale = getInstalledLocaleForLanguage(rLocaleElementNames, wantedLocale);
|
|
+ if (bRequestInstallIfMissing && locale.isEmpty() && !wantedLocale.isEmpty() && !Application::IsHeadlessModeEnabled() &&
|
|
+ officecfg::Office::Common::PackageKit::EnableLangpackInstallation::get())
|
|
+ {
|
|
+ LanguageTag aWantedTag(wantedLocale);
|
|
+ if (aWantedTag.getLanguage() != "en")
|
|
+ {
|
|
+ // We try these bases + the exact locale + fallback locale.
|
|
+ //
|
|
+ // The theory is that we can request a bunch of packages
|
|
+ // and it's a success if one of them is available
|
|
+ std::vector<OUString> aPackages;
|
|
+ OUString sAvailableLocales(WITH_LANG);
|
|
+ std::vector<OUString> aAvailable;
|
|
+ sal_Int32 nIndex = 0;
|
|
+ do
|
|
+ {
|
|
+ aAvailable.emplace_back(sAvailableLocales.getToken(0, ' ', nIndex));
|
|
+ }
|
|
+ while (nIndex >= 0);
|
|
+ OUString install = getInstalledLocaleForLanguage(comphelper::containerToSequence(aAvailable), wantedLocale);
|
|
+ if (!install.isEmpty() && install != "en-US")
|
|
+ {
|
|
+ if (strcmp(OOO_VENDOR, "Red Hat, Inc.") == 0 || strcmp(OOO_VENDOR, "The Fedora Project") == 0)
|
|
+ {
|
|
+ // langpack is the typical Fedora/RHEL naming convention
|
|
+ LanguageType eType = aWantedTag.getLanguageType();
|
|
+ if (MsLangId::isSimplifiedChinese(eType))
|
|
+ aPackages.emplace_back("libreoffice-langpack-zh-Hans");
|
|
+ else if (MsLangId::isTraditionalChinese(eType))
|
|
+ aPackages.emplace_back("libreoffice-langpack-zh-Hant");
|
|
+ else
|
|
+ aPackages.emplace_back("libreoffice-langpack-" + install);
|
|
+ }
|
|
+ //Debian would be: "The Document Foundation/Debian"
|
|
+ else if (strcmp(OOO_VENDOR, "The Document Foundation, Debian and Ubuntu") == 0)
|
|
+ {
|
|
+ // l10n is the typical Debian/Ubuntu naming convention
|
|
+ aPackages.emplace_back("libreoffice-l10n-" + install);
|
|
+ }
|
|
+ }
|
|
+ if (!aPackages.empty())
|
|
+ {
|
|
+ xLangpackInstaller.reset(new InstallLangpack(aPackages));
|
|
+ xLangpackInstaller->Start();
|
|
+ }
|
|
+ }
|
|
+ }
|
|
+ if (locale.isEmpty())
|
|
+ locale = getInstalledLocaleForLanguage(rLocaleElementNames, "en-US");
|
|
+ if (locale.isEmpty() && rLocaleElementNames.hasElements())
|
|
+ locale = rLocaleElementNames[0];
|
|
+ return locale;
|
|
+}
|
|
+
|
|
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|
|
diff --git a/sw/source/uibase/app/apphdl.cxx b/sw/source/uibase/app/apphdl.cxx
|
|
index 467112e..6986807 100644
|
|
--- a/sw/source/uibase/app/apphdl.cxx
|
|
+++ b/sw/source/uibase/app/apphdl.cxx
|
|
@@ -44,6 +44,7 @@
|
|
#include <svl/ctloptions.hxx>
|
|
#include <unotools/useroptions.hxx>
|
|
#include <vcl/msgbox.hxx>
|
|
+#include <vcl/sysdata.hxx>
|
|
#include <vcl/wrkwin.hxx>
|
|
#include <svx/insctrl.hxx>
|
|
#include <svx/selctrl.hxx>
|
|
@@ -420,7 +421,7 @@ void SwMailMergeWizardExecutor::ExecuteMailMergeWizard( const SfxItemSet * pArgs
|
|
using namespace svtools;
|
|
css::uno::Reference< XSyncDbusSessionHelper > xSyncDbusSessionHelper(SyncDbusSessionHelper::create(comphelper::getProcessComponentContext()));
|
|
const css::uno::Sequence< OUString > vPackages{ "libreoffice-base" };
|
|
- xSyncDbusSessionHelper->InstallPackageNames(0, vPackages, OUString());
|
|
+ xSyncDbusSessionHelper->InstallPackageNames(vPackages, OUString());
|
|
SolarMutexGuard aGuard;
|
|
executeRestartDialog(comphelper::getProcessComponentContext(), nullptr, RESTART_REASON_MAILMERGE_INSTALL);
|
|
}
|
|
diff --git a/vcl/inc/unx/fontmanager.hxx b/vcl/inc/unx/fontmanager.hxx
|
|
index 03d033e..14aebde 100644
|
|
--- a/vcl/inc/unx/fontmanager.hxx
|
|
+++ b/vcl/inc/unx/fontmanager.hxx
|
|
@@ -192,14 +192,10 @@ class VCL_PLUGIN_PUBLIC PrintFontManager
|
|
static void addFontconfigDir(const OString& rDirectory);
|
|
|
|
std::set<OString> m_aPreviousLangSupportRequests;
|
|
-#if ENABLE_GIO
|
|
- std::vector<OString> m_aCurrentRequests;
|
|
-#endif
|
|
+ std::vector<OUString> m_aCurrentRequests;
|
|
Timer m_aFontInstallerTimer;
|
|
|
|
-#if ENABLE_GIO
|
|
DECL_LINK( autoInstallFontLangSupport, Timer*, void );
|
|
-#endif
|
|
PrintFontManager();
|
|
public:
|
|
~PrintFontManager();
|
|
diff --git a/vcl/unx/generic/fontmanager/fontconfig.cxx b/vcl/unx/generic/fontmanager/fontconfig.cxx
|
|
index 2c16e04..59acfa5 100644
|
|
--- a/vcl/unx/generic/fontmanager/fontconfig.cxx
|
|
+++ b/vcl/unx/generic/fontmanager/fontconfig.cxx
|
|
@@ -20,6 +20,7 @@
|
|
#include <memory>
|
|
#include <unx/fontmanager.hxx>
|
|
#include <impfont.hxx>
|
|
+#include <comphelper/sequence.hxx>
|
|
#include <vcl/svapp.hxx>
|
|
#include <vcl/sysdata.hxx>
|
|
#include <vcl/vclenum.hxx>
|
|
@@ -31,8 +32,8 @@
|
|
#include <rtl/strbuf.hxx>
|
|
#include <unicode/uchar.h>
|
|
#include <unicode/uscript.h>
|
|
-#include <config_gio.h>
|
|
#include <officecfg/Office/Common.hxx>
|
|
+#include <org/freedesktop/PackageKit/SyncDbusSessionHelper.hpp>
|
|
|
|
using namespace psp;
|
|
|
|
@@ -40,10 +41,6 @@ using namespace psp;
|
|
#include <ft2build.h>
|
|
#include <fontconfig/fcfreetype.h>
|
|
|
|
-#if ENABLE_GIO
|
|
-#include <gio/gio.h>
|
|
-#endif
|
|
-
|
|
#include <cstdio>
|
|
#include <cstdarg>
|
|
|
|
@@ -862,96 +859,28 @@ namespace
|
|
aBuf.append('-').append(pScriptCode);
|
|
return OStringToOUString(aBuf.makeStringAndClear(), RTL_TEXTENCODING_UTF8);
|
|
}
|
|
-
|
|
-#if ENABLE_GIO
|
|
- guint get_xid_for_dbus()
|
|
- {
|
|
- // FIXME: Application::GetActiveTopWindow only returns something sensible if LO currently has the focus
|
|
- // (which is not the case when you are trying to debug this...). It should instead return the last active window.
|
|
- const vcl::Window *pTopWindow = Application::IsHeadlessModeEnabled() ? nullptr : Application::GetActiveTopWindow();
|
|
- const SystemEnvData* pEnvData = pTopWindow ? pTopWindow->GetSystemData() : nullptr;
|
|
- return pEnvData ? pEnvData->aWindow : 0;
|
|
- }
|
|
-#endif
|
|
}
|
|
|
|
-#if ENABLE_GIO
|
|
IMPL_LINK_NOARG(PrintFontManager, autoInstallFontLangSupport, Timer *, void)
|
|
{
|
|
- if (!officecfg::Office::Common::PackageKit::EnableFontInstallation::get())
|
|
- return;
|
|
-
|
|
- guint xid = get_xid_for_dbus();
|
|
-
|
|
- if (!xid)
|
|
+ try
|
|
{
|
|
- SAL_WARN("vcl", "Could not retrieve X Window ID for DBUS");
|
|
- return;
|
|
+ using namespace org::freedesktop::PackageKit;
|
|
+ css::uno::Reference<XSyncDbusSessionHelper> xSyncDbusSessionHelper(SyncDbusSessionHelper::create(comphelper::getProcessComponentContext()));
|
|
+ xSyncDbusSessionHelper->InstallFontconfigResources(comphelper::containerToSequence(m_aCurrentRequests), "hide-finished");
|
|
}
|
|
-
|
|
-
|
|
- GError *error = nullptr;
|
|
- /* get the DBUS session connection */
|
|
- GDBusConnection *session_connection = g_bus_get_sync(G_BUS_TYPE_SESSION, nullptr, &error);
|
|
- if (error != nullptr)
|
|
- {
|
|
- g_debug ("DBUS cannot connect : %s", error->message);
|
|
- g_error_free (error);
|
|
- return;
|
|
- }
|
|
-
|
|
- /* get the proxy with gnome-session-manager */
|
|
- GDBusProxy *proxy = g_dbus_proxy_new_sync(session_connection,
|
|
- G_DBUS_PROXY_FLAGS_NONE,
|
|
- nullptr, // GDBusInterfaceInfo
|
|
- "org.freedesktop.PackageKit",
|
|
- "/org/freedesktop/PackageKit",
|
|
- "org.freedesktop.PackageKit.Modify",
|
|
- nullptr, // GCancellable
|
|
- &error);
|
|
- if (proxy == nullptr && error != nullptr)
|
|
- {
|
|
- g_debug("Could not get DBUS proxy: org.freedesktop.PackageKit: %s", error->message);
|
|
- g_error_free(error);
|
|
- return;
|
|
- }
|
|
-
|
|
- GVariantBuilder *builder = g_variant_builder_new (G_VARIANT_TYPE("as")); // 'as'=array of strings
|
|
- for (std::vector<OString>::const_iterator aI = m_aCurrentRequests.begin(); aI != m_aCurrentRequests.end(); ++aI)
|
|
- g_variant_builder_add (builder, "s", aI->getStr());
|
|
-
|
|
- GVariant *res = g_dbus_proxy_call_sync(proxy,
|
|
- "InstallFontconfigResources",
|
|
- // Create a new variant with the following types:
|
|
- // 'u'=guint32 (xid); 'as'=array of strings (builder); 's'=string ("hide-finished")
|
|
- // See also https://people.gnome.org/~ryanl/glib-docs/gvariant-format-strings.html
|
|
- g_variant_new("(uass)", xid, builder, "hide-finished"),
|
|
- G_DBUS_CALL_FLAGS_NONE,
|
|
- -1, // Timeout
|
|
- nullptr, // GCancellable
|
|
- &error);
|
|
-
|
|
- if (res == nullptr && error != nullptr)
|
|
+ catch (const css::uno::Exception& e)
|
|
{
|
|
+ SAL_INFO("vcl", "InstallFontconfigResources problem, caught " << e);
|
|
// Disable this method from now on. It's simply not available on some systems
|
|
// and leads to an error dialog being shown each time this is called tdf#104883
|
|
std::shared_ptr<comphelper::ConfigurationChanges> batch( comphelper::ConfigurationChanges::create() );
|
|
officecfg::Office::Common::PackageKit::EnableFontInstallation::set(false, batch);
|
|
batch->commit();
|
|
- g_debug("InstallFontconfigResources problem : %s", error->message);
|
|
- g_error_free(error);
|
|
- }
|
|
- else
|
|
- {
|
|
- g_variant_unref(res);
|
|
}
|
|
|
|
- g_variant_builder_unref(builder);
|
|
- g_object_unref(G_OBJECT (proxy));
|
|
-
|
|
m_aCurrentRequests.clear();
|
|
}
|
|
-#endif
|
|
|
|
void PrintFontManager::Substitute( FontSelectPattern &rPattern, OUString& rMissingCodes )
|
|
{
|
|
@@ -1107,8 +1036,7 @@ void PrintFontManager::Substitute( FontSelectPattern &rPattern, OUString& rMissi
|
|
}
|
|
}
|
|
OUString sStillMissing(pRemainingCodes.get(), nRemainingLen);
|
|
-#if ENABLE_GIO
|
|
- if (get_xid_for_dbus())
|
|
+ if (!Application::IsHeadlessModeEnabled() && officecfg::Office::Common::PackageKit::EnableFontInstallation::get())
|
|
{
|
|
if (sStillMissing == rMissingCodes) //replaced nothing
|
|
{
|
|
@@ -1127,7 +1055,7 @@ void PrintFontManager::Substitute( FontSelectPattern &rPattern, OUString& rMissi
|
|
if (!sTag.isEmpty() && m_aPreviousLangSupportRequests.find(sTag) == m_aPreviousLangSupportRequests.end())
|
|
{
|
|
OString sReq = OString(":lang=") + sTag;
|
|
- m_aCurrentRequests.push_back(sReq);
|
|
+ m_aCurrentRequests.push_back(OUString::fromUtf8(sReq));
|
|
m_aPreviousLangSupportRequests.insert(sTag);
|
|
}
|
|
}
|
|
@@ -1138,7 +1066,6 @@ void PrintFontManager::Substitute( FontSelectPattern &rPattern, OUString& rMissi
|
|
m_aFontInstallerTimer.Start();
|
|
}
|
|
}
|
|
-#endif
|
|
rMissingCodes = sStillMissing;
|
|
}
|
|
}
|
|
diff --git a/vcl/unx/generic/fontmanager/fontmanager.cxx b/vcl/unx/generic/fontmanager/fontmanager.cxx
|
|
index c956345..d1743dd 100644
|
|
--- a/vcl/unx/generic/fontmanager/fontmanager.cxx
|
|
+++ b/vcl/unx/generic/fontmanager/fontmanager.cxx
|
|
@@ -146,10 +146,8 @@ PrintFontManager::PrintFontManager()
|
|
: m_nNextFontID( 1 )
|
|
, m_nNextDirAtom( 1 )
|
|
{
|
|
-#if ENABLE_GIO
|
|
m_aFontInstallerTimer.SetInvokeHandler(LINK(this, PrintFontManager, autoInstallFontLangSupport));
|
|
m_aFontInstallerTimer.SetTimeout(5000);
|
|
-#endif
|
|
}
|
|
|
|
PrintFontManager::~PrintFontManager()
|
|
--
|
|
2.9.5
|
|
|