lighterowl / transgui

A fork of Transmission Remote GUI
GNU General Public License v2.0
118 stars 3 forks source link

Mouse wheel doesn't scroll any list and keyboard arrows don't move the selection #44

Closed DiWa51 closed 4 weeks ago

DiWa51 commented 1 year ago

I've just installed the 5.18.3.f AppImage on my Linux Mint 21.2. Once started, spinning my mouse wheel has no effect on any list / scrollbar (Label Grouping or the main panel listing all torrents). I can still point and click the scrollbar to move things or use my keyboard arrows (which opens another issue: I can't move my selection from one torrent to the other with arrows even thouhg I make sure one torrent is selected and with the focus)

This is something working on the original 5.18.0 version

lighterowl commented 1 year ago

Hi there, thanks for the report.

I'm afraid I can't reproduce this, though, despite trying in three different graphical environments :

Running the 5.18.3.f AppImage in every one of those results in mouse scrolling working properly when the mouse hovers over a list.

Is there anything specific about your setup? Are you perhaps using the MATE version of Linux Mint with a non-standard window manager (if so, which one)?

DiWa51 commented 1 year ago

Hi Xavery,

Thanks for looking into this.

I'm using the following Mint + Cinnamon

System: Kernel: 6.2.0-26-generic x86_64 bits: 64 compiler: N/A Desktop: Cinnamon 5.8.4 tk: GTK 3.24.33 wm: muffin dm: LightDM Distro: Linux Mint 21.2 Victoria base: Ubuntu 22.04 jammy

I've done further testing and it might be related to my mouse as i'm using a Logitech MX Master 3 with this infinite scroll (no specific logitech driver or feature installed though). I've plugged in an old style mouse and indeed this is working.

I've tried on a laptop (same mint+cinnamon versions) with a touchpad and using the 2 fingers trick to scroll was again not really working. I say really because from time to time something reacts and the list moves but it's really random.

Each time I compared with the original version that was working. It also means I'm using the same config when running the 2 versions. So I've moved away .config/Transmission Remote GUI folder but without more luck.

Is there anything else I can try?

lighterowl commented 1 year ago

There were no changes related to mouse wheel event handling as far as I'm aware, so the issue must lie in Lazarus itself.

The most significant change between "stock" transgui and my fork is the "widget set" (essentially, the "backend" library used for actually drawing things) used by Lazarus to build the application, as my fork uses the Qt5 variant, while "stock" uses GTK2. I found Qt5 to look and perform better than GTK2 (despite using GTK-based Xfce as my DE) which is why I chose it as the default for Linux builds.

Here's a build using GTK2 : https://github.com/xavery/transgui/suites/15085042301/artifacts/861694276 - please let me know if it works any better. If this version works, then what you're seeing must be specific to either the Qt5-based Lazarus implementation, or a bug in Qt5 itself. If it doesn't, I'll provide you with both GTK- and Qt-based builds made with the same Lazarus version as the one used by stock transgui.

DiWa51 commented 1 year ago

Thanks for building this package, I've just dowloaded and tested it. Unfortunately UI is not showing up even though there is a running process

ps aux | grep -i transgui
diwa       81477  0.2  0.0   6056  3412 pts/0    S+   16:07   0:00 /usr/lib/x86_64-linux-gnu/appimagelauncher/binfmt-bypass /home/diwa/Applications/transgui-5.18.4.f-GTK2-x86_64.AppImage
diwa       81495  0.3  0.0 210344 32128 pts/0    S+   16:07   0:00 /home/diwa/Applications/transgui-5.18.4.f-GTK2-x86_64.AppImage
diwa       81498  0.4  0.0  14596  2492 ?        Ssl  16:07   0:00 /home/diwa/Applications/transgui-5.18.4.f-GTK2-x86_64.AppImage

When I ran it from a terminal I get these logs:

** (AppImageLauncher:49833): WARNING **: 14:48:17.514: Pixbuf theme: Cannot load pixmap file /usr/share/themes/Mint-Y-Dark-Blue/gtk-2.0/assets/trough-progressbar.png: Failed to load image “/usr/share/themes/Mint-Y-Dark-Blue/gtk-2.0/assets/trough-progressbar.png”: Fatal error in PNG image file: bad parameters to zlib
(AppImageLauncher:49833): GdkPixbuf-CRITICAL **: 14:48:17.514: gdk_pixbuf_get_width: assertion 'GDK_IS_PIXBUF (pixbuf)' failed
(AppImageLauncher:49833): GdkPixbuf-CRITICAL **: 14:48:17.514: gdk_pixbuf_get_height: assertion 'GDK_IS_PIXBUF (pixbuf)' failed
** (AppImageLauncher:49833): WARNING **: 14:48:17.514: Invalid borders specified for theme pixmap:
        /usr/share/themes/Mint-Y-Dark-Blue/gtk-2.0/assets/trough-progressbar.png,
borders don't fit within the image
(AppImageLauncher:49833): GdkPixbuf-CRITICAL **: 14:48:17.514: gdk_pixbuf_get_n_channels: assertion 'GDK_IS_PIXBUF (pixbuf)' failed
(AppImageLauncher:49833): GdkPixbuf-CRITICAL **: 14:48:17.514: gdk_pixbuf_get_pixels_with_length: assertion 'GDK_IS_PIXBUF (pixbuf)' failed
(AppImageLauncher:49833): GdkPixbuf-CRITICAL **: 14:48:17.514: gdk_pixbuf_get_rowstride: assertion 'GDK_IS_PIXBUF (pixbuf)' failed
(AppImageLauncher:49833): GdkPixbuf-CRITICAL **: 14:48:17.514: gdk_pixbuf_get_n_channels: assertion 'GDK_IS_PIXBUF (pixbuf)' failed
(AppImageLauncher:49833): GdkPixbuf-CRITICAL **: 14:48:17.514: gdk_pixbuf_get_pixels_with_length: assertion 'GDK_IS_PIXBUF (pixbuf)' failed
(AppImageLauncher:49833): GdkPixbuf-CRITICAL **: 14:48:17.514: gdk_pixbuf_get_rowstride: assertion 'GDK_IS_PIXBUF (pixbuf)' failed
(AppImageLauncher:49833): GdkPixbuf-CRITICAL **: 14:48:17.514: gdk_pixbuf_get_n_channels: assertion 'GDK_IS_PIXBUF (pixbuf)' failed
(AppImageLauncher:49833): GdkPixbuf-CRITICAL **: 14:48:17.514: gdk_pixbuf_get_pixels_with_length: assertion 'GDK_IS_PIXBUF (pixbuf)' failed
(AppImageLauncher:49833): GdkPixbuf-CRITICAL **: 14:48:17.514: gdk_pixbuf_get_rowstride: assertion 'GDK_IS_PIXBUF (pixbuf)' failed
(AppImageLauncher:49833): GdkPixbuf-CRITICAL **: 14:48:17.514: gdk_pixbuf_get_n_channels: assertion 'GDK_IS_PIXBUF (pixbuf)' failed
(AppImageLauncher:49833): GdkPixbuf-CRITICAL **: 14:48:17.514: gdk_pixbuf_get_pixels_with_length: assertion 'GDK_IS_PIXBUF (pixbuf)' failed
(AppImageLauncher:49833): GdkPixbuf-CRITICAL **: 14:48:17.514: gdk_pixbuf_get_rowstride: assertion 'GDK_IS_PIXBUF (pixbuf)' failed
(AppImageLauncher:49833): GdkPixbuf-CRITICAL **: 14:48:17.514: gdk_pixbuf_get_n_channels: assertion 'GDK_IS_PIXBUF (pixbuf)' failed
(AppImageLauncher:49833): GdkPixbuf-CRITICAL **: 14:48:17.514: gdk_pixbuf_get_pixels_with_length: assertion 'GDK_IS_PIXBUF (pixbuf)' failed
(AppImageLauncher:49833): GdkPixbuf-CRITICAL **: 14:48:17.514: gdk_pixbuf_get_rowstride: assertion 'GDK_IS_PIXBUF (pixbuf)' failed
(AppImageLauncher:49833): GdkPixbuf-CRITICAL **: 14:48:17.514: gdk_pixbuf_get_n_channels: assertion 'GDK_IS_PIXBUF (pixbuf)' failed
(AppImageLauncher:49833): GdkPixbuf-CRITICAL **: 14:48:17.514: gdk_pixbuf_get_pixels_with_length: assertion 'GDK_IS_PIXBUF (pixbuf)' failed
(AppImageLauncher:49833): GdkPixbuf-CRITICAL **: 14:48:17.514: gdk_pixbuf_get_rowstride: assertion 'GDK_IS_PIXBUF (pixbuf)' failed
(AppImageLauncher:49833): GdkPixbuf-CRITICAL **: 14:48:17.514: gdk_pixbuf_get_n_channels: assertion 'GDK_IS_PIXBUF (pixbuf)' failed
(AppImageLauncher:49833): GdkPixbuf-CRITICAL **: 14:48:17.514: gdk_pixbuf_get_pixels_with_length: assertion 'GDK_IS_PIXBUF (pixbuf)' failed
(AppImageLauncher:49833): GdkPixbuf-CRITICAL **: 14:48:17.514: gdk_pixbuf_get_rowstride: assertion 'GDK_IS_PIXBUF (pixbuf)' failed
(AppImageLauncher:49833): GdkPixbuf-CRITICAL **: 14:48:17.514: gdk_pixbuf_get_n_channels: assertion 'GDK_IS_PIXBUF (pixbuf)' failed
(AppImageLauncher:49833): GdkPixbuf-CRITICAL **: 14:48:17.514: gdk_pixbuf_get_pixels_with_length: assertion 'GDK_IS_PIXBUF (pixbuf)' failed
(AppImageLauncher:49833): GdkPixbuf-CRITICAL **: 14:48:17.514: gdk_pixbuf_get_rowstride: assertion 'GDK_IS_PIXBUF (pixbuf)' failed
(AppImageLauncher:49833): GdkPixbuf-CRITICAL **: 14:48:17.514: gdk_pixbuf_get_n_channels: assertion 'GDK_IS_PIXBUF (pixbuf)' failed
(AppImageLauncher:49833): GdkPixbuf-CRITICAL **: 14:48:17.514: gdk_pixbuf_get_pixels_with_length: assertion 'GDK_IS_PIXBUF (pixbuf)' failed
(AppImageLauncher:49833): GdkPixbuf-CRITICAL **: 14:48:17.514: gdk_pixbuf_get_rowstride: assertion 'GDK_IS_PIXBUF (pixbuf)' failed
(AppImageLauncher:49833): GdkPixbuf-CRITICAL **: 14:48:17.515: gdk_pixbuf_get_width: assertion 'GDK_IS_PIXBUF (pixbuf)' failed
(AppImageLauncher:49833): GdkPixbuf-CRITICAL **: 14:48:17.515: gdk_pixbuf_get_height: assertion 'GDK_IS_PIXBUF (pixbuf)' failed
(transgui-x86_64.AppImage:49851): GLib-GObject-WARNING **: 14:48:17.965: cannot register existing type 'GdkScreen'
(transgui-x86_64.AppImage:49851): GLib-CRITICAL **: 14:48:17.965: g_once_init_leave: assertion 'result != 0' failed
(transgui-x86_64.AppImage:49851): Gdk-CRITICAL **: 14:48:17.965: IA__gdk_screen_get_primary_monitor: assertion 'GDK_IS_SCREEN (screen)' failed

Your original 5.18.3.f Qt5 version prints these one:

** (AppImageLauncher:51231): WARNING **: 14:54:36.564: Pixbuf theme: Cannot load pixmap file /usr/share/themes/Mint-Y-Dark-Blue/gtk-2.0/assets/trough-progressbar.png: Failed to load image “/usr/share/themes/Mint-Y-Dark-Blue/gtk-2.0/assets/trough-progressbar.png”: Fatal error in PNG image file: bad parameters to zlib
(AppImageLauncher:51231): GdkPixbuf-CRITICAL **: 14:54:36.564: gdk_pixbuf_get_width: assertion 'GDK_IS_PIXBUF (pixbuf)' failed
(AppImageLauncher:51231): GdkPixbuf-CRITICAL **: 14:54:36.564: gdk_pixbuf_get_height: assertion 'GDK_IS_PIXBUF (pixbuf)' failed
** (AppImageLauncher:51231): WARNING **: 14:54:36.564: Invalid borders specified for theme pixmap:
        /usr/share/themes/Mint-Y-Dark-Blue/gtk-2.0/assets/trough-progressbar.png,
borders don't fit within the image
(AppImageLauncher:51231): GdkPixbuf-CRITICAL **: 14:54:36.564: gdk_pixbuf_get_n_channels: assertion 'GDK_IS_PIXBUF (pixbuf)' failed
(AppImageLauncher:51231): GdkPixbuf-CRITICAL **: 14:54:36.564: gdk_pixbuf_get_pixels_with_length: assertion 'GDK_IS_PIXBUF (pixbuf)' failed
(AppImageLauncher:51231): GdkPixbuf-CRITICAL **: 14:54:36.564: gdk_pixbuf_get_rowstride: assertion 'GDK_IS_PIXBUF (pixbuf)' failed
(AppImageLauncher:51231): GdkPixbuf-CRITICAL **: 14:54:36.564: gdk_pixbuf_get_n_channels: assertion 'GDK_IS_PIXBUF (pixbuf)' failed
(AppImageLauncher:51231): GdkPixbuf-CRITICAL **: 14:54:36.564: gdk_pixbuf_get_pixels_with_length: assertion 'GDK_IS_PIXBUF (pixbuf)' failed
(AppImageLauncher:51231): GdkPixbuf-CRITICAL **: 14:54:36.564: gdk_pixbuf_get_rowstride: assertion 'GDK_IS_PIXBUF (pixbuf)' failed
(AppImageLauncher:51231): GdkPixbuf-CRITICAL **: 14:54:36.564: gdk_pixbuf_get_n_channels: assertion 'GDK_IS_PIXBUF (pixbuf)' failed
(AppImageLauncher:51231): GdkPixbuf-CRITICAL **: 14:54:36.564: gdk_pixbuf_get_pixels_with_length: assertion 'GDK_IS_PIXBUF (pixbuf)' failed
(AppImageLauncher:51231): GdkPixbuf-CRITICAL **: 14:54:36.564: gdk_pixbuf_get_rowstride: assertion 'GDK_IS_PIXBUF (pixbuf)' failed
(AppImageLauncher:51231): GdkPixbuf-CRITICAL **: 14:54:36.564: gdk_pixbuf_get_n_channels: assertion 'GDK_IS_PIXBUF (pixbuf)' failed
(AppImageLauncher:51231): GdkPixbuf-CRITICAL **: 14:54:36.564: gdk_pixbuf_get_pixels_with_length: assertion 'GDK_IS_PIXBUF (pixbuf)' failed
(AppImageLauncher:51231): GdkPixbuf-CRITICAL **: 14:54:36.564: gdk_pixbuf_get_rowstride: assertion 'GDK_IS_PIXBUF (pixbuf)' failed
(AppImageLauncher:51231): GdkPixbuf-CRITICAL **: 14:54:36.564: gdk_pixbuf_get_n_channels: assertion 'GDK_IS_PIXBUF (pixbuf)' failed
(AppImageLauncher:51231): GdkPixbuf-CRITICAL **: 14:54:36.564: gdk_pixbuf_get_pixels_with_length: assertion 'GDK_IS_PIXBUF (pixbuf)' failed
(AppImageLauncher:51231): GdkPixbuf-CRITICAL **: 14:54:36.564: gdk_pixbuf_get_rowstride: assertion 'GDK_IS_PIXBUF (pixbuf)' failed
(AppImageLauncher:51231): GdkPixbuf-CRITICAL **: 14:54:36.564: gdk_pixbuf_get_n_channels: assertion 'GDK_IS_PIXBUF (pixbuf)' failed
(AppImageLauncher:51231): GdkPixbuf-CRITICAL **: 14:54:36.564: gdk_pixbuf_get_pixels_with_length: assertion 'GDK_IS_PIXBUF (pixbuf)' failed
(AppImageLauncher:51231): GdkPixbuf-CRITICAL **: 14:54:36.564: gdk_pixbuf_get_rowstride: assertion 'GDK_IS_PIXBUF (pixbuf)' failed
(AppImageLauncher:51231): GdkPixbuf-CRITICAL **: 14:54:36.564: gdk_pixbuf_get_n_channels: assertion 'GDK_IS_PIXBUF (pixbuf)' failed
(AppImageLauncher:51231): GdkPixbuf-CRITICAL **: 14:54:36.564: gdk_pixbuf_get_pixels_with_length: assertion 'GDK_IS_PIXBUF (pixbuf)' failed
(AppImageLauncher:51231): GdkPixbuf-CRITICAL **: 14:54:36.564: gdk_pixbuf_get_rowstride: assertion 'GDK_IS_PIXBUF (pixbuf)' failed
(AppImageLauncher:51231): GdkPixbuf-CRITICAL **: 14:54:36.564: gdk_pixbuf_get_n_channels: assertion 'GDK_IS_PIXBUF (pixbuf)' failed
(AppImageLauncher:51231): GdkPixbuf-CRITICAL **: 14:54:36.564: gdk_pixbuf_get_pixels_with_length: assertion 'GDK_IS_PIXBUF (pixbuf)' failed
(AppImageLauncher:51231): GdkPixbuf-CRITICAL **: 14:54:36.564: gdk_pixbuf_get_rowstride: assertion 'GDK_IS_PIXBUF (pixbuf)' failed
(AppImageLauncher:51231): GdkPixbuf-CRITICAL **: 14:54:36.564: gdk_pixbuf_get_n_channels: assertion 'GDK_IS_PIXBUF (pixbuf)' failed
(AppImageLauncher:51231): GdkPixbuf-CRITICAL **: 14:54:36.564: gdk_pixbuf_get_pixels_with_length: assertion 'GDK_IS_PIXBUF (pixbuf)' failed
(AppImageLauncher:51231): GdkPixbuf-CRITICAL **: 14:54:36.564: gdk_pixbuf_get_rowstride: assertion 'GDK_IS_PIXBUF (pixbuf)' failed
(AppImageLauncher:51231): GdkPixbuf-CRITICAL **: 14:54:36.564: gdk_pixbuf_get_width: assertion 'GDK_IS_PIXBUF (pixbuf)' failed
(AppImageLauncher:51231): GdkPixbuf-CRITICAL **: 14:54:36.564: gdk_pixbuf_get_height: assertion 'GDK_IS_PIXBUF (pixbuf)' failed

One other difference is the GTK2 AppImage package is ~4 times smaller than your 5.18.3.f Qt5

Tell me if I can help in other ways

lighterowl commented 1 year ago

This looks very similar to https://github.com/transmission-remote-gui/transgui/issues/1241 . I've never investigated this properly as I just switched to Qt5 since then and found it working much better in general, so I just stayed with it, which is also the reason why the builds here use Qt5 exclusively.

That said, the AppImage did work for me in a clean Mint VM, but that's irrelevant if you're seeing an issue that was previously reported which is vastly different from what we're trying to solve in the first place.

I'll look into creating a build with older Lazarus for you to test.

lighterowl commented 1 year ago

@DiWa51 Here's a build using the same environment (Debian bullseye, Lazarus 2.0.10, fpc 3.2.0, Qt 5.15.2) as the parent transgui project : https://files.catbox.moe/vdnpo6.gz - couldn't upload to GitHub as it only accepts files up to 25MB.

Let me know how this one works.

DiWa51 commented 1 year ago

Hi @xavery I've downloaded and tested your last package. It loads without any glitch, unfortunatelly, my mouse wheel is still not behaving as expected. To be honest I feel a bit ashamed you spend so many time on this issue if nobody else complains about it. It can be smthg on my end ... I might just live with it (I'm far from using Transgui everyday!), so feel free to stop until you feel more traction is brought by the rest of the community. Thanks a lot for help so far.

lighterowl commented 1 year ago

Sorry @DiWa51 , if this doesn't work, then I'm completely clueless as to what might be going on here. :(

DiWa51 commented 1 year ago

I understand, no worries! Again thanks a lot for the time spent.

if you want to close this issue, feel free (I can do it if you tell me to)

DiWa51 commented 1 month ago

Hi @lighterowl

Thanks for this new release!

Quick update, given you've shipped a new package I've tried again this issue and let's say the issue is still here as when I spin my mouse wheel the scrollbar blocks half way (the wheel is still spinning and there is another 100 lines to go through but the scrollbar doesn't move anymore) but, as an half empty glass, it runs half way. So for some reasons it seems to better work (can it be due to Kernel or Cinnamon upgrade or ... I don't know)

Then I went further and compiled the project locally following your steps and from there, everything runs smoothly (I'm running the transgui/units/transgui binary)! Dunno if you see how to spot difference between the 2 binaries or environments?

lighterowl commented 1 month ago

Hi @DiWa51

This is great news! It must be something specific to the AppImage, then, or perhaps the version of Qt that's shipped inside it. I can only speculate at this point but perhaps the version of Qt installed in your own system has some extra configuration files that the AppImage one doesn't even read. Or maybe you've come across a bug in the version of Qt that's packaged inside the AppImage.

I wish I had something more to tell you but I'm afraid that's it.