diff --git a/src/calibre/gui2/preferences/look_feel.ui b/src/calibre/gui2/preferences/look_feel.ui
index a6a0e9cf90..76748bac75 100644
--- a/src/calibre/gui2/preferences/look_feel.ui
+++ b/src/calibre/gui2/preferences/look_feel.ui
@@ -19,7 +19,7 @@
0
-
+
:/images/lt.png:/images/lt.png
@@ -662,7 +662,7 @@ A value of zero means calculate automatically.
-
+
:/images/book.png:/images/book.png
@@ -795,7 +795,7 @@ A value of zero means calculate automatically.
-
+
:/images/tags.png:/images/tags.png
@@ -948,7 +948,7 @@ see the counts by hovering your mouse over any item.
-
+
:/images/cover_flow.png:/images/cover_flow.png
diff --git a/src/calibre/gui2/preferences/main.py b/src/calibre/gui2/preferences/main.py
index 1480857504..b31940bc74 100644
--- a/src/calibre/gui2/preferences/main.py
+++ b/src/calibre/gui2/preferences/main.py
@@ -13,7 +13,7 @@ from PyQt5.Qt import (
Qt, QIcon, QFont, QWidget, QScrollArea, QStackedWidget, QVBoxLayout,
QLabel, QFrame, QToolBar, QSize, pyqtSignal, QDialogButtonBox,
QHBoxLayout, QDialog, QSizePolicy, QPainter, QTextLayout, QPointF,
- QStatusTipEvent, QApplication)
+ QStatusTipEvent, QApplication, QTabWidget)
from calibre.constants import __appname__, __version__, islinux
from calibre.gui2 import (gprefs, min_available_height, available_width,
@@ -259,10 +259,19 @@ class Preferences(QDialog):
l.addWidget(self.title_bar), l.addWidget(self.stack), l.addWidget(self.bb)
if initial_plugin is not None:
- category, name = initial_plugin
+ category, name = initial_plugin[:2]
plugin = get_plugin(category, name)
if plugin is not None:
self.show_plugin(plugin)
+ if len(initial_plugin) > 2:
+ w = self.findChild(QWidget, initial_plugin[2])
+ if w is not None:
+ for c in self.showing_widget.children():
+ if isinstance(c, QTabWidget):
+ idx = c.indexOf(w)
+ if idx > -1:
+ c.setCurrentIndex(idx)
+ break
else:
self.hide_plugin()
diff --git a/src/calibre/gui2/widgets.py b/src/calibre/gui2/widgets.py
index 425ab60cbf..8e7d430afe 100644
--- a/src/calibre/gui2/widgets.py
+++ b/src/calibre/gui2/widgets.py
@@ -959,6 +959,7 @@ class LayoutButton(QToolButton):
self.label = text
self.setIcon(QIcon(icon))
self.setCheckable(True)
+ self.icname = os.path.basename(icon).rpartition('.')[0]
self.splitter = splitter
if splitter is not None:
@@ -987,6 +988,18 @@ class LayoutButton(QToolButton):
else:
self.set_state_to_hide()
+ def mouseReleaseEvent(self, ev):
+ if ev.button() == Qt.RightButton:
+ tab_name = {'book':'book_details', 'grid':'cover_grid', 'cover_flow':'cover_browser', 'tags':'tag_browser'}.get(self.icname)
+ if tab_name:
+ ev.accept()
+ from calibre.gui2.ui import get_gui
+ gui = get_gui()
+ if gui is not None:
+ gui.iactions['Preferences'].do_config(initial_plugin=('Interface', 'Look & Feel', tab_name+'_tab'), close_after_initial=True)
+ return
+ return QToolButton.mouseReleaseEvent(self, ev)
+
class Splitter(QSplitter):