fixes for plasma behavior and screens ids

--there are cases that screens instead of returning
correct screen names the return names like
"0:0". These are totally ignored in order to not
break the screen ids database
v0.6
Michail Vourlakos 8 years ago
parent 455f794be7
commit a2f2d3b8c7

@ -51,6 +51,7 @@ DockCorona::DockCorona(QObject *parent)
m_activityConsumer(new KActivities::Consumer(this))
{
KPackage::Package package(new DockPackage(this));
m_screenPool->load();
if (!package.isValid()) {
qWarning() << staticMetaObject.className()
@ -94,7 +95,6 @@ void DockCorona::load()
{
if (m_activityConsumer && (m_activityConsumer->serviceStatus() == KActivities::Consumer::Running) && m_activitiesStarting) {
disconnect(m_activityConsumer, &KActivities::Consumer::serviceStatusChanged, this, &DockCorona::load);
m_screenPool->load();
m_activitiesStarting = false;
@ -245,6 +245,12 @@ void DockCorona::addOutput(QScreen *screen)
{
Q_ASSERT(screen);
int id = m_screenPool->id(screen->name());
if (id==-1){
int newId = m_screenPool->firstAvailableId();
m_screenPool->insertScreenMapping(newId, screen->name());
}
/* qDebug() << "screen added +++ "<<screen->name();
foreach(auto scr, qGuiApp->screens()){
qDebug() << "Found screen: "<<scr->name();
@ -304,6 +310,7 @@ void DockCorona::screenCountChangedTimer()
qDebug() << "screen count changed -+-+ "<< qGuiApp->screens().size();
qDebug() << "adding consideration....";
qDebug() << "dock view running : " << m_dockViews.count();
foreach(auto scr, qGuiApp->screens()){
qDebug() << "Found screen: "<<scr->name();
@ -489,8 +496,11 @@ void DockCorona::addDock(Plasma::Containment *containment)
id = containment->lastScreen();
}
qDebug() << "add dock - containment id : "<< id;
if (id >= 0) {
QString connector = m_screenPool->connector(id);
qDebug() << "add dock - connector : "<< connector;
bool found{false};
foreach(auto scr, qGuiApp->screens()){
if (scr && scr->name() == connector){

@ -20,6 +20,7 @@
#include "screenpool.h"
#include <config-latte.h>
#include <QDebug>
#include <QGuiApplication>
#include <QScreen>
@ -65,6 +66,7 @@ void ScreenPool::load()
!m_idForConnector.contains(connector)) {
m_connectorForId[key.toInt()] = connector;
m_idForConnector[connector] = key.toInt();
qDebug() << "Known Screen - " << connector << " - " << key.toInt();
} else if (m_idForConnector.value(connector) != key.toInt()) {
m_configGroup.deleteEntry(key);
}
@ -94,7 +96,11 @@ QString ScreenPool::primaryConnector() const
void ScreenPool::setPrimaryConnector(const QString &primary)
{
if (m_primaryConnector == primary) {
//the ":" check fixes the strange plasma/qt issues when changing layouts
//there are case that the QScreen instead of the correct screen name
//returns "0:0", this check prevents from breaking the screens database
//from garbage ids
if ((m_primaryConnector == primary)|| primary.startsWith(":")) {
return;
}
Q_ASSERT(m_idForConnector.contains(primary));
@ -106,6 +112,7 @@ void ScreenPool::setPrimaryConnector(const QString &primary)
m_idForConnector[m_primaryConnector] = oldIdForPrimary;
m_connectorForId[oldIdForPrimary] = m_primaryConnector;
m_primaryConnector = primary;
save();
}
@ -124,6 +131,15 @@ void ScreenPool::insertScreenMapping(int id, const QString &connector)
Q_ASSERT(!m_connectorForId.contains(id) || m_connectorForId.value(id) == connector);
Q_ASSERT(!m_idForConnector.contains(connector) || m_idForConnector.value(connector) == id);
//the ":" check fixes the strange plasma/qt issues when changing layouts
//there are case that the QScreen instead of the correct screen name
//returns "0:0", this check prevents from breaking the screens database
//from garbage ids
if (connector.startsWith(":"))
return;
qDebug() << "add connector..." << connector;
if (id == 0) {
m_primaryConnector = connector;
}

Loading…
Cancel
Save