Bug 361987 - Morphing popups: When morphing to a bigger tooltip the old content is streched.
Summary: Morphing popups: When morphing to a bigger tooltip the old content is streched.
Status: RESOLVED INTENTIONAL
Alias: None
Product: kwin
Classification: Plasma
Component: effects-various (show other bugs)
Version: 5.6.3
Platform: Arch Linux Linux
: NOR normal
Target Milestone: ---
Assignee: KWin default assignee
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2016-04-20 03:10 UTC by Artur O.
Modified: 2018-08-09 10:35 UTC (History)
2 users (show)

See Also:
Latest Commit:
Version Fixed In:
Sentry Crash Report:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Artur O. 2016-04-20 03:10:57 UTC
When moving from a smaller to bigger tooltip as it morphs the old content gets dragged/stretched out. This is really a polish thing but maybe remove the old content somehow before its starts morphing?

Reproducible: Always

Steps to Reproduce:
1. Hover over something that gives a smaller tooltop
2. Hover now over something that creates a big tooltip
3. profit

Actual Results:  
old content is stretched-out before new content shows.

Expected Results:  
Hide the old contents before starting the morph?
Comment 1 Martin Flöser 2016-04-20 06:31:32 UTC
@Marco: can you please have a look?
Comment 2 Artur O. 2016-04-20 06:52:52 UTC
If you need something easy case to test with;
https://www.epicgames.com/unrealtournament/forums/forumdisplay.php?57-Linux
atleast with chromium you can hover on _thread name_ and _thread op_ in the forum to quickly see the morph doing its work.

Systemload (if you have many cores) and some smaller tooltop morphing from (big -> small) shows that it morphs to the smaller one but content for the new tooltip shows up during that time stretching it.

Again its polish thing and thanks for this effect, really gave KDE/Plasma a more smooth feeling.
Comment 3 Thomas Lübking 2016-04-20 14:45:54 UTC
> Hide the old contents before starting the morph?
And show what instead? The downsqueezed new content would be better?

There should be a crossfade from one to the other - does this not take place on your side?
Comment 4 Artur O. 2016-04-20 15:47:06 UTC
(In reply to Thomas Lübking from comment #3)
> > Hide the old contents before starting the morph?
> And show what instead? The downsqueezed new content would be better?
> 
> There should be a crossfade from one to the other - does this not take place
> on your side?

Well i would say morph only the tooltip window and keep the size or constrain the resize to some % of the contents final/original size so you don't stretch for example one line elements across multiple lines, making it look like you stretched something in ms paint.

I can see if i can get some js/jquery demo to demostrate my point. But you can see on that website i linked how it currently looks when it strectches one line element to 5+ rows during the morph. Just feels like the texture resize effect when you resize a window. Looks good for minor adjustments but when you start moving double size or more makes it just odd and lack for better word; ugly.
Comment 5 Thomas Lübking 2016-04-20 15:57:29 UTC
> Well i would say morph only the tooltip window and keep the size or constrain the resize to some % of the contents

That does obviously not work - I guess what you mean is to not transform the size (and not crossfade the content) but switch to new tooltip size & content directly and transform only the position.

There're already some filters to prevent "small™" and "large™" translations - matter of taste and values I guess.

I can't try your demo because I don't use KWin anymore.
Comment 6 Artur O. 2016-04-20 16:37:30 UTC
(In reply to Thomas Lübking from comment #5)
> > Well i would say morph only the tooltip window and keep the size or constrain the resize to some % of the contents
> 
> That does obviously not work - I guess what you mean is to not transform the
> size (and not crossfade the content) but switch to new tooltip size &
> content directly and transform only the position.
> 
> There're already some filters to prevent "small™" and "large™" translations
> - matter of taste and values I guess.
> 
> I can't try your demo because I don't use KWin anymore.

Transform/Morph the container but not the contents. The demo would be jquery / webb since i dont have any knoledge in qml/qt/kde dev. Or since you don't use kwin anymore maybe try to record the situation when it happens.
Comment 7 Thomas Lübking 2016-04-20 16:53:50 UTC
(In reply to Artur O. from comment #6)

> Transform/Morph the container but not the contents.

That's not possible. The window is opaque to the compositor. (ie. there is no "content" - the window is one block of random pixels)
Comment 8 Vlad Zahorodnii 2018-08-09 10:35:01 UTC
(In reply to Artur O. from comment #6)
> Transform/Morph the container but not the contents. The demo would be jquery
> / webb since i dont have any knoledge in qml/qt/kde dev. Or since you don't
> use kwin anymore maybe try to record the situation when it happens.

As Thomas said, we can't do that because the Morphing Popups effect doesn't know anything about content, so the only viable option is to scale content.