[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-panel-devel
Subject: Re: Patch for system tray layouting
From: Sebastian Sauer <mail () dipe ! org>
Date: 2008-06-14 23:27:49
Message-ID: 200806150127.49865.mail () dipe ! org
[Download RAW message or body]
On Saturday 14 June 2008, Mathias Kraus wrote:
> Hi,
Hi Mathias :-)
> The bug is in
> kdebase/workspace/plasma/applets/systemtray/systemtraywidget.cpp.
> In addWidgetToLayout the conditions in line 140
> minimumHeight() + widget->height() + m_mainLayout->spacing() >
> maximumHeight() is always true after the first column is full, the same
> applies for a vertical panel with rows.
>
> My patch calculates the maximum number of items that fits into the panel
> and jumps into the next row/column if there is an overflow.
>
> void SystemTrayWidget::addWidgetToLayout(QWidget *widget)
> {
> // Add the widget to the layout
> m_mainLayout->setRowMinimumHeight(m_nextRow, 22);
> m_mainLayout->setColumnMinimumWidth(m_nextColumn, 22);
> widget->resize(22,22);
> m_mainLayout->addWidget(widget, m_nextRow, m_nextColumn, 1, 1,
> Qt::AlignCenter);
>
> // Figure out where the next widget should go
> if (m_orientation == Qt::Horizontal) {
> // Calculate the items that fit into a column
> m_maxCount = (maximumHeight() + m_mainLayout->spacing()) / (widget-
>
> >height() + m_mainLayout->spacing()) -1;
probably guard against
widget->height()+m_mainLayout->spacing() == 0 ?
> setMinimumSize(QSize(22 * (m_nextColumn + 1) +
> m_mainLayout->spacing() * m_nextColumn,
> 22 * (m_maxCount + 1) +
> m_mainLayout->spacing() * m_maxCount));
>
> // Add down then across when horizontal
> m_nextRow++;
> if (m_nextRow > m_maxCount){
> m_nextColumn++;
> m_nextRow = 0;
> }
> } else {
> // Calculate the items that fit into a row
> m_maxCount = (maximumWidth() + m_mainLayout->spacing()) / (widget-
>
> >width() + m_mainLayout->spacing()) -1;
here too.
> setMinimumSize(QSize(22 * (m_maxCount + 1) +
> m_mainLayout->spacing() * m_maxCount,
> 22 * (m_nextRow + 1) + m_mainLayout->spacing()
> * m_nextRow));
>
> // Add across then down when vertical
> m_nextColumn++;
> if (m_nextColumn > m_maxCount) {
> m_nextRow++;
> m_nextColumn = 0;
> }
> }
> }
>
> BTW you guys rock. Keep on the good work.
else looks and works fine imho :)
_______________________________________________
Panel-devel mailing list
Panel-devel@kde.org
https://mail.kde.org/mailman/listinfo/panel-devel
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic