From 2e4536ecdf6f40378d1a9cb8ee289239400af7ab Mon Sep 17 00:00:00 2001 From: Filippo Scognamiglio Date: Thu, 22 Jan 2026 00:16:31 +0100 Subject: [PATCH 1/5] Revert "Make actions between the different menus global." This reverts commit e70268bb733d23231d6efbf5b70ceefe0f212adc. --- app/qml/PreprocessedTerminal.qml | 29 +++++----- app/qml/TerminalContainer.qml | 7 --- app/qml/TerminalTabs.qml | 11 ++-- app/qml/TerminalWindow.qml | 88 ++++++++++++++++++++++++++----- app/qml/main.qml | 69 +----------------------- app/qml/menus/FullContextMenu.qml | 8 ++- app/qml/menus/OSXMenu.qml | 8 +-- app/qml/menus/WindowMenu.qml | 8 ++- 8 files changed, 112 insertions(+), 116 deletions(-) diff --git a/app/qml/PreprocessedTerminal.qml b/app/qml/PreprocessedTerminal.qml index 81eb705..bbf0e1d 100644 --- a/app/qml/PreprocessedTerminal.qml +++ b/app/qml/PreprocessedTerminal.qml @@ -20,15 +20,14 @@ import QtQuick 2.2 import QtQuick.Controls 2.0 -import QtQml import QMLTermWidget 2.0 import "menus" import "utils.js" as Utils -Item { - id: preprocessedTerminal +Item{ + id: terminalContainer signal sessionFinished() property size virtualResolution: Qt.size(kterminal.totalWidth, kterminal.totalHeight) @@ -48,14 +47,14 @@ Item { // Manage copy and paste Connections { target: copyAction - enabled: terminalContainer.hasFocus + onTriggered: { kterminal.copyClipboard() } } Connections { target: pasteAction - enabled: terminalContainer.hasFocus + onTriggered: { kterminal.pasteClipboard() } @@ -66,22 +65,22 @@ Item { target: appSettings onFontScalingChanged: { - preprocessedTerminal.updateSources() + terminalContainer.updateSources() } onFontWidthChanged: { - preprocessedTerminal.updateSources() + terminalContainer.updateSources() } } Connections { - target: preprocessedTerminal + target: terminalContainer onWidthChanged: { - preprocessedTerminal.updateSources() + terminalContainer.updateSources() } onHeightChanged: { - preprocessedTerminal.updateSources() + terminalContainer.updateSources() } } @@ -119,7 +118,7 @@ Item { id: ksession onFinished: { - preprocessedTerminal.sessionFinished() + terminalContainer.sessionFinished() } } @@ -149,8 +148,8 @@ Item { pixelSize: pixelSize }); - preprocessedTerminal.fontWidth = fontWidth; - preprocessedTerminal.screenScaling = screenScaling; + terminalContainer.fontWidth = fontWidth; + terminalContainer.screenScaling = screenScaling; scaleTexture = Math.max(1.0, Math.floor(screenScaling * appSettings.windowScaling)); } @@ -158,7 +157,7 @@ Item { target: appSettings onWindowScalingChanged: { - scaleTexture = Math.max(1.0, Math.floor(preprocessedTerminal.screenScaling * appSettings.windowScaling)); + scaleTexture = Math.max(1.0, Math.floor(terminalContainer.screenScaling * appSettings.windowScaling)); } } @@ -214,7 +213,7 @@ Item { cursorShape: kterminal.terminalUsesMouse ? Qt.ArrowCursor : Qt.IBeamCursor onWheel: function(wheel) { if (wheel.modifiers & Qt.ControlModifier) { - wheel.angleDelta.y > 0 ? zoomInAction.trigger() : zoomOutAction.trigger(); + wheel.angleDelta.y > 0 ? zoomIn.trigger() : zoomOut.trigger(); } else { var coord = correctDistortion(wheel.x, wheel.y); kterminal.simulateWheel(coord.x, coord.y, wheel.buttons, wheel.modifiers, wheel.angleDelta); diff --git a/app/qml/TerminalContainer.qml b/app/qml/TerminalContainer.qml index 9074893..657cdc7 100644 --- a/app/qml/TerminalContainer.qml +++ b/app/qml/TerminalContainer.qml @@ -28,13 +28,6 @@ ShaderTerminal { signal sessionFinished() property bool loadBloomEffect: appSettings.bloom > 0 || appSettings._frameShininess > 0 - property bool hasFocus - - onHasFocusChanged: { - if (hasFocus) { - activate() - } - } id: mainShader opacity: appSettings.windowOpacity * 0.3 + 0.7 diff --git a/app/qml/TerminalTabs.qml b/app/qml/TerminalTabs.qml index 5a917b6..ac60681 100644 --- a/app/qml/TerminalTabs.qml +++ b/app/qml/TerminalTabs.qml @@ -130,11 +130,12 @@ Item { Repeater { model: tabsModel TerminalContainer { - id: terminalContainer - hasFocus: terminalWindow.active && StackLayout.isCurrentItem - - onTerminalSizeChanged: updateTerminalSize() - + property bool shouldHaveFocus: terminalWindow.active && StackLayout.isCurrentItem + onShouldHaveFocusChanged: { + if (shouldHaveFocus) { + activate() + } + } onTitleChanged: tabsModel.setProperty(index, "title", normalizeTitle(title)) Layout.fillWidth: true Layout.fillHeight: true diff --git a/app/qml/TerminalWindow.qml b/app/qml/TerminalWindow.qml index 003a50e..be8d1de 100644 --- a/app/qml/TerminalWindow.qml +++ b/app/qml/TerminalWindow.qml @@ -20,7 +20,6 @@ import QtQuick 2.2 import QtQuick.Window 2.1 import QtQuick.Controls 2.3 -import QtQml import "menus" @@ -51,24 +50,87 @@ ApplicationWindow { sourceComponent: WindowMenu { } } - Connections { - target: newTabAction - enabled: terminalWindow.active - onTriggered: terminalTabs.addTab() - } - - Connections { - target: fullscreenAction - enabled: terminalWindow.active - onTriggered: terminalWindow.fullscreen = !terminalWindow.fullscreen - } - property real normalizedWindowScale: 1024 / ((0.5 * width + 0.5 * height)) color: "#00000000" title: terminalTabs.currentTitle + Action { + id: showMenubarAction + text: qsTr("Show Menubar") + enabled: !appSettings.isMacOS + shortcut: "Ctrl+Shift+M" + checkable: true + checked: appSettings.showMenubar + onTriggered: appSettings.showMenubar = !appSettings.showMenubar + } + Action { + id: fullscreenAction + text: qsTr("Fullscreen") + enabled: !appSettings.isMacOS + shortcut: "Alt+F11" + onTriggered: appSettings.fullscreen = !appSettings.fullscreen + checkable: true + checked: appSettings.fullscreen + } + Action { + id: newWindowAction + text: qsTr("New Window") + shortcut: "Ctrl+Shift+N" + onTriggered: appRoot.createWindow() + } + Action { + id: quitAction + text: qsTr("Quit") + shortcut: "Ctrl+Shift+Q" + onTriggered: appSettings.close() + } + Action { + id: showsettingsAction + text: qsTr("Settings") + onTriggered: { + settingsWindow.show() + settingsWindow.requestActivate() + settingsWindow.raise() + } + } + Action { + id: copyAction + text: qsTr("Copy") + shortcut: "Ctrl+Shift+C" + } + Action { + id: pasteAction + text: qsTr("Paste") + shortcut: "Ctrl+Shift+V" + } + Action { + id: zoomIn + text: qsTr("Zoom In") + shortcut: "Ctrl++" + onTriggered: appSettings.incrementScaling() + } + Action { + id: zoomOut + text: qsTr("Zoom Out") + shortcut: "Ctrl+-" + onTriggered: appSettings.decrementScaling() + } + Action { + id: showAboutAction + text: qsTr("About") + onTriggered: { + aboutDialog.show() + aboutDialog.requestActivate() + aboutDialog.raise() + } + } + Action { + id: newTabAction + text: qsTr("New Tab") + onTriggered: terminalTabs.addTab() + } TerminalTabs { id: terminalTabs width: parent.width diff --git a/app/qml/main.qml b/app/qml/main.qml index dc4f426..c82f8f1 100644 --- a/app/qml/main.qml +++ b/app/qml/main.qml @@ -18,7 +18,6 @@ * along with this program. If not, see . *******************************************************************************/ import QtQuick 2.2 -import QtQuick.Controls 2.3 import "menus" @@ -52,78 +51,12 @@ QtObject { sourceComponent: OSXMenu { } } - property Action fullscreenAction: Action { - text: qsTr("Fullscreen") - enabled: !appSettings.isMacOS - shortcut: "Alt+F11" - } - - property bool initialFullscreenRequested: Qt.application.arguments.indexOf("--fullscreen") !== -1 - - property Action newWindowAction: Action { - text: qsTr("New Window") - shortcut: "Ctrl+Shift+N" - onTriggered: appRoot.createWindow() - } - - property Action quitAction: Action { - text: qsTr("Quit") - shortcut: "Ctrl+Shift+Q" - onTriggered: appSettings.close() - } - - property Action showsettingsAction: Action { - text: qsTr("Settings") - onTriggered: { - settingsWindow.show() - settingsWindow.requestActivate() - settingsWindow.raise() - } - } - - property Action copyAction: Action { - text: qsTr("Copy") - shortcut: "Ctrl+Shift+C" - } - - property Action pasteAction: Action { - text: qsTr("Paste") - shortcut: "Ctrl+Shift+V" - } - - property Action zoomInAction: Action { - text: qsTr("Zoom In") - shortcut: "Ctrl++" - onTriggered: appSettings.incrementScaling() - } - - property Action zoomOutAction: Action { - text: qsTr("Zoom Out") - shortcut: "Ctrl+-" - onTriggered: appSettings.decrementScaling() - } - - property Action showAboutAction: Action { - text: qsTr("About") - onTriggered: { - aboutDialog.show() - aboutDialog.requestActivate() - aboutDialog.raise() - } - } - - property Action newTabAction: Action { - text: qsTr("New Tab") - } - function createWindow() { - var useFullscreen = initialFullscreenRequested - var window = windowComponent.createObject(null, { fullscreen: useFullscreen }) + var window = windowComponent.createObject(null) if (!window) return windowsModel.append({ window: window }) - initialFullscreenRequested = false window.show() window.requestActivate() } diff --git a/app/qml/menus/FullContextMenu.qml b/app/qml/menus/FullContextMenu.qml index 2d7c70f..3cb3aa8 100644 --- a/app/qml/menus/FullContextMenu.qml +++ b/app/qml/menus/FullContextMenu.qml @@ -65,10 +65,14 @@ Menu { visible: fullscreenAction.enabled } MenuItem { - action: zoomInAction + action: showMenubarAction + visible: showMenubarAction.enabled } MenuItem { - action: zoomOutAction + action: zoomIn + } + MenuItem { + action: zoomOut } } Menu { diff --git a/app/qml/menus/OSXMenu.qml b/app/qml/menus/OSXMenu.qml index 7f0926a..0cd2b05 100644 --- a/app/qml/menus/OSXMenu.qml +++ b/app/qml/menus/OSXMenu.qml @@ -64,14 +64,14 @@ MenuBar { Menu { title: qsTr("View") MenuItem { - text: zoomInAction.text + text: zoomIn.text shortcut: "Meta++" - onTriggered: zoomInAction.trigger() + onTriggered: zoomIn.trigger() } MenuItem { - text: zoomOutAction.text + text: zoomOut.text shortcut: "Meta+-" - onTriggered: zoomOutAction.trigger() + onTriggered: zoomOut.trigger() } } Menu { diff --git a/app/qml/menus/WindowMenu.qml b/app/qml/menus/WindowMenu.qml index 6d3f1f7..e3b9377 100644 --- a/app/qml/menus/WindowMenu.qml +++ b/app/qml/menus/WindowMenu.qml @@ -57,10 +57,14 @@ MenuBar { visible: fullscreenAction.enabled } MenuItem { - action: zoomInAction + action: showMenubarAction + visible: showMenubarAction.enabled } MenuItem { - action: zoomOutAction + action: zoomIn + } + MenuItem { + action: zoomOut } } Menu { From 29dc67d96b0f3a2af9456a08bceb7281ea6e3871 Mon Sep 17 00:00:00 2001 From: Filippo Scognamiglio Date: Thu, 22 Jan 2026 00:35:30 +0100 Subject: [PATCH 2/5] Fix menu behaviour on Linux. --- app/qml/TerminalWindow.qml | 15 +++------------ app/qml/main.qml | 5 ----- app/qml/menus/FullContextMenu.qml | 4 ---- app/qml/menus/WindowMenu.qml | 4 ---- qmltermwidget | 2 +- 5 files changed, 4 insertions(+), 26 deletions(-) diff --git a/app/qml/TerminalWindow.qml b/app/qml/TerminalWindow.qml index be8d1de..9a75a77 100644 --- a/app/qml/TerminalWindow.qml +++ b/app/qml/TerminalWindow.qml @@ -46,7 +46,7 @@ ApplicationWindow { Loader { id: qtquickMenuLoader - active: !appSettings.isMacOS && (appSettings.showMenubar && !fullscreen) + active: appSettings.isMacOS || (appSettings.showMenubar && !fullscreen) sourceComponent: WindowMenu { } } @@ -56,23 +56,14 @@ ApplicationWindow { title: terminalTabs.currentTitle - Action { - id: showMenubarAction - text: qsTr("Show Menubar") - enabled: !appSettings.isMacOS - shortcut: "Ctrl+Shift+M" - checkable: true - checked: appSettings.showMenubar - onTriggered: appSettings.showMenubar = !appSettings.showMenubar - } Action { id: fullscreenAction text: qsTr("Fullscreen") enabled: !appSettings.isMacOS shortcut: "Alt+F11" - onTriggered: appSettings.fullscreen = !appSettings.fullscreen + onTriggered: fullscreen = !fullscreen checkable: true - checked: appSettings.fullscreen + checked: fullscreen } Action { id: newWindowAction diff --git a/app/qml/main.qml b/app/qml/main.qml index c82f8f1..9b3b4d0 100644 --- a/app/qml/main.qml +++ b/app/qml/main.qml @@ -46,11 +46,6 @@ QtObject { property ListModel windowsModel: ListModel { } - property Loader globalMenuLoader: Loader { - active: appSettings.isMacOS - sourceComponent: OSXMenu { } - } - function createWindow() { var window = windowComponent.createObject(null) if (!window) diff --git a/app/qml/menus/FullContextMenu.qml b/app/qml/menus/FullContextMenu.qml index 3cb3aa8..0d2ad9f 100644 --- a/app/qml/menus/FullContextMenu.qml +++ b/app/qml/menus/FullContextMenu.qml @@ -64,10 +64,6 @@ Menu { action: fullscreenAction visible: fullscreenAction.enabled } - MenuItem { - action: showMenubarAction - visible: showMenubarAction.enabled - } MenuItem { action: zoomIn } diff --git a/app/qml/menus/WindowMenu.qml b/app/qml/menus/WindowMenu.qml index e3b9377..df2e94b 100644 --- a/app/qml/menus/WindowMenu.qml +++ b/app/qml/menus/WindowMenu.qml @@ -56,10 +56,6 @@ MenuBar { action: fullscreenAction visible: fullscreenAction.enabled } - MenuItem { - action: showMenubarAction - visible: showMenubarAction.enabled - } MenuItem { action: zoomIn } diff --git a/qmltermwidget b/qmltermwidget index 7dad24f..d86ebbc 160000 --- a/qmltermwidget +++ b/qmltermwidget @@ -1 +1 @@ -Subproject commit 7dad24fefb783508c5d0df52f6e7beac27d28173 +Subproject commit d86ebbc396ece6ed46b30eaa1ebead138ab7f2a4 From b77a1b5962f6e53fbde1daaee8833b2f3657855e Mon Sep 17 00:00:00 2001 From: Filippo Scognamiglio Date: Thu, 22 Jan 2026 01:20:06 +0100 Subject: [PATCH 3/5] Fix shortcuts on macOS. --- app/qml/TerminalTabs.qml | 1 + app/qml/TerminalWindow.qml | 25 ++++----- app/qml/menus/OSXMenu.qml | 99 ------------------------------------ app/qml/menus/WindowMenu.qml | 44 ++++++---------- app/qml/resources.qrc | 1 - 5 files changed, 26 insertions(+), 144 deletions(-) delete mode 100644 app/qml/menus/OSXMenu.qml diff --git a/app/qml/TerminalTabs.qml b/app/qml/TerminalTabs.qml index ac60681..d1d5bd0 100644 --- a/app/qml/TerminalTabs.qml +++ b/app/qml/TerminalTabs.qml @@ -140,6 +140,7 @@ Item { Layout.fillWidth: true Layout.fillHeight: true onSessionFinished: tabsRoot.closeTab(index) + onTerminalSizeChanged: updateTerminalSize() function updateTerminalSize() { // Every tab will have the same size so we can simply take the first one. diff --git a/app/qml/TerminalWindow.qml b/app/qml/TerminalWindow.qml index 9a75a77..f4bb93a 100644 --- a/app/qml/TerminalWindow.qml +++ b/app/qml/TerminalWindow.qml @@ -42,13 +42,7 @@ ApplicationWindow { property bool fullscreen: false onFullscreenChanged: visibility = (fullscreen ? Window.FullScreen : Window.Windowed) - menuBar: qtquickMenuLoader.item - - Loader { - id: qtquickMenuLoader - active: appSettings.isMacOS || (appSettings.showMenubar && !fullscreen) - sourceComponent: WindowMenu { } - } + menuBar: WindowMenu { } property real normalizedWindowScale: 1024 / ((0.5 * width + 0.5 * height)) @@ -60,7 +54,7 @@ ApplicationWindow { id: fullscreenAction text: qsTr("Fullscreen") enabled: !appSettings.isMacOS - shortcut: "Alt+F11" + shortcut: StandardKey.FullScreen onTriggered: fullscreen = !fullscreen checkable: true checked: fullscreen @@ -68,14 +62,14 @@ ApplicationWindow { Action { id: newWindowAction text: qsTr("New Window") - shortcut: "Ctrl+Shift+N" + shortcut: appSettings.isMacOS ? "Meta+N" : "Ctrl+Shift+N" onTriggered: appRoot.createWindow() } Action { id: quitAction text: qsTr("Quit") - shortcut: "Ctrl+Shift+Q" - onTriggered: appSettings.close() + shortcut: appSettings.isMacOS ? StandardKey.Close : "Ctrl+Shift+Q" + onTriggered: terminalWindow.close() } Action { id: showsettingsAction @@ -89,23 +83,23 @@ ApplicationWindow { Action { id: copyAction text: qsTr("Copy") - shortcut: "Ctrl+Shift+C" + shortcut: appSettings.isMacOS ? StandardKey.Copy : "Ctrl+Shift+C" } Action { id: pasteAction text: qsTr("Paste") - shortcut: "Ctrl+Shift+V" + shortcut: appSettings.isMacOS ? StandardKey.Paste : "Ctrl+Shift+V" } Action { id: zoomIn text: qsTr("Zoom In") - shortcut: "Ctrl++" + shortcut: StandardKey.ZoomIn onTriggered: appSettings.incrementScaling() } Action { id: zoomOut text: qsTr("Zoom Out") - shortcut: "Ctrl+-" + shortcut: StandardKey.ZoomOut onTriggered: appSettings.decrementScaling() } Action { @@ -120,6 +114,7 @@ ApplicationWindow { Action { id: newTabAction text: qsTr("New Tab") + shortcut: appSettings.isMacOS ? StandardKey.AddTab : "Ctrl+Shift+T" onTriggered: terminalTabs.addTab() } TerminalTabs { diff --git a/app/qml/menus/OSXMenu.qml b/app/qml/menus/OSXMenu.qml deleted file mode 100644 index 0cd2b05..0000000 --- a/app/qml/menus/OSXMenu.qml +++ /dev/null @@ -1,99 +0,0 @@ -/******************************************************************************* -* Copyright (c) 2013-2021 "Filippo Scognamiglio" -* https://github.com/Swordfish90/cool-retro-term -* -* This file is part of cool-retro-term. -* -* cool-retro-term is free software: you can redistribute it and/or modify -* it under the terms of the GNU General Public License as published by -* the Free Software Foundation, either version 3 of the License, or -* (at your option) any later version. -* -* This program is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -* GNU General Public License for more details. -* -* You should have received a copy of the GNU General Public License -* along with this program. If not, see . -*******************************************************************************/ - -import QtQuick 2.3 -import Qt.labs.platform 1.1 - -MenuBar { - id: defaultMenuBar - - Menu { - title: qsTr("File") - MenuItem { - text: newWindowAction.text - shortcut: newWindowAction.shortcut - onTriggered: newWindowAction.trigger() - } - MenuItem { - text: newTabAction.text - shortcut: newTabAction.shortcut - onTriggered: newTabAction.trigger() - } - MenuSeparator {} - MenuItem { - text: quitAction.text - onTriggered: quitAction.trigger() - } - } - Menu { - title: qsTr("Edit") - MenuItem { - text: copyAction.text - shortcut: "Meta+C" - onTriggered: copyAction.trigger() - } - MenuItem { - text: pasteAction.text - shortcut: "Meta+V" - onTriggered: pasteAction.trigger() - } - MenuSeparator {} - MenuItem { - text: showsettingsAction.text - shortcut: showsettingsAction.shortcut - onTriggered: showsettingsAction.trigger() - } - } - Menu { - title: qsTr("View") - MenuItem { - text: zoomIn.text - shortcut: "Meta++" - onTriggered: zoomIn.trigger() - } - MenuItem { - text: zoomOut.text - shortcut: "Meta+-" - onTriggered: zoomOut.trigger() - } - } - Menu { - id: profilesMenu - title: qsTr("Profiles") - Instantiator { - model: appSettings.profilesList - delegate: MenuItem { - text: model.text - onTriggered: { - appSettings.loadProfileString(obj_string) - } - } - onObjectAdded: function(index, object) { profilesMenu.insertItem(index, object) } - onObjectRemoved: function(object) { profilesMenu.removeItem(object) } - } - } - Menu { - title: qsTr("Help") - MenuItem { - text: showAboutAction.text - onTriggered: showAboutAction.trigger() - } - } -} diff --git a/app/qml/menus/WindowMenu.qml b/app/qml/menus/WindowMenu.qml index df2e94b..568fda1 100644 --- a/app/qml/menus/WindowMenu.qml +++ b/app/qml/menus/WindowMenu.qml @@ -22,46 +22,32 @@ import QtQuick.Controls 2.3 MenuBar { id: defaultMenuBar - visible: appSettings.showMenubar + visible: appSettings.isMacOS || appSettings.showMenubar Menu { title: qsTr("File") - MenuItem { - action: newWindowAction - } - MenuItem { - action: newTabAction - } - MenuSeparator {} - MenuItem { - action: quitAction - } + MenuItem { action: newWindowAction } + MenuItem { action: newTabAction } + MenuSeparator { } + MenuItem { action: quitAction } } Menu { title: qsTr("Edit") - MenuItem { - action: copyAction - } - MenuItem { - action: pasteAction - } + MenuItem { action: copyAction } + MenuItem { action: pasteAction } MenuSeparator {} - MenuItem { - action: showsettingsAction - } + MenuItem { action: showsettingsAction } } Menu { title: qsTr("View") - MenuItem { - action: fullscreenAction - visible: fullscreenAction.enabled - } - MenuItem { - action: zoomIn - } - MenuItem { - action: zoomOut + Instantiator { + model: !appSettings.isMacOS ? 1 : 0 + delegate: MenuItem { action: fullscreenAction } + onObjectAdded: (index, object) => menu.insertItem(index, object) + onObjectRemoved: (index, object) => menu.removeItem(object) } + MenuItem { action: zoomIn } + MenuItem { action: zoomOut } } Menu { id: profilesMenu diff --git a/app/qml/resources.qrc b/app/qml/resources.qrc index 961600e..8afc83a 100644 --- a/app/qml/resources.qrc +++ b/app/qml/resources.qrc @@ -48,7 +48,6 @@ menus/WindowMenu.qml menus/FullContextMenu.qml menus/ShortContextMenu.qml - menus/OSXMenu.qml ../shaders/terminal_dynamic.vert.qsb ../shaders/terminal_static.vert.qsb ../shaders/terminal_frame.vert.qsb From 25695c0a9fb95de6241b22c89fafe863b5219265 Mon Sep 17 00:00:00 2001 From: Filippo Scognamiglio Date: Thu, 22 Jan 2026 02:07:17 +0100 Subject: [PATCH 4/5] Fix warning in terminal destruction. --- app/qml/PreprocessedTerminal.qml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/app/qml/PreprocessedTerminal.qml b/app/qml/PreprocessedTerminal.qml index bbf0e1d..a87c3ce 100644 --- a/app/qml/PreprocessedTerminal.qml +++ b/app/qml/PreprocessedTerminal.qml @@ -186,6 +186,9 @@ Item{ appSettings.fontManager.refresh() startSession(); } + Component.onDestruction: { + appSettings.fontManager.terminalFontChanged.disconnect(handleFontChanged); + } } Component { From 9f05d729a75450de87a49d62bee40ef653cdf8e4 Mon Sep 17 00:00:00 2001 From: Filippo Scognamiglio Date: Thu, 22 Jan 2026 22:58:15 +0100 Subject: [PATCH 5/5] Fix fullscreen menu not added on linux. --- app/qml/menus/WindowMenu.qml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/app/qml/menus/WindowMenu.qml b/app/qml/menus/WindowMenu.qml index 568fda1..5dd5c49 100644 --- a/app/qml/menus/WindowMenu.qml +++ b/app/qml/menus/WindowMenu.qml @@ -39,12 +39,13 @@ MenuBar { MenuItem { action: showsettingsAction } } Menu { + id: viewMenu title: qsTr("View") Instantiator { model: !appSettings.isMacOS ? 1 : 0 delegate: MenuItem { action: fullscreenAction } - onObjectAdded: (index, object) => menu.insertItem(index, object) - onObjectRemoved: (index, object) => menu.removeItem(object) + onObjectAdded: (index, object) => viewMenu.insertItem(index, object) + onObjectRemoved: (index, object) => viewMenu.removeItem(object) } MenuItem { action: zoomIn } MenuItem { action: zoomOut }