|
24 | 24 |
|
25 | 25 | #include "wx/scopeguard.h"
|
26 | 26 |
|
27 |
| -#include "wx/gtk/private/wrapgtk.h" |
28 | 27 | #include "wx/gtk/private/backend.h"
|
29 | 28 |
|
30 | 29 | //----------------------------------------------------------------------------
|
@@ -814,8 +813,8 @@ void wxDropSource::PrepareIcon( int action, GdkDragContext *context )
|
814 | 813 | cairo_region_destroy(region);
|
815 | 814 | }
|
816 | 815 |
|
817 |
| - g_signal_connect(widget, "draw", G_CALLBACK(draw_icon), icon); |
818 |
| - |
| 816 | + m_icon_draw_handler_id = g_signal_connect(widget, "draw", G_CALLBACK(draw_icon), icon); |
| 817 | + m_icon_drawn_widget = widget; |
819 | 818 | #else // !__WXGTK3__
|
820 | 819 |
|
821 | 820 | GdkBitmap *mask;
|
@@ -927,16 +926,10 @@ wxDragResult wxDropSource::DoDragDrop(int flags)
|
927 | 926 |
|
928 | 927 | g_signal_handlers_disconnect_by_func (m_iconWindow,
|
929 | 928 | (gpointer) gtk_dnd_window_configure_callback, this);
|
930 |
| -#ifdef __WXGTK3__ |
931 |
| - GtkWidget* drawWidget = m_iconWindow; |
932 |
| - if (gtk_check_version(3,20,0) == NULL) |
933 |
| - drawWidget = gtk_bin_get_child(GTK_BIN(drawWidget)); |
934 |
| - if (drawWidget) |
935 |
| - { |
936 |
| - g_signal_handlers_disconnect_matched( |
937 |
| - drawWidget, G_SIGNAL_MATCH_FUNC, 0, 0, NULL, (void*)draw_icon, NULL); |
938 |
| - } |
939 |
| -#endif |
| 929 | + |
| 930 | + if (m_icon_draw_handler_id > 0) |
| 931 | + g_signal_handler_disconnect(m_icon_drawn_widget, m_icon_draw_handler_id); |
| 932 | + |
940 | 933 | g_object_unref(m_iconWindow);
|
941 | 934 | m_iconWindow = NULL;
|
942 | 935 |
|
|
0 commit comments