mirror of
https://github.com/linuxdeepin/dde-dock.git
synced 2025-06-04 17:33:05 +00:00
fixed(tray):invalid windowid do not create trayicon
com.deepin.dde.TrayManager返回的windowid没有刷新导致任务栏有一个空托盘图标
This commit is contained in:
parent
34d15a200d
commit
bf41b1ebb6
@ -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();
|
||||
|
@ -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)
|
||||
|
@ -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();
|
||||
|
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user