Bug 431554

Summary: Allow horizontal scroll with shift+mouse wheel
Product: [Applications] kolourpaint Reporter: DarkTrick <notebook22312>
Component: generalAssignee: kolourpaint-support
Status: CLOSED UPSTREAM    
Severity: wishlist CC: nate, notebook22312
Priority: NOR    
Version: 20.08   
Target Milestone: ---   
Platform: Other   
OS: Linux   
URL: https://bugreports.qt.io/browse/QTBUG-75949
Latest Commit: Version Fixed In:

Description DarkTrick 2021-01-13 17:03:32 UTC
Under Ubuntu Shift-mouse wheel scrolling is fairly standard for horizontal scrolling. Kolourpaint does not support it.
I propose to add that feature.
Comment 1 Nate Graham 2021-01-13 19:28:19 UTC
In the Qt world, the standard for horizontal scrolling is Alt+scroll, not Shift+scroll. This works in Kolourpaint.

Personally I'm not super thrilled about it myself and I wish Qt would move to Shift+scroll. See https://bugreports.qt.io/browse/QTBUG-75949

Until that happens at the Qt level, it's not really appropriate for every single scrollview in every piece of Qt software to override this and use Shift+scroll instead.
Comment 2 DarkTrick 2021-01-14 05:03:56 UTC
Alt+scroll conflicts with Alt+Scroll on Ubuntu systems for "display zoom". Therefore this shortcut is non-existend.

New proposal: 
Implement shortcut to be configurable. 
Reason: Apparently shortcuts are highly system-dependant. Enabling configuration would enable distro repo maintainers to set it according to their system.
( I reopened the report for this purpose )
Comment 3 Nate Graham 2021-01-14 15:32:08 UTC
That's not how this works. Since Alt+Scroll for horizontal scrolling comes from Qt, any such option would have to be exposed there. We can't do anything here in KDE-land.

If Ubuntu has bound Alt+Scroll to full-screen zoom, that's a pretty lousy decision. Alt is a modifier key commonly used by applications, and as I mentioned before, Alt+Scroll is the standard horizontal scroll method for all Qt apps. I know that Ubuntu tends to focus on GTK apps more than Qt apps, but they really should have known this and avoided setting a shortcut that conflicts what a standard behavior of apps using a major GUI toolkit. Meta/Super+Scroll would have been much more appropriate.
Comment 4 DarkTrick 2021-01-14 15:53:52 UTC
> That's not how this works. Since Alt+Scroll for horizontal scrolling comes from Qt, any such option would have to be exposed there.

Shouldn't a configuration be possible, if there was an event filter within the `keyPressEvent()` function (or some equivalent)?


Don't get me wrong here:

> If Ubuntu has bound Alt+Scroll to full-screen zoom, that's a pretty lousy decision.

I'm not saying Ubuntu did a good job here. But I think it's a good idea to allow shortcuts to be configured by/for OSs and not toolkits. That's the only way of unifying behaviour of apps among different systems.
Comment 5 Nate Graham 2021-01-14 16:20:39 UTC
(In reply to DarkTrick from comment #4)
> > That's not how this works. Since Alt+Scroll for horizontal scrolling comes from Qt, any such option would have to be exposed there.
> 
> Shouldn't a configuration be possible, if there was an event filter within
> the `keyPressEvent()` function (or some equivalent)?
Because this is a standard behavior in the Qt toolkit's scrollview widget, we would have to implement this hack in literally every scrollview implementation in every piece of KDE software, which, as I hope you can understand, is not feasible. :) The code change needs to be made at the Qt level. Since you seem to have some programming knowledge, I would encourage you to submit a patch! Maybe they'll accept it.
Comment 6 DarkTrick 2021-01-14 17:29:58 UTC
Just for the record: I added a report on Qt.
https://bugreports.qt.io/browse/QTBUG-90334


> we would have to implement this hack in literally every scrollview implementation in every piece of KDE software,
With Kolourpaint being the only simple-to-use MS-Paint alternative + this is specifically painful on a canvas, I guess it has a special role compared to any other app though. 
But lets wait for what happens on Qt side :)