/** * Show/hide playlist global shortcut and PlayerWindow PlaylistButton connect to this slot * RULES: * 1. hidden & iconified -> deiconify & show @n * 2. hidden & deiconified -> show @n * 3. shown & iconified -> deiconify @n * 4. shown & deiconified -> hide @n * 5. don't hide if there is no tray icon or playerWindow. todo (I can't be arsed) @n * * @note isMinimized() can only be true if the window isShown() * this has taken me hours to get right, change at your peril! * there are more contingencies than you can believe */ void PlaylistWindow::showHide() //SLOT { const KWin::WindowInfo info = KWin::windowInfo( winId() ); const uint desktop = KWin::currentDesktop(); const bool isOnThisDesktop = info.isOnDesktop( desktop ); const bool isShaded = false; if( isShaded ) { KWin::clearState( winId(), NET::Shaded ); setShown( true ); } if( !isOnThisDesktop ) { KWin::setOnDesktop( winId(), desktop ); setShown( true ); } else if( !info.isMinimized() && !isShaded ) setShown( !isShown() ); if( isShown() ) KWin::deIconifyWindow( winId() ); }
bool PlaylistWindow::isReallyShown() const { const KWin::WindowInfo info = KWin::windowInfo( winId() ); return isShown() && !info.isMinimized() && info.isOnDesktop( KWin::currentDesktop() ); }