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;