Ensure that applets are added to the panel in left to right (or top to bottom)
order as BoxLayout is not really capable of anything else. On the containment side, ignore the specified geometry when delaying init as the placement calculations can lead to slight mispositioning of applets even when received in the correct order. svn path=/trunk/KDE/kdebase/workspace/libs/plasma/; revision=756435
This commit is contained in:
parent
b1714c2248
commit
092b7ff835
@ -412,7 +412,7 @@ Applet* Containment::addApplet(const QString& name, const QVariantList& args, ui
|
|||||||
int index = -1;
|
int index = -1;
|
||||||
QPointF position = appletGeometry.topLeft();
|
QPointF position = appletGeometry.topLeft();
|
||||||
BoxLayout *l = dynamic_cast<BoxLayout *>(layout());
|
BoxLayout *l = dynamic_cast<BoxLayout *>(layout());
|
||||||
if (l && position != QPointF(-1, -1)) {
|
if (!delayInit && l && position != QPointF(-1, -1)) {
|
||||||
foreach (Applet *existingApplet, d->applets) {
|
foreach (Applet *existingApplet, d->applets) {
|
||||||
if (formFactor() == Horizontal) {
|
if (formFactor() == Horizontal) {
|
||||||
qreal middle = (existingApplet->geometry().left() +
|
qreal middle = (existingApplet->geometry().left() +
|
||||||
|
20
corona.cpp
20
corona.cpp
@ -174,6 +174,16 @@ void Corona::scheduleConfigSync() const
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool appletConfigLessThan(const KConfigGroup &c1, const KConfigGroup &c2)
|
||||||
|
{
|
||||||
|
QPointF p1 = c1.readEntry("geometry", QRectF()).topLeft();
|
||||||
|
QPointF p2 = c2.readEntry("geometry", QRectF()).topLeft();
|
||||||
|
if (p1.x() != p2.x()) {
|
||||||
|
return p1.x() < p2.x();
|
||||||
|
}
|
||||||
|
return p1.y() < p2.y();
|
||||||
|
}
|
||||||
|
|
||||||
void Corona::loadApplets(const QString& configName)
|
void Corona::loadApplets(const QString& configName)
|
||||||
{
|
{
|
||||||
clearApplets();
|
clearApplets();
|
||||||
@ -205,10 +215,18 @@ void Corona::loadApplets(const QString& configName)
|
|||||||
//kDebug() << "Containment" << c->id() << "geometry is" << c->geometry().toRect() << "config'd with" << appletConfig.name();
|
//kDebug() << "Containment" << c->id() << "geometry is" << c->geometry().toRect() << "config'd with" << appletConfig.name();
|
||||||
KConfigGroup applets(&containmentConfig, "Applets");
|
KConfigGroup applets(&containmentConfig, "Applets");
|
||||||
|
|
||||||
|
// Sort the applet configs in order of geometry to ensure that applets
|
||||||
|
// are added from left to right or top to bottom for a panel containment
|
||||||
|
QList<KConfigGroup> appletConfigs;
|
||||||
foreach (const QString &appletGroup, applets.groupList()) {
|
foreach (const QString &appletGroup, applets.groupList()) {
|
||||||
//kDebug() << "reading from applet group" << appletGroup;
|
//kDebug() << "reading from applet group" << appletGroup;
|
||||||
int appId = appletGroup.toUInt();
|
|
||||||
KConfigGroup appletConfig(&applets, appletGroup);
|
KConfigGroup appletConfig(&applets, appletGroup);
|
||||||
|
appletConfigs.append(appletConfig);
|
||||||
|
}
|
||||||
|
qSort(appletConfigs.begin(), appletConfigs.end(), appletConfigLessThan);
|
||||||
|
|
||||||
|
foreach (KConfigGroup appletConfig, appletConfigs) {
|
||||||
|
int appId = appletConfig.name().toUInt();
|
||||||
//kDebug() << "the name is" << appletConfig.name();
|
//kDebug() << "the name is" << appletConfig.name();
|
||||||
QString plugin = appletConfig.readEntry("plugin", QString());
|
QString plugin = appletConfig.readEntry("plugin", QString());
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user