Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions REUSE.toml
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,12 @@ precedence = "aggregate"
SPDX-FileCopyrightText = "UnionTech Software Technology Co., Ltd."
SPDX-License-Identifier = "GPL-3.0-or-later"

[[annotations]]
path = ["panels/dock/package/SpotlightGradient.png", "panels/dock/package/SpotlightGradient.svg"]
precedence = "aggregate"
SPDX-FileCopyrightText = "UnionTech Software Technology Co., Ltd."
SPDX-License-Identifier = "GPL-3.0-or-later"

[[annotations]]
path = ["**.qrc", "**/qmldir"]
precedence = "aggregate"
Expand Down
17 changes: 0 additions & 17 deletions panels/dock/AppletDockItem.qml

This file was deleted.

65 changes: 65 additions & 0 deletions panels/dock/AppletItemButton.qml
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,9 @@ IconButton {
id: control
property bool isActive
property real radius: 4
property point lastSpotlightPoint: Qt.point(0, 0)
property bool autoClosePopup: false
readonly property bool drivesDockSpotlight: Window.window === Panel.rootObject

padding: 4
topPadding: undefined
Expand All @@ -26,6 +28,35 @@ IconButton {
icon.width: 16
icon.height: 16

function mapSpotlightPoint(localPoint) {
if (!drivesDockSpotlight) {
return Qt.point(0, 0)
}

const point = localPoint || Qt.point(width / 2, height / 2)
return mapToItem(null, point.x, point.y)
}

function updateSpotlight(localPoint) {
if (!drivesDockSpotlight) {
lastSpotlightPoint = Qt.point(0, 0)
Panel.reportMousePresence(false)
return
}

lastSpotlightPoint = mapSpotlightPoint(localPoint)
Panel.reportMousePresence(true, lastSpotlightPoint)
}

function clearSpotlight() {
if (!drivesDockSpotlight) {
Panel.reportMousePresence(false)
return
}

Panel.reportMousePresence(false, lastSpotlightPoint)
}

Connections {
target: control
enabled: autoClosePopup
Expand All @@ -42,4 +73,38 @@ IconButton {
Component.onCompleted: {
contentItem.smooth = false
}

HoverHandler {
id: spotlightHoverHandler
acceptedDevices: PointerDevice.Mouse | PointerDevice.TouchPad | PointerDevice.Stylus
enabled: control.enabled && control.visible && control.hoverEnabled

onPointChanged: {
if (hovered) {
spotlightClearTimer.stop()
control.updateSpotlight(spotlightHoverHandler.point.position)
}
}

onHoveredChanged: {
if (hovered) {
spotlightClearTimer.stop()
control.updateSpotlight()
return
}

spotlightClearTimer.restart()
}
}

Timer {
id: spotlightClearTimer
interval: 70
repeat: false
onTriggered: {
if (!spotlightHoverHandler.hovered) {
control.clearSpotlight()
}
}
}
}
37 changes: 32 additions & 5 deletions panels/dock/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# SPDX-FileCopyrightText: 2023 - 2026 UnionTech Software Technology Co., Ltd.
# SPDX-FileCopyrightText: 2023 UnionTech Software Technology Co., Ltd.
#
# SPDX-License-Identifier: GPL-3.0-or-later

Expand All @@ -7,7 +7,7 @@ set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,--no-undefined")
configure_file(environments.h.in environments.h @ONLY)

find_package(PkgConfig REQUIRED)
find_package(Qt${QT_VERSION_MAJOR} ${REQUIRED_QT_VERSION} COMPONENTS Core DBus Gui Qml WaylandCompositor Widgets WaylandClient)
find_package(Qt${QT_VERSION_MAJOR} ${REQUIRED_QT_VERSION} COMPONENTS Core DBus Gui Network Qml WaylandCompositor Widgets WaylandClient)
find_package(DdeTrayLoader REQUIRED)
find_package(TreelandProtocols REQUIRED)
pkg_check_modules(WaylandClient REQUIRED IMPORTED_TARGET wayland-client)
Expand All @@ -18,6 +18,8 @@ file(
dockabstractsettingsconfig.h
dockdbusproxy.cpp
dockdbusproxy.h
dockiteminfo.cpp
dockiteminfo.h
dockpanel.cpp
dockpanel.h
docksettings.cpp
Expand Down Expand Up @@ -59,6 +61,25 @@ add_library(dockpanel SHARED
${dock_panel_sources}
)

add_dependencies(dockpanel tray_loader_font_sync)

add_library(tray_loader_font_sync SHARED
tray_loader_font_sync.cpp
tray_loader_font_sync.qrc
)

set_target_properties(tray_loader_font_sync PROPERTIES
LIBRARY_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}"
)

target_link_libraries(tray_loader_font_sync PRIVATE
Qt${QT_VERSION_MAJOR}::Core
Qt${QT_VERSION_MAJOR}::Gui
Qt${QT_VERSION_MAJOR}::Widgets
)

install(TARGETS tray_loader_font_sync DESTINATION "${CMAKE_INSTALL_LIBDIR}/dde-shell")

qt_generate_wayland_protocol_client_sources(dockpanel
NO_INCLUDE_CORE_ONLY
FILES
Expand All @@ -72,7 +93,6 @@ target_link_libraries(dockpanel PRIVATE
Qt${QT_VERSION_MAJOR}::WaylandClientPrivate
Qt${QT_VERSION_MAJOR}::Widgets
dde-shell-frame
dde-shell-dock
)

if (BUILD_WITH_X11)
Expand All @@ -96,7 +116,6 @@ add_subdirectory(showdesktop)
add_subdirectory(taskmanager)
add_subdirectory(tray)
add_subdirectory(multitaskview)
add_subdirectory(frame)

#add_subdirectory(appruntimeitem)

Expand All @@ -106,6 +125,8 @@ file(
constants.h
# dockfilterproxymodel.cpp
# dockfilterproxymodel.h
fashionleftpluginprovider.h
fashionleftpluginprovider.cpp
pluginmanagerextension_p.h
pluginmanagerextension.cpp
pluginmanagerintegration_p.h
Expand Down Expand Up @@ -135,7 +156,6 @@ qt_add_qml_module(dock-plugin
QML_FILES DockCompositor.qml OverflowContainer.qml MenuHelper.qml DockPalette.qml
AppletItemButton.qml
AppletItemBackground.qml
AppletDockItem.qml
OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/plugins/org/deepin/ds/dock/
)

Expand All @@ -147,7 +167,10 @@ qt_generate_wayland_protocol_server_sources(dock-plugin

target_link_libraries(dock-plugin PUBLIC
Qt${QT_VERSION_MAJOR}::Core
Qt${QT_VERSION_MAJOR}::Concurrent
Qt${QT_VERSION_MAJOR}::DBus
Qt${QT_VERSION_MAJOR}::Gui
Qt${QT_VERSION_MAJOR}::Network
Qt${QT_VERSION_MAJOR}::Qml
Qt${QT_VERSION_MAJOR}::Widgets
Qt${QT_VERSION_MAJOR}::WaylandCompositor
Expand All @@ -171,3 +194,7 @@ dtk_add_config_meta_files(APPID org.deepin.ds.dock FILES dconfig/org.deepin.ds.d
dtk_add_config_meta_files(APPID org.deepin.ds.dock FILES dconfig/org.deepin.ds.dock.tray.json) # compat
dtk_add_config_meta_files(APPID org.deepin.dde.shell FILES dconfig/org.deepin.ds.dock.json)
dtk_add_config_meta_files(APPID org.deepin.dde.shell FILES dconfig/org.deepin.ds.dock.tray.json)
dtk_add_config_meta_files(APPID org.deepin.dde.dock FILES dconfig/org.deepin.dde.dock.json)
dtk_add_config_meta_files(APPID org.deepin.dde.dock FILES dconfig/org.deepin.dde.dock.plugin.quick-panel.json)
dtk_add_config_meta_files(APPID org.deepin.dde.tray-loader FILES dconfig/org.deepin.dde.dock.json)
dtk_add_config_meta_files(APPID org.deepin.dde.tray-loader FILES dconfig/org.deepin.dde.dock.plugin.quick-panel.json)
42 changes: 42 additions & 0 deletions panels/dock/OverflowContainer.qml
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,8 @@ Item {
property alias addDisplaced: listView.addDisplaced
property alias removeDisplaced: listView.removeDisplaced
property alias moveDisplaced: listView.moveDisplaced
property alias footer: listView.footer
property alias footerPositioning: listView.footerPositioning
ListView {
id: listView
anchors.fill: parent
Expand Down Expand Up @@ -54,6 +56,30 @@ Item {
return listView.indexAt(x, y)
}

function childTargetImplicitWidth(child) {
if (!child) {
return 0
}

if (child.targetImplicitWidth !== undefined) {
return child.targetImplicitWidth
}

return child.implicitWidth
}

function childTargetImplicitHeight(child) {
if (!child) {
return 0
}

if (child.targetImplicitHeight !== undefined) {
return child.targetImplicitHeight
}

return child.implicitHeight
}

implicitWidth: {
let width = 0
for (let child of listView.contentItem.visibleChildren) {
Expand All @@ -70,4 +96,20 @@ Item {
}
return Math.max(height, 1)
}

readonly property real targetImplicitWidth: {
let width = 0
for (let child of listView.contentItem.visibleChildren) {
width = calculateImplicitWidth(width, childTargetImplicitWidth(child))
}
return Math.max(width, 1)
}

readonly property real targetImplicitHeight: {
let height = 0
for (let child of listView.contentItem.visibleChildren) {
height = calculateImplicitHeight(height, childTargetImplicitHeight(child))
}
return Math.max(height, 1)
}
}
6 changes: 3 additions & 3 deletions panels/dock/appruntimeitem/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# SPDX-FileCopyrightText: 2024 - 2026 UnionTech Software Technology Co., Ltd.
# SPDX-FileCopyrightText: 2024 UnionTech Software Technology Co., Ltd.
#
# SPDX-License-Identifier: GPL-3.0-or-later

Expand All @@ -13,8 +13,8 @@ add_library(dock-appruntimeitem SHARED
xcbgetinfo.h
xcbgetinfo.cpp
qmlappruntime.qrc
${CMAKE_SOURCE_DIR}/frame/dock/dockiteminfo.cpp
${CMAKE_SOURCE_DIR}/frame/dock/dockiteminfo.h
${CMAKE_SOURCE_DIR}/panels/dock/dockiteminfo.cpp
${CMAKE_SOURCE_DIR}/panels/dock/dockiteminfo.h
${CMAKE_SOURCE_DIR}/panels/dock/constants.h
${CMAKE_SOURCE_DIR}/panels/dock/taskmanager/x11utils.h
${CMAKE_SOURCE_DIR}/panels/dock/taskmanager/x11utils.cpp
Expand Down
4 changes: 2 additions & 2 deletions panels/dock/appruntimeitem/appruntimeitem.h
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
// SPDX-FileCopyrightText: 2024 - 2026 UnionTech Software Technology Co., Ltd.
// SPDX-FileCopyrightText: 2024-2026 UnionTech Software Technology Co., Ltd.
//
// SPDX-License-Identifier: GPL-3.0-or-later

#pragma once
#include "applet.h"

Check warning on line 6 in panels/dock/appruntimeitem/appruntimeitem.h

View workflow job for this annotation

GitHub Actions / cppcheck

Include file: "applet.h" not found.
#include "dsglobal.h"

Check warning on line 7 in panels/dock/appruntimeitem/appruntimeitem.h

View workflow job for this annotation

GitHub Actions / cppcheck

Include file: "dsglobal.h" not found.
#include "dock/dockiteminfo.h"
#include "dockiteminfo.h"

Check warning on line 8 in panels/dock/appruntimeitem/appruntimeitem.h

View workflow job for this annotation

GitHub Actions / cppcheck

Include file: "dockiteminfo.h" not found.

#include <QGuiApplication>

Check warning on line 10 in panels/dock/appruntimeitem/appruntimeitem.h

View workflow job for this annotation

GitHub Actions / cppcheck

Include file: <QGuiApplication> not found. Please note: Cppcheck does not need standard library headers to get proper results.
#include <QQmlApplicationEngine>

Check warning on line 11 in panels/dock/appruntimeitem/appruntimeitem.h

View workflow job for this annotation

GitHub Actions / cppcheck

Include file: <QQmlApplicationEngine> not found. Please note: Cppcheck does not need standard library headers to get proper results.
#include <QThread>
#include <QObject>
#include <QDebug>
Expand Down
8 changes: 8 additions & 0 deletions panels/dock/constants.h
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,12 @@ enum ItemAlignment {
LeftAlignment = 1,
};

enum ViewMode {
CenteredMode = 0,
LeftAlignedMode = 1,
FashionMode = 2,
};

enum ColorTheme {
Light = Dtk::Gui::DGuiApplicationHelper::ColorType::LightType,
Dark = Dtk::Gui::DGuiApplicationHelper::ColorType::DarkType,
Expand Down Expand Up @@ -148,6 +154,7 @@ const QString DCCIconPath = CMAKE_INSTALL_PREFIX + QString("/share/dde-dock/icon
Q_ENUM_NS(SIZE)
Q_ENUM_NS(IndicatorStyle)
Q_ENUM_NS(ItemAlignment)
Q_ENUM_NS(ViewMode)
Q_ENUM_NS(ColorTheme)
Q_ENUM_NS(HideMode)
Q_ENUM_NS(Position)
Expand All @@ -162,6 +169,7 @@ Q_ENUM_NS(TrayPluginSizePolicy)
Q_DECLARE_METATYPE(dock::SIZE)
Q_DECLARE_METATYPE(dock::IndicatorStyle)
Q_DECLARE_METATYPE(dock::ItemAlignment)
Q_DECLARE_METATYPE(dock::ViewMode)
Q_DECLARE_METATYPE(dock::ColorTheme)
Q_DECLARE_METATYPE(dock::HideMode)
Q_DECLARE_METATYPE(dock::HideState)
Expand Down
Loading
Loading