[gtk+] gtkdnd: Use RGBA windows when dragging if possible
- From: Alexander Larsson <alexl src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+] gtkdnd: Use RGBA windows when dragging if possible
- Date: Mon, 5 Aug 2013 14:40:53 +0000 (UTC)
commit 0296f1a43a803c0783781f9941a840256304641f
Author: Alexander Larsson <alexl redhat com>
Date: Mon Aug 5 16:49:18 2013 +0200
gtkdnd: Use RGBA windows when dragging if possible
If we have rgba visuals and a composited screen we should
just use a RGBA window rather than shaped windows.
gtk/gtkdnd.c | 12 +++++++++++-
1 files changed, 11 insertions(+), 1 deletions(-)
---
diff --git a/gtk/gtkdnd.c b/gtk/gtkdnd.c
index c3f842c..d9d888f 100644
--- a/gtk/gtkdnd.c
+++ b/gtk/gtkdnd.c
@@ -3378,6 +3378,8 @@ gtk_drag_set_icon_surface (GdkDragContext *context,
GdkScreen *screen;
GdkRectangle extents;
cairo_pattern_t *pattern;
+ GdkVisual *rgba_visual;
+ gboolean has_rgba;
g_return_if_fail (GDK_IS_DRAG_CONTEXT (context));
g_return_if_fail (surface != NULL);
@@ -3386,8 +3388,15 @@ gtk_drag_set_icon_surface (GdkDragContext *context,
screen = gdk_window_get_screen (gdk_drag_context_get_source_window (context));
+ rgba_visual = gdk_screen_get_rgba_visual (screen);
window = gtk_window_new (GTK_WINDOW_POPUP);
+ has_rgba =
+ rgba_visual != NULL &&
+ gdk_screen_is_composited (screen);
+ if (has_rgba)
+ gtk_widget_set_visual (GTK_WIDGET (window), rgba_visual);
+
gtk_window_set_type_hint (GTK_WINDOW (window), GDK_WINDOW_TYPE_HINT_DND);
gtk_window_set_screen (GTK_WINDOW (window), screen);
set_can_change_screen (window, TRUE);
@@ -3398,7 +3407,8 @@ gtk_drag_set_icon_surface (GdkDragContext *context,
gtk_widget_set_size_request (window, extents.width, extents.height);
gtk_widget_realize (window);
- if (cairo_surface_get_content (surface) != CAIRO_CONTENT_COLOR)
+ if (cairo_surface_get_content (surface) != CAIRO_CONTENT_COLOR &&
+ !has_rgba)
{
cairo_surface_t *saturated;
cairo_region_t *region;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]