mirror of
https://github.com/ckb-next/ckb-next.git
synced 2026-10-10 12:27:21 -04:00
gui: Fix inverted scrolling in KSNI for KDE
This commit is contained in:
@@ -10,9 +10,9 @@ CkbSystemTrayIcon::CkbSystemTrayIcon(const QIcon& icon, const QString iconName,
|
||||
connect(this, &KStatusNotifierItem::scrollRequested, [this](int delta, Qt::Orientation orientation) {
|
||||
QPoint data;
|
||||
if(orientation == Qt::Horizontal)
|
||||
data.setX(delta); // Untested (and unused), might need to be -delta too
|
||||
data.setX(delta);
|
||||
else
|
||||
data.setY(-delta);
|
||||
data.setY(delta);
|
||||
|
||||
emit scrollRequested(data);
|
||||
});
|
||||
|
||||
@@ -839,6 +839,9 @@ KStatusNotifierItemPrivate::KStatusNotifierItemPrivate(KStatusNotifierItem *item
|
||||
, onAllDesktops(false)
|
||||
, standardActionsEnabled(true)
|
||||
{
|
||||
isKde = !qEnvironmentVariableIsEmpty("KDE_FULL_SESSION")
|
||||
|| qgetenv("XDG_CURRENT_DESKTOP") == "KDE"
|
||||
|| qgetenv("QT_QPA_PLATFORMTHEME").toLower() == "kde";
|
||||
}
|
||||
|
||||
void KStatusNotifierItemPrivate::init(const QString &extraId)
|
||||
@@ -849,7 +852,7 @@ void KStatusNotifierItemPrivate::init(const QString &extraId)
|
||||
qDBusRegisterMetaType<KDbusImageVector>();
|
||||
qDBusRegisterMetaType<KDbusToolTipStruct>();
|
||||
|
||||
statusNotifierItemDBus = new KStatusNotifierItemDBus(q);
|
||||
statusNotifierItemDBus = new KStatusNotifierItemDBus(q, isKde);
|
||||
|
||||
QDBusServiceWatcher *watcher = new QDBusServiceWatcher(QString::fromLatin1(s_statusNotifierWatcherServiceName),
|
||||
QDBusConnection::sessionBus(),
|
||||
@@ -1006,9 +1009,7 @@ void KStatusNotifierItemPrivate::setLegacyMode(bool legacy)
|
||||
|
||||
void KStatusNotifierItemPrivate::legacyWheelEvent(int delta)
|
||||
{
|
||||
#if HAVE_DBUS
|
||||
statusNotifierItemDBus->Scroll(delta, QStringLiteral("vertical"));
|
||||
#endif
|
||||
Q_EMIT q->scrollRequested(delta, Qt::Vertical);
|
||||
}
|
||||
|
||||
void KStatusNotifierItemPrivate::legacyActivated(QSystemTrayIcon::ActivationReason reason)
|
||||
@@ -1028,9 +1029,6 @@ void KStatusNotifierItemPrivate::setLegacySystemTrayEnabled(bool enabled)
|
||||
}
|
||||
|
||||
if (enabled) {
|
||||
bool isKde = !qEnvironmentVariableIsEmpty("KDE_FULL_SESSION")
|
||||
|| qgetenv("XDG_CURRENT_DESKTOP") == "KDE"
|
||||
|| qgetenv("QT_QPA_PLATFORMTHEME").toLower() == "kde";
|
||||
if (!systemTrayIcon && !isKde) {
|
||||
if (!QSystemTrayIcon::isSystemTrayAvailable()) {
|
||||
return;
|
||||
|
||||
@@ -127,11 +127,12 @@ const QDBusArgument &operator>>(const QDBusArgument &argument, KDbusToolTipStruc
|
||||
|
||||
int KStatusNotifierItemDBus::s_serviceCount = 0;
|
||||
|
||||
KStatusNotifierItemDBus::KStatusNotifierItemDBus(KStatusNotifierItem *parent)
|
||||
KStatusNotifierItemDBus::KStatusNotifierItemDBus(KStatusNotifierItem *parent, bool isKde_)
|
||||
: QObject(parent)
|
||||
, m_statusNotifierItem(parent)
|
||||
, m_connId(QStringLiteral("org.kde.StatusNotifierItem-%1-%2").arg(QCoreApplication::applicationPid()).arg(++s_serviceCount))
|
||||
, m_dbus(QDBusConnection(m_connId))
|
||||
, isKde(isKde_)
|
||||
{
|
||||
m_dbus = QDBusConnection::connectToBus(QDBusConnection::SessionBus, m_connId);
|
||||
|
||||
@@ -288,6 +289,10 @@ void KStatusNotifierItemDBus::SecondaryActivate(int x, int y)
|
||||
void KStatusNotifierItemDBus::Scroll(int delta, const QString &orientation)
|
||||
{
|
||||
Qt::Orientation dir = (orientation.toLower() == QLatin1String("horizontal") ? Qt::Horizontal : Qt::Vertical);
|
||||
// ckb-next: It seems like all other implementations are inverted.
|
||||
// They also only seem to return +/-1
|
||||
if(!isKde && std::abs(delta) == 1)
|
||||
delta = -delta * 120;
|
||||
Q_EMIT m_statusNotifierItem->scrollRequested(delta, dir);
|
||||
}
|
||||
|
||||
|
||||
@@ -57,7 +57,7 @@ class KStatusNotifierItemDBus : public QObject
|
||||
friend class KStatusNotifierItem;
|
||||
|
||||
public:
|
||||
explicit KStatusNotifierItemDBus(KStatusNotifierItem *parent);
|
||||
explicit KStatusNotifierItemDBus(KStatusNotifierItem *parent, bool isKde_);
|
||||
~KStatusNotifierItemDBus() override;
|
||||
|
||||
/**
|
||||
@@ -227,6 +227,7 @@ private:
|
||||
QString m_xdgActivationToken;
|
||||
QDBusConnection m_dbus;
|
||||
static int s_serviceCount;
|
||||
bool isKde;
|
||||
};
|
||||
|
||||
const QDBusArgument &operator<<(QDBusArgument &argument, const KDbusImageStruct &icon);
|
||||
|
||||
@@ -171,6 +171,7 @@ public:
|
||||
bool standardActionsEnabled : 1;
|
||||
bool quitAborted = false;
|
||||
bool isMenu = false;
|
||||
bool isKde;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user