diff -rup kicker/taskbar/taskbar.cpp kicker/taskbar/taskbar.cpp
--- kicker/taskbar/taskbar.cpp 2006-10-01 18:31:51.000000000 +0100
+++ kicker/taskbar/taskbar.cpp 2006-12-06 13:20:23.000000000 +0000
@@ -160,8 +160,8 @@ QSize TaskBar::sizeHint() const
// get our minimum height based on the minimum button height or the
// height of the font in use, which is largest
QFontMetrics fm(KGlobalSettings::taskbarFont());
- int minButtonHeight = fm.height() > TaskBarSettings::minimumButtonHeight() ?
- fm.height() : TaskBarSettings::minimumButtonHeight();
+ int minButtonHeight = QMAX(TaskBarSettings::iconSize() + fm.height() + 6,
+ TaskBarSettings::minimumButtonHeight());
return QSize(BUTTON_MIN_WIDTH, minButtonHeight);
}
@@ -171,8 +171,8 @@ QSize TaskBar::sizeHint( KPanelExtension
// get our minimum height based on the minimum button height or the
// height of the font in use, which is largest
QFontMetrics fm(KGlobalSettings::taskbarFont());
- int minButtonHeight = fm.height() > TaskBarSettings::minimumButtonHeight() ?
- fm.height() : TaskBarSettings::minimumButtonHeight();
+ int minButtonHeight = QMAX(TaskBarSettings::iconSize() + fm.height() + 6,
+ TaskBarSettings::minimumButtonHeight());
if ( p == KPanelExtension::Left || p == KPanelExtension::Right )
{
@@ -685,13 +685,15 @@ void TaskBar::reLayout()
// minimum button height or the height of the font in use, whichever is
// largest
QFontMetrics fm(KGlobalSettings::taskbarFont());
- int minButtonHeight = fm.height() > TaskBarSettings::minimumButtonHeight() ?
- fm.height() : TaskBarSettings::minimumButtonHeight();
+ int minButtonHeight = QMAX(TaskBarSettings::iconSize() + fm.height() + 6,
+ TaskBarSettings::minimumButtonHeight());
// horizontal layout
if (orientation() == Horizontal)
{
- int bwidth = BUTTON_MIN_WIDTH;
+ int iconSize = TaskBarSettings::iconSize();
+ int minWidth = QMAX(iconSize, BUTTON_MIN_WIDTH);
+ int bwidth = minWidth;
int rows = contentsRect().height() / minButtonHeight;
if ( rows < 1 )
@@ -706,13 +708,13 @@ void TaskBar::reLayout()
int bpr = (int)ceil( (double)list.count() / rows);
// adjust content size
- if ( contentsRect().width() < bpr * BUTTON_MIN_WIDTH )
+ if ( contentsRect().width() < bpr * minWidth )
{
- resizeContents( bpr * BUTTON_MIN_WIDTH, contentsRect().height() );
+ resizeContents( bpr * minWidth, contentsRect().height() );
}
// maximum number of buttons per row
- int mbpr = contentsRect().width() / BUTTON_MIN_WIDTH;
+ int mbpr = contentsRect().width() / minWidth;
// expand button width if space permits
if (mbpr > bpr)
@@ -896,8 +898,8 @@ int TaskBar::taskCount() const
int TaskBar::maximumButtonsWithoutShrinking() const
{
QFontMetrics fm(KGlobalSettings::taskbarFont());
- int minButtonHeight = fm.height() > TaskBarSettings::minimumButtonHeight() ?
- fm.height() : TaskBarSettings::minimumButtonHeight();
+ int minButtonHeight = QMAX(TaskBarSettings::iconSize() + fm.height() + 6,
+ TaskBarSettings::minimumButtonHeight());
int rows = contentsRect().height() / minButtonHeight;
if (rows < 1)
diff -rup kicker/taskbar/taskbar.kcfg kicker/taskbar/taskbar.kcfg
--- kicker/taskbar/taskbar.kcfg 2006-10-01 18:31:51.000000000 +0100
+++ kicker/taskbar/taskbar.kcfg 2006-12-06 11:22:28.000000000 +0000
@@ -149,5 +149,12 @@
A thumbnail is created by resizing the window. The scaling factor is determined by its largest dimension and this value. In doing so, the thumbnail's size will not exceed this value in any dimension.
+
+ 16
+ 0
+
+ Set the size of the task icons.
+
+
diff -rup kicker/taskbar/taskcontainer.cpp kicker/taskbar/taskcontainer.cpp
--- kicker/taskbar/taskcontainer.cpp 2006-10-07 15:23:09.000000000 +0100
+++ kicker/taskbar/taskcontainer.cpp 2006-12-07 09:47:17.000000000 +0000
@@ -111,7 +111,8 @@ void TaskContainer::init()
{
setBackgroundMode(NoBackground);
setBackgroundOrigin(WidgetOrigin);
- animBg = QPixmap(16, 16);
+ int iconSize = TaskBarSettings::iconSize();
+ animBg = QPixmap(iconSize, iconSize);
installEventFilter(KickerTip::the());
@@ -304,8 +305,10 @@ QSizePolicy TaskContainer::sizePolicy()
void TaskContainer::resizeEvent( QResizeEvent * )
{
// calculate the icon rect
+ int iconSize = TaskBarSettings::iconSize();
+ QFontMetrics fm(KGlobalSettings::taskbarFont());
QRect br( style().subRect( QStyle::SR_PushButtonContents, this ) );
- iconRect = QStyle::visualRect( QRect(br.x() + 2, (height() - 16) / 2, 16, 16), this );
+ iconRect = QStyle::visualRect( QRect((width() - iconSize) / 2, (height() - fm.height() - 2 - iconSize) / 2, iconSize, iconSize), this );
}
void TaskContainer::add(Task::Ptr task)
@@ -516,6 +519,7 @@ void TaskContainer::drawButton(QPainter
(m_mouseOver && isEnabled() &&
TaskBarSettings::showButtonOnHover());
QFont font(KGlobalSettings::taskbarFont());
+ int iconSize = TaskBarSettings::iconSize();
// draw sunken if we contain the active task
bool active = false;
@@ -578,7 +582,8 @@ void TaskContainer::drawButton(QPainter
// get the task icon
if (task)
{
- pixmap = task->pixmap();
+ bool isStatic;
+ pixmap = task->bestIcon(iconSize, isStatic);
}
bool sunken = isDown() || (alwaysDrawButtons && (active || aboutToActivate));
@@ -605,16 +610,16 @@ void TaskContainer::drawButton(QPainter
{
if (pixmap.isNull() && m_startup)
{
- pixmap = SmallIcon(m_startup->icon());
+ pixmap = SmallIcon(m_startup->icon(), iconSize);
}
if ( !pixmap.isNull() )
{
- // make sure it is no larger than 16x16
- if ( pixmap.width() > 16 || pixmap.height() > 16 )
+ // make sure it is no larger than iconSize x iconSize
+ if ( pixmap.width() > iconSize || pixmap.height() > iconSize )
{
QImage tmp = pixmap.convertToImage();
- pixmap.convertFromImage( tmp.smoothScale( 16, 16 ) );
+ pixmap.convertFromImage( tmp.smoothScale( iconSize, iconSize ) );
}
// fade out the icon when minimized
@@ -636,20 +641,21 @@ void TaskContainer::drawButton(QPainter
// modified overlay
static QString modStr = "[" + i18n( "modified" ) + "]";
int modStrPos = text.find( modStr );
- int textPos = ( taskBar->showIcon() && (!pixmap.isNull() || m_startup)) ? 2 + 16 + 2 : 0;
if (modStrPos >= 0)
{
// +1 because we include a space after the closing brace.
text.remove(modStrPos, modStr.length() + 1);
- QPixmap modPixmap = SmallIcon("modified");
+ int modIconSize = iconSize / 2;
+ QPixmap modPixmap = SmallIcon("modified", modIconSize);
// draw modified overlay
if (!modPixmap.isNull())
{
- QRect r = QStyle::visualRect(QRect(br.x() + textPos,
- (height() - 16) / 2, 16, 16),
- this);
+ QRect r = QStyle::visualRect(QRect(iconRect.right() - modIconSize,
+ iconRect.bottom() - modIconSize,
+ modIconSize, modIconSize),
+ this);
if (iconified)
{
@@ -657,16 +663,19 @@ void TaskContainer::drawButton(QPainter
}
p->drawPixmap(r, modPixmap);
- textPos += 16 + 2;
}
}
// draw text
if (!text.isEmpty())
{
- QRect tr = QStyle::visualRect(QRect(br.x() + textPos + 1, 0,
- width() - textPos, height()),
- this);
+ QFontMetrics fm(font);
+ int textWidth = fm.width(text);
+ int availableWidth = width() - br.x() * 2;
+ int trw = QMIN(textWidth, availableWidth);
+ QRect tr = QStyle::visualRect(QRect((width() - trw) / 2, (height() - fm.height() - 2 - iconSize) / 2 + iconSize + 2,
+ trw, fm.height()),
+ this);
int textFlags = AlignVCenter | SingleLine;
textFlags |= reverse ? AlignRight : AlignLeft;
QPen textPen;
@@ -685,13 +694,7 @@ void TaskContainer::drawButton(QPainter
textPen = p->pen();
}
- int availableWidth = width() - (br.x() * 2) - textPos;
- if (m_filteredTasks.count() > 1)
- {
- availableWidth -= 8;
- }
-
- if (QFontMetrics(font).width(text) > availableWidth)
+ if (textWidth > availableWidth)
{
// draw text into overlay pixmap
QPixmap tpm(*pm);
@@ -770,7 +773,7 @@ void TaskContainer::drawButton(QPainter
int flags = QStyle::Style_Enabled;
QRect ar = QStyle::visualRect(QRect(br.x() + br.width() - 8 - 2,
- br.y(), 8, br.height()), this);
+ br.y(), 8, 8), this);
if (sunken)
{
flags |= QStyle::Style_Down;