From d2d4c21cdef0aa23cbc882065cef83bb9abdc5f9 Mon Sep 17 00:00:00 2001
From: xiphon <xiphon@protonmail.com>
Date: Wed, 19 Dec 2018 04:54:43 +0000
Subject: [PATCH] SettingsLog: fix TextArea layout, border, scrollbar

---
 components/DaemonConsole.qml   |  33 +++------
 pages/settings/SettingsLog.qml | 131 ++++++++++++++++-----------------
 2 files changed, 76 insertions(+), 88 deletions(-)

diff --git a/components/DaemonConsole.qml b/components/DaemonConsole.qml
index 3efd024b..bed7dc39 100644
--- a/components/DaemonConsole.qml
+++ b/components/DaemonConsole.qml
@@ -87,10 +87,17 @@ Window {
         anchors.margins: 35 * scaleRatio
         spacing: 20 * scaleRatio
 
-        RowLayout {
-            id: content
-            Layout.fillWidth: true
+        Item {
             Layout.fillHeight: true
+            Layout.fillWidth: true
+
+            Rectangle {
+                anchors.fill: parent
+                color: "transparent"
+                border.color: MoneroComponents.Style.inputBorderColorActive
+                border.width: 1
+                radius: 4
+            }
 
             Flickable {
                 id: flickable
@@ -101,20 +108,12 @@ Window {
                     textFormat: TextEdit.RichText
                     selectByMouse: true
                     selectByKeyboard: true
-                    anchors.fill: parent
-                    font.family: "Ariel"
+                    font.family: MoneroComponents.Style.defaultFontColor
                     font.pixelSize: 14 * scaleRatio
                     color: MoneroComponents.Style.defaultFontColor
                     selectionColor: MoneroComponents.Style.dimmedFontColor
                     wrapMode: TextEdit.Wrap
                     readOnly: true
-                    background: Rectangle {
-                        color: "transparent"
-                        anchors.fill: parent
-                        border.color: Qt.rgba(255, 255, 255, 0.25);
-                        border.width: 1
-                        radius: 4
-                    }
                     function logCommand(msg){
                         msg = log_color(msg, "lime");
                         textArea.append(msg);
@@ -156,15 +155,7 @@ Window {
                     }
                 }
 
-                ScrollBar.vertical: ScrollBar {
-                    // TODO: scrollbar always visible is buggy.
-                    // QT 5.9 introduces `policy: ScrollBar.AlwaysOn`
-                    contentItem.opacity: 1
-                    anchors.top: flickable.top
-                    anchors.left: flickable.right
-                    anchors.leftMargin: 10 * scaleRatio
-                    anchors.bottom: flickable.bottom
-                }
+                ScrollBar.vertical: ScrollBar {}
             }
         }
 
diff --git a/pages/settings/SettingsLog.qml b/pages/settings/SettingsLog.qml
index 286cbbef..23234862 100644
--- a/pages/settings/SettingsLog.qml
+++ b/pages/settings/SettingsLog.qml
@@ -138,79 +138,76 @@ Rectangle {
             text: qsTr("Daemon log") + translationManager.emptyString
         }
 
-        Flickable {
-            id: flickable
+        Item {
+            Layout.fillHeight: true
             Layout.fillWidth: true
             Layout.preferredHeight: 240 * scaleRatio
 
-            TextArea.flickable: TextArea {
-                id : consoleArea
+            Rectangle {
                 anchors.fill: parent
-                color: MoneroComponents.Style.defaultFontColor
-                selectionColor: MoneroComponents.Style.dimmedFontColor
-                textFormat: TextEdit.RichText
-                selectByMouse: true
-                selectByKeyboard: true
-                font.family: "Ariel"
-                font.pixelSize: 14 * scaleRatio
-                wrapMode: TextEdit.Wrap
-                readOnly: true
-                background: Rectangle {
-                    color: "transparent"
-                    anchors.fill: parent
-                    border.color: Qt.rgba(255, 255, 255, 0.25);
-                    border.width: 1
-                    radius: 4
-                }
-                function logCommand(msg){
-                    msg = log_color(msg, "lime");
-                    consoleArea.append(msg);
-                }
-                function logMessage(msg){
-                    msg = msg.trim();
-                    var color = "white";
-                    if(msg.toLowerCase().indexOf('error') >= 0){
-                        color = "red";
-                    } else if (msg.toLowerCase().indexOf('warning') >= 0){
-                        color = "yellow";
-                    }
-
-                    // format multi-lines
-                    if(msg.split("\n").length >= 2){
-                        msg = msg.split("\n").join('<br>');
-                    }
-
-                    log(msg, color);
-                }
-                function log_color(msg, color){
-                    return "<span style='color: " + color +  ";' >" + msg + "</span>";
-                }
-                function log(msg, color){
-                    var timestamp = Utils.formatDate(new Date(), {
-                        weekday: undefined,
-                        month: "numeric",
-                        timeZoneName: undefined
-                    });
-
-                    var _timestamp = log_color("[" + timestamp + "]", "#FFFFFF");
-                    var _msg = log_color(msg, color);
-                    consoleArea.append(_timestamp + " " + _msg);
-
-                    // scroll to bottom
-                    //if(flickable.contentHeight > content.height){
-                    //    flickable.contentY = flickable.contentHeight;
-                    //}
-                }
+                color: "transparent"
+                border.color: MoneroComponents.Style.inputBorderColorActive
+                border.width: 1
+                radius: 4
             }
 
-            ScrollBar.vertical: ScrollBar {
-                // TODO: scrollbar always visible is buggy.
-                // QT 5.9 introduces `policy: ScrollBar.AlwaysOn`
-                contentItem.opacity: 1
-                anchors.top: flickable.top
-                anchors.left: flickable.right
-                anchors.leftMargin: 10 * scaleRatio
-                anchors.bottom: flickable.bottom
+            Flickable {
+                id: flickable
+                anchors.fill: parent
+
+                TextArea.flickable: TextArea {
+                    id : consoleArea
+                    color: MoneroComponents.Style.defaultFontColor
+                    selectionColor: MoneroComponents.Style.dimmedFontColor
+                    textFormat: TextEdit.RichText
+                    selectByMouse: true
+                    selectByKeyboard: true
+                    font.family: MoneroComponents.Style.defaultFontColor
+                    font.pixelSize: 14 * scaleRatio
+                    wrapMode: TextEdit.Wrap
+                    readOnly: true
+                    function logCommand(msg){
+                        msg = log_color(msg, "lime");
+                        consoleArea.append(msg);
+                    }
+                    function logMessage(msg){
+                        msg = msg.trim();
+                        var color = "white";
+                        if(msg.toLowerCase().indexOf('error') >= 0){
+                            color = "red";
+                        } else if (msg.toLowerCase().indexOf('warning') >= 0){
+                            color = "yellow";
+                        }
+
+                        // format multi-lines
+                        if(msg.split("\n").length >= 2){
+                            msg = msg.split("\n").join('<br>');
+                        }
+
+                        log(msg, color);
+                    }
+                    function log_color(msg, color){
+                        return "<span style='color: " + color +  ";' >" + msg + "</span>";
+                    }
+                    function log(msg, color){
+                        var timestamp = Utils.formatDate(new Date(), {
+                            weekday: undefined,
+                            month: "numeric",
+                            timeZoneName: undefined
+                        });
+
+                        var _timestamp = log_color("[" + timestamp + "]", "#FFFFFF");
+                        var _msg = log_color(msg, color);
+                        consoleArea.append(_timestamp + " " + _msg);
+
+                        // scroll to bottom
+                        //if(flickable.contentHeight > content.height){
+                        //    flickable.contentY = flickable.contentHeight;
+                        //}
+                    }
+                }
+
+                ScrollBar.vertical: ScrollBar {}
             }
         }