Skip to content

Commit 4e92e87

Browse files
authored
Merge branch 'master' into xembed-treeland-stash
2 parents 1083e55 + ae3a27b commit 4e92e87

3 files changed

Lines changed: 30 additions & 18 deletions

File tree

panels/dock/dockpanel.cpp

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -161,10 +161,15 @@ bool DockPanel::init()
161161
m_theme = static_cast<ColorTheme>(Dtk::Gui::DGuiApplicationHelper::instance()->themeType());
162162
auto platformName = QGuiApplication::platformName();
163163
if (QStringLiteral("wayland") == platformName) {
164-
// TODO: support get color type from wayland
165164
m_helper = new WaylandDockHelper(this);
166165
connect(static_cast<WaylandDockHelper *>(m_helper), &WaylandDockHelper::xembedWindowMoveResult,
167166
this, &DockPanel::xembedWindowMoveResult);
167+
// Fallback to DGuiApplicationHelper for theme color when wayland wallpaper color is not available.
168+
// TODO: remove this when initWallpaperColorManager is re-enabled
169+
QObject::connect(Dtk::Gui::DGuiApplicationHelper::instance(), &Dtk::Gui::DGuiApplicationHelper::themeTypeChanged,
170+
this, [this]() {
171+
setColorTheme(static_cast<ColorTheme>(Dtk::Gui::DGuiApplicationHelper::instance()->themeType()));
172+
});
168173
} else if (QStringLiteral("xcb") == platformName) {
169174
QObject::connect(Dtk::Gui::DGuiApplicationHelper::instance(), &Dtk::Gui::DGuiApplicationHelper::themeTypeChanged,
170175
this, [this](){

panels/dock/waylanddockhelper.cpp

Lines changed: 23 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@ WaylandDockHelper::WaylandDockHelper(DockPanel *panel)
2222
, m_isCurrentActiveWindowFullscreened(false)
2323
, m_panel(panel)
2424
{
25-
m_wallpaperColorManager.reset(new WallpaperColorManager(this));
2625
m_ddeShellManager.reset(new TreeLandDDEShellManager());
2726
DS_NAMESPACE::DAppletBridge bridge("org.deepin.ds.dock.taskmanager");
2827
if (auto applet = bridge.applet()) {
@@ -37,19 +36,6 @@ WaylandDockHelper::WaylandDockHelper(DockPanel *panel)
3736
}
3837
}
3938

40-
connect(m_panel, &DockPanel::rootObjectChanged, this, [this]() {
41-
m_wallpaperColorManager->watchScreen(dockScreenName());
42-
});
43-
44-
connect(m_wallpaperColorManager.get(), &WallpaperColorManager::activeChanged, this, [this]() {
45-
if (m_panel->rootObject() != nullptr) {
46-
m_wallpaperColorManager->watchScreen(dockScreenName());
47-
}
48-
});
49-
50-
connect(m_panel, &DockPanel::dockScreenChanged, this, [this]() {
51-
m_wallpaperColorManager->watchScreen(dockScreenName());
52-
});
5339

5440
connect(m_panel, &DockPanel::positionChanged, this, &WaylandDockHelper::updateOverlapCheckerPos);
5541
connect(m_panel, &DockPanel::dockSizeChanged, this, &WaylandDockHelper::updateOverlapCheckerPos);
@@ -73,9 +59,6 @@ WaylandDockHelper::WaylandDockHelper(DockPanel *panel)
7359
}
7460
});
7561

76-
if (m_panel->rootObject() != nullptr) {
77-
m_wallpaperColorManager->watchScreen(dockScreenName());
78-
}
7962
}
8063

8164
void WaylandDockHelper::updateOverlapCheckerPos()
@@ -147,6 +130,29 @@ bool WaylandDockHelper::isWindowOverlap()
147130
return m_isWindowOverlap;
148131
}
149132

133+
void WaylandDockHelper::initWallpaperColorManager()
134+
{
135+
m_wallpaperColorManager.reset(new WallpaperColorManager(this));
136+
137+
connect(m_panel, &DockPanel::rootObjectChanged, this, [this]() {
138+
m_wallpaperColorManager->watchScreen(dockScreenName());
139+
});
140+
141+
connect(m_wallpaperColorManager.get(), &WallpaperColorManager::activeChanged, this, [this]() {
142+
if (m_panel->rootObject() != nullptr) {
143+
m_wallpaperColorManager->watchScreen(dockScreenName());
144+
}
145+
});
146+
147+
connect(m_panel, &DockPanel::dockScreenChanged, this, [this]() {
148+
m_wallpaperColorManager->watchScreen(dockScreenName());
149+
});
150+
151+
if (m_panel->rootObject() != nullptr) {
152+
m_wallpaperColorManager->watchScreen(dockScreenName());
153+
}
154+
}
155+
150156
void WaylandDockHelper::setDockColorTheme(const ColorTheme &theme)
151157
{
152158
m_panel->setColorTheme(theme);

panels/dock/waylanddockhelper.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@ protected Q_SLOTS:
5151

5252
private:
5353
void updateOverlapCheckerPos();
54+
void initWallpaperColorManager();
5455

5556
private:
5657
friend class TreeLandWindowOverlapChecker;

0 commit comments

Comments
 (0)