kcmtwin: Move Active Borders options into a new tab

Signed-off-by: Mavridis Philippe <mavridisf@gmail.com>
pull/365/head
Mavridis Philippe 10 months ago
parent 5b1934dd5d
commit 631172e074
No known key found for this signature in database
GPG Key ID: F8D2D7E2F989A494

@ -714,45 +714,14 @@ less.</para>
</sect2>
<sect2 id="advanced">
<title>Advanced</title>
<para>
In the <guilabel>Advanced</guilabel> panel you can do more advanced fine
tuning to the window behavior.
</para>
<variablelist>
<title>Shading</title>
<varlistentry>
<term><guilabel>Animate</guilabel></term>
<listitem>
<para>When this option is enabled, shading, or rolling up a window until just
the title bar is shown, will be animated.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><guilabel>Enable hover</guilabel></term>
<listitem>
<para>
When this option is enabled, a shaded window will un-shade automatically
when the mouse pointer has been over the titlebar for the configured delay.
Use the slider widget to configure the delay.
</para>
</listitem>
</varlistentry>
</variablelist>
<variablelist id="active-borders">
<sect2 id="active-borders">
<title>Active Borders</title>
<para>Active Borders is a feature which allows you to quickly perform window management actions by moving your mouse into a desktop border.</para>
<para><guilabel>Active Borders</guilabel> is a feature which allows you to quickly perform window management actions by moving your mouse into a desktop border.</para>
<para>The corresponding section allows you to configure the function that will be performed when pushing your mouse cursor against a border or moving a window into it:</para>
<variablelist>
<varlistentry>
<term><guilabel>Disabled</guilabel></term>
<listitem>
@ -783,6 +752,46 @@ Use the slider widget to configure the delay.
This option controls the delay before the designated active border function is performed. A higher value can prevent accidental activations of this feature.
</para>
<para>
<guilabel>Border activation distance</guilabel>.
This option controls how far from a desktop edge the mouse cursor should be in order to be able to activate the corresponding function. The default value is low,
meaning that you have to be very close to the border or corner to trigger it, preventing accidental activations. A higher value means easier activation without
having to actually push against the borders and corners.
</para>
</sect2>
<sect2 id="advanced">
<title>Advanced</title>
<para>
In the <guilabel>Advanced</guilabel> panel you can do more advanced fine
tuning to the window behavior.
</para>
<variablelist>
<title>Shading</title>
<varlistentry>
<term><guilabel>Animate</guilabel></term>
<listitem>
<para>When this option is enabled, shading, or rolling up a window until just
the title bar is shown, will be animated.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><guilabel>Enable hover</guilabel></term>
<listitem>
<para>
When this option is enabled, a shaded window will un-shade automatically
when the mouse pointer has been over the titlebar for the configured delay.
Use the slider widget to configure the delay.
</para>
</listitem>
</varlistentry>
</variablelist>
<sect3>
<title>Other</title>

@ -31,7 +31,7 @@ tde_create_translated_desktop(
tde_create_translated_desktop(
SOURCE
twinactions.desktop twinadvanced.desktop twinfocus.desktop
twinmoving.desktop twintranslucency.desktop
twinmoving.desktop twintranslucency.desktop twinactiveborders.desktop
DESTINATION ${APPS_INSTALL_DIR}/.hidden
PO_DIR twin-desktops
)

@ -59,6 +59,13 @@ extern "C"
return new KMovingConfig(true, c, parent, name);
}
KDE_EXPORT TDECModule *create_twinaborders(TQWidget *parent, const char *name)
{
TDEGlobal::locale()->insertCatalogue("kcmkwm");
TDEConfig *c = new TDEConfig("twinrc", false, true);
return new KActiveBorderConfig(true, c, parent, name);
}
KDE_EXPORT TDECModule *create_twinadvanced(TQWidget *parent, const char *name)
{
//CT there's need for decision: kwm or twin?
@ -66,7 +73,7 @@ extern "C"
TDEConfig *c = new TDEConfig("twinrc", false, true);
return new KAdvancedConfig(true, c, parent, name);
}
KDE_EXPORT TDECModule *create_twintranslucency(TQWidget *parent, const char *name)
{
//CT there's need for decision: kwm or twin?
@ -112,6 +119,11 @@ KWinOptions::KWinOptions(TQWidget *parent, const char *name)
tab->addTab(mMoving, i18n("&Moving"));
connect(mMoving, TQT_SIGNAL(changed(bool)), this, TQT_SLOT(moduleChanged(bool)));
mABorders = new KActiveBorderConfig(false, mConfig, this, "TWin Active Borders");
mABorders->layout()->setMargin(KDialog::marginHint());
tab->addTab(mABorders, i18n("Active &Borders"));
connect(mABorders, TQT_SIGNAL(changed(bool)), this, TQT_SLOT(moduleChanged(bool)));
mAdvanced = new KAdvancedConfig(false, mConfig, this, "TWin Advanced");
mAdvanced->layout()->setMargin( KDialog::marginHint() );
tab->addTab(mAdvanced, i18n("Ad&vanced"));
@ -121,7 +133,7 @@ KWinOptions::KWinOptions(TQWidget *parent, const char *name)
mTranslucency->layout()->setMargin( KDialog::marginHint() );
tab->addTab(mTranslucency, i18n("&Translucency"));
connect(mTranslucency, TQT_SIGNAL(changed(bool)), this, TQT_SLOT(moduleChanged(bool)));
TDEAboutData *about =
new TDEAboutData(I18N_NOOP("kcmtwinoptions"), I18N_NOOP("Window Behavior Configuration Module"),
0, 0, TDEAboutData::License_GPL,
@ -151,6 +163,7 @@ void KWinOptions::load()
mTitleBarActions->load();
mWindowActions->load();
mMoving->load();
mABorders->load();
mAdvanced->load();
mTranslucency->load();
emit TDECModule::changed( false );
@ -163,6 +176,7 @@ void KWinOptions::save()
mTitleBarActions->save();
mWindowActions->save();
mMoving->save();
mABorders->save();
mAdvanced->save();
mTranslucency->save();
@ -181,6 +195,7 @@ void KWinOptions::defaults()
mTitleBarActions->defaults();
mWindowActions->defaults();
mMoving->defaults();
mABorders->defaults();
mAdvanced->defaults();
mTranslucency->defaults();
}
@ -222,9 +237,13 @@ TQString KWinOptions::handbookSection() const
}
else if (index == 4)
{
return "advanced";
return "active-borders";
}
else if (index == 5)
{
return "advanced";
}
else if (index == 6)
{
return "translucency";
}

@ -32,6 +32,7 @@ class TDEConfig;
class KFocusConfig;
class KTitleBarActionsConfig;
class KWindowActionsConfig;
class KActiveBorderConfig;
class KAdvancedConfig;
class KTranslucencyConfig;
@ -64,6 +65,7 @@ private:
KTitleBarActionsConfig *mTitleBarActions;
KWindowActionsConfig *mWindowActions;
KMovingConfig *mMoving;
KActiveBorderConfig *mABorders;
KAdvancedConfig *mAdvanced;
KTranslucencyConfig *mTranslucency;

@ -0,0 +1,17 @@
[Desktop Entry]
Icon=kcmkwm
Type=Application
Exec=tdecmshell twinoptions
X-DocPath=kcontrol/windowbehavior/index.html
X-TDE-ModuleType=Library
X-TDE-Library=twinoptions
X-TDE-FactoryName=twinaborders
Name=Active Borders
Comment=Configure active borders/corners feature
Keywords=window behavior;windows;frame;titlebar;borders;corners;active borders;aerosnap;
Categories=Qt;TDE;X-TDE-settings-desktop;

@ -612,60 +612,14 @@ void KFocusConfig::defaults()
emit TDECModule::changed(true);
}
KAdvancedConfig::~KAdvancedConfig ()
{
if (standAlone)
delete config;
KActiveBorderConfig::~KActiveBorderConfig() {
if (standAlone) delete config;
}
KAdvancedConfig::KAdvancedConfig (bool _standAlone, TDEConfig *_config, TQWidget *parent, const char *)
: TDECModule(parent, "kcmkwm"), config(_config), standAlone(_standAlone)
{
TQString wtstr;
TQBoxLayout *lay = new TQVBoxLayout (this, 0, KDialog::spacingHint());
//iTLabel = new TQLabel(i18n(" Allowed overlap:\n"
// "(% of desktop space)"),
// plcBox);
//iTLabel->setAlignment(AlignTop|AlignHCenter);
//pLay->addWidget(iTLabel,1,1);
//interactiveTrigger = new TQSpinBox(0, 500, 1, plcBox);
//pLay->addWidget(interactiveTrigger,1,2);
//pLay->addRowSpacing(2,KDialog::spacingHint());
KActiveBorderConfig::KActiveBorderConfig(bool _standAlone, TDEConfig *_config, TQWidget *parent, const char*)
: TDECModule(parent, "kcmkwm"), config(_config), standAlone(_standAlone) {
//lay->addWidget(plcBox);
shBox = new TQVButtonGroup(i18n("Shading"), this);
animateShade = new TQCheckBox(i18n("Anima&te"), shBox);
TQWhatsThis::add(animateShade, i18n("Animate the action of reducing the window to its titlebar (shading)"
" as well as the expansion of a shaded window") );
shadeHoverOn = new TQCheckBox(i18n("&Enable hover"), shBox);
connect(shadeHoverOn, TQT_SIGNAL(toggled(bool)), this, TQT_SLOT(shadeHoverChanged(bool)));
shadeHover = new KIntNumInput(500, shBox);
shadeHover->setLabel(i18n("Dela&y:"), Qt::AlignVCenter|Qt::AlignLeft);
shadeHover->setRange(0, 3000, 100, true);
shadeHover->setSteps(100, 100);
shadeHover->setSuffix(i18n(" msec"));
TQWhatsThis::add(shadeHoverOn, i18n("If Shade Hover is enabled, a shaded window will un-shade automatically "
"when the mouse pointer has been over the title bar for some time."));
wtstr = i18n("Sets the time in milliseconds before the window unshades "
"when the mouse pointer goes over the shaded window.");
TQWhatsThis::add(shadeHover, wtstr);
lay->addWidget(shBox);
// Any changes goes to slotChanged()
connect(animateShade, TQT_SIGNAL(toggled(bool)), TQT_SLOT(changed()));
connect(shadeHoverOn, TQT_SIGNAL(toggled(bool)), TQT_SLOT(changed()));
connect(shadeHover, TQT_SIGNAL(valueChanged(int)), TQT_SLOT(changed()));
TQBoxLayout *lay = new TQVBoxLayout(this, 0, KDialog::spacingHint());
active_box = new TQButtonGroup(i18n("Active Desktop Borders"), this);
TQVBoxLayout *active_vbox = new TQVBoxLayout(active_box);
@ -722,7 +676,7 @@ KAdvancedConfig::KAdvancedConfig (bool _standAlone, TDEConfig *_config, TQWidget
active_vbox->addWidget(delays);
active_vbox->addWidget(distance);
connect(active_box, TQT_SIGNAL(clicked(int)), this, TQT_SLOT(setEBorders()));
connect(active_box, TQT_SIGNAL(clicked(int)), this, TQT_SLOT(updateActiveBorders()));
// Any changes goes to slotChanged()
connect(active_box, TQT_SIGNAL(clicked(int)), this, TQT_SLOT(changed()));
@ -732,54 +686,12 @@ KAdvancedConfig::KAdvancedConfig (bool _standAlone, TDEConfig *_config, TQWidget
connect(distance, TQT_SIGNAL(valueChanged(int)), this, TQT_SLOT(changed()));
lay->addWidget(active_box);
hideUtilityWindowsForInactive = new TQCheckBox( i18n( "Hide utility windows for inactive applications" ), this );
TQWhatsThis::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, TQT_SIGNAL(toggled(bool)), TQT_SLOT(changed()));
lay->addWidget( hideUtilityWindowsForInactive );
lay->addStretch();
load();
}
void KAdvancedConfig::setShadeHover(bool on) {
shadeHoverOn->setChecked(on);
shadeHover->setEnabled(on);
}
void KAdvancedConfig::setShadeHoverInterval(int k) {
shadeHover->setValue(k);
}
int KAdvancedConfig::getShadeHoverInterval() {
return shadeHover->value();
}
void KAdvancedConfig::shadeHoverChanged(bool a) {
shadeHover->setEnabled(a);
}
void KAdvancedConfig::setAnimateShade(bool a) {
animateShade->setChecked(a);
}
void KAdvancedConfig::setHideUtilityWindowsForInactive(bool s) {
hideUtilityWindowsForInactive->setChecked( s );
}
void KAdvancedConfig::load( void )
{
config->setGroup( "Windows" );
setAnimateShade(config->readBoolEntry(KWIN_ANIMSHADE, true));
setShadeHover(config->readBoolEntry(KWIN_SHADEHOVER, false));
setShadeHoverInterval(config->readNumEntry(KWIN_SHADEHOVER_INTERVAL, 250));
void KActiveBorderConfig::load() {
config->setGroup("Windows");
// compatibility with old option names
int active_borders = config->readNumEntry(KWIN_ACTIVE_BORDERS, -1);
@ -796,32 +708,16 @@ void KAdvancedConfig::load( void )
setActiveBorderDelay(active_borders_delay);
setActiveBorderDistance(config->readNumEntry(KWIN_ACTIVE_BORDER_DISTANCE, 10));
setHideUtilityWindowsForInactive( config->readBoolEntry( KWIN_HIDE_UTILITY, true ));
emit TDECModule::changed(false);
}
void KAdvancedConfig::save( void )
{
int v;
config->setGroup( "Windows" );
config->writeEntry(KWIN_ANIMSHADE, animateShade->isChecked());
if (shadeHoverOn->isChecked())
config->writeEntry(KWIN_SHADEHOVER, "on");
else
config->writeEntry(KWIN_SHADEHOVER, "off");
v = getShadeHoverInterval();
if (v<0) v = 0;
config->writeEntry(KWIN_SHADEHOVER_INTERVAL, v);
void KActiveBorderConfig::save() {
config->setGroup("Windows");
config->writeEntry(KWIN_ACTIVE_BORDERS, getActiveBorders());
config->writeEntry(KWIN_ACTIVE_BORDER_DELAY, getActiveBorderDelay());
config->writeEntry(KWIN_ACTIVE_BORDER_DISTANCE, getActiveBorderDistance());
config->writeEntry(KWIN_HIDE_UTILITY, hideUtilityWindowsForInactive->isChecked());
// remove replaced legacy entries
config->deleteEntry(KWIN_OLD_ACTIVE_BORDERS);
config->deleteEntry(KWIN_OLD_ACTIVE_BORDER_DELAY);
@ -829,33 +725,26 @@ void KAdvancedConfig::save( void )
if (standAlone)
{
config->sync();
if ( !kapp->dcopClient()->isAttached() )
if (!kapp->dcopClient()->isAttached())
kapp->dcopClient()->attach();
kapp->dcopClient()->send("twin*", "", "reconfigure()", TQString(""));
}
emit TDECModule::changed(false);
}
void KAdvancedConfig::defaults()
{
setAnimateShade(true);
setShadeHover(false);
setShadeHoverInterval(250);
void KActiveBorderConfig::defaults() {
setActiveBorders(0);
setActiveBorderDelay(150);
setActiveBorderDistance(10);
setHideUtilityWindowsForInactive( true );
emit TDECModule::changed(true);
}
void KAdvancedConfig::setEBorders()
{
void KActiveBorderConfig::updateActiveBorders() {
active_desktop_conf->setEnabled(active_desktop->isChecked());
active_tile_conf->setEnabled(active_tile->isChecked());
}
int KAdvancedConfig::getActiveBorders()
{
int KActiveBorderConfig::getActiveBorders() {
if (active_desktop->isChecked())
{
return active_move->isChecked() ? 1 : 2;
@ -869,16 +758,15 @@ int KAdvancedConfig::getActiveBorders()
return 0;
}
int KAdvancedConfig::getActiveBorderDelay()
{
int KActiveBorderConfig::getActiveBorderDelay() {
return delays->value();
}
int KAdvancedConfig::getActiveBorderDistance() {
int KActiveBorderConfig::getActiveBorderDistance() {
return distance->value();
}
void KAdvancedConfig::setActiveBorders(int i){
void KActiveBorderConfig::setActiveBorders(int i) {
switch(i)
{
case 1:
@ -895,18 +783,161 @@ void KAdvancedConfig::setActiveBorders(int i){
active_disable->setChecked(true);
break;
}
setEBorders();
updateActiveBorders();
}
void KAdvancedConfig::setActiveBorderDelay(int delay)
void KActiveBorderConfig::setActiveBorderDelay(int delay)
{
delays->setValue(delay);
}
void KAdvancedConfig::setActiveBorderDistance(int d) {
void KActiveBorderConfig::setActiveBorderDistance(int d) {
distance->setValue(d);
}
KAdvancedConfig::~KAdvancedConfig ()
{
if (standAlone)
delete config;
}
KAdvancedConfig::KAdvancedConfig (bool _standAlone, TDEConfig *_config, TQWidget *parent, const char *)
: TDECModule(parent, "kcmkwm"), config(_config), standAlone(_standAlone)
{
TQString wtstr;
TQBoxLayout *lay = new TQVBoxLayout (this, 0, KDialog::spacingHint());
//iTLabel = new TQLabel(i18n(" Allowed overlap:\n"
// "(% of desktop space)"),
// plcBox);
//iTLabel->setAlignment(AlignTop|AlignHCenter);
//pLay->addWidget(iTLabel,1,1);
//interactiveTrigger = new TQSpinBox(0, 500, 1, plcBox);
//pLay->addWidget(interactiveTrigger,1,2);
//pLay->addRowSpacing(2,KDialog::spacingHint());
//lay->addWidget(plcBox);
shBox = new TQVButtonGroup(i18n("Shading"), this);
animateShade = new TQCheckBox(i18n("Anima&te"), shBox);
TQWhatsThis::add(animateShade, i18n("Animate the action of reducing the window to its titlebar (shading)"
" as well as the expansion of a shaded window") );
shadeHoverOn = new TQCheckBox(i18n("&Enable hover"), shBox);
connect(shadeHoverOn, TQT_SIGNAL(toggled(bool)), this, TQT_SLOT(shadeHoverChanged(bool)));
shadeHover = new KIntNumInput(500, shBox);
shadeHover->setLabel(i18n("Dela&y:"), Qt::AlignVCenter|Qt::AlignLeft);
shadeHover->setRange(0, 3000, 100, true);
shadeHover->setSteps(100, 100);
shadeHover->setSuffix(i18n(" msec"));
TQWhatsThis::add(shadeHoverOn, i18n("If Shade Hover is enabled, a shaded window will un-shade automatically "
"when the mouse pointer has been over the title bar for some time."));
wtstr = i18n("Sets the time in milliseconds before the window unshades "
"when the mouse pointer goes over the shaded window.");
TQWhatsThis::add(shadeHover, wtstr);
lay->addWidget(shBox);
// Any changes goes to slotChanged()
connect(animateShade, TQT_SIGNAL(toggled(bool)), TQT_SLOT(changed()));
connect(shadeHoverOn, TQT_SIGNAL(toggled(bool)), TQT_SLOT(changed()));
connect(shadeHover, TQT_SIGNAL(valueChanged(int)), TQT_SLOT(changed()));
hideUtilityWindowsForInactive = new TQCheckBox( i18n( "Hide utility windows for inactive applications" ), this );
TQWhatsThis::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, TQT_SIGNAL(toggled(bool)), TQT_SLOT(changed()));
lay->addWidget( hideUtilityWindowsForInactive );
lay->addStretch();
load();
}
void KAdvancedConfig::setShadeHover(bool on) {
shadeHoverOn->setChecked(on);
shadeHover->setEnabled(on);
}
void KAdvancedConfig::setShadeHoverInterval(int k) {
shadeHover->setValue(k);
}
int KAdvancedConfig::getShadeHoverInterval() {
return shadeHover->value();
}
void KAdvancedConfig::shadeHoverChanged(bool a) {
shadeHover->setEnabled(a);
}
void KAdvancedConfig::setAnimateShade(bool a) {
animateShade->setChecked(a);
}
void KAdvancedConfig::setHideUtilityWindowsForInactive(bool s) {
hideUtilityWindowsForInactive->setChecked( s );
}
void KAdvancedConfig::load( void )
{
config->setGroup( "Windows" );
setAnimateShade(config->readBoolEntry(KWIN_ANIMSHADE, true));
setShadeHover(config->readBoolEntry(KWIN_SHADEHOVER, false));
setShadeHoverInterval(config->readNumEntry(KWIN_SHADEHOVER_INTERVAL, 250));
setHideUtilityWindowsForInactive( config->readBoolEntry( KWIN_HIDE_UTILITY, true ));
emit TDECModule::changed(false);
}
void KAdvancedConfig::save( void )
{
int v;
config->setGroup( "Windows" );
config->writeEntry(KWIN_ANIMSHADE, animateShade->isChecked());
if (shadeHoverOn->isChecked())
config->writeEntry(KWIN_SHADEHOVER, "on");
else
config->writeEntry(KWIN_SHADEHOVER, "off");
v = getShadeHoverInterval();
if (v<0) v = 0;
config->writeEntry(KWIN_SHADEHOVER_INTERVAL, v);
config->writeEntry(KWIN_HIDE_UTILITY, hideUtilityWindowsForInactive->isChecked());
if (standAlone)
{
config->sync();
if ( !kapp->dcopClient()->isAttached() )
kapp->dcopClient()->attach();
kapp->dcopClient()->send("twin*", "", "reconfigure()", TQString(""));
}
emit TDECModule::changed(false);
}
void KAdvancedConfig::defaults()
{
setAnimateShade(true);
setShadeHover(false);
setShadeHoverInterval(250);
setHideUtilityWindowsForInactive( true );
emit TDECModule::changed(true);
}
KMovingConfig::~KMovingConfig ()
{
if (standAlone)

@ -192,6 +192,47 @@ private:
};
class KActiveBorderConfig : public TDECModule
{
TQ_OBJECT
public:
KActiveBorderConfig(bool _standAlone, TDEConfig *config, TQWidget *parent=0, const char *name = 0);
~KActiveBorderConfig();
void load();
void save();
void defaults();
private slots:
// copied from kcontrol/konq/twindesktop, aleXXX
// original name: setEBorders()
void updateActiveBorders();
void changed() { emit TDECModule::changed(true); }
private:
int getActiveBorders( void );
int getActiveBorderDelay();
int getActiveBorderDistance();
void setActiveBorders( int );
void setActiveBorderDelay( int );
void setActiveBorderDistance( int );
TQButtonGroup *active_box;
TQRadioButton *active_disable;
TQRadioButton *active_desktop;
TQCheckBox *active_move;
TQRadioButton *active_tile;
TQCheckBox *active_maximize;
KIntNumInput *delays;
KIntNumInput *distance;
TQWidget *active_desktop_conf;
TQWidget *active_tile_conf;
TDEConfig *config;
bool standAlone;
};
class KAdvancedConfig : public TDECModule
{
Q_OBJECT
@ -206,9 +247,6 @@ public:
private slots:
void shadeHoverChanged(bool);
//copied from kcontrol/konq/twindesktop, aleXXX
void setEBorders();
void changed() { emit TDECModule::changed(true); }
private:
@ -226,24 +264,6 @@ private:
TDEConfig *config;
bool standAlone;
int getActiveBorders( void );
int getActiveBorderDelay();
int getActiveBorderDistance();
void setActiveBorders( int );
void setActiveBorderDelay( int );
void setActiveBorderDistance( int );
TQButtonGroup *active_box;
TQRadioButton *active_disable;
TQRadioButton *active_desktop;
TQCheckBox *active_move;
TQRadioButton *active_tile;
TQCheckBox *active_maximize;
KIntNumInput *delays;
KIntNumInput *distance;
TQWidget *active_desktop_conf;
TQWidget *active_tile_conf;
void setHideUtilityWindowsForInactive( bool );
TQCheckBox* hideUtilityWindowsForInactive;

Loading…
Cancel
Save