pemsley / coot

Software for macromolecular model-building
http://www2.mrc-lmb.cam.ac.uk/personal/pemsley/coot/
GNU General Public License v3.0
121 stars 45 forks source link

Scrolling only changes map contour when scrolling extremely slowly (Mac) #108

Open PlethoraChutney opened 11 months ago

PlethoraChutney commented 11 months ago

Here's a "fun" one: when using Coot my map contour will only adjust if I scroll very, very slowly. Here is a relevant section of the log:

pushing statusbar text: Map 0  contour_level 0.463  n-rmsd: 7.500
on_glarea_scrolled() control_is_pressed 0 shift_is_pressed 0
DEBUG:: idle_contour_function() imol: 0 contour level: 0.469535 n-rmsd: 7.59999
pushing statusbar text: Map 0  contour_level 0.470  n-rmsd: 7.600
on_glarea_scrolled() control_is_pressed 0 shift_is_pressed 0
DEBUG:: idle_contour_function() imol: 0 contour level: 0.475713 n-rmsd: 7.69999
pushing statusbar text: Map 0  contour_level 0.476  n-rmsd: 7.700
on_glarea_scrolled() control_is_pressed 0 shift_is_pressed 0
DEBUG:: idle_contour_function() imol: 0 contour level: 0.481891 n-rmsd: 7.79999
pushing statusbar text: Map 0  contour_level 0.482  n-rmsd: 7.800
on_glarea_scrolled() control_is_pressed 0 shift_is_pressed 0
on_glarea_scrolled() control_is_pressed 0 shift_is_pressed 0
on_glarea_scrolled() control_is_pressed 0 shift_is_pressed 0
on_glarea_scrolled() control_is_pressed 0 shift_is_pressed 0
on_glarea_scrolled() control_is_pressed 0 shift_is_pressed 0
on_glarea_scrolled() control_is_pressed 0 shift_is_pressed 0
DEBUG:: idle_contour_function() imol: 0 contour level: 0.488069 n-rmsd: 7.89999
pushing statusbar text: Map 0  contour_level 0.488  n-rmsd: 7.900
on_glarea_scrolled() control_is_pressed 0 shift_is_pressed 0
on_glarea_scrolled() control_is_pressed 0 shift_is_pressed 0
on_glarea_scrolled() control_is_pressed 0 shift_is_pressed 0
on_glarea_scrolled() control_is_pressed 0 shift_is_pressed 0
on_glarea_scrolled() control_is_pressed 0 shift_is_pressed 0
DEBUG:: idle_contour_function() imol: 0 contour level: 0.494247 n-rmsd: 7.99999
pushing statusbar text: Map 0  contour_level 0.494  n-rmsd: 8.000
on_glarea_scrolled() control_is_pressed 0 shift_is_pressed 0
on_glarea_scrolled() control_is_pressed 0 shift_is_pressed 0
on_glarea_scrolled() control_is_pressed 0 shift_is_pressed 0
on_glarea_scrolled() control_is_pressed 0 shift_is_pressed 0
on_glarea_scrolled() control_is_pressed 0 shift_is_pressed 0
on_glarea_scrolled() control_is_pressed 0 shift_is_pressed 0
on_glarea_scrolled() control_is_pressed 0 shift_is_pressed 0
on_glarea_scrolled() control_is_pressed 0 shift_is_pressed 0
on_glarea_scrolled() control_is_pressed 0 shift_is_pressed 0
on_glarea_scrolled() control_is_pressed 0 shift_is_pressed 0
on_glarea_scrolled() control_is_pressed 0 shift_is_pressed 0
on_glarea_scrolled() control_is_pressed 0 shift_is_pressed 0
on_glarea_scrolled() control_is_pressed 0 shift_is_pressed 0
on_glarea_scrolled() control_is_pressed 0 shift_is_pressed 0
on_glarea_scrolled() control_is_pressed 0 shift_is_pressed 0
on_glarea_scrolled() control_is_pressed 0 shift_is_pressed 0
on_glarea_scrolled() control_is_pressed 0 shift_is_pressed 0
on_glarea_scrolled() control_is_pressed 0 shift_is_pressed 0
on_glarea_scrolled() control_is_pressed 0 shift_is_pressed 0
on_glarea_scrolled() control_is_pressed 0 shift_is_pressed 0
on_glarea_scrolled() control_is_pressed 0 shift_is_pressed 0
on_glarea_scrolled() control_is_pressed 0 shift_is_pressed 0
on_glarea_scrolled() control_is_pressed 0 shift_is_pressed 0
on_glarea_scrolled() control_is_pressed 0 shift_is_pressed 0
on_glarea_scrolled() control_is_pressed 0 shift_is_pressed 0
on_glarea_scrolled() control_is_pressed 0 shift_is_pressed 0
on_glarea_scrolled() control_is_pressed 0 shift_is_pressed 0
on_glarea_scrolled() control_is_pressed 0 shift_is_pressed 0
on_glarea_scrolled() control_is_pressed 0 shift_is_pressed 0
on_glarea_scrolled() control_is_pressed 0 shift_is_pressed 0
on_glarea_scrolled() control_is_pressed 0 shift_is_pressed 0
on_glarea_scrolled() control_is_pressed 0 shift_is_pressed 0
on_glarea_scrolled() control_is_pressed 0 shift_is_pressed 0

In the first few lines, I'm scrolling slowly and the map contour changes. But once I start scrolling quickly, the scroll is still acknowledged but the threshold is not changed.

I've tried this on two systems, a MacBook Pro and Air (both M2) with Coot installed using the latest instructions in #33 and both running macOS 14.1. The bug occurs with three different mice and the trackpad.

pemsley commented 11 months ago

Are you using a mouse?

Is it possible to change the repeat rate in the "System Settings"?

PlethoraChutney commented 11 months ago

I've tried with mice and trackpads, yes. I could change the scroll speed I suppose! Thanks!

dsclassen commented 10 months ago

I am also experiencing this odd behavior. I have macOS Sonoma 14.1.1 on an Intel Mac (not a laptop so no trackpad to test) I installed Coot 1.1.02 via the brew instructions in #33

With my Logitech MX Master 3 for Mac I see only these messages and no change in map contour:

on_glarea_scrolled() control_is_pressed 0 shift_is_pressed 0
on_glarea_scrolled() control_is_pressed 0 shift_is_pressed 0
on_glarea_scrolled() control_is_pressed 0 shift_is_pressed 0
on_glarea_scrolled() control_is_pressed 0 shift_is_pressed 0
on_glarea_scrolled() control_is_pressed 0 shift_is_pressed 0
on_glarea_scrolled() control_is_pressed 0 shift_is_pressed 0
on_glarea_scrolled() control_is_pressed 0 shift_is_pressed 0

with an Apple mouse I see this output and the map sometimes will change contour level, but is very unresponsive:

on_glarea_scrolled() control_is_pressed 0 shift_is_pressed 0
DEBUG:: idle_contour_function() imol: 0 contour level: 0.252019 n-rmsd: 0.402949
on_glarea_scrolled() control_is_pressed 0 shift_is_pressed 0
on_glarea_scrolled() control_is_pressed 0 shift_is_pressed 0
DEBUG:: idle_contour_function() imol: 0 contour level: 0.189476 n-rmsd: 0.302949
on_glarea_scrolled() control_is_pressed 0 shift_is_pressed 0
on_glarea_scrolled() control_is_pressed 0 shift_is_pressed 0
on_glarea_scrolled() control_is_pressed 0 shift_is_pressed 0
on_glarea_scrolled() control_is_pressed 0 shift_is_pressed 0
on_glarea_scrolled() control_is_pressed 0 shift_is_pressed 0
on_glarea_scrolled() control_is_pressed 0 shift_is_pressed 0
on_glarea_scrolled() control_is_pressed 0 shift_is_pressed 0
on_glarea_scrolled() control_is_pressed 0 shift_is_pressed 0
on_glarea_scrolled() control_is_pressed 0 shift_is_pressed 0
on_glarea_scrolled() control_is_pressed 0 shift_is_pressed 0
on_glarea_scrolled() control_is_pressed 0 shift_is_pressed 0
DEBUG:: idle_contour_function() imol: 0 contour level: 0.126932 n-rmsd: 0.202949
on_glarea_scrolled() control_is_pressed 0 shift_is_pressed 0
on_glarea_scrolled() control_is_pressed 0 shift_is_pressed 0
on_glarea_scrolled() control_is_pressed 0 shift_is_pressed 0

UPDATE:

if I disable smooth scrolling in the Logi Options configuration tool then I can get some control of the map contour level with the MX Master 3 for Mac, but it is still a bit jerky and unresponsive. I will continue to fiddle with mouse scroll speed settings and perhaps decrease the map radius to see if I can get any improvements.

It does seem that Coot is "picking up" the mouse scrolling based on the repeated logging of on_glarea_scrolled() but doesn't seem to actually adjust the contour of the map.

pemsley commented 10 months ago

Interesting. The idea was that if the Scroll/change-contour-level event occured during an on-going contour-level change then it would be "cached" - along with any other scroll events, they would be accumulated and applied at all at once, hence, if you scroll quickly many times the contour level will seem to pause and then make a big jump in contour level. This was intended to improve performance.