Bug 134676

Summary: Automatical kicker hiding does no work correctly
Product: [Plasma] kicker Reporter: Dirk Stoecker <kde>
Component: generalAssignee: Aaron J. Seigo <aseigo>
Status: RESOLVED DUPLICATE    
Severity: normal CC: grundleborg
Priority: NOR    
Version: unspecified   
Target Milestone: ---   
Platform: unspecified   
OS: Linux   
Latest Commit: Version Fixed In:

Description Dirk Stoecker 2006-09-26 11:08:01 UTC
Version:           3.5.3 (using KDE 3.5.4 "release 71.1" , openSUSE )
Compiler:          Target: i586-suse-linux
OS:                Linux (i686) release 2.6.16.21-0.21-default

I use following settings:

- Immediate hiding of kicker when I leave the display field
- Reactive, when button reaches bottom of screen

A little while kicker works and then it no longer does as expected.
a) going to bottom does not bring kicker up again.
b) When pressing <ALT>+<F1> I get the kicker line, but I does not disappear as
expected when leaving the field with the mouse (but when I go to to top line of the screen)

It seems as if kicker forgets the correct state and never finds back into correct behaviour. The error was introduced somewhere in KDE 3.5.3 or 3.5.4.
Comment 1 Dirk Stoecker 2006-10-02 18:43:39 UTC
After a bit debugging I found it to be related to bug 129818. Thought I still do not know, why my system sometimes thinks that it has a Xinerama layout (it has not).
Comment 2 Dirk Stoecker 2006-10-23 10:33:04 UTC
Well, a bit more debugging shows:

In ExtensionContainer::moveMe() (kicker/core/container_extension.cpp) the newStrut.m_screen is always set to -1 when the function is called, which is the reason for this error (resulting in an exit in the second if-block in ExtensionContainer::unhideTriggered()). I do not yet know why this is done. Also I do not know, what moveMe() does anyway.
Comment 3 Dirk Stoecker 2006-10-26 10:30:54 UTC
I tracked the error to the end of my abilities: In the following function the reason lays hidden somewhere.

UserRectSel::PanelStrut UserRectSel::select(const RectList& rects, const QPoint& offset)
{
    UserRectSel sel(rects, offset);
    sel.show();
    sel.grabMouse();
    sel.paintCurrent();
    qApp->enter_loop();
    sel.paintCurrent();
    sel.releaseMouse();
    qApp->syncX();
    return sel.current;
}

Normally in enter_loop() the sel.current.m_screen is set correctly. This is not done in the error case. It remains -1.

A fix would be to test for -1 in the moveMe() function, but I do not know the internal structure good enough to verify if this would be valid or not.

Now one of the kicker developers must continue. Either tell me what I need to look for or fix the bug based on the information given here.
Comment 4 George Goldberg 2008-01-07 05:44:57 UTC

*** This bug has been marked as a duplicate of 118551 ***