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 {