diff --git a/src/calibre/gui2/__init__.py b/src/calibre/gui2/__init__.py index a163f506d3..414209a142 100644 --- a/src/calibre/gui2/__init__.py +++ b/src/calibre/gui2/__init__.py @@ -1213,7 +1213,7 @@ def elided_text(text, font=None, width=300, pos='middle'): of the string with an ellipsis. Results in a string much closer to the limit than Qt's elidedText().''' from PyQt5.Qt import QFontMetrics, QApplication - fm = QApplication.fontMetrics() if font is None else QFontMetrics(font) + fm = QApplication.fontMetrics() if font is None else (font if isinstance(font, QFontMetrics) else QFontMetrics(font)) delta = 4 ellipsis = u'\u2026' diff --git a/src/calibre/gui2/actions/view.py b/src/calibre/gui2/actions/view.py index fff0d226bc..8da26ab055 100644 --- a/src/calibre/gui2/actions/view.py +++ b/src/calibre/gui2/actions/view.py @@ -12,7 +12,8 @@ from PyQt5.Qt import Qt, QAction, pyqtSignal from calibre.constants import isosx, iswindows from calibre.gui2 import ( - error_dialog, Dispatcher, question_dialog, config, open_local_file, info_dialog) + error_dialog, Dispatcher, question_dialog, config, open_local_file, + info_dialog, elided_text) from calibre.gui2.dialogs.choose_format import ChooseFormatDialog from calibre.utils.config import prefs, tweaks from calibre.ptempfile import PersistentTemporaryFile @@ -66,8 +67,9 @@ class ViewAction(InterfaceAction): if history: self.view_menu.insertAction(self.clear_sep2, self.clear_sep1) self.history_actions.append(self.clear_sep1) + fm = self.gui.fontMetrics() for id_, title in history: - ac = HistoryAction(id_, title, self.view_menu) + ac = HistoryAction(id_, elided_text(title, font=fm, pos='right'), self.view_menu) self.view_menu.insertAction(self.clear_sep2, ac) ac.view_historical.connect(self.view_historical) self.history_actions.append(ac)