Project

General

Profile

fix-dnd-really.patch

Paul Franke, August 14, 2016 15:40

View differences:

src/libaudgui/list.cc
615 615
    {
616 616
        const GtkTargetEntry target = {(char *) cbs->data_type, 0, 0};
617 617

  
618
        /* these both need to be called even for the source-only case, else
619
         * GTK's default settings prevent dragging multiple items */
620
        gtk_drag_source_set (list, GDK_BUTTON1_MASK, & target, 1, GDK_ACTION_COPY);
621
        gtk_drag_dest_set (list, (GtkDestDefaults) 0, & target, 1, GDK_ACTION_COPY);
622

  
623 618
        if (MODEL_HAS_CB (model, get_data))
619
        {
620
            gtk_drag_source_set (list, GDK_BUTTON1_MASK, & target, 1, GDK_ACTION_COPY);
624 621
            g_signal_connect (list, "drag-data-get", (GCallback) drag_data_get, model);
622
        }
623

  
625 624
        if (MODEL_HAS_CB (model, receive_data))
625
        {
626
            gtk_drag_dest_set (list, (GtkDestDefaults) 0, & target, 1, GDK_ACTION_COPY);
626 627
            g_signal_connect (list, "drag-data-received", (GCallback) drag_data_received, model);
628
        }
627 629

  
628 630
        supports_drag = true;
629 631
    }
630
- 
src/libaudgui/list.cc
343 343
    g_signal_stop_emission_by_name (widget, "drag-begin");
344 344

  
345 345
    model->dragging = true;
346

  
347
    /* If button_press_cb preserved a multiple selection, tell button_release_cb
348
     * not to clear it. */
349
    model->frozen = false;
346 350
}
347 351

  
348 352
static void drag_end (GtkWidget * widget, GdkDragContext * context,
......
426 430
{
427 431
    g_signal_stop_emission_by_name (widget, "drag-motion");
428 432

  
429
    /* If button_press_cb preserved a multiple selection, tell button_release_cb
430
     * not to clear it. */
431
    model->frozen = false;
432

  
433 433
    if (model->dragging && MODEL_HAS_CB (model, shift_rows))
434 434
        gdk_drag_status (context, GDK_ACTION_MOVE, time);  /* dragging within same list */
435 435
    else if (MODEL_HAS_CB (model, data_type) && MODEL_HAS_CB (model, receive_data))
436
-