• LRN's avatar
    DnD: fix setting icon in drag-begin · 41721381
    LRN authored
    Commit 1c96b703 changed the way icon
    information is given to DnD. Previously an icon helper was kept at
    the drag source site. Now an image definition is stored there.
    The difference is that icon helper is an object that changes its
    state in response to an icon being set, thus the object survived
    multiple icon changes. Whereas image definition is destroyed and
    re-created from scratch every time a drag icon is changed.
    This created a problem where gtk_drag_begin_internal() would receive
    the value of site->image_def when a drag just began, then it emits
    "drag-begin" signal, in response to which an application can
    set drag icon, changing the value of site->image_def. However,
    gtk_drag_begin_internal() is unable to know about that change and
    continues to use the old value it received from up the stack.
    
    Not only does it prevent drag icon from being set from "drag-begin",
    it also can induce a crash, since the old image_def value used
    by gtk_drag_begin_internal() points to a f...
    41721381