<p>Hi!</p><p>I can&#39;t say anything about your patch in generally because I&#39;m just not familiar with the internals of KDE yet ... but (and I don&#39;t know if it&#39;s your fault) why the hell is the size of the systray icons hardcoded?? (22px). Shouldn&#39;t there be a global setting for the icon size?</p>
<p>Best Regards,</p><p>Bernhard</p><br><div><span class="gmail_quote">2008/6/14, Mathias Kraus &lt;<a href="mailto:k.matze@gmx.net">k.matze@gmx.net</a>&gt;:</span><blockquote class="gmail_quote" style="margin:0;margin-left:0.8ex;border-left:1px #ccc solid;padding-left:1ex">
Hi,<br> <br> this is my first patch for KDE, so I hope I don&#39;t break plasma ;)<br> <br> OK, it&#39;s only a small patch for a layouting bug which occurs when you have a<br> system tray with multiple rows/columns. See attached picture.<br>
 <br> The bug is in<br> kdebase/workspace/plasma/applets/systemtray/systemtraywidget.cpp.<br> In addWidgetToLayout the conditions in line 140<br> minimumHeight() + widget-&gt;height() + m_mainLayout-&gt;spacing() &gt; maximumHeight()<br>
 is always true after the first column is full, the same applies for a vertical<br> panel with rows.<br> <br> My patch calculates the maximum number of items that fits into the panel and<br> jumps into the next row/column if there is an overflow.<br>
 <br> void SystemTrayWidget::addWidgetToLayout(QWidget *widget)<br> {<br>&nbsp;&nbsp;&nbsp;&nbsp;// Add the widget to the layout<br>&nbsp;&nbsp;&nbsp;&nbsp;m_mainLayout-&gt;setRowMinimumHeight(m_nextRow, 22);<br>&nbsp;&nbsp;&nbsp;&nbsp;m_mainLayout-&gt;setColumnMinimumWidth(m_nextColumn, 22);<br>
&nbsp;&nbsp;&nbsp;&nbsp;widget-&gt;resize(22,22);<br>&nbsp;&nbsp;&nbsp;&nbsp;m_mainLayout-&gt;addWidget(widget, m_nextRow, m_nextColumn, 1, 1,<br> Qt::AlignCenter);<br> <br>&nbsp;&nbsp;&nbsp;&nbsp;// Figure out where the next widget should go<br>&nbsp;&nbsp;&nbsp;&nbsp;if (m_orientation == Qt::Horizontal) {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// Calculate the items that fit into a column<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m_maxCount = (maximumHeight() + m_mainLayout-&gt;spacing()) / (widget-<br> &gt;height() + m_mainLayout-&gt;spacing()) -1;<br> <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;setMinimumSize(QSize(22 * (m_nextColumn + 1) + m_mainLayout-&gt;spacing()<br>
 * m_nextColumn,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 22 * (m_maxCount + 1) + m_mainLayout-&gt;spacing() *<br> m_maxCount));<br> <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// Add down then across when horizontal<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m_nextRow++;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (m_nextRow &gt; m_maxCount){<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m_nextColumn++;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m_nextRow = 0;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;} else {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// Calculate the items that fit into a row<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m_maxCount = (maximumWidth() + m_mainLayout-&gt;spacing()) / (widget-<br>
 &gt;width() + m_mainLayout-&gt;spacing()) -1;<br> <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;setMinimumSize(QSize(22 * (m_maxCount + 1) + m_mainLayout-&gt;spacing() *<br> m_maxCount,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 22 * (m_nextRow + 1) + m_mainLayout-&gt;spacing() *<br>
 m_nextRow));<br> <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// Add across then down when vertical<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m_nextColumn++;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (m_nextColumn &gt; m_maxCount) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m_nextRow++;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m_nextColumn = 0;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>
 }<br> <br> BTW you guys rock. Keep on the good work.<br> <br> Best regards,<br> <br>Mathias Kraus<br> <br> <br> <br>_______________________________________________<br> Panel-devel mailing list<br> <a href="mailto:Panel-devel@kde.org">Panel-devel@kde.org</a><br>
 <a href="https://mail.kde.org/mailman/listinfo/panel-devel">https://mail.kde.org/mailman/listinfo/panel-devel</a><br> <br><br></blockquote></div><br>