Skip to content
This repository has been archived by the owner on Jan 22, 2022. It is now read-only.

Commit

Permalink
- remember the current zoomFactor in the zoomController
Browse files Browse the repository at this point in the history
- set it as zoomFactor of the webview when loading is finished
- zoom menu items only available while the page is not loading, current zoom text not shown while page is loading
  • Loading branch information
balcy committed Dec 20, 2018
1 parent 528e2b5 commit cc8e0da
Show file tree
Hide file tree
Showing 2 changed files with 25 additions and 10 deletions.
33 changes: 24 additions & 9 deletions src/app/WebViewImpl.qml
Original file line number Diff line number Diff line change
Expand Up @@ -96,27 +96,35 @@ WebView {
readonly property real defaultZoomFactor: browser.settings ? browser.settings.zoomFactor : 1.0
readonly property real minZoomFactor: 0.25
readonly property real maxZoomFactor: 5.0
property real currentZoomFactor: defaultZoomFactor
property bool viewSpecificZoom: false

function save() {
viewSpecificZoom = false
var confirmDialog = PopupUtils.open(Qt.resolvedUrl("ConfirmDialog.qml"));
confirmDialog.title = i18n.tr("Default Zoom")
confirmDialog.message = i18n.tr("Set current zoom as default zoom for morph-browser ? (You can change it in the settings menu)")
confirmDialog.accept.connect(function() {browser.settings.zoomFactor = webview.zoomFactor});
confirmDialog.accept.connect(function() {browser.settings.zoomFactor = currentZoomFactor});
}

function refresh() {
webview.zoomFactor = currentZoomFactor
}

function reset() {
viewSpecificZoom = false
webview.zoomFactor = defaultZoomFactor
currentZoomFactor = defaultZoomFactor
refresh()
}
function zoomIn() {
viewSpecificZoom = true
webview.zoomFactor = Math.min(maxZoomFactor, webview.zoomFactor + ((Math.round(webview.zoomFactor * 100) % 10 === 0) ? 0.1 : 0.05))
currentZoomFactor = Math.min(maxZoomFactor, currentZoomFactor + ((Math.round(currentZoomFactor * 100) % 10 === 0) ? 0.1 : 0.05))
refresh()
}
function zoomOut() {
viewSpecificZoom = true
webview.zoomFactor = Math.max(minZoomFactor, webview.zoomFactor - ((Math.round(webview.zoomFactor * 100) % 10 === 0) ? 0.1 : 0.05))
currentZoomFactor = Math.max(minZoomFactor, currentZoomFactor - ((Math.round(currentZoomFactor * 100) % 10 === 0) ? 0.1 : 0.05))
refresh()
}
}

Expand Down Expand Up @@ -727,29 +735,29 @@ WebView {
name: "zoomOut"
text: i18n.tr("Zoom Out")
iconName: "zoom-out"
enabled: Math.abs(webview.zoomFactor - zoomController.minZoomFactor) > 0.01
enabled: ! webview.loading && Math.abs(zoomController.currentZoomFactor - zoomController.minZoomFactor) > 0.01
onTriggered: zoomController.zoomOut()
}
Action {
name: "zoomOriginal"
text: i18n.tr("Reset") + " (%1 %)".arg(zoomController.defaultZoomFactor * 100)
iconName: "reset"
enabled: Math.abs(webview.zoomFactor - zoomController.defaultZoomFactor) > 0.01
enabled: ! webview.loading && Math.abs(zoomController.currentZoomFactor - zoomController.defaultZoomFactor) > 0.01
onTriggered: zoomController.reset()
}
Action {
name: "zoomIn"
text: i18n.tr("Zoom In")
iconName: "zoom-in"
enabled: Math.abs(webview.zoomFactor - zoomController.maxZoomFactor) > 0.01
enabled: ! webview.loading && Math.abs(zoomController.currentZoomFactor - zoomController.maxZoomFactor) > 0.01
onTriggered: zoomController.zoomIn()
}
Action {
name: "zoomSave"
text: i18n.tr("Save")
iconName: "save"
visible: ! isWebApp
enabled: Math.abs(webview.zoomFactor - zoomController.defaultZoomFactor) > 0.01
enabled: Math.abs(zoomController.currentZoomFactor - zoomController.defaultZoomFactor) > 0.01
onTriggered: zoomController.save()
}
Action {
Expand Down Expand Up @@ -786,9 +794,10 @@ WebView {
id: currentZoomText
anchors.top: zoomActionsRow.bottom
anchors.right: zoomActionsRow.right
text: i18n.tr("Current Zoom") + ": " + Math.round(webview.zoomFactor * 100) + "%"
text: i18n.tr("Current Zoom") + ": " + Math.round(zoomController.currentZoomFactor * 100) + "%"
width: zoomActionsRow.width
horizontalAlignment: Text.AlignHCenter
visible: ! webview.loading
}
}

Expand All @@ -801,6 +810,12 @@ WebView {
request.accept();
}

onLoadingChanged: {
if (loadRequest.status === WebEngineLoadRequest.LoadSucceededStatus) {
zoomController.refresh()
}
}

// https://github.com/ubports/morph-browser/issues/92
// this is not perfect, because if the user types very quickly after entering the field, the first typed letter can be missing
// but without it removing any text (especially for textareas / multiple lines) would remove already typed text and replace it
Expand Down
2 changes: 1 addition & 1 deletion src/app/webbrowser/Browser.qml
Original file line number Diff line number Diff line change
Expand Up @@ -1537,7 +1537,7 @@ BrowserView {
Shortcut {
sequence: "Ctrl+0"
enabled: currentWebview
onActivated: currentWebview.zoomFactor = settings.zoomFactor
onActivated: currentWebview.zoomController.reset()
}

Loader {
Expand Down

0 comments on commit cc8e0da

Please sign in to comment.