Added option to turn off hiding utility windows for inactive applications.
BUG: 103921 svn path=/trunk/KDE/kdebase/kwin/; revision=412381
This commit is contained in:
parent
c8088bb731
commit
5e1f36f580
5 changed files with 31 additions and 1 deletions
|
@ -75,6 +75,7 @@
|
||||||
#define KWIN_SHADEHOVER "ShadeHover"
|
#define KWIN_SHADEHOVER "ShadeHover"
|
||||||
#define KWIN_SHADEHOVER_INTERVAL "ShadeHoverInterval"
|
#define KWIN_SHADEHOVER_INTERVAL "ShadeHoverInterval"
|
||||||
#define KWIN_FOCUS_STEALING "FocusStealingPreventionLevel"
|
#define KWIN_FOCUS_STEALING "FocusStealingPreventionLevel"
|
||||||
|
#define KWIN_HIDE_UTILITY "HideUtilityWindowsForInactive"
|
||||||
|
|
||||||
// kwm config keywords
|
// kwm config keywords
|
||||||
#define KWM_ELECTRIC_BORDER "ElectricBorders"
|
#define KWM_ELECTRIC_BORDER "ElectricBorders"
|
||||||
|
@ -608,8 +609,15 @@ KAdvancedConfig::KAdvancedConfig (bool _standAlone, KConfig *_config, QWidget *p
|
||||||
"</ul>" );
|
"</ul>" );
|
||||||
QWhatsThis::add( focusStealing, wtstr );
|
QWhatsThis::add( focusStealing, wtstr );
|
||||||
QWhatsThis::add( focusStealingLabel, wtstr );
|
QWhatsThis::add( focusStealingLabel, wtstr );
|
||||||
|
|
||||||
connect(focusStealing, SIGNAL(activated(int)), SLOT(changed()));
|
connect(focusStealing, SIGNAL(activated(int)), SLOT(changed()));
|
||||||
|
|
||||||
|
hideUtilityWindowsForInactive = new QCheckBox( i18n( "Hide utility windows for inactive applications" ), this );
|
||||||
|
QWhatsThis::add( hideUtilityWindowsForInactive,
|
||||||
|
i18n( "When turned on, utility windows (tool windows, torn-off menus,...) of inactive applications will be"
|
||||||
|
" hidden and will be shown only when the application becomes active. Note that applications"
|
||||||
|
" have to mark the windows with the proper window type for this feature to work." ));
|
||||||
|
connect(hideUtilityWindowsForInactive, SIGNAL(toggled(bool)), SLOT(changed()));
|
||||||
|
lay->addWidget( hideUtilityWindowsForInactive );
|
||||||
|
|
||||||
lay->addStretch();
|
lay->addStretch();
|
||||||
load();
|
load();
|
||||||
|
@ -643,6 +651,10 @@ void KAdvancedConfig::setFocusStealing(int l) {
|
||||||
focusStealing->setCurrentItem(l);
|
focusStealing->setCurrentItem(l);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void KAdvancedConfig::setHideUtilityWindowsForInactive(bool s) {
|
||||||
|
hideUtilityWindowsForInactive->setChecked( s );
|
||||||
|
}
|
||||||
|
|
||||||
void KAdvancedConfig::load( void )
|
void KAdvancedConfig::load( void )
|
||||||
{
|
{
|
||||||
config->setGroup( "Windows" );
|
config->setGroup( "Windows" );
|
||||||
|
@ -657,6 +669,7 @@ void KAdvancedConfig::load( void )
|
||||||
// setFocusStealing( config->readNumEntry(KWIN_FOCUS_STEALING, 2 ));
|
// setFocusStealing( config->readNumEntry(KWIN_FOCUS_STEALING, 2 ));
|
||||||
// TODO default to low for now
|
// TODO default to low for now
|
||||||
setFocusStealing( config->readNumEntry(KWIN_FOCUS_STEALING, 1 ));
|
setFocusStealing( config->readNumEntry(KWIN_FOCUS_STEALING, 1 ));
|
||||||
|
setHideUtilityWindowsForInactive( config->readBoolEntry( KWIN_HIDE_UTILITY, true ));
|
||||||
|
|
||||||
emit KCModule::changed(false);
|
emit KCModule::changed(false);
|
||||||
}
|
}
|
||||||
|
@ -680,6 +693,7 @@ void KAdvancedConfig::save( void )
|
||||||
config->writeEntry(KWM_ELECTRIC_BORDER_DELAY,getElectricBorderDelay());
|
config->writeEntry(KWM_ELECTRIC_BORDER_DELAY,getElectricBorderDelay());
|
||||||
|
|
||||||
config->writeEntry(KWIN_FOCUS_STEALING, focusStealing->currentItem());
|
config->writeEntry(KWIN_FOCUS_STEALING, focusStealing->currentItem());
|
||||||
|
config->writeEntry(KWIN_HIDE_UTILITY, hideUtilityWindowsForInactive->isChecked());
|
||||||
|
|
||||||
if (standAlone)
|
if (standAlone)
|
||||||
{
|
{
|
||||||
|
@ -701,6 +715,7 @@ void KAdvancedConfig::defaults()
|
||||||
// setFocusStealing(2);
|
// setFocusStealing(2);
|
||||||
// TODO default to low for now
|
// TODO default to low for now
|
||||||
setFocusStealing(1);
|
setFocusStealing(1);
|
||||||
|
setHideUtilityWindowsForInactive( true );
|
||||||
emit KCModule::changed(true);
|
emit KCModule::changed(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -223,8 +223,10 @@ private:
|
||||||
KIntNumInput *delays;
|
KIntNumInput *delays;
|
||||||
|
|
||||||
void setFocusStealing( int );
|
void setFocusStealing( int );
|
||||||
|
void setHideUtilityWindowsForInactive( bool );
|
||||||
|
|
||||||
QComboBox* focusStealing;
|
QComboBox* focusStealing;
|
||||||
|
QCheckBox* hideUtilityWindowsForInactive;
|
||||||
};
|
};
|
||||||
|
|
||||||
class KProcess;
|
class KProcess;
|
||||||
|
|
|
@ -151,6 +151,7 @@ unsigned long Options::updateSettings()
|
||||||
(*it) = (*it).lower();
|
(*it) = (*it).lower();
|
||||||
|
|
||||||
killPingTimeout = config->readNumEntry( "KillPingTimeout", 5000 );
|
killPingTimeout = config->readNumEntry( "KillPingTimeout", 5000 );
|
||||||
|
hideUtilityWindowsForInactive = config->readBoolEntry( "HideUtilityWindowsForInactive", false );
|
||||||
|
|
||||||
// Mouse bindings
|
// Mouse bindings
|
||||||
config->setGroup( "MouseBindings");
|
config->setGroup( "MouseBindings");
|
||||||
|
|
|
@ -277,6 +277,9 @@ class Options : public KDecorationOptions
|
||||||
// timeout before non-responding application will be killed after attempt to close
|
// timeout before non-responding application will be killed after attempt to close
|
||||||
int killPingTimeout;
|
int killPingTimeout;
|
||||||
|
|
||||||
|
// Whether to hide utility windows for inactive applications.
|
||||||
|
bool hideUtilityWindowsForInactive;
|
||||||
|
|
||||||
//translucency settings
|
//translucency settings
|
||||||
bool useTranslucency;
|
bool useTranslucency;
|
||||||
bool translucentActiveWindows;
|
bool translucentActiveWindows;
|
||||||
|
|
|
@ -681,6 +681,14 @@ void Workspace::updateCurrentTopMenu()
|
||||||
void Workspace::updateToolWindows( bool also_hide )
|
void Workspace::updateToolWindows( bool also_hide )
|
||||||
{
|
{
|
||||||
// TODO what if Client's transiency/group changes? should this be called too? (I'm paranoid, am I not?)
|
// TODO what if Client's transiency/group changes? should this be called too? (I'm paranoid, am I not?)
|
||||||
|
if( !options->hideUtilityWindowsForInactive )
|
||||||
|
{
|
||||||
|
for( ClientList::ConstIterator it = clients.begin();
|
||||||
|
it != clients.end();
|
||||||
|
++it )
|
||||||
|
(*it)->hideClient( false );
|
||||||
|
return;
|
||||||
|
}
|
||||||
const Group* group = NULL;
|
const Group* group = NULL;
|
||||||
const Client* client = active_client;
|
const Client* client = active_client;
|
||||||
// Go up in transiency hiearchy, if the top is found, only tool transients for the top mainwindow
|
// Go up in transiency hiearchy, if the top is found, only tool transients for the top mainwindow
|
||||||
|
@ -816,6 +824,7 @@ void Workspace::slotReconfigure()
|
||||||
popupinfo->reconfigure();
|
popupinfo->reconfigure();
|
||||||
readShortcuts();
|
readShortcuts();
|
||||||
forEachClient( CheckIgnoreFocusStealingProcedure());
|
forEachClient( CheckIgnoreFocusStealingProcedure());
|
||||||
|
updateToolWindows( true );
|
||||||
|
|
||||||
if( mgr->reset( changed ))
|
if( mgr->reset( changed ))
|
||||||
{ // decorations need to be recreated
|
{ // decorations need to be recreated
|
||||||
|
|
Loading…
Reference in a new issue