event-widget: set a proper icon for drag n' drop
This commit is contained in:
@@ -37,6 +37,9 @@ struct _GcalEventWidget
|
|||||||
|
|
||||||
GcalEvent *event;
|
GcalEvent *event;
|
||||||
|
|
||||||
|
/* Drag n' Drop icon */
|
||||||
|
GdkPixbuf *dnd_pixbuf;
|
||||||
|
|
||||||
GdkWindow *event_window;
|
GdkWindow *event_window;
|
||||||
gboolean button_pressed;
|
gboolean button_pressed;
|
||||||
};
|
};
|
||||||
@@ -276,6 +279,7 @@ gcal_event_widget_finalize (GObject *object)
|
|||||||
|
|
||||||
/* releasing properties */
|
/* releasing properties */
|
||||||
g_clear_pointer (&self->css_class, g_free);
|
g_clear_pointer (&self->css_class, g_free);
|
||||||
|
g_clear_object (&self->dnd_pixbuf);
|
||||||
g_clear_object (&self->event);
|
g_clear_object (&self->event);
|
||||||
|
|
||||||
G_OBJECT_CLASS (gcal_event_widget_parent_class)->finalize (object);
|
G_OBJECT_CLASS (gcal_event_widget_parent_class)->finalize (object);
|
||||||
@@ -573,6 +577,15 @@ gcal_event_widget_draw (GtkWidget *widget,
|
|||||||
cairo_paint (cr);
|
cairo_paint (cr);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Setup the drag n' drop icon */
|
||||||
|
g_clear_object (&self->dnd_pixbuf);
|
||||||
|
|
||||||
|
self->dnd_pixbuf = gdk_pixbuf_get_from_window (self->event_window,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
width,
|
||||||
|
height);
|
||||||
|
|
||||||
pango_font_description_free (font_desc);
|
pango_font_description_free (font_desc);
|
||||||
g_object_unref (layout);
|
g_object_unref (layout);
|
||||||
g_free (display_text);
|
g_free (display_text);
|
||||||
@@ -610,6 +623,14 @@ gcal_event_widget_button_release_event (GtkWidget *widget,
|
|||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
gcal_event_widget_drag_begin (GtkWidget *widget,
|
||||||
|
GdkDragContext *context)
|
||||||
|
{
|
||||||
|
GcalEventWidget *self = GCAL_EVENT_WIDGET (widget);
|
||||||
|
|
||||||
|
gtk_drag_set_icon_pixbuf (context, self->dnd_pixbuf, 0, 0);
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
gcal_event_widget_class_init(GcalEventWidgetClass *klass)
|
gcal_event_widget_class_init(GcalEventWidgetClass *klass)
|
||||||
@@ -633,6 +654,7 @@ gcal_event_widget_class_init(GcalEventWidgetClass *klass)
|
|||||||
widget_class->draw = gcal_event_widget_draw;
|
widget_class->draw = gcal_event_widget_draw;
|
||||||
widget_class->button_press_event = gcal_event_widget_button_press_event;
|
widget_class->button_press_event = gcal_event_widget_button_press_event;
|
||||||
widget_class->button_release_event = gcal_event_widget_button_release_event;
|
widget_class->button_release_event = gcal_event_widget_button_release_event;
|
||||||
|
widget_class->drag_begin = gcal_event_widget_drag_begin;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* GcalEventWidget::date-end:
|
* GcalEventWidget::date-end:
|
||||||
|
|||||||
Reference in New Issue
Block a user