1401
1397
*col = (x - icon_view->priv->xorigin - SCREEN_MARGIN) / CELL_SIZE;
1405
xfdesktop_icon_view_clear_drag_highlight(XfdesktopIconView *icon_view,
1406
GdkDragContext *context)
1408
GdkRectangle *cell_highlight;
1410
cell_highlight = g_object_get_qdata(G_OBJECT(context),
1411
xfdesktop_cell_highlight_quark);
1415
if(0 == cell_highlight->width || 0 == cell_highlight->height)
1418
/* When dragging an icon a box is drawn to indicate the cell where the
1419
* icon could be moved to if dropped. We need to clear that box but make
1420
* the length of the lines slightly longer to clear all the pixels */
1421
/* Left vertical line */
1422
gtk_widget_queue_draw_area(GTK_WIDGET(icon_view),
1423
cell_highlight->x - 1,
1424
cell_highlight->y - 1,
1426
cell_highlight->height + 2);
1427
/* Right vertical line */
1428
gtk_widget_queue_draw_area(GTK_WIDGET(icon_view),
1429
cell_highlight->x + cell_highlight->width - 1,
1432
cell_highlight->height + 2);
1433
/* Top horizontal line */
1434
gtk_widget_queue_draw_area(GTK_WIDGET(icon_view),
1436
cell_highlight->y - 1,
1437
cell_highlight->width + 2,
1439
/* Bottom horizontal line */
1440
gtk_widget_queue_draw_area(GTK_WIDGET(icon_view),
1442
cell_highlight->y + cell_highlight->height - 1,
1443
cell_highlight->width + 2,
1446
cell_highlight->width = cell_highlight->height = 0;
1450
xfdesktop_icon_view_draw_drag_highlight(XfdesktopIconView *icon_view,
1451
GdkDragContext *context,
1455
GtkWidget *widget = GTK_WIDGET(icon_view);
1457
GdkRectangle *cell_highlight;
1460
newx = SCREEN_MARGIN + icon_view->priv->xorigin + col * CELL_SIZE;
1461
newy = SCREEN_MARGIN + icon_view->priv->yorigin + row * CELL_SIZE;
1463
cell_highlight = g_object_get_qdata(G_OBJECT(context),
1464
xfdesktop_cell_highlight_quark);
1466
if(cell_highlight) {
1467
if(newx != cell_highlight->x || newy != cell_highlight->y)
1468
xfdesktop_icon_view_clear_drag_highlight(icon_view, context);
1470
cell_highlight = g_new0(GdkRectangle, 1);
1471
g_object_set_qdata_full(G_OBJECT(context),
1472
xfdesktop_cell_highlight_quark,
1473
cell_highlight, (GDestroyNotify)g_free);
1476
cell_highlight->x = newx;
1477
cell_highlight->y = newy;
1478
cell_highlight->width = cell_highlight->height = CELL_SIZE;
1480
cr = gdk_cairo_create(GDK_DRAWABLE(gtk_widget_get_window(widget)));
1481
gdk_cairo_set_source_color(cr, >k_widget_get_style(widget)->bg[GTK_STATE_SELECTED]);
1482
cairo_set_line_width(cr, 0.5);
1483
cairo_rectangle(cr, newx, newy, CELL_SIZE, CELL_SIZE);
1488
1400
static gboolean
1489
1401
xfdesktop_icon_view_drag_motion(GtkWidget *widget,
1490
1402
GdkDragContext *context,