Daniel Brötzmann pushed to branch master at gajim / gajim


Commits:
ed7c3bc3 by wurstsalat at 2025-12-09T23:22:04+01:00
fix: Re-enable drag and drop on X11 displays for suitable GTK versions

Fixes #12313

- - - - -


4 changed files:

- gajim/gtk/avatar_selector.py
- gajim/gtk/chat_stack.py
- gajim/gtk/file_transfer_selector.py
- gajim/gtk/util/misc.py


Changes:

=====================================
gajim/gtk/avatar_selector.py
=====================================
@@ -31,6 +31,7 @@
 from gajim.gtk.alert import InformationAlertDialog
 from gajim.gtk.filechoosers import AvatarFileChooserButton
 from gajim.gtk.util.classes import SignalManager
+from gajim.gtk.util.misc import has_min_gtk_version
 
 log = logging.getLogger("gajim.gtk.avatar_selector")
 
@@ -118,9 +119,9 @@ def _on_path_picked(
         self.prepare_crop_area(str(paths[0]))
 
     def _on_drop_accept(self, _target: Gtk.DropTarget, drop: Gdk.Drop) -> bool:
-        if app.is_display(Display.X11):
-            # DND on X11 freezes due to a GTK bug:
-            # https://dev.gajim.org/gajim/gajim/-/issues/12313
+        # DND on X11 freezes due to a GTK bug:
+        # https://dev.gajim.org/gajim/gajim/-/issues/12313
+        if app.is_display(Display.X11) and not has_min_gtk_version("4.20.1"):
             return False
 
         formats = drop.get_formats()


=====================================
gajim/gtk/chat_stack.py
=====================================
@@ -47,6 +47,7 @@
 from gajim.gtk.message_input import MessageInputTextView
 from gajim.gtk.util.classes import SignalManager
 from gajim.gtk.util.misc import allow_send_message
+from gajim.gtk.util.misc import has_min_gtk_version
 from gajim.gtk.util.window import open_window
 
 log = logging.getLogger("gajim.gtk.chatstack")
@@ -745,7 +746,9 @@ def _on_drag_leave(self, _drop_target: Gtk.DropTarget) -> 
None:
     def _on_drop_accept(self, _target: Gtk.DropTarget, _drop: Gdk.Drop) -> 
bool:
         # DND on X11 freezes due to a GTK bug:
         # https://dev.gajim.org/gajim/gajim/-/issues/12313
-        return not app.is_display(Display.X11)
+        if app.is_display(Display.X11):
+            return has_min_gtk_version("4.20.1")
+        return True
 
     def _on_file_drop(
         self,


=====================================
gajim/gtk/file_transfer_selector.py
=====================================
@@ -32,6 +32,7 @@
 from gajim.gtk.filechoosers import FileChooserButton
 from gajim.gtk.resource_selector import ResourceSelector
 from gajim.gtk.util.classes import SignalManager
+from gajim.gtk.util.misc import has_min_gtk_version
 from gajim.gtk.util.misc import iterate_listbox_children
 
 PREVIEW_SIZE = 72
@@ -198,9 +199,9 @@ def _get_file_paths(self) -> list[Path]:
         return paths
 
     def _on_drop_accept(self, _target: Gtk.DropTarget, drop: Gdk.Drop) -> bool:
-        if app.is_display(Display.X11):
-            # DND on X11 freezes due to a GTK bug:
-            # https://dev.gajim.org/gajim/gajim/-/issues/12313
+        # DND on X11 freezes due to a GTK bug:
+        # https://dev.gajim.org/gajim/gajim/-/issues/12313
+        if app.is_display(Display.X11) and not has_min_gtk_version("4.20.1"):
             return False
 
         formats = drop.get_formats()


=====================================
gajim/gtk/util/misc.py
=====================================
@@ -23,6 +23,7 @@
 from gi.repository import GLib
 from gi.repository import Gtk
 from gi.repository import Pango
+from packaging.version import Version as V
 
 from gajim.common import app
 from gajim.common import types
@@ -58,6 +59,10 @@ def get_gtk_version() -> str:
     )
 
 
+def has_min_gtk_version(required_version: str) -> bool:
+    return V(required_version) >= V(get_gtk_version())
+
+
 def get_adw_version() -> str:
     return "%i.%i.%i" % (
         Adw.get_major_version(),



View it on GitLab: 
https://dev.gajim.org/gajim/gajim/-/commit/ed7c3bc3d048b32830476cbc9c3ba2cd7e644813

-- 
View it on GitLab: 
https://dev.gajim.org/gajim/gajim/-/commit/ed7c3bc3d048b32830476cbc9c3ba2cd7e644813
You're receiving this email because of your account on dev.gajim.org.


_______________________________________________
Commits mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to