> On Oct. 29, 2015, 8:32 p.m., Thomas Lübking wrote:
> > What's the point of client relative geometries?
> > 
> > Afaics, there'll be two "problematic" scenarios.
> > 
> > 1) >= 2 taskbars on >= 1 screens, the window is minimized from the taskbar
> > 2) >= 2 taskbars on >= 2 screens, the window is NOT minimized from the 
> > taskbar (but the deco button, or wmctrl etc.)
> > 
> > (1) can be _easily_ resolved by the minimizing taskbar applet updating the 
> > (one is actually sufficient here) geometry right before minimizing the 
> > client
> > 
> > The challenge of (2) is to select a taskbar where to minimize to itfp (I 
> > guess one does not want to minimize to two regions at once, seems confusing)
> > The reasonable approach seems to minimize to any icon rect that is on the 
> > same screen the window is on (WMs free choice), so we need a list of global 
> > (or tagged screen relative) geometries where the WM can look for eg. the 
> > closes match on the current ("active") or the windows screen.
> > 
> > The only benefit of a window relative geometry would be (less overhead on) 
> > tracking a moving client while the window minimizes - but the only scenario 
> > I see here is an autohiding panel and then the only overhead (if one wants 
> > to buy into such feature at all) would be an update of the icon rect from 
> > the on-screen to the off-screen position of the panel.
> > 
> > Otoh, keeping a reference to a surface around
> > a) requires a surface itfp
> > b) sounds *extremely* bug prone, eg.:
> >    - I don't see where the surface removal is tracked in the patch, so we 
> > could end up with a dangeling pointer.
> >    - Another case is where the taskbar is moved from eg. a panel to the 
> > desktop - we'd have it in the desktop and -outdated- the panel at the same 
> > time)
> >    - Also what if I add a taskbar to the top and the bottom of my desktop? 
> > That's not supported, is it?
> > 
> > => Imo we *need* one icon rect per screen.
> > It would be cool to have one "per taskbar" (calc closest distance on 
> > unrelated minimizations)
> > But I object the approach to assign the rects to particular surfaces.
> 
> Martin Gräßlin wrote:
>     > It would be cool to have one "per taskbar" (calc closest distance on 
> unrelated minimizations)
>     
>     this is kind of the idea here. Marco and I had discussed the needs and 
> came up with "each panel needs to set the geometry". So that KWin knows all 
> the possible geometries (we cannot use it yet, but well that's a different 
> problem). That's what the patch does: Plasma can set for different windows 
> (WindowManagement) an icon geometry relative to the a PlasmaSurface. My 
> thought was doing it the other way around, but that sounds to be details.
> 
> Thomas Lübking wrote:
>     But surface != taskbar, is it?
>     A systematic problem is the cooperative approach to keep the list clean 
> (ie. a buggy or crashing client shall not leave false rects behind forever, 
> kwin cannot be restarted to clear the list)
>     
>     Assigning rects to windows/surfaces should be capable of catching crashy, 
> but not buggy clients - nor can it cover multiple taskbars per surface.
>     Also I'd avoid resolving cached client pointers here (or you'd have to 
> look them up)
>     
>     - I guess we won't get around resolving the surface (since it 
> doesn't/isn't supposed to know its position on screen?)
>     - I'm not sure whether "one taskbar per surface" is a reasonable 
> restriction (my opinion still is "zero taskbars per nowhere" ;-)
>     - The patch definitively lacks cleanup functionality, ie. at least a 
> cooperative solution to withdraw the rect (taskbar -or entry- removed from 
> panel) and hash maintainace ("is the surface pointer still valid at all"?)
>     - If the panel <=> taskbar assumption isn't sufficient (additional 
> systray entry case?) we'll require further mapping (UID on top of surface) 
> and maintainance mechanisms (to not end up with 100 rects on the same surface)
> 
> Marco Martin wrote:
>     I can see the problem of having leftover geometries due to clients 
> misbehaving.
>     in the latest version at least removes those for panels that go away.
>     An alternative may be instead the hash plasmawindow/geometry in 
> plasmasurfaceinterface instead, on kwayland side it may be slightly more 
> elegant.
>     however i don't know how to make it work correctly from kwin, it shuld 
> iterate over all the existing plasmashellsurfaceinterfaces, that doesn't seem 
> much pretty

having the limit of one taskbar per panel is not great, but i think it's quite 
reasonable to expect that (the systray shouldn't really have actual 
applications in it)


- Marco


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://git.reviewboard.kde.org/r/125871/#review87697
-----------------------------------------------------------


On Oct. 30, 2015, 1:24 p.m., Marco Martin wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://git.reviewboard.kde.org/r/125871/
> -----------------------------------------------------------
> 
> (Updated Oct. 30, 2015, 1:24 p.m.)
> 
> 
> Review request for kwin and Plasma.
> 
> 
> Repository: kwayland
> 
> 
> Description
> -------
> 
> this exposes the geometry of taskbar entries in plasma-windowmanagement, in 
> order to make the minimize effects possible.
> unlike on X11, it takes relative positions and it has one geometry per panel, 
> making possible to have multiple taskbars working.
> 
> however this is still not completely exposed, as internally kwin has still 
> only one geometry, it will need a change in kwin itself (suggestions welcome) 
> probably the rotocol will need also a minimizeTo function that takes the 
> panel as argument.
> 
> another thing completely missing is tests: unfortunately the whole 
> plasma-windowmanagement doesn't have any autotest yet :/
> 
> 
> Diffs
> -----
> 
>   autotests/client/CMakeLists.txt 1556c47 
>   autotests/client/test_wayland_windowmanagement.cpp PRE-CREATION 
>   src/client/plasmawindowmanagement.h abd8fa6 
>   src/client/plasmawindowmanagement.cpp 1f9674c 
>   src/client/plasmawindowmodel.h 5a6aac4 
>   src/client/plasmawindowmodel.cpp 355ef53 
>   src/client/protocols/plasma-window-management.xml ca6a7cc 
>   src/server/plasmashell_interface.h 9db3f52 
>   src/server/plasmashell_interface.cpp d29d7bc 
>   src/server/plasmawindowmanagement_interface.h 6ccc22e 
>   src/server/plasmawindowmanagement_interface.cpp ad714a5 
> 
> Diff: https://git.reviewboard.kde.org/r/125871/diff/
> 
> 
> Testing
> -------
> 
> 
> Thanks,
> 
> Marco Martin
> 
>

_______________________________________________
Plasma-devel mailing list
Plasma-devel@kde.org
https://mail.kde.org/mailman/listinfo/plasma-devel

Reply via email to