From 27e39f6885c2504bc5e9e472ec866dcaf75b887b Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Wed, 28 Jun 2017 19:51:24 +0530 Subject: [PATCH] Fix #1700217 [Virtual library button not pressed down](https://bugs.launchpad.net/calibre/+bug/1700217) --- src/calibre/gui2/layout.py | 1 + src/calibre/gui2/search_restriction_mixin.py | 10 ++++------ 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/src/calibre/gui2/layout.py b/src/calibre/gui2/layout.py index 21d8d48168..3332d25e00 100644 --- a/src/calibre/gui2/layout.py +++ b/src/calibre/gui2/layout.py @@ -181,6 +181,7 @@ class SearchBar(QFrame): # {{{ x = parent.virtual_library = QToolButton(self) x.setCursor(Qt.PointingHandCursor) + x.setPopupMode(x.InstantPopup) x.setText(_('Virtual library')) x.setAutoRaise(True) x.setIcon(QIcon(I('lt.png'))) diff --git a/src/calibre/gui2/search_restriction_mixin.py b/src/calibre/gui2/search_restriction_mixin.py index 72ebeef81b..0c64d28f1f 100644 --- a/src/calibre/gui2/search_restriction_mixin.py +++ b/src/calibre/gui2/search_restriction_mixin.py @@ -9,7 +9,7 @@ __copyright__ = '2013, Kovid Goyal ' from functools import partial from PyQt5.Qt import ( - Qt, QMenu, QPoint, QIcon, QDialog, QGridLayout, QLabel, QLineEdit, QComboBox, + Qt, QMenu, QIcon, QDialog, QGridLayout, QLabel, QLineEdit, QComboBox, QDialogButtonBox, QSize, QVBoxLayout, QListWidget, QRadioButton, QAction, QTextBrowser) from calibre.gui2 import error_dialog, question_dialog, gprefs @@ -331,8 +331,9 @@ class SearchRestrictionMixin(object): self.search_based_vl = None self.virtual_library_menu = QMenu() + self.virtual_library.setMenu(self.virtual_library_menu) + self.virtual_library_menu.aboutToShow.connect(self.virtual_library_menu_about_to_show) - self.virtual_library.clicked.connect(self.virtual_library_clicked) self.clear_vl.clicked.connect(lambda x: (self.apply_virtual_library(), self.clear_additional_restriction())) self.virtual_library_tooltip = \ @@ -364,7 +365,7 @@ class SearchRestrictionMixin(object): self.apply_virtual_library(cd.library_name) self.rebuild_vl_tabs() - def virtual_library_clicked(self): + def virtual_library_menu_about_to_show(self): m = self.virtual_library_menu m.clear() @@ -420,9 +421,6 @@ class SearchRestrictionMixin(object): a = m.addAction(self.checked if vl == current_lib else self.empty, vl.replace('&', '&&')) a.triggered.connect(partial(self.apply_virtual_library, library=vl)) - p = QPoint(0, self.virtual_library.height()) - self.virtual_library_menu.popup(self.virtual_library.mapToGlobal(p)) - def rebuild_vl_tabs(self): self.vl_tabs.rebuild()