diff --git a/src/calibre/gui2/__init__.py b/src/calibre/gui2/__init__.py
index 1056f6ced6..3d50b35ec4 100644
--- a/src/calibre/gui2/__init__.py
+++ b/src/calibre/gui2/__init__.py
@@ -103,6 +103,8 @@ def _config():
help=_('The layout of the user interface'), default='wide')
c.add_opt('show_avg_rating', default=True,
help=_('Show the average rating per item indication in the tag browser'))
+ c.add_opt('disable_animations', default=False,
+ help=_('Disable UI animations'))
return ConfigProxy(c)
config = _config()
diff --git a/src/calibre/gui2/book_details.py b/src/calibre/gui2/book_details.py
index f87f8886a5..eb8dc0d064 100644
--- a/src/calibre/gui2/book_details.py
+++ b/src/calibre/gui2/book_details.py
@@ -16,6 +16,7 @@ from calibre.gui2.widgets import IMAGE_EXTENSIONS
from calibre.ebooks import BOOK_EXTENSIONS
from calibre.constants import preferred_encoding
from calibre.library.comments import comments_to_html
+from calibre.gui2 import config
# render_rows(data) {{{
WEIGHTS = collections.defaultdict(lambda : 100)
@@ -133,7 +134,7 @@ class CoverView(QWidget): # {{{
self.pixmap = self.default_pixmap
self.do_layout()
self.update()
- if not same_item:
+ if not same_item and not config['disable_animations']:
self.animation.start()
def paintEvent(self, event):
diff --git a/src/calibre/gui2/dialogs/config/__init__.py b/src/calibre/gui2/dialogs/config/__init__.py
index ad49848b7b..f17c0083ec 100644
--- a/src/calibre/gui2/dialogs/config/__init__.py
+++ b/src/calibre/gui2/dialogs/config/__init__.py
@@ -493,6 +493,7 @@ class ConfigDialog(ResizableDialog, Ui_Dialog):
if x == config['gui_layout']:
li = i
self.opt_gui_layout.setCurrentIndex(li)
+ self.opt_disable_animations.setChecked(config['disable_animations'])
def check_port_value(self, *args):
port = self.port.value()
@@ -868,6 +869,7 @@ class ConfigDialog(ResizableDialog, Ui_Dialog):
config['get_social_metadata'] = self.opt_get_social_metadata.isChecked()
config['overwrite_author_title_metadata'] = self.opt_overwrite_author_title_metadata.isChecked()
config['enforce_cpu_limit'] = bool(self.opt_enforce_cpu_limit.isChecked())
+ config['disable_animations'] = bool(self.opt_disable_animations.isChecked())
gprefs['show_splash_screen'] = bool(self.show_splash_screen.isChecked())
fmts = []
for i in range(self.viewer.count()):
diff --git a/src/calibre/gui2/dialogs/config/config.ui b/src/calibre/gui2/dialogs/config/config.ui
index efda00fc97..191b8def80 100644
--- a/src/calibre/gui2/dialogs/config/config.ui
+++ b/src/calibre/gui2/dialogs/config/config.ui
@@ -89,8 +89,8 @@
0
0
- 720
- 679
+ 724
+ 683
@@ -655,6 +655,16 @@
+ -
+
+
+ Disable all animations. Useful if you have a slow/old computer.
+
+
+ Disable &animations
+
+
+