diff --git a/kde/window-decorator/decorator.cpp b/kde/window-decorator/decorator.cpp index 937038e..4dc23f4 100644 --- a/kde/window-decorator/decorator.cpp +++ b/kde/window-decorator/decorator.cpp @@ -64,6 +64,7 @@ bool activeDecorationOpacityShade = false; int blurType = BLUR_TYPE_NONE; decor_context_t KWD::Decorator::mDefaultContext; +decor_extents_t KWD::Decorator::mDefaultBorder; decor_shadow_t *KWD::Decorator::mNoBorderShadow = 0; decor_shadow_t *KWD::Decorator::mDefaultShadow = 0; KWD::PluginManager *KWD::Decorator::mPlugins = 0; @@ -350,6 +351,7 @@ KWD::Decorator::updateDefaultShadow (KWD::Window *w) return; mDefaultContext = *w->context (); + mDefaultBorder = *w->border (); mDefaultShadow = w->shadow (); if (mDefaultShadow) diff --git a/kde/window-decorator/decorator.h b/kde/window-decorator/decorator.h index e56dfdc..1453844 100644 --- a/kde/window-decorator/decorator.h +++ b/kde/window-decorator/decorator.h @@ -111,11 +111,15 @@ class Decorator:public KApplication, public KWinInterface { { return &mShadowOptions; } - static decor_shadow_t *defaultWindowShadow (decor_context_t *context) + static decor_shadow_t *defaultWindowShadow (decor_context_t *context, + decor_extents_t *border) { if (!mDefaultShadow) return NULL; + if (memcmp (border, &mDefaultBorder, sizeof (decor_extents_t)) != 0) + return NULL; + *context = mDefaultContext; return mDefaultShadow; } @@ -152,6 +156,7 @@ class Decorator:public KApplication, public KWinInterface { private: static PluginManager *mPlugins; static KWD::Options *mOptions; + static decor_extents_t mDefaultBorder; static decor_context_t mDefaultContext; static decor_shadow_t *mDefaultShadow; static decor_shadow_t *mNoBorderShadow; diff --git a/kde/window-decorator/window.cpp b/kde/window-decorator/window.cpp index 7e07eab..a9e77d7 100644 --- a/kde/window-decorator/window.cpp +++ b/kde/window-decorator/window.cpp @@ -932,7 +932,7 @@ KWD::Window::updateShadow (void) /* use default shadow if such exist */ if (!mUniqueHorzShape && !mUniqueVertShape) { - mShadow = Decorator::defaultWindowShadow (&mContext); + mShadow = Decorator::defaultWindowShadow (&mContext, &mBorder); if (mShadow) decor_shadow_reference (mShadow); } diff --git a/kde/window-decorator/window.h b/kde/window-decorator/window.h index ef7b79f..8472677 100644 --- a/kde/window-decorator/window.h +++ b/kde/window-decorator/window.h @@ -166,6 +166,10 @@ class Window:public QWidget, public KDecorationBridge { { return mShadow; } + decor_extents_t *border (void) + { + return &mBorder; + } QRect clientGeometry (void); void showKillProcessDialog (Time timestamp); void hideKillProcessDialog (void);