mirror of
https://github.com/zoriya/noctalia-shell.git
synced 2026-08-15 18:43:59 +00:00
New windowing system
Large commit that totally refactor of the way we handle the bar and panels. Testing should focus on Panels, Bar, Keyboard Focus, IPC calls. Changes brief: - One NFullScreenWindow per screen which handle it's bar and dedicated panels. - Added shadows - Reintroduced dimming - New panels animations - Proper Z ordering - Panels on overlay laywer is not reimplemented, if we do it then the bar will be on the Overlay too - Panel dragging was not reimplemented, to be discussed before reimplementing - Still a WIP, need to work more on shadows and polishing + debugging.
This commit is contained in:
@@ -16,9 +16,6 @@ NPanel {
|
||||
|
||||
panelAnchorHorizontalCenter: true
|
||||
panelAnchorVerticalCenter: true
|
||||
panelKeyboardFocus: true
|
||||
|
||||
draggable: !PanelService.hasOpenedPopup
|
||||
|
||||
// Tabs enumeration, order is NOT relevant
|
||||
enum Tab {
|
||||
@@ -287,6 +284,39 @@ NPanel {
|
||||
}
|
||||
}
|
||||
|
||||
// Override keyboard handlers from NPanel
|
||||
function onTabPressed() {
|
||||
selectNextTab()
|
||||
}
|
||||
|
||||
function onShiftTabPressed() {
|
||||
selectPreviousTab()
|
||||
}
|
||||
|
||||
function onUpPressed() {
|
||||
scrollUp()
|
||||
}
|
||||
|
||||
function onDownPressed() {
|
||||
scrollDown()
|
||||
}
|
||||
|
||||
function onPageUpPressed() {
|
||||
scrollPageUp()
|
||||
}
|
||||
|
||||
function onPageDownPressed() {
|
||||
scrollPageDown()
|
||||
}
|
||||
|
||||
function onCtrlJPressed() {
|
||||
scrollDown()
|
||||
}
|
||||
|
||||
function onCtrlKPressed() {
|
||||
scrollUp()
|
||||
}
|
||||
|
||||
panelContent: Rectangle {
|
||||
color: Color.transparent
|
||||
|
||||
@@ -296,62 +326,6 @@ NPanel {
|
||||
anchors.margins: Style.marginL
|
||||
spacing: 0
|
||||
|
||||
// Keyboard shortcuts container
|
||||
Item {
|
||||
Layout.preferredWidth: 0
|
||||
Layout.preferredHeight: 0
|
||||
|
||||
// Scrolling via keyboard
|
||||
Shortcut {
|
||||
sequence: "Down"
|
||||
onActivated: root.scrollDown()
|
||||
enabled: root.opened
|
||||
}
|
||||
|
||||
Shortcut {
|
||||
sequence: "Up"
|
||||
onActivated: root.scrollUp()
|
||||
enabled: root.opened
|
||||
}
|
||||
|
||||
Shortcut {
|
||||
sequence: "Ctrl+J"
|
||||
onActivated: root.scrollDown()
|
||||
enabled: root.opened
|
||||
}
|
||||
|
||||
Shortcut {
|
||||
sequence: "Ctrl+K"
|
||||
onActivated: root.scrollUp()
|
||||
enabled: root.opened
|
||||
}
|
||||
|
||||
Shortcut {
|
||||
sequence: "PgDown"
|
||||
onActivated: root.scrollPageDown()
|
||||
enabled: root.opened
|
||||
}
|
||||
|
||||
Shortcut {
|
||||
sequence: "PgUp"
|
||||
onActivated: root.scrollPageUp()
|
||||
enabled: root.opened
|
||||
}
|
||||
|
||||
// Changing tab via keyboard
|
||||
Shortcut {
|
||||
sequence: "Tab"
|
||||
onActivated: root.selectNextTab()
|
||||
enabled: root.opened
|
||||
}
|
||||
|
||||
Shortcut {
|
||||
sequence: "Shift+Tab"
|
||||
onActivated: root.selectPreviousTab()
|
||||
enabled: root.opened
|
||||
}
|
||||
}
|
||||
|
||||
// Main content area
|
||||
RowLayout {
|
||||
Layout.fillWidth: true
|
||||
|
||||
@@ -25,7 +25,7 @@ ColumnLayout {
|
||||
|
||||
// Handler for drag start - disables panel background clicks
|
||||
function handleDragStart() {
|
||||
var panel = PanelService.getPanel("settingsPanel")
|
||||
var panel = PanelService.getPanel("settingsPanel", screen)
|
||||
if (panel && panel.disableBackgroundClick) {
|
||||
panel.disableBackgroundClick()
|
||||
}
|
||||
@@ -33,7 +33,7 @@ ColumnLayout {
|
||||
|
||||
// Handler for drag end - re-enables panel background clicks
|
||||
function handleDragEnd() {
|
||||
var panel = PanelService.getPanel("settingsPanel")
|
||||
var panel = PanelService.getPanel("settingsPanel", screen)
|
||||
if (panel && panel.enableBackgroundClick) {
|
||||
panel.enableBackgroundClick()
|
||||
}
|
||||
@@ -102,6 +102,14 @@ ColumnLayout {
|
||||
onToggled: checked => Settings.data.bar.floating = checked
|
||||
}
|
||||
|
||||
NToggle {
|
||||
Layout.fillWidth: true
|
||||
label: I18n.tr("settings.bar.appearance.outer-corners.label")
|
||||
description: I18n.tr("settings.bar.appearance.outer-corners.description")
|
||||
checked: Settings.data.bar.outerCorners
|
||||
onToggled: checked => Settings.data.bar.outerCorners = checked
|
||||
}
|
||||
|
||||
// Floating bar options - only show when floating is enabled
|
||||
ColumnLayout {
|
||||
visible: Settings.data.bar.floating
|
||||
|
||||
@@ -40,7 +40,7 @@ ColumnLayout {
|
||||
|
||||
// Handler for drag start - disables panel background clicks
|
||||
function handleDragStart() {
|
||||
var panel = PanelService.getPanel("settingsPanel")
|
||||
var panel = PanelService.getPanel("settingsPanel", screen)
|
||||
if (panel && panel.disableBackgroundClick) {
|
||||
panel.disableBackgroundClick()
|
||||
}
|
||||
@@ -48,7 +48,7 @@ ColumnLayout {
|
||||
|
||||
// Handler for drag end - re-enables panel background clicks
|
||||
function handleDragEnd() {
|
||||
var panel = PanelService.getPanel("settingsPanel")
|
||||
var panel = PanelService.getPanel("settingsPanel", screen)
|
||||
if (panel && panel.enableBackgroundClick) {
|
||||
panel.enableBackgroundClick()
|
||||
}
|
||||
|
||||
@@ -22,6 +22,9 @@ ColumnLayout {
|
||||
model: [{
|
||||
"key": "center",
|
||||
"name": I18n.tr("options.launcher.position.center")
|
||||
}, {
|
||||
"key": "top_center",
|
||||
"name": I18n.tr("options.launcher.position.top_center")
|
||||
}, {
|
||||
"key": "top_left",
|
||||
"name": I18n.tr("options.launcher.position.top_left")
|
||||
@@ -37,9 +40,6 @@ ColumnLayout {
|
||||
}, {
|
||||
"key": "bottom_center",
|
||||
"name": I18n.tr("options.launcher.position.bottom_center")
|
||||
}, {
|
||||
"key": "top_center",
|
||||
"name": I18n.tr("options.launcher.position.top_center")
|
||||
}]
|
||||
currentKey: Settings.data.appLauncher.position
|
||||
onSelected: function (key) {
|
||||
|
||||
@@ -26,6 +26,13 @@ ColumnLayout {
|
||||
onToggled: checked => Settings.data.ui.tooltipsEnabled = checked
|
||||
}
|
||||
|
||||
NToggle {
|
||||
label: I18n.tr("settings.user-interface.dim-desktop.label")
|
||||
description: I18n.tr("settings.user-interface.dim-desktop.description")
|
||||
checked: Settings.data.general.dimDesktop
|
||||
onToggled: checked => Settings.data.general.dimDesktop = checked
|
||||
}
|
||||
|
||||
NToggle {
|
||||
label: I18n.tr("settings.user-interface.panels-attached-to-bar.label")
|
||||
description: I18n.tr("settings.user-interface.panels-attached-to-bar.description")
|
||||
|
||||
Reference in New Issue
Block a user