diff --git a/src/calibre/gui2/__init__.py b/src/calibre/gui2/__init__.py
index 1ee8b93355..afa176f795 100644
--- a/src/calibre/gui2/__init__.py
+++ b/src/calibre/gui2/__init__.py
@@ -168,6 +168,7 @@ def create_defs():
defs['book_details_narrow_comments_layout'] = 'float'
defs['book_list_split'] = False
defs['wrap_toolbar_text'] = False
+ defs['dnd_merge'] = True
create_defs()
diff --git a/src/calibre/gui2/library/alternate_views.py b/src/calibre/gui2/library/alternate_views.py
index a1d3c54691..1acccf8b72 100644
--- a/src/calibre/gui2/library/alternate_views.py
+++ b/src/calibre/gui2/library/alternate_views.py
@@ -201,6 +201,10 @@ def mouseMoveEvent(base_class, self, event):
self.drag_start_pos = None
+def dnd_merge_ok(md):
+ return md.hasFormat('application/calibre+from_library') and gprefs['dnd_merge']
+
+
def dragEnterEvent(self, event):
if int(event.possibleActions() & Qt.CopyAction) + \
int(event.possibleActions() & Qt.MoveAction) == 0:
@@ -208,13 +212,13 @@ def dragEnterEvent(self, event):
paths = self.paths_from_event(event)
md = event.mimeData()
- if paths or md.hasFormat('application/calibre+from_library'):
+ if paths or dnd_merge_ok(md):
event.acceptProposedAction()
def dropEvent(self, event):
md = event.mimeData()
- if md.hasFormat('application/calibre+from_library'):
+ if dnd_merge_ok(md):
ids = set(map(int, bytes(md.data('application/calibre+from_library')).decode('utf-8').split(' ')))
row = self.indexAt(event.pos()).row()
if row > -1 and ids:
diff --git a/src/calibre/gui2/preferences/look_feel.py b/src/calibre/gui2/preferences/look_feel.py
index 915ac150e7..9de6eff486 100644
--- a/src/calibre/gui2/preferences/look_feel.py
+++ b/src/calibre/gui2/preferences/look_feel.py
@@ -394,6 +394,7 @@ class ConfigWidget(ConfigWidgetBase, Ui_Form):
self.opt_hidpi.setVisible(False), self.label_hidpi.setVisible(False)
r('ui_style', gprefs, restart_required=True, choices=[(_('System default'), 'system'), (_('calibre style'), 'calibre')])
r('book_list_tooltips', gprefs)
+ r('dnd_merge', gprefs)
r('wrap_toolbar_text', gprefs, restart_required=True)
r('show_layout_buttons', gprefs, restart_required=True)
r('row_numbers_in_book_list', gprefs)
diff --git a/src/calibre/gui2/preferences/look_feel.ui b/src/calibre/gui2/preferences/look_feel.ui
index b5ff7dc3ff..2a7c889ce0 100644
--- a/src/calibre/gui2/preferences/look_feel.ui
+++ b/src/calibre/gui2/preferences/look_feel.ui
@@ -28,6 +28,16 @@
&Main interface
+ -
+
+
+ User interface style (&needs restart):
+
+
+ opt_ui_style
+
+
+
-
@@ -140,7 +150,7 @@
- -
+
-
Qt::Vertical
@@ -218,16 +228,6 @@
- -
-
-
- User interface style (&needs restart):
-
-
- opt_ui_style
-
-
-
-
@@ -284,6 +284,13 @@
+ -
+
+
+ Allow using &drag and drop to merge books
+
+
+