diff options
author | Alexander Volkov <a.volkov@rusbitech.ru> | 2017-12-20 16:03:42 +0300 |
---|---|---|
committer | Alexander Volkov <a.volkov@rusbitech.ru> | 2018-01-15 10:12:22 +0000 |
commit | 85aa0fd041fbaa258f089d86f227311e53f6206a (patch) | |
tree | bafaed0633d4034232af4a9d725d009e0c2a7155 /src/gui/image/qicon.cpp | |
parent | 537af273026eaf0a18d2151ad6928b7797d7955b (diff) |
Introduce QIcon::fallbackSearchPaths()
... that will be used if an icon can't be found in the
current theme.
The Icon Theme Specification
https://standards.freedesktop.org/icon-theme-spec/latest/ar01s05.html
states that unthemed icons must be searched in the base directories,
i.e. /usr/share/icons, ... But in practice unthemed icons are
installed into /usr/share/pixmaps and this dir is not used as
a base dir for icon themes. So it's better to explicitly specify
fallback dirs to avoid needless access to the filesystem.
Also some KDE application install their own unthemed icons
(into /usr/share/<appname>/pics), that can't be found by
QIconLoader. With this change it would be possible for them
to specify dirs with unthemed icons and thus be displayed
correctly in non-KDE environments.
[ChangeLog][QtGui][QIcon] Added fallbackSearchPaths() that
will be used to find icons missing in the current icon theme.
Change-Id: I0dc55ba958b29356a3b0a2123d6b8faa24d4c91e
Task-number: QTBUG-33123
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
Diffstat (limited to 'src/gui/image/qicon.cpp')
-rw-r--r-- | src/gui/image/qicon.cpp | 35 |
1 files changed, 34 insertions, 1 deletions
diff --git a/src/gui/image/qicon.cpp b/src/gui/image/qicon.cpp index 9b2e96d4b0..32fa9e75ac 100644 --- a/src/gui/image/qicon.cpp +++ b/src/gui/image/qicon.cpp @@ -1158,6 +1158,36 @@ QStringList QIcon::themeSearchPaths() } /*! + \since 5.11 + + Returns the fallback search paths for icons. + + The default value will depend on the platform. + + \sa setFallbackSearchPaths(), themeSearchPaths() +*/ +QStringList QIcon::fallbackSearchPaths() +{ + return QIconLoader::instance()->fallbackSearchPaths(); +} + +/*! + \since 5.11 + + Sets the fallback search paths for icons to \a paths. + + \note To add some path without replacing existing ones: + + \snippet code/src_gui_image_qicon.cpp 5 + + \sa fallbackSearchPaths(), setThemeSearchPaths() +*/ +void QIcon::setFallbackSearchPaths(const QStringList &paths) +{ + QIconLoader::instance()->setFallbackSearchPaths(paths); +} + +/*! \since 4.6 Sets the current icon theme to \a name. @@ -1216,7 +1246,10 @@ QString QIcon::themeName() the lookup. These caches can be generated using gtk-update-icon-cache: \l{https://developer.gnome.org/gtk3/stable/gtk-update-icon-cache.html}. - \sa themeName(), setThemeName(), themeSearchPaths() + \note If an icon can't be found in the current theme, then it will be + searched in fallbackSearchPaths() as an unthemed icon. + + \sa themeName(), setThemeName(), themeSearchPaths(), fallbackSearchPaths() */ QIcon QIcon::fromTheme(const QString &name) { |