summaryrefslogtreecommitdiffstats
path: root/kcontrol
diff options
context:
space:
mode:
Diffstat (limited to 'kcontrol')
-rw-r--r--kcontrol/background/bgdefaults.h4
-rw-r--r--kcontrol/background/bgdialog.cpp54
-rw-r--r--kcontrol/background/bgdialog.h7
3 files changed, 52 insertions, 13 deletions
diff --git a/kcontrol/background/bgdefaults.h b/kcontrol/background/bgdefaults.h
index bde81071a..e6ece1cfe 100644
--- a/kcontrol/background/bgdefaults.h
+++ b/kcontrol/background/bgdefaults.h
@@ -24,12 +24,10 @@
#define _defMinOptimizationDepth 1
// Per desktop defaults
-// Before you change this get in touch with me (kb9vqf@pearsoncomputing.net)
-// Thanks!!
#define _defColorA TQColor("#003082")
#define _defColorB TQColor("#C0C0C0")
#define _defBackgroundMode KBackgroundSettings::Flat
-#define _defWallpaperMode KBackgroundSettings::Scaled
+#define _defWallpaperMode KBackgroundSettings::ScaleAndCrop
#define _defMultiMode KBackgroundSettings::NoMulti
#define _defBlendMode KBackgroundSettings::NoBlending
#define _defBlendBalance 100
diff --git a/kcontrol/background/bgdialog.cpp b/kcontrol/background/bgdialog.cpp
index 365713a06..67756d466 100644
--- a/kcontrol/background/bgdialog.cpp
+++ b/kcontrol/background/bgdialog.cpp
@@ -1,5 +1,4 @@
/*
-
This file is part of the KDE libraries
Copyright (c) 2005 David Saxton <david@bluehaze.org>
@@ -245,10 +244,36 @@ BGDialog::BGDialog(TQWidget* parent, TDEConfig* _config, bool _multidesktop)
m_slideShowRandom = KBackgroundSettings::InOrder;
// Wallpaper Position
+ m_prevWallpaperPos = KBackgroundSettings::ScaleAndCrop;
+ m_prevTilePos = KBackgroundSettings::Tiled;
+
m_wallpaperPos = eRenderer()->wallpaperMode();
if (m_wallpaperPos == KBackgroundSettings::NoWallpaper)
m_wallpaperPos = KBackgroundSettings::Centred; // Default
+ const TQString path = eRenderer()->wallpaper();
+ KFileMetaInfo metaInfo(path);
+ if (metaInfo.isValid() && metaInfo.item("Dimensions").isValid())
+ {
+ // If the image is greater than 800x600 default to using the user selected mode
+ // for a normal wallpaper, otherwise default to user selection for tiles.
+ TQSize s = metaInfo.item("Dimensions").value().toSize();
+ m_isTile = (s.width() < 800 || s.height() < 600);
+ if (m_isTile)
+ {
+ m_prevTilePos = m_wallpaperPos;
+ }
+ else
+ {
+ m_prevWallpaperPos = m_wallpaperPos;
+ }
+ }
+ else if (KMimeType::findByPath(path)->is("image/svg+xml"))
+ {
+ m_prevWallpaperPos = m_wallpaperPos;
+ }
+
+ // Restrictions
if (TDEGlobal::dirs()->isRestrictedResource("wallpaper"))
{
m_urlWallpaperButton->hide();
@@ -940,18 +965,22 @@ void BGDialog::slotWallpaperTypeChanged(int i)
KFileMetaInfo metaInfo(path);
if (metaInfo.isValid() && metaInfo.item("Dimensions").isValid())
{
- // If the image is greater than 800x600 default to using scaled mode,
- // otherwise default to tiled.
-
+ // If the image is greater than 800x600 default to using the user selected mode
+ // for a normal wallpaper, otherwise default to user selection for tiles.
TQSize s = metaInfo.item("Dimensions").value().toSize();
- if (s.width() >= 800 && s.height() >= 600)
- m_wallpaperPos = KBackgroundSettings::Scaled;
+ m_isTile = (s.width() < 800 || s.height() < 600);
+ if (m_isTile)
+ {
+ m_wallpaperPos = m_prevTilePos;
+ }
else
- m_wallpaperPos = KBackgroundSettings::Tiled;
+ {
+ m_wallpaperPos = m_prevWallpaperPos;
+ }
}
else if (KMimeType::findByPath(path)->is("image/svg+xml"))
{
- m_wallpaperPos = KBackgroundSettings::Scaled;
+ m_wallpaperPos = m_prevWallpaperPos;
}
r->setWallpaperMode(m_wallpaperPos);
@@ -998,6 +1027,15 @@ void BGDialog::slotWallpaperPos(int mode)
if (mode == r->wallpaperMode())
return;
+ if (m_isTile)
+ {
+ m_prevTilePos = mode;
+ }
+ else
+ {
+ m_prevWallpaperPos = mode;
+ }
+
r->stop();
r->setWallpaperMode(mode);
r->start(true);
diff --git a/kcontrol/background/bgdialog.h b/kcontrol/background/bgdialog.h
index 6b33d8999..607118337 100644
--- a/kcontrol/background/bgdialog.h
+++ b/kcontrol/background/bgdialog.h
@@ -99,8 +99,11 @@ protected:
TQValueVector< TQPtrVector<KBackgroundRenderer> > m_renderer; // m_renderer[desk][screen]
TQMap<TQString,int> m_wallpaper;
TQStringList m_patterns;
- int m_slideShowRandom; // Remembers last Slide Show setting
- int m_wallpaperPos; // Remembers last wallpaper pos
+ int m_slideShowRandom; // Remembers last Slide Show setting
+ int m_wallpaperPos; // Remembers last wallpaper pos
+ int m_prevWallpaperPos; // Previous normal wallpaper pos
+ int m_prevTilePos; // Previous tile wallpaper pos
+ bool m_isTile; // Whether the wallpaper is a tile (800x600 or smaller)
BGMonitorArrangement * m_pMonitorArrangement;