fixed(tray):invalid windowid do not create trayicon

com.deepin.dde.TrayManager返回的windowid没有刷新导致任务栏有一个空托盘图标
This commit is contained in:
shaojun 2019-11-27 15:37:57 +08:00
parent 34d15a200d
commit bf41b1ebb6
4 changed files with 12 additions and 3 deletions

View File

@ -44,6 +44,7 @@ public:
virtual void sendClick(uint8_t mouseButton, int x, int y) = 0;
virtual const QImage trayImage() = 0;
virtual inline TrayType trayTyep() const { return TrayType::ApplicationTray; } // default is ApplicationTray
virtual bool isValid() {return true;}
Q_SIGNALS:
void iconChanged();

View File

@ -385,7 +385,11 @@ void TrayPlugin::trayXEmbedAdded(const QString &itemKey, quint32 winId)
}
AbstractTrayWidget *trayWidget = new XEmbedTrayWidget(winId);
addTrayWidget(itemKey, trayWidget);
if (trayWidget->isValid())
addTrayWidget(itemKey, trayWidget);
else {
qDebug() << "-- invalid tray windowid" << winId;
}
}
void TrayPlugin::traySNIAdded(const QString &itemKey, const QString &sniServicePath)

View File

@ -176,8 +176,10 @@ void XEmbedTrayWidget::wrapWindow()
auto cookie = xcb_get_geometry(c, m_windowId);
QScopedPointer<xcb_get_geometry_reply_t> clientGeom(xcb_get_geometry_reply(c, cookie, Q_NULLPTR));
if (clientGeom.isNull())
if (clientGeom.isNull()) {
m_valid = false;
return;
}
//create a container window
const auto ratio = devicePixelRatioF();

View File

@ -32,7 +32,7 @@ class XEmbedTrayWidget : public AbstractTrayWidget
Q_OBJECT
public:
explicit XEmbedTrayWidget(quint32 winId, QWidget *parent = 0);
explicit XEmbedTrayWidget(quint32 winId, QWidget *parent = nullptr);
~XEmbedTrayWidget();
QString itemKeyForConfig() override;
@ -44,6 +44,7 @@ public:
static QString getWindowProperty(quint32 winId, QString propName);
static QString toXEmbedKey(quint32 winId);
static bool isXEmbedKey(const QString &itemKey);
virtual bool isValid() override {return m_valid;}
private:
void showEvent(QShowEvent *e) Q_DECL_OVERRIDE;
@ -72,6 +73,7 @@ private:
QTimer *m_updateTimer;
QTimer *m_sendHoverEvent;
bool m_valid = true;
};
#endif // XEMBEDTRAYWIDGET_H