I committed the last of the changes for panel hiding for 4.2 this morning. Here's the current status of things:
The last of open hiding-related bugs on bugs.kde.org were closed, save one that has to do with how to unhide a panel that is hidden on the screen edge between two panels (which is hard to do, of course, as there is nothing "stopping" the mouse cursor from moving right past the unhide trigger area).
The hide/unhide animation speed is not configurable; I'm really not sure it needs to be. We'll see. 4.2 will ship with a sensible setting (1/10th of a second to unhide, 1/5th of a second to hide).
Things left in terms of panels for post-4.2 development include:
So there is still a few interesting avenues to explore with the panels in the Plasma desktop shell, but they are getting fewer. With 4.2, Plasma has virtually all the features Kicker panels did and a few it didn't.
All I know is that, barring new bug reports coming in, I probably won't be touching the panel code for a couple months. =)
- General hiding:
- unhides triggered only where the panel is, not along whole screen edges, making non-full-width panels behave a bit nicer
- unhides on drag enter, hides again on drag leave. I actually ended up implementing the first half of the XDnd protocol (X11 doesn't actually do drag and drop natively!) by hand using xlib calls to make this work. Every time I touch xlib I am reminded how much a I love Qt and KDE libs for making it possible to never touch xlib for anything sane. (Unfortunately, desktop shells involve all sorts of insanity. ;)
- Auto hiding: when the mouse leaves the panel, the panel hide; when it hits the screen edge it unhides. General features/improvements:
- will not hide if a popup is shown, hides when the popup goes away if the mouse is not in the panel
Compositing-only features:- Glow: when the mouse approaches, a small glow on the screen edge appears, brightening as you get closer, to let you know there is a panel there.
- Animation: animates in/out of the screen. Works fine with the system tray now (well, mostly; it's not pixel-perfect, but as close as we can get it) as well as with multiple screen setups (e.g. it won't "hide" by moving to the other screen as kicker would)
- Windows-can-cover: windows are allowed to cover the panel and while the panel never disappears off-screen, it can be pulled back to the top by mousing over the screen edge it is on
- Does not flicker madly after unhidden if the mouse doesn't leave the screen edge
- No glow effect since the panel is actually always on screen
The last of open hiding-related bugs on bugs.kde.org were closed, save one that has to do with how to unhide a panel that is hidden on the screen edge between two panels (which is hard to do, of course, as there is nothing "stopping" the mouse cursor from moving right past the unhide trigger area).
The hide/unhide animation speed is not configurable; I'm really not sure it needs to be. We'll see. 4.2 will ship with a sensible setting (1/10th of a second to unhide, 1/5th of a second to hide).
Things left in terms of panels for post-4.2 development include:
- Positioning of multiple panels that overlap; right now there is no code there to automatically manage such situations; you need to configure the panel widths yourself. Kicker used to stack panels, but that leads to all sorts of sad situations. This is could be an interesting not-too-complex research project.
- Optional per-virtual-desktop panels, much as we now have the experiment per-virtual-desktop Activities.
- Activity aware panels, so when the desktop activity changes, the panel could too.
- Other panel types (Containments), like a dock style.
- Manual hiding, though I'm not sure there's actually sufficient demand for that to warrant it's inclusion?
So there is still a few interesting avenues to explore with the panels in the Plasma desktop shell, but they are getting fewer. With 4.2, Plasma has virtually all the features Kicker panels did and a few it didn't.
All I know is that, barring new bug reports coming in, I probably won't be touching the panel code for a couple months. =)