Patch for system tray layouting

Bernhard mustermaxi at gmail.com
Sat Jun 14 20:44:49 CEST 2008


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 at 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 at kde.org
> https://mail.kde.org/mailman/listinfo/panel-devel
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.kde.org/pipermail/panel-devel/attachments/20080614/23b83cfd/attachment.html 


More information about the Panel-devel mailing list