bugMyPaint - Bugs: bug #19082, [wish] viewport zoom feedback

Show feedback again

You are not allowed to post comments on this tracker with your current authentification level.

bug #19082: [wish] viewport zoom feedback

Submitted by:  David REVOY <deevad>
Submitted on:  Wed Nov 30 16:46:20 2011  
Severity: 1 - WishPriority: 5 - Normal
Status: FixedPrivacy: Public
Assigned to: NoneOpen/Closed: Closed
Release: 0.1.0Git+Planned Release: None
Operating System: LinuxMint / Ubuntu

(Jump to the original submission Jump to the original submission)

Fri Jan 4 18:12:47 2013, comment #14:

This bug is already Fixed in git, but is marked as Open. I am now
marking it Closed because a new stable version, 1.1.0, is
available, meaning that this bug no longer affects the current
stable release.

Please reopen if this problem reoccurs with the new version of

Andrew Chadwick <achadwick>
Project Administrator
Mon Nov 26 13:53:42 2012, comment #13:

Marking as fixed.
David: I gave you the rights to change these things as well.

Jon Nordby <jonnor>
Project Administrator
Sat Aug 25 14:08:55 2012, comment #12:

This one thread can have the status changed from open to closed. The actual solution ( since January ) of "on canvas label" done by Andrew works perfectly. thanks!

David REVOY <deevad>
Project Member
Fri Jan 13 22:04:47 2012, comment #11:

Those placement ideas are great.
The newly rounded corner and smooth timed notification works also perfectly. Thanks a lot for this, and for the consideration about my criticism and the correction time you took to do it.

David REVOY <deevad>
Project Member
Fri Jan 13 21:31:01 2012, comment #10:

I've added rounded corners, slowed the fade speed, and prefixed with "Zoom:". Can you take another look and let me know what you think?


Placement is not final yet. As I envisage it, top-right is for view change feedback, like zooming or rotating (or flipping?), the centre is for really radical changes to the view like fullscreening, the bottom of the screen is for statusbar-like messages*, and the top-right might be useful for file operations or stuff that takes a while to do. The fullscreen interface should echo the layout of the windowed interface, but we don't have to use conventional widgets for simple info.

Andrew Chadwick <achadwick>
Project Administrator
Thu Jan 12 10:51:08 2012, comment #9:

This is great ! I also read in the code ( as I could , I'm still python beginner ) you added a template to help other coders to use it for other parts of Mypaint. That's really good.

My criticism :

- when I paint, then I zoom ( + and - keys ) my eyes are focused on the center of the canvas at this moment , the time my eyes travel to the notification box for having the new information and this one is already disapeared. So I have to speedly zoom in and zoom out, to see the actual value with my eyes focused on the corner. I think this is just a issue about the delay of fading. I really like how it's really 'light' and 'speedy' actually too. I think the setting just need few more millisecond more.
With "fade_step_delay = 80" I can see it ( greyish at the end of fading almost ). But with tweaking this setting the animation become laggy. It's just to give you an idea :)
By the way, for Ctrl+Space 'continuous interactive zoom' it's work great.

- A minor minor improvement would be rounded corner ( but if it's too complicated , that's not worth it ) I just say it if it's like a css 'rounded-corner' value to tweak.

- Maybe in prefix to "100%" adding the word "Zoom 100%" ; I imagine this little box will be useful for other keyboard feedback, and "100%" alone can be mismatched with other things ( like 100% opacity )

David REVOY <deevad>
Project Member
Thu Jan 12 01:49:08 2012, comment #8:

I've added an internal interface for drawing little status overlays on top of the main canvas. There is now some scale feedback as the initial implementation of something using this.


The scale feedback can be toggled off via the menus if it turns out to be too annoying for people: View → Feedback → *.

David: can you pull the latest git master and take a look at it? You should see the scale show and fade out in the rop-right corner when MyPaint loads, and whenever the zoom level is changed. Let me know your thoughts.

Andrew Chadwick <achadwick>
Project Administrator
Sun Jan 1 18:51:57 2012, comment #7:

If we go the route of flickery flashy info displays, we'll have to be careful that they aren't too distracting. Fade in/fade out?

Some systems call them "toast" popups.

I'd want corner displays or similar things to basically take the role of a statusbar when the program is fullscreened. Show or hide both the info pops and the status bar using the same menu toggler, of course. Rationale: if we're going to be more modal about user interaction, then we probably need statusbar-like explanations of what to do next ("click and drag to adjust the document frame", "draw straight lines: +alt for radial, +ctrl for angle lock", that sort of thing. Blank for the main "just draw" mode to avoid silly clutter ☺). Speculating wildly, a wrapper around GtkStatusbar + some fancy infobox overlay that allows general status messages and timed messages to be pushed ought to suffice.

Do we have enough of a need for this little API yet? I think just a zoom level, mirror and rotation states, "Loading..." and "Saving..." might not be enough call for it.

There's also GtkInfoBar for very important messages that don't need a dialog, but I don't think we have any messages that need that treatment yet.

Andrew Chadwick <achadwick>
Project Administrator
Sun Dec 18 01:15:31 2011, comment #6:

Just as information complement to this thread about a visual feedback I saw this video : http://www.youtube.com/watch?v=HtZhI5xcNSg&feature=player_embedded#! ; you can see in it a little 'on canvas' info box with information written for the users.

David REVOY <deevad>
Project Member
Sun Dec 11 03:06:25 2011, comment #5:

display a text like "25%" on the canvas for 1 second
A notification system on canvas would answer very well as a feedback too, imo. It's better in case of fullscreen work.

I also like the clickable widget, for GUI usage. When I switch here with my Cintiq, I tend to be very dependent of the GUI element. As keyboard is harder to reach, this controls became very productive and intuitive.

David REVOY <deevad>
Project Member
Sat Dec 10 21:35:31 2011, comment #4:

About the zoom feedback problem, I just noted a webapp that solves this very simple: display a text like "25%" on the canvas for 1 second. Doesn't need any permanent screen space.

I guess a clickable widget can also be useful, but personally I think I would not use it.

Martin Renold <martinxyz>
Project Administrator
Sat Dec 10 19:08:11 2011, comment #3:

It's a standard control, with a few additional options turned on. Spinbuttons are a little rare as controls because the tiny buttons need a lot of dexterity which makes them unpopular. OTOH, we'd be displaying at 32px which is quite tall, and being able to reformat the text we display on the fly will be nice.

I'd be using the limits set on the main document's viewport, of course; the demo is just a demo.

MyPaint actually has two systems for zooming. The main one is the TiledDrawWidget's "scale" field, sometimes called "zoom" which is just a multiplier stored as a float. On top of that there's a nonlinear "zoomlevel" mediated by the gui.document.Document instance which provides discrete levels geared towards faster power-of-two scaled drawing in the absence of rotations. It's a lot of stuff to keep in sync, so I'm fiddling about here trying to expose the main "scale" field as gtk.Adjustment: not as easy as it may seem, as it happens. But I'm still working on this.

Andrew Chadwick <achadwick>
Project Administrator
Wed Nov 30 20:37:32 2011, comment #2:

This is something you made custom ? it's a cute control :)
Bravo, it would be perfect in my opinion, and will save room in top toolbar
Thanks also for the *.py file, very comfortable to test.

A little proposition : http://img850.imageshack.us/img850/8328/20111130212025screensho.png ( an icon variation on mouse 'hover' the reset icon ) . I don't know if its possible or complex. If not possible, just forgot about this. I just wanted to make the reset option more KISS for user who discover the GUI.

A similar control for the rotation is also very welcome.

Note : In the spin, the Zoom min is 25% ; I think Mypaint can Zoom out more than 25% ; like 3 'minus' key press more. I know this *.py is just an exemple...

David REVOY <deevad>
Project Member
Wed Nov 30 19:41:42 2011, comment #1:

Something like the attached snippet in place of the zoom in/out buttons maybe? We could use something similar for the view rotation as well.

(file #14622)

Andrew Chadwick <achadwick>
Project Administrator
Wed Nov 30 16:46:20 2011, original submission:


I did resolution mistakes lastly because of the lake of viewport zoom feedback. So I formulate a humble wish on the bugtracker to know if its planed to solve this, and just discuss about it.

What do you think about something like this ?

David REVOY <deevad>
Project Member


Attached Files
file #14622:  spin.py added by achadwick (2kB - text/x-python)


Depends on the following items: None found

Items that depend on this one: None found


Carbon-Copy List
  • -unavailable- added by jonnor (Posted a comment)
  • -unavailable- added by martinxyz (Posted a comment)
  • -unavailable- added by achadwick (Updated the item)
  • -unavailable- added by deevad (Submitted the item)

    Do you think this task is very important?
    If so, you can click here to add your encouragement to it.
    This task has 0 encouragements so far.

    Only logged-in users can vote.


    Error: not logged in



    Follow 4 latest changes.

    Date Changed By Updated Field Previous Value => Replaced By
    Fri Jan 4 18:12:47 2013achadwickOpen/ClosedOpen=>Closed
    Mon Nov 26 13:53:42 2012jonnorStatusIn Progress=>Fixed
    Thu Jan 12 01:49:08 2012achadwickStatusNone=>In Progress
    Wed Nov 30 19:41:42 2011achadwickAttached File-=>Added spin.py, #14622
    Show feedback again

    Back to the top

    Powered by Savane 3.1-cleanup