Fix kompmgr shadow support

Add kompmgr settings reload method to twin DCOP
Fix up kompmgr kcontrol module
Make default TDM login screen appearance more like the rest of the TDE login system
pull/2/head
Timothy Pearson 12 years ago
parent cee306586f
commit 1cac8a5e1d

@ -2045,9 +2045,9 @@ Type: enum
None/LOGO_NONE: nothing None/LOGO_NONE: nothing
Logo/LOGO_LOGO: the image specified by <option>LogoPixmap</option> Logo/LOGO_LOGO: the image specified by <option>LogoPixmap</option>
Clock/LOGO_CLOCK: a neat analog clock Clock/LOGO_CLOCK: a neat analog clock
Default: Clock Default: None
User: greeter User: greeter
Instance: */Logo Instance: */None
Comment: Comment:
What should be shown in the greeter's logo are: What should be shown in the greeter's logo are:
Description: Description:
@ -2153,10 +2153,10 @@ Description:
Key: GreetFont Key: GreetFont
Type: string Type: string
Default: "Sans Serif,22,5,0,50,0" Default: "Sans Serif,10,-1,5,75,0,0,0,0,0"
CDefault: "Serif,20,bold" CDefault: "Serif,10,bold"
User: greeter:font User: greeter:font
Instance: #*/"Sans Serif,22,5,0,50,0" Instance: #*/"Sans Serif,10,-1,5,75,0,0,0,0,0"
Comment: & Comment: &
Description: Description:
The font for the greeter headline. The font for the greeter headline.

@ -40,6 +40,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
#include <ksimpleconfig.h> #include <ksimpleconfig.h>
#include <kstringhandler.h> #include <kstringhandler.h>
#include <kdebug.h> #include <kdebug.h>
#include <kdialog.h>
#undef Unsorted // x headers suck - make tqdir.h work with --enable-final #undef Unsorted // x headers suck - make tqdir.h work with --enable-final
#include <tqdir.h> #include <tqdir.h>
@ -908,11 +909,21 @@ KStdGreeter::KStdGreeter()
complainLabel->setPaletteForegroundColor( Qt::red ); complainLabel->setPaletteForegroundColor( Qt::red );
inner_box->addWidget( complainLabel ); inner_box->addWidget( complainLabel );
} }
if (_logoArea == LOGO_NONE) {
KSMModalDialogHeader *theader = new KSMModalDialogHeader(this);
inner_box->addWidget( theader, AlignCenter );
}
if (!_greetString.isEmpty()) { if (!_greetString.isEmpty()) {
TQLabel *welcomeLabel = new TQLabel( _greetString, this ); TQLabel *welcomeLabel = new TQLabel( _greetString, this );
welcomeLabel->setAlignment( AlignCenter ); welcomeLabel->setAlignment( AlignCenter );
welcomeLabel->setFont( _greetFont ); welcomeLabel->setFont( _greetFont );
inner_box->addWidget( welcomeLabel ); inner_box->addWidget( welcomeLabel );
if (_logoArea == LOGO_NONE) {
// Match caps lock warning font size
TQLabel *spacerLabel = new TQLabel( " ", this );
spacerLabel->setFont( _failFont );
inner_box->addWidget( spacerLabel, AlignCenter );
}
} }
switch (_logoArea) { switch (_logoArea) {

@ -32,12 +32,13 @@ class KWinInterface : virtual public DCOPObject
virtual void startKompmgr() = 0; virtual void startKompmgr() = 0;
virtual void stopKompmgr() = 0; virtual void stopKompmgr() = 0;
virtual bool kompmgrIsRunning() = 0; virtual bool kompmgrIsRunning() = 0;
virtual void kompmgrReloadSettings() = 0;
virtual void setOpacity(unsigned long winId, unsigned int opacityPercent) = 0; virtual void setOpacity(unsigned long winId, unsigned int opacityPercent) = 0;
virtual void setShadowSize(unsigned long winId, unsigned int shadowSizePercent) = 0; virtual void setShadowSize(unsigned long winId, unsigned int shadowSizePercent) = 0;
virtual void setUnshadowed(unsigned long winId) = 0; virtual void setUnshadowed(unsigned long winId) = 0;
k_dcop_signals: k_dcop_signals:
virtual void kompmgrStarted() = 0; virtual void kompmgrStarted() = 0;
virtual void kompmgrStopped() = 0; virtual void kompmgrStopped() = 0;

@ -1357,56 +1357,65 @@ KTranslucencyConfig::KTranslucencyConfig (bool _standAlone, KConfig *_config, TQ
TQGridLayout *gLay2 = new TQGridLayout(vLay2,6,2); TQGridLayout *gLay2 = new TQGridLayout(vLay2,6,2);
gLay2->setColStretch(1,1); gLay2->setColStretch(1,1);
TQLabel *label2 = new TQLabel(i18n("Base shadow size:"),sGroup); TQLabel *label2 = new TQLabel(i18n("Base shadow radius:"),sGroup);
gLay2->addWidget(label2,0,0); gLay2->addWidget(label2,0,0);
baseShadowSize = new KIntNumInput(6,sGroup);
baseShadowSize->setRange(0,32);
// inactiveWindowShadowSize->setSuffix("px");
gLay2->addWidget(baseShadowSize,0,1);
TQLabel *label2a = new TQLabel(i18n("Inactive window shadow size:"),sGroup);
gLay2->addWidget(label2a,1,0);
inactiveWindowShadowSize = new KIntNumInput(6,sGroup); inactiveWindowShadowSize = new KIntNumInput(6,sGroup);
inactiveWindowShadowSize->setRange(0,32); inactiveWindowShadowSize->setRange(0,32);
// inactiveWindowShadowSize->setSuffix("px"); // inactiveWindowShadowSize->setSuffix("px");
gLay2->addWidget(inactiveWindowShadowSize,0,1); gLay2->addWidget(inactiveWindowShadowSize,1,1);
TQLabel *label1 = new TQLabel(i18n("Active window shadow size multiplier:"),sGroup); TQLabel *label1 = new TQLabel(i18n("Active window shadow size:"),sGroup);
gLay2->addWidget(label1,1,0); gLay2->addWidget(label1,2,0);
activeWindowShadowSize = new KIntNumInput(12,sGroup); activeWindowShadowSize = new KIntNumInput(12,sGroup);
activeWindowShadowSize->setRange(0,32); activeWindowShadowSize->setRange(0,32);
// activeWindowShadowSize->setSuffix("px"); // activeWindowShadowSize->setSuffix("px");
gLay2->addWidget(activeWindowShadowSize,1,1); gLay2->addWidget(activeWindowShadowSize,2,1);
TQLabel *label3 = new TQLabel(i18n("Dock shadow size multiplier:"),sGroup); TQLabel *label3 = new TQLabel(i18n("Dock shadow size:"),sGroup);
gLay2->addWidget(label3,2,0); gLay2->addWidget(label3,3,0);
dockWindowShadowSize = new KIntNumInput(6,sGroup); dockWindowShadowSize = new KIntNumInput(6,sGroup);
dockWindowShadowSize->setRange(0,32); dockWindowShadowSize->setRange(0,32);
// dockWindowShadowSize->setSuffix("px"); // dockWindowShadowSize->setSuffix("px");
gLay2->addWidget(dockWindowShadowSize,2,1); gLay2->addWidget(dockWindowShadowSize,3,1);
TQLabel *label3a = new TQLabel(i18n("Menu shadow size multiplier:"),sGroup); TQLabel *label3a = new TQLabel(i18n("Menu shadow size:"),sGroup);
gLay2->addWidget(label3a,3,0); gLay2->addWidget(label3a,4,0);
menuWindowShadowSize = new KIntNumInput(6,sGroup); menuWindowShadowSize = new KIntNumInput(6,sGroup);
menuWindowShadowSize->setRange(0,32); menuWindowShadowSize->setRange(0,32);
// menuWindowShadowSize->setSuffix("px"); // menuWindowShadowSize->setSuffix("px");
gLay2->addWidget(menuWindowShadowSize,3,1); gLay2->addWidget(menuWindowShadowSize,4,1);
// Menu shadow settings don't work // FIXME
// Menu control does not work!
// Menus appear to be controlled by the base shadow radius ONLY
label3a->hide(); label3a->hide();
menuWindowShadowSize->hide(); menuWindowShadowSize->hide();
TQLabel *label4 = new TQLabel(i18n("Vertical offset:"),sGroup); TQLabel *label4 = new TQLabel(i18n("Vertical offset:"),sGroup);
gLay2->addWidget(label4,4,0); gLay2->addWidget(label4,5,0);
shadowTopOffset = new KIntNumInput(80,sGroup); shadowTopOffset = new KIntNumInput(80,sGroup);
shadowTopOffset->setSuffix("%"); shadowTopOffset->setSuffix("%");
shadowTopOffset->setRange(-200,200); shadowTopOffset->setRange(-200,200);
gLay2->addWidget(shadowTopOffset,4,1); gLay2->addWidget(shadowTopOffset,5,1);
TQLabel *label5 = new TQLabel(i18n("Horizontal offset:"),sGroup); TQLabel *label5 = new TQLabel(i18n("Horizontal offset:"),sGroup);
gLay2->addWidget(label5,5,0); gLay2->addWidget(label5,6,0);
shadowLeftOffset = new KIntNumInput(0,sGroup); shadowLeftOffset = new KIntNumInput(0,sGroup);
shadowLeftOffset->setSuffix("%"); shadowLeftOffset->setSuffix("%");
shadowLeftOffset->setRange(-200,200); shadowLeftOffset->setRange(-200,200);
gLay2->addWidget(shadowLeftOffset,5,1); gLay2->addWidget(shadowLeftOffset,6,1);
TQLabel *label6 = new TQLabel(i18n("Shadow color:"),sGroup); TQLabel *label6 = new TQLabel(i18n("Shadow color:"),sGroup);
gLay2->addWidget(label6,5,0); gLay2->addWidget(label6,7,0);
shadowColor = new KColorButton(Qt::black,sGroup); shadowColor = new KColorButton(Qt::black,sGroup);
gLay2->addWidget(shadowColor,6,1); gLay2->addWidget(shadowColor,7,1);
gLay2->setColStretch(1,1); gLay2->setColStretch(1,1);
vLay2->addSpacing(11); vLay2->addSpacing(11);
removeShadowsOnMove = new TQCheckBox(i18n("Remove shadows on move"),sGroup); removeShadowsOnMove = new TQCheckBox(i18n("Remove shadows on move"),sGroup);
@ -1468,6 +1477,7 @@ KTranslucencyConfig::KTranslucencyConfig (bool _standAlone, KConfig *_config, TQ
connect(menuWindowShadowSize, TQT_SIGNAL(valueChanged(int)), TQT_SLOT(changed())); connect(menuWindowShadowSize, TQT_SIGNAL(valueChanged(int)), TQT_SLOT(changed()));
connect(activeWindowShadowSize, TQT_SIGNAL(valueChanged(int)), TQT_SLOT(changed())); connect(activeWindowShadowSize, TQT_SIGNAL(valueChanged(int)), TQT_SLOT(changed()));
connect(inactiveWindowShadowSize, TQT_SIGNAL(valueChanged(int)), TQT_SLOT(changed())); connect(inactiveWindowShadowSize, TQT_SIGNAL(valueChanged(int)), TQT_SLOT(changed()));
connect(baseShadowSize, TQT_SIGNAL(valueChanged(int)), TQT_SLOT(changed()));
connect(shadowTopOffset, TQT_SIGNAL(valueChanged(int)), TQT_SLOT(changed())); connect(shadowTopOffset, TQT_SIGNAL(valueChanged(int)), TQT_SLOT(changed()));
connect(shadowLeftOffset, TQT_SIGNAL(valueChanged(int)), TQT_SLOT(changed())); connect(shadowLeftOffset, TQT_SIGNAL(valueChanged(int)), TQT_SLOT(changed()));
connect(shadowColor, TQT_SIGNAL(changed(const TQColor&)), TQT_SLOT(changed())); connect(shadowColor, TQT_SIGNAL(changed(const TQColor&)), TQT_SLOT(changed()));
@ -1481,6 +1491,7 @@ KTranslucencyConfig::KTranslucencyConfig (bool _standAlone, KConfig *_config, TQ
connect(useShadows, TQT_SIGNAL(toggled(bool)), menuWindowShadowSize, TQT_SLOT(setEnabled(bool))); connect(useShadows, TQT_SIGNAL(toggled(bool)), menuWindowShadowSize, TQT_SLOT(setEnabled(bool)));
connect(useShadows, TQT_SIGNAL(toggled(bool)), activeWindowShadowSize, TQT_SLOT(setEnabled(bool))); connect(useShadows, TQT_SIGNAL(toggled(bool)), activeWindowShadowSize, TQT_SLOT(setEnabled(bool)));
connect(useShadows, TQT_SIGNAL(toggled(bool)), inactiveWindowShadowSize, TQT_SLOT(setEnabled(bool))); connect(useShadows, TQT_SIGNAL(toggled(bool)), inactiveWindowShadowSize, TQT_SLOT(setEnabled(bool)));
connect(useShadows, TQT_SIGNAL(toggled(bool)), baseShadowSize, TQT_SLOT(setEnabled(bool)));
connect(useShadows, TQT_SIGNAL(toggled(bool)), shadowTopOffset, TQT_SLOT(setEnabled(bool))); connect(useShadows, TQT_SIGNAL(toggled(bool)), shadowTopOffset, TQT_SLOT(setEnabled(bool)));
connect(useShadows, TQT_SIGNAL(toggled(bool)), shadowLeftOffset, TQT_SLOT(setEnabled(bool))); connect(useShadows, TQT_SIGNAL(toggled(bool)), shadowLeftOffset, TQT_SLOT(setEnabled(bool)));
connect(useShadows, TQT_SIGNAL(toggled(bool)), shadowColor, TQT_SLOT(setEnabled(bool))); connect(useShadows, TQT_SIGNAL(toggled(bool)), shadowColor, TQT_SLOT(setEnabled(bool)));
@ -1496,6 +1507,7 @@ KTranslucencyConfig::KTranslucencyConfig (bool _standAlone, KConfig *_config, TQ
connect(disableARGB, TQT_SIGNAL(toggled(bool)), TQT_SLOT(resetKompmgr())); connect(disableARGB, TQT_SIGNAL(toggled(bool)), TQT_SLOT(resetKompmgr()));
connect(useShadows, TQT_SIGNAL(toggled(bool)), TQT_SLOT(resetKompmgr())); connect(useShadows, TQT_SIGNAL(toggled(bool)), TQT_SLOT(resetKompmgr()));
connect(inactiveWindowShadowSize, TQT_SIGNAL(valueChanged(int)), TQT_SLOT(resetKompmgr())); connect(inactiveWindowShadowSize, TQT_SIGNAL(valueChanged(int)), TQT_SLOT(resetKompmgr()));
connect(baseShadowSize, TQT_SIGNAL(valueChanged(int)), TQT_SLOT(resetKompmgr()));
connect(shadowTopOffset, TQT_SIGNAL(valueChanged(int)), TQT_SLOT(resetKompmgr())); connect(shadowTopOffset, TQT_SIGNAL(valueChanged(int)), TQT_SLOT(resetKompmgr()));
connect(shadowLeftOffset, TQT_SIGNAL(valueChanged(int)), TQT_SLOT(resetKompmgr())); connect(shadowLeftOffset, TQT_SIGNAL(valueChanged(int)), TQT_SLOT(resetKompmgr()));
connect(shadowColor, TQT_SIGNAL(changed(const TQColor&)), TQT_SLOT(resetKompmgr())); connect(shadowColor, TQT_SIGNAL(changed(const TQColor&)), TQT_SLOT(resetKompmgr()));
@ -1536,10 +1548,10 @@ void KTranslucencyConfig::load( void )
dockWindowOpacity->setValue(config->readNumEntry("DockOpacity",80)); dockWindowOpacity->setValue(config->readNumEntry("DockOpacity",80));
int ass, iss, dss, mss; int ass, iss, dss, mss;
dss = config->readNumEntry("DockShadowSize", 33); dss = config->readNumEntry("DockShadowSize", 0*100);
mss = config->readNumEntry("MenuShadowSize", 33); mss = config->readNumEntry("MenuShadowSize", 1*100);
ass = config->readNumEntry("ActiveWindowShadowSize", 133); ass = config->readNumEntry("ActiveWindowShadowSize", 2*100);
iss = config->readNumEntry("InactiveWindowShadowSize", 67); iss = config->readNumEntry("InactiveWindowShadowSize", 1*100);
activeWindowOpacity->setEnabled(activeWindowTransparency->isChecked()); activeWindowOpacity->setEnabled(activeWindowTransparency->isChecked());
inactiveWindowOpacity->setEnabled(inactiveWindowTransparency->isChecked()); inactiveWindowOpacity->setEnabled(inactiveWindowTransparency->isChecked());
@ -1552,14 +1564,15 @@ void KTranslucencyConfig::load( void )
disableARGB->setChecked(conf_.readBoolEntry("DisableARGB",FALSE)); disableARGB->setChecked(conf_.readBoolEntry("DisableARGB",FALSE));
useShadows->setChecked(conf_.readEntry("Compmode","").compare("CompClientShadows") == 0); useShadows->setChecked(conf_.readEntry("Compmode","").compare("CompClientShadows") == 0);
shadowTopOffset->setValue(-1*(conf_.readNumEntry("ShadowOffsetY",-80))); shadowTopOffset->setValue(-1*(conf_.readNumEntry("ShadowOffsetY",200)));
shadowLeftOffset->setValue(-1*(conf_.readNumEntry("ShadowOffsetX",0))); shadowLeftOffset->setValue(-1*(conf_.readNumEntry("ShadowOffsetX",200)));
int ss = conf_.readNumEntry("ShadowRadius",6); int ss = conf_.readNumEntry("ShadowRadius",6);
dockWindowShadowSize->setValue((int)(dss*ss/100.0)); dockWindowShadowSize->setValue((int)(dss/100.0));
menuWindowShadowSize->setValue((int)(mss*ss/100.0)); menuWindowShadowSize->setValue((int)(mss/100.0));
activeWindowShadowSize->setValue((int)(ass*ss/100.0)); activeWindowShadowSize->setValue((int)(ass/100.0));
inactiveWindowShadowSize->setValue((int)(iss*ss/100.0)); inactiveWindowShadowSize->setValue((int)(iss/100.0));
baseShadowSize->setValue((int)(ss));
TQString hex = conf_.readEntry("ShadowColor","#000000"); TQString hex = conf_.readEntry("ShadowColor","#000000");
uint r, g, b; uint r, g, b;
@ -1602,10 +1615,10 @@ void KTranslucencyConfig::save( void )
// we set inactive windows to 100%, the radius to the inactive window value and adjust the multiplicators for docks and active windows // we set inactive windows to 100%, the radius to the inactive window value and adjust the multiplicators for docks and active windows
// this way the user can set the three values without caring about the radius/multiplicator stuff // this way the user can set the three values without caring about the radius/multiplicator stuff
// additionally we find a value between big and small values to have a more smooth appereance // additionally we find a value between big and small values to have a more smooth appereance
config->writeEntry("DockShadowSize",(int)(200.0 * dockWindowShadowSize->value() / (activeWindowShadowSize->value() + inactiveWindowShadowSize->value()))); config->writeEntry("DockShadowSize",(int)(100.0 * dockWindowShadowSize->value()));
config->writeEntry("MenuShadowSize",(int)(200.0 * menuWindowShadowSize->value() / (activeWindowShadowSize->value() + inactiveWindowShadowSize->value()))); config->writeEntry("MenuShadowSize",(int)(100.0 * menuWindowShadowSize->value()));
config->writeEntry("ActiveWindowShadowSize",(int)(200.0 * activeWindowShadowSize->value() / (activeWindowShadowSize->value() + inactiveWindowShadowSize->value()))); config->writeEntry("ActiveWindowShadowSize",(int)(100.0 * activeWindowShadowSize->value()));
config->writeEntry("InactiveWindowShadowSize",(int)(200.0 * inactiveWindowShadowSize->value() / (activeWindowShadowSize->value() + inactiveWindowShadowSize->value()))); config->writeEntry("InactiveWindowShadowSize",(int)(100.0 * inactiveWindowShadowSize->value()));
config->writeEntry("RemoveShadowsOnMove",removeShadowsOnMove->isChecked()); config->writeEntry("RemoveShadowsOnMove",removeShadowsOnMove->isChecked());
config->writeEntry("RemoveShadowsOnResize",removeShadowsOnResize->isChecked()); config->writeEntry("RemoveShadowsOnResize",removeShadowsOnResize->isChecked());
@ -1626,7 +1639,7 @@ void KTranslucencyConfig::save( void )
TQString hex; TQString hex;
hex.sprintf("0x%02X%02X%02X", r,g,b); hex.sprintf("0x%02X%02X%02X", r,g,b);
conf_->writeEntry("ShadowColor",hex); conf_->writeEntry("ShadowColor",hex);
conf_->writeEntry("ShadowRadius",(activeWindowShadowSize->value() + inactiveWindowShadowSize->value()) / 2); conf_->writeEntry("ShadowRadius",baseShadowSize->value());
conf_->writeEntry("FadeWindows",fadeInWindows->isChecked()); conf_->writeEntry("FadeWindows",fadeInWindows->isChecked());
conf_->writeEntry("FadeMenuWindows",fadeInMenuWindows->isChecked()); conf_->writeEntry("FadeMenuWindows",fadeInMenuWindows->isChecked());
conf_->writeEntry("FadeTrans",fadeOnOpacityChange->isChecked()); conf_->writeEntry("FadeTrans",fadeOnOpacityChange->isChecked());
@ -1644,6 +1657,8 @@ void KTranslucencyConfig::save( void )
} }
if (useTranslucency->isChecked()) if (useTranslucency->isChecked())
startKompmgr(); startKompmgr();
else
stopKompmgr();
emit KCModule::changed(false); emit KCModule::changed(false);
} }
@ -1665,12 +1680,13 @@ void KTranslucencyConfig::defaults()
movingWindowOpacity->setValue(25); movingWindowOpacity->setValue(25);
dockWindowOpacity->setValue(80); dockWindowOpacity->setValue(80);
dockWindowShadowSize->setValue(6); dockWindowShadowSize->setValue(0);
menuWindowShadowSize->setValue(6); menuWindowShadowSize->setValue(1);
activeWindowShadowSize->setValue(12); activeWindowShadowSize->setValue(2);
inactiveWindowShadowSize->setValue(6); inactiveWindowShadowSize->setValue(1);
shadowTopOffset->setValue(80); baseShadowSize->setValue(1);
shadowLeftOffset->setValue(0); shadowTopOffset->setValue(200);
shadowLeftOffset->setValue(200);
activeWindowOpacity->setEnabled(false); activeWindowOpacity->setEnabled(false);
inactiveWindowOpacity->setEnabled(false); inactiveWindowOpacity->setEnabled(false);
@ -1701,10 +1717,13 @@ bool KTranslucencyConfig::kompmgrAvailable()
void KTranslucencyConfig::startKompmgr() void KTranslucencyConfig::startKompmgr()
{ {
bool ret; kapp->dcopClient()->send("twin*", "", "startKompmgr()", TQString(""));
KProcess proc; kapp->dcopClient()->send("twin*", "", "kompmgrReloadSettings()", TQString(""));
proc << "kompmgr"; }
ret = proc.start(KProcess::DontCare);
void KTranslucencyConfig::stopKompmgr()
{
kapp->dcopClient()->send("twin*", "", "stopKompmgr()", TQString(""));
} }
void KTranslucencyConfig::showWarning(bool alphaActivated) void KTranslucencyConfig::showWarning(bool alphaActivated)

@ -275,6 +275,7 @@ private:
KIntNumInput *menuWindowShadowSize; KIntNumInput *menuWindowShadowSize;
KIntNumInput *activeWindowShadowSize; KIntNumInput *activeWindowShadowSize;
KIntNumInput *inactiveWindowShadowSize; KIntNumInput *inactiveWindowShadowSize;
KIntNumInput *baseShadowSize;
KIntNumInput *shadowTopOffset; KIntNumInput *shadowTopOffset;
KIntNumInput *shadowLeftOffset; KIntNumInput *shadowLeftOffset;
KIntNumInput *fadeInSpeed; KIntNumInput *fadeInSpeed;
@ -286,9 +287,10 @@ private:
bool resetKompmgr_; bool resetKompmgr_;
bool kompmgrAvailable(); bool kompmgrAvailable();
void startKompmgr(); void startKompmgr();
void stopKompmgr();
bool kompmgrAvailable_; bool kompmgrAvailable_;
KProcess *kompmgr; KProcess *kompmgr;
private slots: private slots:
void resetKompmgr(); void resetKompmgr();
void showWarning(bool alphaActivated); void showWarning(bool alphaActivated);

@ -277,6 +277,15 @@ get_opacity_percent(Display *dpy, win *w);
static XserverRegion static XserverRegion
win_extents (Display *dpy, win *w); win_extents (Display *dpy, win *w);
static void
presum_gaussian (conv *map);
static conv *
make_gaussian_map (Display *dpy, double r);
Picture
solid_picture (Display *dpy, Bool argb, double a, double r, double g, double b);
CompMode compMode = CompSimple; CompMode compMode = CompSimple;
int shadowRadius = 12; int shadowRadius = 12;
@ -403,6 +412,27 @@ void delete_pid_file()
#endif #endif
} }
void clear_shadow_cache()
{
win *w;
for (w = list; w; w = w->next) {
if (w->shadow)
{
XRenderFreePicture (dpy, w->shadow);
w->shadow = None;
if (w->opacity != OPAQUE && !w->alphaPict)
w->alphaPict = solid_picture (dpy, False,
(double) w->opacity / OPAQUE, shadowColor.red, shadowColor.green, shadowColor.blue);
if( w->extents != None ) {
XFixesDestroyRegion( dpy, w->extents );
}
w->extents = win_extents (dpy, w);
w->damaged = 1; /* redraw */
}
}
}
void handle_siguser (int sig) void handle_siguser (int sig)
{ {
int uidnum; int uidnum;
@ -456,6 +486,19 @@ void handle_siguser (int sig)
loadConfig(filename); /* reload the configuration file */ loadConfig(filename); /* reload the configuration file */
/* set background/shadow picture using the new settings */
blackPicture = solid_picture (dpy, True, 1, (double)(shadowColor.red)/0xff, (double)(shadowColor.green)/0xff, (double)(shadowColor.blue)/0xff);
if (compMode == CompServerShadows)
transBlackPicture = solid_picture (dpy, True, 0.3, 0, 0, 0);
/* regenerate shadows using the new settings */
if (compMode == CompClientShadows)
{
gaussianMap = make_gaussian_map(dpy, shadowRadius);
presum_gaussian (gaussianMap);
}
clear_shadow_cache();
free(filename); free(filename);
filename = NULL; filename = NULL;
} }
@ -1419,7 +1462,6 @@ paint_all (Display *dpy, XserverRegion region)
{ {
w->borderClip = XFixesCreateRegion (dpy, 0, 0); w->borderClip = XFixesCreateRegion (dpy, 0, 0);
XFixesCopyRegion (dpy, w->borderClip, region); XFixesCopyRegion (dpy, w->borderClip, region);
XFixesIntersectRegion(dpy, w->borderClip, w->borderClip, w->borderSize);
} }
w->prev_trans = t; w->prev_trans = t;
t = w; t = w;
@ -2892,6 +2934,8 @@ options[NUMBEROFOPTIONS] = {
void void
setValue(Option option, char *value ){ setValue(Option option, char *value ){
int i;
switch(option){ /*please keep that upside-down, because this way adding a new option is easier (all in one view)*/ switch(option){ /*please keep that upside-down, because this way adding a new option is easier (all in one view)*/
case FadeDelta: case FadeDelta:
@ -2920,7 +2964,7 @@ setValue(Option option, char *value ){
break; break;
case ShadowRadius: case ShadowRadius:
shadowRadius = atoi(value); shadowRadius = atoi(value);
break; break;
case ShadowColor: case ShadowColor:
setShadowColor(value); setShadowColor(value);
break; break;
@ -2955,12 +2999,18 @@ setValue(Option option, char *value ){
case Compmode: case Compmode:
if( strcasecmp(value, "CompClientShadows") == 0 ){ if( strcasecmp(value, "CompClientShadows") == 0 ){
compMode = CompClientShadows; compMode = CompClientShadows;
for (i = 0; i < NUM_WINTYPES; ++i)
winTypeShadow[i] = True;
} }
else if( strcasecmp(value, "CompServerShadows") == 0 ){ else if( strcasecmp(value, "CompServerShadows") == 0 ){
compMode = CompServerShadows; compMode = CompServerShadows;
for (i = 0; i < NUM_WINTYPES; ++i)
winTypeShadow[i] = True;
} }
else{ else{
compMode = CompSimple; /*default*/ compMode = CompSimple; /*default*/
for (i = 0; i < NUM_WINTYPES; ++i)
winTypeShadow[i] = False;
} }
break; break;
case Display_: case Display_:

@ -183,12 +183,12 @@ unsigned long Options::updateSettings()
keepAboveAsActive = config->readBoolEntry("TreatKeepAboveAsActive", true); keepAboveAsActive = config->readBoolEntry("TreatKeepAboveAsActive", true);
//TODO: remove this variable //TODO: remove this variable
useTitleMenuSlider = true; useTitleMenuSlider = true;
activeWindowShadowSize = config->readNumEntry("ActiveWindowShadowSize", 200); activeWindowShadowSize = config->readNumEntry("ActiveWindowShadowSize", 2*100);
inactiveWindowShadowSize = config->readNumEntry("InactiveWindowShadowSize", 100); inactiveWindowShadowSize = config->readNumEntry("InactiveWindowShadowSize", 1*100);
dockShadowSize = config->readNumEntry("DockShadowSize", 80); dockShadowSize = config->readNumEntry("DockShadowSize", 0*100);
menuShadowSize = config->readNumEntry("MenuShadowSize", 80); menuShadowSize = config->readNumEntry("MenuShadowSize", 1*100);
removeShadowsOnMove = config->readBoolEntry("RemoveShadowsOnMove", true); removeShadowsOnMove = config->readBoolEntry("RemoveShadowsOnMove", false);
removeShadowsOnResize = config->readBoolEntry("RemoveShadowsOnResize", true); removeShadowsOnResize = config->readBoolEntry("RemoveShadowsOnResize", false);
onlyDecoTranslucent = config->readBoolEntry("OnlyDecoTranslucent",false); onlyDecoTranslucent = config->readBoolEntry("OnlyDecoTranslucent",false);
resetKompmgr = config->readBoolEntry("ResetKompmgr", false); resetKompmgr = config->readBoolEntry("ResetKompmgr", false);
if (resetKompmgr) if (resetKompmgr)

@ -2806,13 +2806,21 @@ void Workspace::stopKompmgr()
kompmgr->disconnect(this, TQT_SLOT(restartKompmgr(KProcess*))); kompmgr->disconnect(this, TQT_SLOT(restartKompmgr(KProcess*)));
options->useTranslucency = FALSE; options->useTranslucency = FALSE;
if (popup){ delete popup; popup = 0L; } // to add/remove opacity slider if (popup){ delete popup; popup = 0L; } // to add/remove opacity slider
kompmgr->kill(); kompmgr->kill(SIGKILL);
TQByteArray ba; TQByteArray ba;
TQDataStream arg(ba, IO_WriteOnly); TQDataStream arg(ba, IO_WriteOnly);
arg << ""; arg << "";
kapp->dcopClient()->emitDCOPSignal("default", "kompmgrStopped()", ba); kapp->dcopClient()->emitDCOPSignal("default", "kompmgrStopped()", ba);
} }
void Workspace::kompmgrReloadSettings()
{
if (!kompmgr || !kompmgr->isRunning()) {
return;
}
kompmgr->kill(SIGUSR2);
}
bool Workspace::kompmgrIsRunning() bool Workspace::kompmgrIsRunning()
{ {
return kompmgr && kompmgr->isRunning(); return kompmgr && kompmgr->isRunning();

@ -413,7 +413,8 @@ class Workspace : public TQObject, public KWinInterface, public KDecorationDefin
void restartKompmgr( KProcess *proc ); void restartKompmgr( KProcess *proc );
void handleKompmgrOutput( KProcess *proc, char *buffer, int buflen); void handleKompmgrOutput( KProcess *proc, char *buffer, int buflen);
void stopKompmgr(); void stopKompmgr();
// end void kompmgrReloadSettings();
// end
protected: protected:
bool keyPressMouseEmulation( XKeyEvent& ev ); bool keyPressMouseEmulation( XKeyEvent& ev );

Loading…
Cancel
Save