--===============0389775212== Content-Type: multipart/alternative; boundary="----=_Part_13624_21661313.1213469089965" ------=_Part_13624_21661313.1213469089965 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Content-Disposition: inline Hi! I can't say anything about your patch in generally because I'm just not familiar with the internals of KDE yet ... but (and I don't know if it's your fault) why the hell is the size of the systray icons hardcoded?? (22px). Shouldn't there be a global setting for the icon size? Best Regards, Bernhard 2008/6/14, Mathias Kraus : > > Hi, > > this is my first patch for KDE, so I hope I don't break plasma ;) > > OK, it's only a small patch for a layouting bug which occurs when you have > a > system tray with multiple rows/columns. See attached picture. > > 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; > > 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; > > 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. > > Best regards, > > Mathias Kraus > > > > _______________________________________________ > Panel-devel mailing list > Panel-devel@kde.org > https://mail.kde.org/mailman/listinfo/panel-devel > > > ------=_Part_13624_21661313.1213469089965 Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Content-Disposition: inline

Hi!

I can't say anything about your patch in generally because I'm just not familiar with the internals of KDE yet ... but (and I don't know if it's your fault) why the hell is the size of the systray icons hardcoded?? (22px). Shouldn't there be a global setting for the icon size?

Best Regards,

Bernhard


2008/6/14, Mathias Kraus <k.matze@gmx.net>:
Hi,

this is my first patch for KDE, so I hope I don't break plasma ;)

OK, it's only a small patch for a layouting bug which occurs when you have a
system tray with multiple rows/columns. See attached picture.

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;

        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;

        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.

Best regards,

Mathias Kraus



_______________________________________________
Panel-devel mailing list
Panel-devel@kde.org
https://mail.kde.org/mailman/listinfo/panel-devel



------=_Part_13624_21661313.1213469089965-- --===============0389775212== Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ Panel-devel mailing list Panel-devel@kde.org https://mail.kde.org/mailman/listinfo/panel-devel --===============0389775212==--