Window specific setting to skip window switchers (tabbox, present windows, desktop grid).

FEATURE: 171192
CCBUG: 179723

svn path=/trunk/KDE/kdebase/workspace/; revision=1122404
This commit is contained in:
Martin Gräßlin 2010-05-03 20:04:44 +00:00
parent 1a02507f50
commit fa7f160cb3
16 changed files with 280 additions and 194 deletions

View file

@ -1429,6 +1429,15 @@ void Client::setSkipPager( bool b )
updateWindowRules();
}
void Client::setSkipSwitcher( bool set )
{
set = rules()->checkSkipSwitcher( set );
if( set == skipSwitcher() )
return;
skip_switcher = set;
updateWindowRules();
}
void Client::setModal( bool m )
{ // Qt-3.2 can have even modal normal windows :(
if( modal == m )

View file

@ -179,6 +179,9 @@ class Client
bool skipPager() const;
void setSkipPager( bool );
bool skipSwitcher() const;
void setSkipSwitcher( bool set );
bool keepAbove() const;
void setKeepAbove( bool );
bool keepBelow() const;
@ -556,6 +559,7 @@ class Client
uint Pping : 1; ///< Does it support _NET_WM_PING?
uint input : 1; ///< Does the window want input in its wm_hints
uint skip_pager : 1;
uint skip_switcher : 1;
uint motif_may_resize : 1;
uint motif_may_move : 1;
uint motif_may_close : 1;
@ -805,6 +809,11 @@ inline bool Client::skipPager() const
return skip_pager;
}
inline bool Client::skipSwitcher() const
{
return skip_switcher;
}
inline bool Client::keepAbove() const
{
return keep_above;

View file

@ -1544,6 +1544,13 @@ EffectWindowList EffectWindowImpl::mainWindows() const
return EffectWindowList();
}
bool EffectWindowImpl::isSkipSwitcher() const
{
if( Client* c = dynamic_cast< Client* >( toplevel ))
return c->skipSwitcher();
return false;
}
WindowQuadList EffectWindowImpl::buildQuads( bool force ) const
{
return sceneWindow()->buildQuads( force );

View file

@ -271,6 +271,8 @@ class EffectWindowImpl : public EffectWindow
virtual EffectWindow* findModal();
virtual EffectWindowList mainWindows() const;
virtual bool isSkipSwitcher() const;
virtual WindowQuadList buildQuads( bool force = false ) const;
virtual void minimize() const;

View file

@ -346,7 +346,7 @@ void DesktopGridEffect::paintWindow( EffectWindow* w, int mask, QRegion region,
d.xTranslate += qRound( newPos.x() - w->x() );
d.yTranslate += qRound( newPos.y() - w->y() );
if( isUsingPresentWindows() && w->isDock() )
if( isUsingPresentWindows() && ( w->isDock() || w->isSkipSwitcher() ) )
{
// fade out panels if present windows is used
d.opacity *= ( 1.0 - timeline.value() );
@ -1200,7 +1200,7 @@ void DesktopGridEffect::setup()
foreach( EffectWindow* w, effects->stackingOrder() )
{
if( w->isOnDesktop( i ) && w->screen() == j && !w->isDesktop() && !w->isDock() &&
w->visibleInClientGroup() )
w->visibleInClientGroup() && !w->isSkipSwitcher() )
{
manager.manage( w );
}

View file

@ -1670,6 +1670,8 @@ bool PresentWindowsEffect::isSelectableWindow( EffectWindow *w )
return false;
if( !w->visibleInClientGroup() )
return false;
if( w->isSkipSwitcher() )
return false;
switch( m_mode )
{
case ModeAllDesktops:

View file

@ -96,6 +96,7 @@ RulesWidget::RulesWidget( QWidget* parent )
SETUP( noborder, set );
SETUP( skiptaskbar, set );
SETUP( skippager, set );
SETUP( skipswitcher, set );
SETUP( acceptfocus, force );
SETUP( closeable, force );
SETUP( autogroup, force );
@ -147,6 +148,7 @@ UPDATE_ENABLE_SLOT( below )
UPDATE_ENABLE_SLOT( noborder )
UPDATE_ENABLE_SLOT( skiptaskbar )
UPDATE_ENABLE_SLOT( skippager )
UPDATE_ENABLE_SLOT( skipswitcher )
UPDATE_ENABLE_SLOT( acceptfocus )
UPDATE_ENABLE_SLOT( closeable )
UPDATE_ENABLE_SLOT( autogroup )
@ -436,6 +438,7 @@ void RulesWidget::setRules( Rules* rules )
CHECKBOX_SET_RULE( noborder, );
CHECKBOX_SET_RULE( skiptaskbar, );
CHECKBOX_SET_RULE( skippager, );
CHECKBOX_SET_RULE( skipswitcher, );
CHECKBOX_FORCE_RULE( acceptfocus, );
CHECKBOX_FORCE_RULE( closeable, );
CHECKBOX_FORCE_RULE( autogroup, );
@ -530,6 +533,7 @@ Rules* RulesWidget::rules() const
CHECKBOX_SET_RULE( noborder, );
CHECKBOX_SET_RULE( skiptaskbar, );
CHECKBOX_SET_RULE( skippager, );
CHECKBOX_SET_RULE( skipswitcher, );
CHECKBOX_FORCE_RULE( acceptfocus, );
CHECKBOX_FORCE_RULE( closeable, );
CHECKBOX_FORCE_RULE( autogroup, );
@ -651,6 +655,7 @@ void RulesWidget::prefillUnusedValues( const KWindowInfo& info )
CHECKBOX_PREFILL( noborder,, info.frameGeometry() == info.geometry() );
CHECKBOX_PREFILL( skiptaskbar,, info.state() & NET::SkipTaskbar );
CHECKBOX_PREFILL( skippager,, info.state() & NET::SkipPager );
CHECKBOX_PREFILL( skipswitcher,, false );
//CHECKBOX_PREFILL( acceptfocus, );
//CHECKBOX_PREFILL( closeable, );
//CHECKBOX_PREFILL( autogroup, );

View file

@ -70,6 +70,7 @@ class RulesWidget
void updateEnablenoborder();
void updateEnableskiptaskbar();
void updateEnableskippager();
void updateEnableskipswitcher();
void updateEnableacceptfocus();
void updateEnablecloseable();
void updateEnableautogroup();

View file

@ -7,7 +7,7 @@
<x>0</x>
<y>0</y>
<width>685</width>
<height>441</height>
<height>462</height>
</rect>
</property>
<layout class="QVBoxLayout">
@ -19,16 +19,8 @@
<property name="currentIndex">
<number>0</number>
</property>
<widget class="QWidget" name="TabPage1" >
<property name="geometry" >
<rect>
<x>0</x>
<y>0</y>
<width>681</width>
<height>416</height>
</rect>
</property>
<attribute name="title" >
<widget class="QWidget" name="TabPage1">
<attribute name="title">
<string>&amp;Window</string>
</attribute>
<layout class="QGridLayout">
@ -246,16 +238,8 @@
</item>
</layout>
</widget>
<widget class="QWidget" name="TabPage2" >
<property name="geometry" >
<rect>
<x>0</x>
<y>0</y>
<width>681</width>
<height>416</height>
</rect>
</property>
<attribute name="title" >
<widget class="QWidget" name="TabPage2">
<attribute name="title">
<string>Window &amp;Extra</string>
</attribute>
<layout class="QGridLayout">
@ -542,16 +526,8 @@
</item>
</layout>
</widget>
<widget class="QWidget" name="TabPage3" >
<property name="geometry" >
<rect>
<x>0</x>
<y>0</y>
<width>681</width>
<height>416</height>
</rect>
</property>
<attribute name="title" >
<widget class="QWidget" name="TabPage3">
<attribute name="title">
<string>&amp;Geometry</string>
</attribute>
<layout class="QGridLayout">
@ -1088,16 +1064,8 @@
</item>
</layout>
</widget>
<widget class="QWidget" name="TabPage4" >
<property name="geometry" >
<rect>
<x>0</x>
<y>0</y>
<width>681</width>
<height>416</height>
</rect>
</property>
<attribute name="title" >
<widget class="QWidget" name="TabPage4">
<attribute name="title">
<string>&amp;Preferences</string>
</attribute>
<layout class="QGridLayout">
@ -1115,13 +1083,6 @@
</property>
</widget>
</item>
<item row="4" column="0">
<widget class="QCheckBox" name="enable_skippager">
<property name="text">
<string>Skip pa&amp;ger</string>
</property>
</widget>
</item>
<item row="3" column="0">
<widget class="QCheckBox" name="enable_skiptaskbar">
<property name="text">
@ -1136,51 +1097,51 @@
</property>
</widget>
</item>
<item row="5" column="0">
<item row="6" column="0">
<widget class="QCheckBox" name="enable_acceptfocus">
<property name="text">
<string>Accept &amp;focus</string>
</property>
</widget>
</item>
<item row="6" column="0">
<item row="7" column="0">
<widget class="QCheckBox" name="enable_closeable">
<property name="text">
<string>&amp;Closeable</string>
</property>
</widget>
</item>
<item row="7" column="0" >
<widget class="QCheckBox" name="enable_autogroup" >
<property name="text" >
<item row="8" column="0">
<widget class="QCheckBox" name="enable_autogroup">
<property name="text">
<string>Autogroup with &amp;identical</string>
</property>
</widget>
</item>
<item row="8" column="0" >
<widget class="QCheckBox" name="enable_autogroupfg" >
<property name="text" >
<item row="9" column="0">
<widget class="QCheckBox" name="enable_autogroupfg">
<property name="text">
<string>Autog&amp;roup in foreground</string>
</property>
</widget>
</item>
<item row="9" column="0" >
<widget class="QCheckBox" name="enable_autogroupid" >
<property name="text" >
<item row="10" column="0">
<widget class="QCheckBox" name="enable_autogroupid">
<property name="text">
<string>Autogroup by I&amp;D</string>
</property>
</widget>
</item>
<item row="10" column="0" >
<widget class="QCheckBox" name="enable_opacityactive" >
<property name="text" >
<item row="11" column="0">
<widget class="QCheckBox" name="enable_opacityactive">
<property name="text">
<string>A&amp;ctive opacity in %</string>
</property>
</widget>
</item>
<item row="10" column="1" >
<widget class="KComboBox" name="rule_opacityactive" >
<property name="enabled" >
<item row="11" column="1">
<widget class="KComboBox" name="rule_opacityactive">
<property name="enabled">
<bool>false</bool>
</property>
<item>
@ -1200,9 +1161,9 @@
</item>
</widget>
</item>
<item row="10" column="2" colspan="2" >
<widget class="KRestrictedLine" name="opacityactive" >
<property name="enabled" >
<item row="11" column="2" colspan="2">
<widget class="KRestrictedLine" name="opacityactive">
<property name="enabled">
<bool>false</bool>
</property>
<property name="validChars">
@ -1260,7 +1221,7 @@
</property>
</widget>
</item>
<item row="5" column="2">
<item row="6" column="2">
<widget class="QCheckBox" name="acceptfocus">
<property name="enabled">
<bool>false</bool>
@ -1270,7 +1231,7 @@
</property>
</widget>
</item>
<item row="6" column="2">
<item row="7" column="2">
<widget class="QCheckBox" name="closeable">
<property name="enabled">
<bool>false</bool>
@ -1280,102 +1241,36 @@
</property>
</widget>
</item>
<item row="7" column="2" >
<widget class="QCheckBox" name="autogroup" >
<property name="enabled" >
<item row="8" column="2">
<widget class="QCheckBox" name="autogroup">
<property name="enabled">
<bool>false</bool>
</property>
<property name="text" >
<property name="text">
<string/>
</property>
</widget>
</item>
<item row="8" column="2" >
<widget class="QCheckBox" name="autogroupfg" >
<property name="enabled" >
<item row="9" column="2">
<widget class="QCheckBox" name="autogroupfg">
<property name="enabled">
<bool>false</bool>
</property>
<property name="text" >
<property name="text">
<string/>
</property>
</widget>
</item>
<item row="9" column="2" >
<widget class="KLineEdit" name="autogroupid" >
<property name="enabled" >
<item row="10" column="2">
<widget class="KLineEdit" name="autogroupid">
<property name="enabled">
<bool>false</bool>
</property>
</widget>
</item>
<item row="9" column="1" >
<widget class="KComboBox" name="rule_autogroupid" >
<property name="enabled" >
<bool>false</bool>
</property>
<item>
<property name="text" >
<string>Do Not Affect</string>
</property>
</item>
<item>
<property name="text" >
<string>Force</string>
</property>
</item>
<item>
<property name="text" >
<string>Force Temporarily</string>
</property>
</item>
</widget>
</item>
<item row="8" column="1" >
<widget class="KComboBox" name="rule_autogroupfg" >
<property name="enabled" >
<bool>false</bool>
</property>
<item>
<property name="text" >
<string>Do Not Affect</string>
</property>
</item>
<item>
<property name="text" >
<string>Force</string>
</property>
</item>
<item>
<property name="text" >
<string>Force Temporarily</string>
</property>
</item>
</widget>
</item>
<item row="7" column="1" >
<widget class="KComboBox" name="rule_autogroup" >
<property name="enabled" >
<bool>false</bool>
</property>
<item>
<property name="text" >
<string>Do Not Affect</string>
</property>
</item>
<item>
<property name="text" >
<string>Force</string>
</property>
</item>
<item>
<property name="text" >
<string>Force Temporarily</string>
</property>
</item>
</widget>
</item>
<item row="6" column="1" >
<widget class="KComboBox" name="rule_closeable" >
<property name="enabled" >
<item row="10" column="1">
<widget class="KComboBox" name="rule_autogroupid">
<property name="enabled">
<bool>false</bool>
</property>
<item>
@ -1395,7 +1290,73 @@
</item>
</widget>
</item>
<item row="5" column="1">
<item row="9" column="1">
<widget class="KComboBox" name="rule_autogroupfg">
<property name="enabled">
<bool>false</bool>
</property>
<item>
<property name="text">
<string>Do Not Affect</string>
</property>
</item>
<item>
<property name="text">
<string>Force</string>
</property>
</item>
<item>
<property name="text">
<string>Force Temporarily</string>
</property>
</item>
</widget>
</item>
<item row="8" column="1">
<widget class="KComboBox" name="rule_autogroup">
<property name="enabled">
<bool>false</bool>
</property>
<item>
<property name="text">
<string>Do Not Affect</string>
</property>
</item>
<item>
<property name="text">
<string>Force</string>
</property>
</item>
<item>
<property name="text">
<string>Force Temporarily</string>
</property>
</item>
</widget>
</item>
<item row="7" column="1">
<widget class="KComboBox" name="rule_closeable">
<property name="enabled">
<bool>false</bool>
</property>
<item>
<property name="text">
<string>Do Not Affect</string>
</property>
</item>
<item>
<property name="text">
<string>Force</string>
</property>
</item>
<item>
<property name="text">
<string>Force Temporarily</string>
</property>
</item>
</widget>
</item>
<item row="6" column="1">
<widget class="KComboBox" name="rule_acceptfocus">
<property name="enabled">
<bool>false</bool>
@ -1602,7 +1563,7 @@
</item>
</widget>
</item>
<item row="14" column="1" >
<item row="15" column="1">
<spacer>
<property name="orientation">
<enum>Qt::Vertical</enum>
@ -1618,9 +1579,9 @@
</property>
</spacer>
</item>
<item row="11" column="1" >
<widget class="KComboBox" name="rule_opacityinactive" >
<property name="enabled" >
<item row="12" column="1">
<widget class="KComboBox" name="rule_opacityinactive">
<property name="enabled">
<bool>false</bool>
</property>
<item>
@ -1640,9 +1601,9 @@
</item>
</widget>
</item>
<item row="11" column="2" colspan="2" >
<widget class="KRestrictedLine" name="opacityinactive" >
<property name="enabled" >
<item row="12" column="2" colspan="2">
<widget class="KRestrictedLine" name="opacityinactive">
<property name="enabled">
<bool>false</bool>
</property>
<property name="validChars">
@ -1650,16 +1611,16 @@
</property>
</widget>
</item>
<item row="11" column="0" >
<widget class="QCheckBox" name="enable_opacityinactive" >
<property name="text" >
<item row="12" column="0">
<widget class="QCheckBox" name="enable_opacityinactive">
<property name="text">
<string>I&amp;nactive opacity in %</string>
</property>
</widget>
</item>
<item row="13" column="0" >
<widget class="QCheckBox" name="enable_shortcut" >
<property name="text" >
<item row="14" column="0">
<widget class="QCheckBox" name="enable_shortcut">
<property name="text">
<string>Shortcut</string>
</property>
<property name="shortcut">
@ -1667,9 +1628,9 @@
</property>
</widget>
</item>
<item row="13" column="1" >
<widget class="KComboBox" name="rule_shortcut" >
<property name="enabled" >
<item row="14" column="1">
<widget class="KComboBox" name="rule_shortcut">
<property name="enabled">
<bool>false</bool>
</property>
<item>
@ -1704,28 +1665,28 @@
</item>
</widget>
</item>
<item row="13" column="5" >
<widget class="QPushButton" name="shortcut_edit" >
<property name="text" >
<item row="14" column="5">
<widget class="QPushButton" name="shortcut_edit">
<property name="text">
<string>Edit...</string>
</property>
</widget>
</item>
<item row="13" column="2" colspan="3" >
<widget class="KRestrictedLine" name="shortcut" >
<property name="enabled" >
<item row="14" column="2" colspan="3">
<widget class="KRestrictedLine" name="shortcut">
<property name="enabled">
<bool>false</bool>
</property>
</widget>
</item>
<item row="12" column="0">
<item row="13" column="0">
<widget class="QCheckBox" name="enable_tilingoption">
<property name="text">
<string>T&amp;iling</string>
</property>
</widget>
</item>
<item row="12" column="1">
<item row="13" column="1">
<widget class="KComboBox" name="rule_tilingoption">
<property name="enabled">
<bool>false</bool>
@ -1747,7 +1708,7 @@
</item>
</widget>
</item>
<item row="12" column="2">
<item row="13" column="2">
<widget class="KComboBox" name="tilingoption">
<property name="enabled">
<bool>false</bool>
@ -1764,18 +1725,71 @@
</item>
</widget>
</item>
<item row="4" column="0">
<widget class="QCheckBox" name="enable_skippager">
<property name="text">
<string>Skip pa&amp;ger</string>
</property>
</widget>
</item>
<item row="5" column="0">
<widget class="QCheckBox" name="enable_skipswitcher">
<property name="text">
<string>Skip &amp;switcher</string>
</property>
</widget>
</item>
<item row="5" column="1">
<widget class="KComboBox" name="rule_skipswitcher">
<property name="enabled">
<bool>false</bool>
</property>
<item>
<property name="text">
<string>Do Not Affect</string>
</property>
</item>
<item>
<property name="text">
<string>Apply Initially</string>
</property>
</item>
<item>
<property name="text">
<string>Remember</string>
</property>
</item>
<item>
<property name="text">
<string>Force</string>
</property>
</item>
<item>
<property name="text">
<string>Apply Now</string>
</property>
</item>
<item>
<property name="text">
<string>Force Temporarily</string>
</property>
</item>
</widget>
</item>
<item row="5" column="2">
<widget class="QCheckBox" name="skipswitcher">
<property name="enabled">
<bool>false</bool>
</property>
<property name="text">
<string/>
</property>
</widget>
</item>
</layout>
</widget>
<widget class="QWidget" name="TabPage5" >
<property name="geometry" >
<rect>
<x>0</x>
<y>0</y>
<width>681</width>
<height>416</height>
</rect>
</property>
<attribute name="title" >
<widget class="QWidget" name="TabPage5">
<attribute name="title">
<string>W&amp;orkarounds</string>
</attribute>
<layout class="QGridLayout">
@ -2195,7 +2209,7 @@
</item>
</layout>
</widget>
<customwidgets>
<customwidgets>
<customwidget>
<class>KPushButton</class>
<extends>QPushButton</extends>
@ -2280,9 +2294,9 @@
<tabstop>enable_skippager</tabstop>
<tabstop>rule_skippager</tabstop>
<tabstop>skippager</tabstop>
<tabstop>enable_acceptfocus</tabstop>
<tabstop>rule_acceptfocus</tabstop>
<tabstop>acceptfocus</tabstop>
<tabstop>enable_skipswitcher</tabstop>
<tabstop>rule_skipswitcher</tabstop>
<tabstop>skipswitcher</tabstop>
<tabstop>enable_closeable</tabstop>
<tabstop>rule_closeable</tabstop>
<tabstop>closeable</tabstop>
@ -2326,6 +2340,15 @@
<tabstop>enable_disableglobalshortcuts</tabstop>
<tabstop>rule_disableglobalshortcuts</tabstop>
<tabstop>disableglobalshortcuts</tabstop>
<tabstop>enable_autogroupfg</tabstop>
<tabstop>enable_autogroupid</tabstop>
<tabstop>autogroupfg</tabstop>
<tabstop>autogroupid</tabstop>
<tabstop>rule_autogroupid</tabstop>
<tabstop>rule_autogroupfg</tabstop>
<tabstop>enable_acceptfocus</tabstop>
<tabstop>rule_acceptfocus</tabstop>
<tabstop>acceptfocus</tabstop>
</tabstops>
<resources/>
<connections>

View file

@ -170,7 +170,7 @@ X-KDE-Library=kwin4_effect_cooleffect
#define KWIN_EFFECT_API_MAKE_VERSION( major, minor ) (( major ) << 8 | ( minor ))
#define KWIN_EFFECT_API_VERSION_MAJOR 0
#define KWIN_EFFECT_API_VERSION_MINOR 133
#define KWIN_EFFECT_API_VERSION_MINOR 134
#define KWIN_EFFECT_API_VERSION KWIN_EFFECT_API_MAKE_VERSION( \
KWIN_EFFECT_API_VERSION_MAJOR, KWIN_EFFECT_API_VERSION_MINOR )
@ -999,6 +999,12 @@ class KWIN_EXPORT EffectWindow
virtual EffectWindow* findModal() = 0;
virtual EffectWindowList mainWindows() const = 0;
/**
* Returns whether the window should be excluded from window switching effects.
* @since 4.5
*/
virtual bool isSkipSwitcher() const = 0;
/**
* Returns the unmodified window quad list. Can also be used to force rebuilding.
*/

View file

@ -407,6 +407,7 @@ bool Client::manage( Window w, bool isMapped )
setKeepBelow( session->keepBelow );
setSkipTaskbar( session->skipTaskbar, true );
setSkipPager( session->skipPager );
setSkipSwitcher( session->skipSwitcher );
setShade( session->shaded ? ShadeNormal : ShadeNone );
setOpacity( session->opacity );
if( session->maximized != MaximizeRestore )
@ -469,6 +470,7 @@ bool Client::manage( Window w, bool isMapped )
setKeepBelow( rules()->checkKeepBelow( info->state() & NET::KeepBelow, !isMapped ));
setSkipTaskbar( rules()->checkSkipTaskbar( info->state() & NET::SkipTaskbar, !isMapped ), true );
setSkipPager( rules()->checkSkipPager( info->state() & NET::SkipPager, !isMapped ));
setSkipSwitcher( rules()->checkSkipSwitcher( false, !isMapped ));
if( info->state() & NET::DemandsAttention )
demandAttention();
if( info->state() & NET::Modal )

View file

@ -61,6 +61,7 @@ Rules::Rules()
, shaderule( UnusedSetRule )
, skiptaskbarrule( UnusedSetRule )
, skippagerrule( UnusedSetRule )
, skipswitcherrule( UnusedSetRule )
, aboverule( UnusedSetRule )
, belowrule( UnusedSetRule )
, fullscreenrule( UnusedSetRule )
@ -165,6 +166,7 @@ void Rules::readFromCfg( const KConfigGroup& cfg )
READ_SET_RULE( shade,, false);
READ_SET_RULE( skiptaskbar,, false);
READ_SET_RULE( skippager,, false);
READ_SET_RULE( skipswitcher,, false);
READ_SET_RULE( above,, false);
READ_SET_RULE( below,, false);
READ_SET_RULE( fullscreen,, false);
@ -253,6 +255,7 @@ void Rules::write( KConfigGroup& cfg ) const
WRITE_SET_RULE( shade, );
WRITE_SET_RULE( skiptaskbar, );
WRITE_SET_RULE( skippager, );
WRITE_SET_RULE( skipswitcher, );
WRITE_SET_RULE( above, );
WRITE_SET_RULE( below, );
WRITE_SET_RULE( fullscreen, );
@ -293,6 +296,7 @@ bool Rules::isEmpty() const
&& shaderule == UnusedSetRule
&& skiptaskbarrule == UnusedSetRule
&& skippagerrule == UnusedSetRule
&& skipswitcherrule == UnusedSetRule
&& aboverule == UnusedSetRule
&& belowrule == UnusedSetRule
&& fullscreenrule == UnusedSetRule
@ -494,6 +498,11 @@ bool Rules::update( Client* c )
updated = updated || skippager != c->skipPager();
skippager = c->skipPager();
}
if( skipswitcherrule == ( SetRule )Remember)
{
updated = updated || skipswitcher != c->skipSwitcher();
skipswitcher = c->skipSwitcher();
}
if( aboverule == ( SetRule )Remember)
{
updated = updated || above != c->keepAbove();
@ -621,6 +630,7 @@ bool Rules::applyShade( ShadeMode& sh, bool init ) const
APPLY_RULE( skiptaskbar, SkipTaskbar, bool )
APPLY_RULE( skippager, SkipPager, bool )
APPLY_RULE( skipswitcher, SkipSwitcher, bool )
APPLY_RULE( above, KeepAbove, bool )
APPLY_RULE( below, KeepBelow, bool )
APPLY_RULE( fullscreen, FullScreen, bool )
@ -687,6 +697,7 @@ void Rules::discardUsed( bool withdrawn )
DISCARD_USED_SET_RULE( shade );
DISCARD_USED_SET_RULE( skiptaskbar );
DISCARD_USED_SET_RULE( skippager );
DISCARD_USED_SET_RULE( skipswitcher );
DISCARD_USED_SET_RULE( above );
DISCARD_USED_SET_RULE( below );
DISCARD_USED_SET_RULE( fullscreen );
@ -811,6 +822,7 @@ CHECK_RULE( Minimize, bool )
CHECK_RULE( Shade, ShadeMode )
CHECK_RULE( SkipTaskbar, bool )
CHECK_RULE( SkipPager, bool )
CHECK_RULE( SkipSwitcher, bool )
CHECK_RULE( KeepAbove, bool )
CHECK_RULE( KeepBelow, bool )
CHECK_RULE( FullScreen, bool )
@ -863,6 +875,7 @@ void Client::applyWindowRules()
setShade( shadeMode());
setSkipTaskbar( skipTaskbar(), true );
setSkipPager( skipPager());
setSkipSwitcher( skipSwitcher());
setKeepAbove( keepAbove());
setKeepBelow( keepBelow());
setFullScreen( isFullScreen(), true );

View file

@ -70,6 +70,7 @@ class WindowRules
ShadeMode checkShade( ShadeMode shade, bool init = false ) const;
bool checkSkipTaskbar( bool skip, bool init = false ) const;
bool checkSkipPager( bool skip, bool init = false ) const;
bool checkSkipSwitcher( bool skip, bool init = false ) const;
bool checkKeepAbove( bool above, bool init = false ) const;
bool checkKeepBelow( bool below, bool init = false ) const;
bool checkFullScreen( bool fs, bool init = false ) const;
@ -126,6 +127,7 @@ class Rules
bool applyShade( ShadeMode& shade, bool init ) const;
bool applySkipTaskbar( bool& skip, bool init ) const;
bool applySkipPager( bool& skip, bool init ) const;
bool applySkipSwitcher( bool& skip, bool init ) const;
bool applyKeepAbove( bool& above, bool init ) const;
bool applyKeepBelow( bool& below, bool init ) const;
bool applyFullScreen( bool& fs, bool init ) const;
@ -236,6 +238,8 @@ class Rules
SetRule skiptaskbarrule;
bool skippager;
SetRule skippagerrule;
bool skipswitcher;
SetRule skipswitcherrule;
bool above;
SetRule aboverule;
bool below;

2
sm.cpp
View file

@ -133,6 +133,7 @@ void Workspace::storeSession( KConfig* config, SMSavePhase phase )
cg.writeEntry( QString("keepBelow")+n, c->keepBelow() );
cg.writeEntry( QString("skipTaskbar")+n, c->skipTaskbar( true ) );
cg.writeEntry( QString("skipPager")+n, c->skipPager() );
cg.writeEntry( QString("skipSwitcher")+n, c->skipSwitcher() );
// not really just set by user, but name kept for back. comp. reasons
cg.writeEntry( QString("userNoBorder")+n, c->noBorder() );
cg.writeEntry( QString("windowType")+n, windowTypeToTxt( c->windowType()));
@ -208,6 +209,7 @@ void Workspace::loadSessionInfo()
info->keepBelow = cg.readEntry( QString("keepBelow")+n, false );
info->skipTaskbar = cg.readEntry( QString("skipTaskbar")+n, false );
info->skipPager = cg.readEntry( QString("skipPager")+n, false );
info->skipSwitcher = cg.readEntry( QString("skipSwitcher")+n, false );
info->noBorder = cg.readEntry( QString("userNoBorder")+n, false );
info->windowType = txtToWindowType( cg.readEntry( QString("windowType")+n, QString() ).toLatin1());
info->shortcut = cg.readEntry( QString("shortcut")+n, QString() );

1
sm.h
View file

@ -58,6 +58,7 @@ struct SessionInfo
bool keepBelow;
bool skipTaskbar;
bool skipPager;
bool skipSwitcher;
bool noBorder;
NET::WindowType windowType;
QString shortcut;

View file

@ -130,7 +130,7 @@ TabBoxClient* TabBoxHandlerImpl::clientToAddToList( TabBoxClient* client, int de
addClient = true;
else
addClient = current->isOnDesktop( desktop );
addClient = addClient && current->wantsTabFocus();
addClient = addClient && current->wantsTabFocus() && !current->skipSwitcher();
if ( addClient )
{ // don't add windows that have modal dialogs
Client* modal = current->findModal();