URI: 
       tMerge pull request #6300 from SomberNight/202006_qt_statusbarbutton - electrum - Electrum Bitcoin wallet
  HTML git clone https://git.parazyd.org/electrum
   DIR Log
   DIR Files
   DIR Refs
   DIR Submodules
       ---
   DIR commit b4cc420d0afed5879f4ea6e12abd014f455a2d7f
   DIR parent 07bc4c40ef5ae56fee1b34b7f07e650f983f511e
  HTML Author: ghost43 <somber.night@protonmail.com>
       Date:   Wed,  9 Dec 2020 12:42:23 +0000
       
       Merge pull request #6300 from SomberNight/202006_qt_statusbarbutton
       
       qt StatusBarButton: use QToolButton instead of QPushButton
       Diffstat:
         M electrum/gui/qt/main_window.py      |      15 ++++++++++-----
         M electrum/gui/qt/stylesheet_patcher… |      80 ++++++++++++++++++++++---------
         M electrum/gui/qt/util.py             |       5 +++--
       
       3 files changed, 71 insertions(+), 29 deletions(-)
       ---
   DIR diff --git a/electrum/gui/qt/main_window.py b/electrum/gui/qt/main_window.py
       t@@ -46,7 +46,7 @@ from PyQt5.QtWidgets import (QMessageBox, QComboBox, QSystemTrayIcon, QTabWidget
                                     QHBoxLayout, QPushButton, QScrollArea, QTextEdit,
                                     QShortcut, QMainWindow, QCompleter, QInputDialog,
                                     QWidget, QSizePolicy, QStatusBar, QToolTip, QDialog,
       -                             QMenu, QAction, QStackedWidget)
       +                             QMenu, QAction, QStackedWidget, QToolButton)
        
        import electrum
        from electrum import (keystore, ecc, constants, util, bitcoin, commands,
       t@@ -104,11 +104,16 @@ if TYPE_CHECKING:
        
        LN_NUM_PAYMENT_ATTEMPTS = 10
        
       -class StatusBarButton(QPushButton):
       +
       +class StatusBarButton(QToolButton):
       +    # note: this class has a custom stylesheet applied in stylesheet_patcher.py
            def __init__(self, icon, tooltip, func):
       -        QPushButton.__init__(self, icon, '')
       +        QToolButton.__init__(self)
       +        self.setText('')
       +        self.setIcon(icon)
                self.setToolTip(tooltip)
       -        self.setFlat(True)
       +        self.setToolButtonStyle(Qt.ToolButtonTextBesideIcon)
       +        self.setAutoRaise(True)
                self.setMaximumWidth(25)
                self.clicked.connect(self.onPress)
                self.func = func
       t@@ -2239,7 +2244,7 @@ class ElectrumWindow(QMainWindow, MessageBoxMixin, Logger):
                    self.lightning_button.setText('')
                    self.lightning_button.setToolTip(_("The Lightning Network graph is fully synced."))
                else:
       -            self.lightning_button.setMaximumWidth(25 + 4 * char_width_in_lineedit())
       +            self.lightning_button.setMaximumWidth(25 + 5 * char_width_in_lineedit())
                    self.lightning_button.setText(progress_str)
                    self.lightning_button.setToolTip(_("The Lightning Network graph is syncing...\n"
                                                       "Payments are more likely to succeed with a more complete graph."))
   DIR diff --git a/electrum/gui/qt/stylesheet_patcher.py b/electrum/gui/qt/stylesheet_patcher.py
       t@@ -2,32 +2,68 @@
        It reads the current stylesheet, appends our modifications and sets the new stylesheet.
        """
        
       +import sys
       +
        from PyQt5 import QtWidgets
        
        
       +CUSTOM_PATCH_FOR_DARK_THEME = '''
       +/* PayToEdit text was being clipped */
       +QAbstractScrollArea {
       +    padding: 0px;
       +}
       +/* In History tab, labels while edited were being clipped (Windows) */
       +QAbstractItemView QLineEdit {
       +    padding: 0px;
       +    show-decoration-selected: 1;
       +}
       +/* Checked item in dropdowns have way too much height...
       +   see #6281 and https://github.com/ColinDuquesnoy/QDarkStyleSheet/issues/200
       +   */
       +QComboBox::item:checked {
       +    font-weight: bold;
       +    max-height: 30px;
       +}
       +'''
       +
       +CUSTOM_PATCH_FOR_DEFAULT_THEME_MACOS = '''
       +/* On macOS, main window status bar icons have ugly frame (see #6300) */
       +StatusBarButton {
       +    background-color: transparent;
       +    border: 1px solid transparent;
       +    border-radius: 4px;
       +    margin: 0px;
       +    padding: 2px;
       +}
       +StatusBarButton:checked {
       +  background-color: transparent;
       +  border: 1px solid #1464A0;
       +}
       +StatusBarButton:checked:disabled {
       +  border: 1px solid #14506E;
       +}
       +StatusBarButton:pressed {
       +  margin: 1px;
       +  background-color: transparent;
       +  border: 1px solid #1464A0;
       +}
       +StatusBarButton:disabled {
       +  border: none;
       +}
       +StatusBarButton:hover {
       +  border: 1px solid #148CD2;
       +}
       +'''
       +
       +
        def patch_qt_stylesheet(use_dark_theme: bool) -> None:
       -    if not use_dark_theme:
       -        return
       +    custom_patch = ""
       +    if use_dark_theme:
       +        custom_patch = CUSTOM_PATCH_FOR_DARK_THEME
       +    else:  # default theme (typically light)
       +        if sys.platform == 'darwin':
       +            custom_patch = CUSTOM_PATCH_FOR_DEFAULT_THEME_MACOS
        
            app = QtWidgets.QApplication.instance()
       -
       -    style_sheet = app.styleSheet()
       -    style_sheet = style_sheet + '''
       -    /* PayToEdit text was being clipped */
       -    QAbstractScrollArea {
       -        padding: 0px;
       -    }
       -    /* In History tab, labels while edited were being clipped (Windows) */
       -    QAbstractItemView QLineEdit {
       -        padding: 0px;
       -        show-decoration-selected: 1;
       -    }
       -    /* Checked item in dropdowns have way too much height...
       -       see #6281 and https://github.com/ColinDuquesnoy/QDarkStyleSheet/issues/200
       -       */
       -    QComboBox::item:checked {
       -        font-weight: bold;
       -        max-height: 30px;
       -    }
       -    '''
       +    style_sheet = app.styleSheet() + custom_patch
            app.setStyleSheet(style_sheet)
   DIR diff --git a/electrum/gui/qt/util.py b/electrum/gui/qt/util.py
       t@@ -126,9 +126,10 @@ class HelpLabel(QLabel):
                return QLabel.leaveEvent(self, event)
        
        
       -class HelpButton(QPushButton):
       +class HelpButton(QToolButton):
            def __init__(self, text):
       -        QPushButton.__init__(self, '?')
       +        QToolButton.__init__(self)
       +        self.setText('?')
                self.help_text = text
                self.setFocusPolicy(Qt.NoFocus)
                self.setFixedWidth(round(2.2 * char_width_in_lineedit()))