qguiplatformplugin_kde: apply the cursor theme

for when not even X11 Xfixes extension can do it (as was done by
KGlobalSettings, however the difference being no check is done if it is
full Katana session - it is simply assumed it is the case when the platform
plugin is loaded)

Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
This commit is contained in:
Ivailo Monev 2023-08-22 07:20:38 +03:00
parent 10e08246ca
commit 39e320492d
2 changed files with 33 additions and 8 deletions

View file

@ -5,6 +5,9 @@ set(kde_SOURCES qguiplatformplugin_kde.cpp)
kde4_add_plugin(kde ${kde_SOURCES})
target_link_libraries(kde KDE4::kio ${QT_QTGUI_LIBRARY})
if (X11_Xcursor_FOUND)
target_link_libraries(kde ${X11_Xcursor_LIB})
endif()
install(
TARGETS kde LIBRARY

View file

@ -18,6 +18,8 @@
Boston, MA 02110-1301, USA.
*/
#include "config-X11.h"
#include <KStandardDirs>
#include <KGlobal>
#include <KComponentData>
@ -38,6 +40,13 @@
#include <QtGui/QToolBar>
#include <QtGui/QMainWindow>
#include <QtGui/QGuiPlatformPlugin>
#include <QtGui/QX11Info>
#ifdef HAVE_XCURSOR
# include <X11/Xlib.h>
# include <X11/Xcursor/Xcursor.h>
# include <fixx11h.h>
#endif
/*
* Map a Katie filter string into a KDE one.
@ -434,19 +443,32 @@ private slots:
void updateMouse()
{
KConfigGroup cg(KGlobal::config(), "KDE");
int num = cg.readEntry("CursorBlinkRate", QApplication::cursorFlashTime());
#if defined(HAVE_XCURSOR)
{
KConfig inputconfig("kcminputrc");
KConfigGroup mousegroup = inputconfig.group("Mouse");
const QByteArray cursortheme = mousegroup.readEntry("cursorTheme", QByteArray(KDE_DEFAULT_CURSOR_THEME));
const int cursorsize = mousegroup.readEntry("cursorSize", -1);
XcursorSetTheme(QX11Info::display(), cursortheme);
if (cursorsize > 0) {
XcursorSetDefaultSize(QX11Info::display(), cursorsize);
}
}
#endif
KConfigGroup kdegroup(KGlobal::config(), "KDE");
int num = kdegroup.readEntry("CursorBlinkRate", QApplication::cursorFlashTime());
num = qBound(200, num, 2000);
QApplication::setCursorFlashTime(num);
num = cg.readEntry("DoubleClickInterval", QApplication::doubleClickInterval());
num = kdegroup.readEntry("DoubleClickInterval", QApplication::doubleClickInterval());
QApplication::setDoubleClickInterval(num);
num = cg.readEntry("StartDragTime", QApplication::startDragTime());
num = kdegroup.readEntry("StartDragTime", QApplication::startDragTime());
QApplication::setStartDragTime(num);
num = cg.readEntry("StartDragDist", QApplication::startDragDistance());
num = kdegroup.readEntry("StartDragDist", QApplication::startDragDistance());
QApplication::setStartDragDistance(num);
num = cg.readEntry("WheelScrollLines", QApplication::wheelScrollLines());
num = kdegroup.readEntry("WheelScrollLines", QApplication::wheelScrollLines());
QApplication::setWheelScrollLines(num);
bool showIcons = cg.readEntry("ShowIconsInMenuItems", !QApplication::testAttribute(Qt::AA_DontShowIconsInMenus));
bool showIcons = kdegroup.readEntry("ShowIconsInMenuItems", !QApplication::testAttribute(Qt::AA_DontShowIconsInMenus));
QApplication::setAttribute(Qt::AA_DontShowIconsInMenus, !showIcons);
}
};