pencil2d / pencil

Pencil2D is an easy, intuitive tool to make 2D hand-drawn animations. Pencil2D is open source and cross-platform.
http://pencil2d.org
GNU General Public License v2.0
1.47k stars 273 forks source link

[UX][BUG] Interface Slider Behaviour #483

Open Jose-Moreno opened 8 years ago

Jose-Moreno commented 8 years ago

--Issue Overview--

There are two problems that I think are related. First the sliders lag behind the cursor motion, which in itself feels more like a performance problem of the app itself. Second is that instead of dragging the slider button, if you click over the slider "line" you can make the slider button move left or right, but the size of the tool won't change, and it will only update after you click again over the slider button.

--Video Demo-- https://www.youtube.com/watch?v=TGRKTc0llZM&feature=youtu.be

--Steps to reproduce--

A) Slider Lag 1) Open Pencil2D 2) Select a tool that has a slider to change it's parameters (i.e Pencil size slider) 3) Click and drag the slider. It will lag behind the actual cursor movement.

B) Slider focus bug 1) Select a tool that has a slider to change it's parameters (i.e Pencil size slider) 2) click & drag the slider button. The size number of the tool changes in real time 3) Click over the slider "line" and watch the slider button move after each click. However the size won't be affected by this. 4) Wherever the slider button is click over it again, and the size number will update itself, as well as the tool size relative to the current position of the slider button.

--Expected Results (A & B)-- Sliders should update in real-time. Sliders should update the tool size instantly at the point where the user clicks. Maybe allowing the slider button to move to the place where the user clicked will allow to solve this issue rapidly, since it seems that the slider button is the one that bridges the behaviour for updating the parameters.

--System Information-- Pencil2D Nightly Build 15 Jan 2016 / Nightly Build 16 Feb 2016 (Run & built with Qt Creator 3.4.2 based on Qt 5.5.0) Windows 7 64bits SP1 ATI Radeon HD 6770 1GB AMD Phenom II X4 965 BE 3.4 GHZ 4 GB RAM

MrStevns commented 8 years ago

Hmm interesting, i'm not experiencing any lag on the slider when i'm moving it back and forth, however.. your second issue, where the slider doesn't change until you drag it, that i can confirm. This have been working in an older build, maybe before i implemented the spinbox to the slider... I'll look into that.

Jose-Moreno commented 8 years ago

@CandyFace Could the slider lag be related to how Qt libraries work in windows? maybe it's a CPU threading problem? I wonder. I have yet to test this in Linux to see if it's less noticeable.

MrStevns commented 7 years ago

@Jose-Moreno do you still experience lag with the slider?

Jose-Moreno commented 7 years ago

@CandyFace Let me build the latest code and i'll get back to you as soon as I can.

Also thanks for taking the time to review all the issues. I haven't had enough time to do it and I'm out of sync with recent changes. :face_with_head_bandage:

Jose-Moreno commented 7 years ago

@CandyFace Just tested with latest code. I still experience Case A (slider Lag). On the other hand Case B was somewhat solved: Now if you click over the slider "line" the slider button will move incrementally towards the place where your cursor is. The pattern they seem to have implemented was the size increments by 1, 6, 10, 14, 18, 22, 26, 30, 34, and so on until you reach the maximum size of 200 units. This is not what I had in mind (the slider should go to the absolute position of where you click), but i guess it works for now.

scribblemaniac commented 7 years ago

The slider behavior for Case B is determined by your operating system. For example, on mac the button will jump straight to the absolute position when you press.

MrStevns commented 7 years ago

Thanks @Jose-Moreno :)

Since both behaviors seems to be Windows related, it's hard for me to debug them. @scribblemaniac even if that's true, it should be possible to force the same behavior. http://stackoverflow.com/questions/11132597/qslider-mouse-direct-jump. The solution with QStyle looks rather easy to implement.

chchwy commented 6 years ago

This issue doesn't happen in the latest nightly build anymore. Can you confirm @Jose-Moreno?

Jose-Moreno commented 6 years ago

@chchwy I had forgotten about this issue. I'll review on the latest build, and close this issue when I confirm it. Thanks for reminding me!

Jose-Moreno commented 6 years ago

@chchwy Ok I finally got to re-test this. So according to the video there are two parts of the issue. First part is still there (slider delay) the other one is kind of fixed, since clicking on an empty part of the slider will at least bring the slider towards the cursor changing the value. However it is reasonably to think that the slider should change to the value directly under the cursor. I believe this is more of a user experience kind of issue rather than a critical problem that would impede the user to work though.

Jose-Moreno commented 6 years ago

[2018 Review] @chchwy @CandyFace This remains unchanged from my last comment. If you don't mind add a UX label to this issue as it's non-critical for most use cases. I'll update the title accordingly as well.