Группа :: Графические оболочки/KDE
Пакет: kdebase
Главная Изменения Спек Патчи Загрузить Bugs and FR
Патч: kdebase-3.1.3-panelicon.patch
--- kdebase-3.1.3/kicker/buttons/panelbuttonbase.cpp.orig 2003-07-30 21:28:19.000000000 +0200
+++ kdebase-3.1.3/kicker/buttons/panelbuttonbase.cpp 2003-07-30 22:29:06.000000000 +0200
@@ -47,6 +47,16 @@
static ZoomButton* zoomButton = 0;
static int zoomDisabled = 0;
+static QPixmap iconResize(QPixmap pix, int w, int h)
+{
+ if (pix.height() > h) {
+ QImage tmp = pix.convertToImage();
+ tmp = tmp.smoothScale(w, h);
+ pix.convertFromImage(tmp);
+ }
+ return pix;
+}
+
ZoomButton::ZoomButton()
: PanelButtonBase( 0, 0, WStyle_Customize | WX11BypassWM | WMouseNoMask)
{
@@ -311,34 +321,50 @@
{
KIcon::StdSizes sz;
KIcon::StdSizes zoom_sz;
+ KConfig * config = KGlobal::config();
+ config->setGroup( "PanelIcons" );
- if ( orientation() == Horizontal ) {
- if ( height() < 32 ) sz = KIcon::SizeSmall;
- else if ( height() < 48 ) sz = KIcon::SizeMedium;
- else sz = KIcon::SizeLarge;
- }
- else {
- if ( width() < 32 ) sz = KIcon::SizeSmall;
- else if ( width() < 48 ) sz = KIcon::SizeMedium;
- else sz = KIcon::SizeLarge;
- }
+ if ( ! config->readBoolEntry( "IconResize", true ) ) { // set resizing panel icon as default
+ if ( orientation() == Horizontal ) {
+ if ( height() < 32 ) sz = KIcon::SizeSmall;
+ else if ( height() < 48 ) sz = KIcon::SizeMedium;
+ else sz = KIcon::SizeLarge;
+ }
+ else {
+ if ( width() < 32 ) sz = KIcon::SizeSmall;
+ else if ( width() < 48 ) sz = KIcon::SizeMedium;
+ else sz = KIcon::SizeLarge;
+ }
- if (sz == KIcon::SizeSmall)
- zoom_sz = KIcon::SizeMedium;
- else
- zoom_sz = KIcon::SizeLarge;
+ if (sz == KIcon::SizeSmall)
+ zoom_sz = KIcon::SizeMedium;
+ else
+ zoom_sz = KIcon::SizeLarge;
+
+ } else { // resize panel icons
+ if (orientation() == Horizontal)
+ sz = (KIcon::StdSizes)height();
+ else
+ sz = (KIcon::StdSizes)width();
+
+ if (sz < KIcon::SizeSmall)
+ zoom_sz = KIcon::SizeSmall;
+ else if (sz < KIcon::SizeMedium)
+ zoom_sz = KIcon::SizeMedium;
+ else
+ zoom_sz = KIcon::SizeLarge;
+ }
if (_size != sz || _zoom_size != zoom_sz) {
_size = sz;
_zoom_size = zoom_sz;
- return true;
- }
- return false;
+ return true;
+ }
+ return false;
}
void PanelButtonBase::loadIcons()
{
-
KIconLoader * ldr = KGlobal::iconLoader();
QString nm = _iconName;
@@ -346,11 +372,14 @@
if (_icon.isNull()) {
nm = defaultIcon();
- _icon = ldr->loadIcon(nm, KIcon::Panel, _size, KIcon::DefaultState);
+ _icon = ldr->loadIcon(nm, KIcon::Panel, _size, KIcon::DefaultState);
}
- _iconh = ldr->loadIcon(nm, KIcon::Panel, _size, KIcon::ActiveState, 0L, true);
- _iconz = ldr->loadIcon(nm, KIcon::Panel, _zoom_size, KIcon::ActiveState, 0L, true );
+ _icon = iconResize(_icon, height(), width());
+ _iconh = iconResize(ldr->loadIcon(nm, KIcon::Panel, _size, KIcon::ActiveState, 0L, true),
+ height(), width());
+ _iconz = iconResize(ldr->loadIcon(nm, KIcon::Panel, _zoom_size, KIcon::ActiveState, 0L, true),
+ height(), width());
}
void PanelButtonBase::setIconURL(const KURL & u)