summary refs log tree commit diff
path: root/gnu/packages/patches/inkscape-drop-wait-for-targets.patch
blob: 3dbe6641e27466b8b6260cf90d82d9ed291576f0 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
Copied from Fedora.

http://pkgs.fedoraproject.org/cgit/rpms/inkscape.git/plain/inkscape-0.91-drop-wait-for-targets.patch?id=eb5340800b563d6b05aa5f11a2f24f2cc0d8c80e

=== modified file 'src/ui/clipboard.cpp'
--- src/ui/clipboard.cpp	2016-04-02 15:15:43 +0000
+++ src/ui/clipboard.cpp	2016-04-07 16:30:32 +0000
@@ -146,8 +146,6 @@
     void _setClipboardColor(guint32);
     void _userWarn(SPDesktop *, char const *);
 
-    void _inkscape_wait_for_targets(std::list<Glib::ustring> &);
-
     // private properites
     SPDocument *_clipboardSPDoc; ///< Document that stores the clipboard until someone requests it
     Inkscape::XML::Node *_defs; ///< Reference to the clipboard document's defs node
@@ -1302,9 +1300,7 @@
  */
 Glib::ustring ClipboardManagerImpl::_getBestTarget()
 {
-    // GTKmm's wait_for_targets() is broken, see the comment in _inkscape_wait_for_targets()
-    std::list<Glib::ustring> targets; // = _clipboard->wait_for_targets();
-    _inkscape_wait_for_targets(targets);
+    std::list<Glib::ustring> targets = _clipboard->wait_for_targets();
 
     // clipboard target debugging snippet
     /*
@@ -1456,39 +1452,6 @@
     desktop->messageStack()->flash(Inkscape::WARNING_MESSAGE, msg);
 }
 
-
-// GTKMM's clipboard::wait_for_targets is buggy and might return bogus, see
-//
-// https://bugs.launchpad.net/inkscape/+bug/296778
-// http://mail.gnome.org/archives/gtk-devel-list/2009-June/msg00062.html
-//
-// for details. Until this has been fixed upstream we will use our own implementation
-// of this method, as copied from /gtkmm-2.16.0/gtk/gtkmm/clipboard.cc.
-void ClipboardManagerImpl::_inkscape_wait_for_targets(std::list<Glib::ustring> &listTargets)
-{
-    //Get a newly-allocated array of atoms:
-    GdkAtom* targets = NULL;
-    gint n_targets = 0;
-    gboolean test = gtk_clipboard_wait_for_targets( gtk_clipboard_get(GDK_SELECTION_CLIPBOARD), &targets, &n_targets );
-    if (!test || (targets == NULL)) {
-        return;
-    }
-
-    //Add the targets to the C++ container:
-    for (int i = 0; i < n_targets; i++)
-    {
-        //Convert the atom to a string:
-        gchar* const atom_name = gdk_atom_name(targets[i]);
-
-        Glib::ustring target;
-        if (atom_name) {
-            target = Glib::ScopedPtr<char>(atom_name).get(); //This frees the gchar*.
-        }
-
-        listTargets.push_back(target);
-    }
-}
-
 /* #######################################
           ClipboardManager class
    ####################################### */