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]