From kde-commits Tue May 27 10:57:10 2008 From: Marco Martin Date: Tue, 27 May 2008 10:57:10 +0000 To: kde-commits Subject: KDE/kdebase/workspace Message-Id: <1211885830.022886.16469.nullmailer () svn ! kde ! org> X-MARC-Message: https://marc.info/?l=kde-commits&m=121188862128704 SVN commit 813283 by mart: new BackgroundHint: TranslucentBackground, now used by folder view. when an applet has TranslucentBackground set, it loads "widgets/tranlucentbackground" as its own background when that svg does not exists in theh them it falls back to "widgets/background" instead of translucentbackground of the default theme M +24 -10 libs/plasma/applet.cpp M +3 -2 libs/plasma/applet.h M +2 -0 plasma/containments/folderview/folderview.cpp M +1 -0 plasma/desktoptheme/CMakeLists.txt A plasma/desktoptheme/widgets/translucentbackground.svg --- trunk/KDE/kdebase/workspace/libs/plasma/applet.cpp #813282:813283 @@ -540,20 +540,31 @@ d->backgroundHints = hints; //Draw the standard background? - if (hints & StandardBackground) { + if ((hints & StandardBackground) || (hints & TranslucentBackground)) { if (!d->background) { d->background = new Plasma::PanelSvg(); + } + + if (hints & TranslucentBackground) { + d->background->setImagePath("widgets/translucentbackground"); + + //FIXME: this fallback is an hack, an api like Plasma::Theme::hasImage() would be needed to make this clean + if (!Plasma::Theme::defaultTheme()->imagePath("widgets/translucentbackground").contains(Plasma::Theme::defaultTheme()->themeName())) { + d->background->setImagePath("widgets/background"); + } + } else { d->background->setImagePath("widgets/background"); - d->background->setEnabledBorders(Plasma::PanelSvg::AllBorders); - qreal left, top, right, bottom; - d->background->getMargins(left, top, right, bottom); - setContentsMargins(left, right, top, bottom); - QSizeF fitSize(left + right, top + bottom); - if (minimumSize().expandedTo(fitSize) != minimumSize()) { - setMinimumSize(minimumSize().expandedTo(fitSize)); - } - d->background->resizePanel(boundingRect().size()); } + + d->background->setEnabledBorders(Plasma::PanelSvg::AllBorders); + qreal left, top, right, bottom; + d->background->getMargins(left, top, right, bottom); + setContentsMargins(left, right, top, bottom); + QSizeF fitSize(left + right, top + bottom); + if (minimumSize().expandedTo(fitSize) != minimumSize()) { + setMinimumSize(minimumSize().expandedTo(fitSize)); + } + d->background->resizePanel(boundingRect().size()); } else if (d->background) { qreal left, top, right, bottom; d->background->getMargins(left, top, right, bottom); @@ -1597,6 +1608,9 @@ void Applet::Private::themeChanged() { if (background) { + //do again the translucent background fallback + q->setBackgroundHints(backgroundHints); + qreal left; qreal right; qreal top; --- trunk/KDE/kdebase/workspace/libs/plasma/applet.h #813282:813283 @@ -82,8 +82,9 @@ * Description on how draw a background for the applet */ enum BackgroundHint { NoBackground = 0 /** Not drawing a background under the applet, the applet has its own implementation */, - StandardBackground /** The standard background from the theme is drawn */, - ShadowedBackground /** The applet has a drop shadow */, + StandardBackground = 1 /** The standard background from the theme is drawn */, + TranslucentBackground = 2 /** An alternate version of the background is drawn, usually more translucent */, + ShadowedBackground = 4 /** The applet has a drop shadow */, DefaultBackground = StandardBackground | ShadowedBackground /** Default settings: both standard background and shadow */ }; Q_DECLARE_FLAGS(BackgroundHints, BackgroundHint) --- trunk/KDE/kdebase/workspace/plasma/containments/folderview/folderview.cpp #813282:813283 @@ -312,6 +312,8 @@ //if (constraints & Plasma::FormFactorConstraint) // setBackgroundHints(Applet::NoBackground); + setBackgroundHints(Applet::TranslucentBackground); + if ((constraints & Plasma::SizeConstraint) && columnsForWidth(contentsRect().width()) != m_columns) { --- trunk/KDE/kdebase/workspace/plasma/desktoptheme/CMakeLists.txt #813282:813283 @@ -18,6 +18,7 @@ widgets/tooltip.svg widgets/clock.svg widgets/pager.svg + widgets/translucentbackground.svg widgets/systemtray.svg widgets/tasks.svg widgets/toolbox-button.svg