Remove compatibility for GTK+-2.0
While the Meego developers agreed to switching mutter to GTK+-3.0 unconditionally a while ago, Canonical used a GTK+-2.0 build for their Unity project. As Canonical now announced a switch to compiz as their window manager, there is no longer a reason to maintain GTK+-2.0 compatibility. https://bugzilla.gnome.org/show_bug.cgi?id=633133
This commit is contained in:
@@ -25,8 +25,6 @@
|
||||
#include "fixedtip.h"
|
||||
#include "ui.h"
|
||||
|
||||
#include "gdk2-drawing-utils.h"
|
||||
|
||||
/**
|
||||
* The floating rectangle. This is a GtkWindow, and it contains
|
||||
* the "label" widget, below.
|
||||
@@ -52,7 +50,6 @@ static int screen_right_edge = 0;
|
||||
*/
|
||||
static int screen_bottom_edge = 0;
|
||||
|
||||
#ifdef USE_GTK3
|
||||
static gboolean
|
||||
draw_handler (GtkWidget *tooltips,
|
||||
cairo_t *cr,
|
||||
@@ -68,21 +65,6 @@ draw_handler (GtkWidget *tooltips,
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
#else /* !USE_GTK3 */
|
||||
static gint
|
||||
expose_handler (GtkWidget *tooltips,
|
||||
GdkEventExpose *event,
|
||||
gpointer user_data)
|
||||
{
|
||||
gtk_paint_flat_box (gtk_widget_get_style (tip),
|
||||
gtk_widget_get_window (tip),
|
||||
GTK_STATE_NORMAL, GTK_SHADOW_OUT,
|
||||
NULL, tip, "tooltip",
|
||||
0, 0, -1, -1);
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
#endif /* !USE_GTK3 */
|
||||
|
||||
void
|
||||
meta_fixed_tip_show (Display *xdisplay, int screen_number,
|
||||
@@ -116,13 +98,8 @@ meta_fixed_tip_show (Display *xdisplay, int screen_number,
|
||||
gtk_widget_set_name (tip, "gtk-tooltips");
|
||||
gtk_container_set_border_width (GTK_CONTAINER (tip), 4);
|
||||
|
||||
#ifdef USE_GTK3
|
||||
g_signal_connect (tip, "draw",
|
||||
G_CALLBACK (draw_handler), NULL);
|
||||
#else
|
||||
g_signal_connect (tip, "expose_event",
|
||||
G_CALLBACK (expose_handler), NULL);
|
||||
#endif
|
||||
|
||||
label = gtk_label_new (NULL);
|
||||
gtk_label_set_line_wrap (GTK_LABEL (label), TRUE);
|
||||
|
166
src/ui/frames.c
166
src/ui/frames.c
@@ -35,10 +35,6 @@
|
||||
#include "prefs.h"
|
||||
#include "ui.h"
|
||||
|
||||
#include "gdk2-drawing-utils.h"
|
||||
#include "gtk-compat.h"
|
||||
#include "gdk-compat.h"
|
||||
|
||||
#include <cairo-xlib.h>
|
||||
|
||||
#ifdef HAVE_SHAPE
|
||||
@@ -47,11 +43,7 @@
|
||||
|
||||
#define DEFAULT_INNER_BUTTON_BORDER 3
|
||||
|
||||
#ifdef USE_GTK3
|
||||
static void meta_frames_destroy (GtkWidget *object);
|
||||
#else
|
||||
static void meta_frames_destroy (GtkObject *object);
|
||||
#endif
|
||||
static void meta_frames_finalize (GObject *object);
|
||||
static void meta_frames_style_set (GtkWidget *widget,
|
||||
GtkStyle *prev_style);
|
||||
@@ -69,13 +61,8 @@ static gboolean meta_frames_motion_notify_event (GtkWidget *widget,
|
||||
GdkEventMotion *event);
|
||||
static gboolean meta_frames_destroy_event (GtkWidget *widget,
|
||||
GdkEventAny *event);
|
||||
#ifdef USE_GTK3
|
||||
static gboolean meta_frames_draw (GtkWidget *widget,
|
||||
cairo_t *cr);
|
||||
#else
|
||||
static gboolean meta_frames_expose_event (GtkWidget *widget,
|
||||
GdkEventExpose *event);
|
||||
#endif
|
||||
static gboolean meta_frames_enter_notify_event (GtkWidget *widget,
|
||||
GdkEventCrossing *event);
|
||||
static gboolean meta_frames_leave_notify_event (GtkWidget *widget,
|
||||
@@ -148,22 +135,14 @@ meta_frames_class_init (MetaFramesClass *class)
|
||||
gobject_class->constructor = meta_frames_constructor;
|
||||
gobject_class->finalize = meta_frames_finalize;
|
||||
|
||||
#ifdef USE_GTK3
|
||||
widget_class->destroy = meta_frames_destroy;
|
||||
#else
|
||||
GTK_OBJECT_CLASS (class)->destroy = meta_frames_destroy;
|
||||
#endif
|
||||
|
||||
widget_class->style_set = meta_frames_style_set;
|
||||
|
||||
widget_class->map = meta_frames_map;
|
||||
widget_class->unmap = meta_frames_unmap;
|
||||
|
||||
#ifdef USE_GTK3
|
||||
widget_class->draw = meta_frames_draw;
|
||||
#else
|
||||
widget_class->expose_event = meta_frames_expose_event;
|
||||
#endif
|
||||
widget_class->destroy_event = meta_frames_destroy_event;
|
||||
widget_class->button_press_event = meta_frames_button_press_event;
|
||||
widget_class->button_release_event = meta_frames_button_release_event;
|
||||
@@ -238,13 +217,8 @@ listify_func (gpointer key, gpointer value, gpointer data)
|
||||
*listp = g_slist_prepend (*listp, value);
|
||||
}
|
||||
|
||||
#ifdef USE_GTK3
|
||||
static void
|
||||
meta_frames_destroy (GtkWidget *object)
|
||||
#else
|
||||
static void
|
||||
meta_frames_destroy (GtkObject *object)
|
||||
#endif
|
||||
{
|
||||
GSList *winlist;
|
||||
GSList *tmp;
|
||||
@@ -268,11 +242,7 @@ meta_frames_destroy (GtkObject *object)
|
||||
}
|
||||
g_slist_free (winlist);
|
||||
|
||||
#ifdef USE_GTK3
|
||||
GTK_WIDGET_CLASS (meta_frames_parent_class)->destroy (object);
|
||||
#else
|
||||
GTK_OBJECT_CLASS (meta_frames_parent_class)->destroy (object);
|
||||
#endif
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -300,7 +270,7 @@ meta_frames_finalize (GObject *object)
|
||||
typedef struct
|
||||
{
|
||||
cairo_rectangle_int_t rect;
|
||||
MetaPixmap *pixmap;
|
||||
cairo_surface_t *pixmap;
|
||||
} CachedFramePiece;
|
||||
|
||||
typedef struct
|
||||
@@ -337,7 +307,7 @@ invalidate_cache (MetaFrames *frames,
|
||||
|
||||
for (i = 0; i < 4; i++)
|
||||
if (pixels->piece[i].pixmap)
|
||||
meta_pixmap_free (pixels->piece[i].pixmap);
|
||||
cairo_surface_destroy (pixels->piece[i].pixmap);
|
||||
|
||||
g_free (pixels);
|
||||
g_hash_table_remove (frames->cache, frame);
|
||||
@@ -2036,53 +2006,6 @@ meta_frames_destroy_event (GtkWidget *widget,
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
#if !GTK_CHECK_VERSION(2,21,6)
|
||||
/* Copied from GDK */
|
||||
static cairo_surface_t *
|
||||
_gdk_drawable_ref_cairo_surface (GdkDrawable *drawable)
|
||||
{
|
||||
g_return_val_if_fail (GDK_IS_DRAWABLE (drawable), NULL);
|
||||
|
||||
return GDK_DRAWABLE_GET_CLASS (drawable)->ref_cairo_surface (drawable);
|
||||
}
|
||||
|
||||
static cairo_pattern_t *
|
||||
gdk_window_get_background_pattern (GdkWindow *window)
|
||||
{
|
||||
GdkWindowObject *private = (GdkWindowObject *) window;
|
||||
cairo_pattern_t *pattern;
|
||||
|
||||
g_return_val_if_fail (GDK_IS_WINDOW (window), NULL);
|
||||
|
||||
if (private->bg_pixmap == GDK_PARENT_RELATIVE_BG)
|
||||
pattern = NULL;
|
||||
else if (private->bg_pixmap != GDK_NO_BG &&
|
||||
private->bg_pixmap != NULL)
|
||||
{
|
||||
static cairo_user_data_key_t key;
|
||||
cairo_surface_t *surface;
|
||||
|
||||
surface = _gdk_drawable_ref_cairo_surface (private->bg_pixmap);
|
||||
pattern = cairo_pattern_create_for_surface (surface);
|
||||
cairo_surface_destroy (surface);
|
||||
|
||||
cairo_pattern_set_extend (pattern, CAIRO_EXTEND_REPEAT);
|
||||
cairo_pattern_set_user_data (pattern,
|
||||
&key,
|
||||
g_object_ref (private->bg_pixmap),
|
||||
g_object_unref);
|
||||
}
|
||||
else
|
||||
{
|
||||
pattern =
|
||||
cairo_pattern_create_rgb (private->bg_color.red / 65535.,
|
||||
private->bg_color.green / 65535.,
|
||||
private->bg_color.blue / 65535.);
|
||||
}
|
||||
|
||||
return pattern;
|
||||
}
|
||||
#endif
|
||||
|
||||
static void
|
||||
setup_bg_cr (cairo_t *cr, GdkWindow *window, int x_offset, int y_offset)
|
||||
@@ -2109,22 +2032,23 @@ setup_bg_cr (cairo_t *cr, GdkWindow *window, int x_offset, int y_offset)
|
||||
/* Returns a pixmap with a piece of the windows frame painted on it.
|
||||
*/
|
||||
|
||||
static MetaPixmap *
|
||||
static cairo_surface_t *
|
||||
generate_pixmap (MetaFrames *frames,
|
||||
MetaUIFrame *frame,
|
||||
cairo_rectangle_int_t *rect)
|
||||
{
|
||||
MetaPixmap *result;
|
||||
cairo_surface_t *result;
|
||||
cairo_t *cr;
|
||||
|
||||
/* do not create a pixmap for nonexisting areas */
|
||||
if (rect->width <= 0 || rect->height <= 0)
|
||||
return NULL;
|
||||
|
||||
result = meta_pixmap_new (frame->window,
|
||||
rect->width, rect->height);
|
||||
result = gdk_window_create_similar_surface (frame->window,
|
||||
CAIRO_CONTENT_COLOR,
|
||||
rect->width, rect->height);
|
||||
|
||||
cr = meta_pixmap_cairo_create (result);
|
||||
cr = cairo_create (result);
|
||||
cairo_translate (cr, -rect->x, -rect->y);
|
||||
|
||||
setup_bg_cr (cr, frame->window, 0, 0);
|
||||
@@ -2295,8 +2219,8 @@ cached_pixels_draw (CachedPixels *pixels,
|
||||
|
||||
if (piece->pixmap)
|
||||
{
|
||||
meta_cairo_set_source_pixmap (cr, piece->pixmap,
|
||||
piece->rect.x, piece->rect.y);
|
||||
cairo_set_source_surface (cr, piece->pixmap,
|
||||
piece->rect.x, piece->rect.y);
|
||||
cairo_paint (cr);
|
||||
|
||||
region_piece = cairo_region_create_rectangle (&piece->rect);
|
||||
@@ -2306,7 +2230,6 @@ cached_pixels_draw (CachedPixels *pixels,
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef USE_GTK3
|
||||
static gboolean
|
||||
meta_frames_draw (GtkWidget *widget,
|
||||
cairo_t *cr)
|
||||
@@ -2373,75 +2296,6 @@ meta_frames_draw (GtkWidget *widget,
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
#else /* !USE_GTK3 */
|
||||
static gboolean
|
||||
meta_frames_expose_event (GtkWidget *widget,
|
||||
GdkEventExpose *event)
|
||||
{
|
||||
MetaUIFrame *frame;
|
||||
MetaFrames *frames;
|
||||
CachedPixels *pixels;
|
||||
cairo_region_t *region;
|
||||
int i, n_areas;
|
||||
GdkRectangle *event_rectangles;
|
||||
int n_event_rectangles;
|
||||
cairo_t *cr;
|
||||
|
||||
frames = META_FRAMES (widget);
|
||||
|
||||
frame = meta_frames_lookup_window (frames, GDK_WINDOW_XID (event->window));
|
||||
if (frame == NULL)
|
||||
return FALSE;
|
||||
|
||||
if (frames->expose_delay_count > 0)
|
||||
{
|
||||
/* Redraw this entire frame later */
|
||||
frame->expose_delayed = TRUE;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
populate_cache (frames, frame);
|
||||
|
||||
/* Count on GdkRectangle and cairo_rectangle_int_t being identical */
|
||||
gdk_region_get_rectangles (event->region, &event_rectangles, &n_event_rectangles);
|
||||
region = cairo_region_create_rectangles ((cairo_rectangle_int_t *)event_rectangles,
|
||||
n_event_rectangles);
|
||||
g_free (event_rectangles);
|
||||
|
||||
pixels = get_cache (frames, frame);
|
||||
|
||||
cr = gdk_cairo_create (event->window);
|
||||
cached_pixels_draw (pixels, cr, region);
|
||||
cairo_destroy (cr);
|
||||
|
||||
clip_to_screen (region, frame);
|
||||
subtract_client_area (region, frame);
|
||||
|
||||
n_areas = cairo_region_num_rectangles (region);
|
||||
|
||||
for (i = 0; i < n_areas; i++)
|
||||
{
|
||||
GdkRectangle area;
|
||||
|
||||
/* Count on GdkRectangle and cairo_rectangle_int_t being identical */
|
||||
cairo_region_get_rectangle (region, i, (cairo_rectangle_int_t *)&area);
|
||||
|
||||
gdk_window_begin_paint_rect (event->window, &area);
|
||||
cr = gdk_cairo_create (event->window);
|
||||
/* no need to clip, begin_paint_region ensures the pixmap
|
||||
* is only as big as the rect we use. */
|
||||
|
||||
meta_frames_paint (frames, frame, cr);
|
||||
|
||||
cairo_destroy (cr);
|
||||
gdk_window_end_paint (event->window);
|
||||
}
|
||||
|
||||
cairo_region_destroy (region);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
#endif /* !USE_GTK3 */
|
||||
|
||||
static void
|
||||
meta_frames_paint (MetaFrames *frames,
|
||||
|
@@ -33,8 +33,6 @@
|
||||
#include "metaaccellabel.h"
|
||||
#include "ui.h"
|
||||
|
||||
#include "gdk-compat.h"
|
||||
|
||||
typedef struct _MenuItem MenuItem;
|
||||
typedef struct _MenuData MenuData;
|
||||
|
||||
|
@@ -37,24 +37,12 @@
|
||||
#include <string.h>
|
||||
#include "util.h"
|
||||
|
||||
#include "gtk-compat.h"
|
||||
#include "gdk2-drawing-utils.h"
|
||||
|
||||
#ifdef USE_GTK3
|
||||
static void meta_accel_label_destroy (GtkWidget *object);
|
||||
#else
|
||||
static void meta_accel_label_destroy (GtkObject *object);
|
||||
#endif
|
||||
static void meta_accel_label_finalize (GObject *object);
|
||||
static void meta_accel_label_size_request (GtkWidget *widget,
|
||||
GtkRequisition *requisition);
|
||||
#ifdef USE_GTK3
|
||||
static gboolean meta_accel_label_draw (GtkWidget *widget,
|
||||
cairo_t *cr);
|
||||
#else
|
||||
static gboolean meta_accel_label_expose_event (GtkWidget *widget,
|
||||
GdkEventExpose *event);
|
||||
#endif
|
||||
|
||||
static void meta_accel_label_update (MetaAccelLabel *accel_label);
|
||||
static int meta_accel_label_get_accel_width (MetaAccelLabel *accel_label);
|
||||
@@ -69,18 +57,10 @@ meta_accel_label_class_init (MetaAccelLabelClass *class)
|
||||
|
||||
gobject_class->finalize = meta_accel_label_finalize;
|
||||
|
||||
#ifdef USE_GTK3
|
||||
widget_class->destroy = meta_accel_label_destroy;
|
||||
#else
|
||||
GTK_OBJECT_CLASS (class)->destroy = meta_accel_label_destroy;
|
||||
#endif
|
||||
|
||||
widget_class->size_request = meta_accel_label_size_request;
|
||||
#ifdef USE_GTK3
|
||||
widget_class->draw = meta_accel_label_draw;
|
||||
#else
|
||||
widget_class->expose_event = meta_accel_label_expose_event;
|
||||
#endif
|
||||
|
||||
class->signal_quote1 = g_strdup ("<:");
|
||||
class->signal_quote2 = g_strdup (":>");
|
||||
@@ -173,13 +153,8 @@ meta_accel_label_new_with_mnemonic (const gchar *string)
|
||||
return GTK_WIDGET (accel_label);
|
||||
}
|
||||
|
||||
#ifdef USE_GTK3
|
||||
static void
|
||||
meta_accel_label_destroy (GtkWidget *object)
|
||||
#else
|
||||
static void
|
||||
meta_accel_label_destroy (GtkObject *object)
|
||||
#endif
|
||||
{
|
||||
MetaAccelLabel *accel_label = META_ACCEL_LABEL (object);
|
||||
|
||||
@@ -190,11 +165,7 @@ meta_accel_label_destroy (GtkObject *object)
|
||||
accel_label->accel_mods = 0;
|
||||
accel_label->accel_key = 0;
|
||||
|
||||
#ifdef USE_GTK3
|
||||
GTK_WIDGET_CLASS (meta_accel_label_parent_class)->destroy (object);
|
||||
#else
|
||||
GTK_OBJECT_CLASS (meta_accel_label_parent_class)->destroy (object);
|
||||
#endif
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -251,7 +222,6 @@ meta_accel_label_size_request (GtkWidget *widget,
|
||||
g_object_unref (G_OBJECT (layout));
|
||||
}
|
||||
|
||||
#ifdef USE_GTK3
|
||||
/* Mostly taken from GTK3. */
|
||||
static gboolean
|
||||
meta_accel_label_draw (GtkWidget *widget,
|
||||
@@ -338,89 +308,6 @@ meta_accel_label_draw (GtkWidget *widget,
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
#else /* !USE_GTK3 */
|
||||
static gboolean
|
||||
meta_accel_label_expose_event (GtkWidget *widget,
|
||||
GdkEventExpose *event)
|
||||
{
|
||||
MetaAccelLabel *accel_label = META_ACCEL_LABEL (widget);
|
||||
GtkMisc *misc = GTK_MISC (accel_label);
|
||||
PangoLayout *layout;
|
||||
|
||||
if (gtk_widget_is_drawable (GTK_WIDGET (accel_label)))
|
||||
{
|
||||
GtkAllocation allocation;
|
||||
GtkRequisition requisition;
|
||||
int ac_width;
|
||||
|
||||
gtk_widget_get_allocation (widget, &allocation);
|
||||
gtk_widget_get_requisition (widget, &requisition);
|
||||
ac_width = meta_accel_label_get_accel_width (accel_label);
|
||||
|
||||
if (allocation.width >= requisition.width + ac_width)
|
||||
{
|
||||
GtkTextDirection direction = gtk_widget_get_direction (widget);
|
||||
gfloat xalign, yalign;
|
||||
gint x, y;
|
||||
gint xpad, ypad;
|
||||
|
||||
gtk_misc_get_padding (misc, &xpad, &ypad);
|
||||
gtk_misc_get_alignment (misc, &xalign, &yalign);
|
||||
|
||||
if (direction == GTK_TEXT_DIR_RTL)
|
||||
{
|
||||
allocation.x += ac_width;
|
||||
}
|
||||
allocation.width -= ac_width;
|
||||
gtk_widget_set_allocation (widget, &allocation);
|
||||
|
||||
if (GTK_WIDGET_CLASS (meta_accel_label_parent_class)->expose_event)
|
||||
GTK_WIDGET_CLASS (meta_accel_label_parent_class)->expose_event (widget, event);
|
||||
|
||||
if (direction == GTK_TEXT_DIR_RTL)
|
||||
{
|
||||
allocation.x -= ac_width;
|
||||
}
|
||||
allocation.width += ac_width;
|
||||
gtk_widget_set_allocation (widget, &allocation);
|
||||
|
||||
if (direction == GTK_TEXT_DIR_RTL)
|
||||
{
|
||||
x = allocation.x + xpad;
|
||||
}
|
||||
else
|
||||
{
|
||||
x = allocation.x + allocation.width - xpad - ac_width;
|
||||
}
|
||||
|
||||
y = (allocation.y * (1.0 - yalign) +
|
||||
(allocation.y + allocation.height -
|
||||
(requisition.height - ypad * 2)) * yalign) + 1.5;
|
||||
|
||||
layout = gtk_widget_create_pango_layout (widget, accel_label->accel_string);
|
||||
|
||||
gtk_paint_layout (gtk_widget_get_style (widget),
|
||||
gtk_widget_get_window (widget),
|
||||
gtk_widget_get_state (widget),
|
||||
FALSE,
|
||||
&event->area,
|
||||
widget,
|
||||
"accellabel",
|
||||
x, y,
|
||||
layout);
|
||||
|
||||
g_object_unref (G_OBJECT (layout));
|
||||
}
|
||||
else
|
||||
{
|
||||
if (GTK_WIDGET_CLASS (meta_accel_label_parent_class)->expose_event)
|
||||
GTK_WIDGET_CLASS (meta_accel_label_parent_class)->expose_event (widget, event);
|
||||
}
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
#endif /* !USE_GTK3 */
|
||||
|
||||
static void
|
||||
meta_accel_label_update (MetaAccelLabel *accel_label)
|
||||
|
@@ -28,19 +28,12 @@
|
||||
#include <gtk/gtk.h>
|
||||
#include "preview-widget.h"
|
||||
|
||||
#include "gdk2-drawing-utils.h"
|
||||
|
||||
static void meta_preview_size_request (GtkWidget *widget,
|
||||
GtkRequisition *req);
|
||||
static void meta_preview_size_allocate (GtkWidget *widget,
|
||||
GtkAllocation *allocation);
|
||||
#ifdef USE_GTK3
|
||||
static gboolean meta_preview_draw (GtkWidget *widget,
|
||||
cairo_t *cr);
|
||||
#else
|
||||
static gboolean meta_preview_expose (GtkWidget *widget,
|
||||
GdkEventExpose *event);
|
||||
#endif
|
||||
static void meta_preview_finalize (GObject *object);
|
||||
|
||||
G_DEFINE_TYPE (MetaPreview, meta_preview, GTK_TYPE_BIN);
|
||||
@@ -55,11 +48,7 @@ meta_preview_class_init (MetaPreviewClass *class)
|
||||
|
||||
gobject_class->finalize = meta_preview_finalize;
|
||||
|
||||
#ifdef USE_GTK3
|
||||
widget_class->draw = meta_preview_draw;
|
||||
#else
|
||||
widget_class->expose_event = meta_preview_expose;
|
||||
#endif
|
||||
widget_class->size_request = meta_preview_size_request;
|
||||
widget_class->size_allocate = meta_preview_size_allocate;
|
||||
}
|
||||
@@ -194,7 +183,6 @@ ensure_info (MetaPreview *preview)
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef USE_GTK3
|
||||
static gboolean
|
||||
meta_preview_draw (GtkWidget *widget,
|
||||
cairo_t *cr)
|
||||
@@ -203,21 +191,6 @@ meta_preview_draw (GtkWidget *widget,
|
||||
GtkAllocation allocation;
|
||||
|
||||
gtk_widget_get_allocation (widget, &allocation);
|
||||
#else
|
||||
static gboolean
|
||||
meta_preview_expose (GtkWidget *widget,
|
||||
GdkEventExpose *event)
|
||||
{
|
||||
cairo_t *cr = meta_cairo_create (gtk_widget_get_window (widget));
|
||||
MetaPreview *preview = META_PREVIEW (widget);
|
||||
GtkAllocation allocation;
|
||||
|
||||
gdk_cairo_region (cr, event->region);
|
||||
cairo_clip (cr);
|
||||
|
||||
gtk_widget_get_allocation (widget, &allocation);
|
||||
cairo_translate (cr, allocation.x, allocation.y);
|
||||
#endif
|
||||
|
||||
if (preview->theme)
|
||||
{
|
||||
@@ -262,15 +235,8 @@ meta_preview_expose (GtkWidget *widget,
|
||||
cairo_restore (cr);
|
||||
}
|
||||
|
||||
#ifdef USE_GTK3
|
||||
/* draw child */
|
||||
return GTK_WIDGET_CLASS (meta_preview_parent_class)->draw (widget, cr);
|
||||
#else
|
||||
cairo_destroy (cr);
|
||||
|
||||
/* draw child */
|
||||
return GTK_WIDGET_CLASS (meta_preview_parent_class)->expose_event (widget, event);
|
||||
#endif
|
||||
}
|
||||
|
||||
static void
|
||||
|
@@ -26,7 +26,6 @@
|
||||
#include "util.h"
|
||||
#include <gtk/gtk.h>
|
||||
#include <gdk/gdkx.h>
|
||||
#include "gtk-compat.h"
|
||||
|
||||
struct _MetaResizePopup
|
||||
{
|
||||
|
@@ -36,9 +36,6 @@
|
||||
#include <gtk/gtk.h>
|
||||
#include <math.h>
|
||||
|
||||
#include "gtk-compat.h"
|
||||
#include "gdk2-drawing-utils.h"
|
||||
|
||||
#define OUTSIDE_SELECT_RECT 2
|
||||
#define INSIDE_SELECT_RECT 2
|
||||
|
||||
@@ -74,21 +71,11 @@ static GtkWidget* selectable_workspace_new (MetaWorkspace *workspace);
|
||||
static void select_workspace (GtkWidget *widget);
|
||||
static void unselect_workspace (GtkWidget *widget);
|
||||
|
||||
#ifdef USE_GTK3
|
||||
static gboolean
|
||||
outline_window_draw (GtkWidget *widget,
|
||||
cairo_t *cr,
|
||||
gpointer data)
|
||||
{
|
||||
#else /* !USE_GTK3 */
|
||||
static gboolean
|
||||
outline_window_expose (GtkWidget *widget,
|
||||
GdkEventExpose *event,
|
||||
gpointer data)
|
||||
{
|
||||
cairo_t *cr = gdk_cairo_create (event->window);
|
||||
#endif /* !USE_GTK3 */
|
||||
|
||||
MetaTabPopup *popup;
|
||||
TabEntry *te;
|
||||
GtkStyle *style;
|
||||
@@ -116,10 +103,6 @@ outline_window_expose (GtkWidget *widget,
|
||||
te->inner_rect.height + 1);
|
||||
cairo_stroke (cr);
|
||||
|
||||
#ifndef USE_GTK3
|
||||
cairo_destroy (cr);
|
||||
#endif
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
@@ -260,13 +243,8 @@ meta_ui_tab_popup_new (const MetaTabEntry *entries,
|
||||
gtk_widget_set_app_paintable (popup->outline_window, TRUE);
|
||||
gtk_widget_realize (popup->outline_window);
|
||||
|
||||
#ifdef USE_GTK3
|
||||
g_signal_connect (G_OBJECT (popup->outline_window), "draw",
|
||||
G_CALLBACK (outline_window_draw), popup);
|
||||
#else
|
||||
g_signal_connect (G_OBJECT (popup->outline_window), "expose_event",
|
||||
G_CALLBACK (outline_window_expose), popup);
|
||||
#endif
|
||||
|
||||
popup->window = gtk_window_new (GTK_WINDOW_POPUP);
|
||||
|
||||
@@ -499,6 +477,9 @@ display_entry (MetaTabPopup *popup,
|
||||
|
||||
if (popup->outline)
|
||||
{
|
||||
cairo_region_t *region;
|
||||
cairo_region_t *inner_region;
|
||||
|
||||
window = gtk_widget_get_window (popup->outline_window);
|
||||
|
||||
/* Do stuff behind gtk's back */
|
||||
@@ -516,40 +497,20 @@ display_entry (MetaTabPopup *popup,
|
||||
|
||||
gdk_window_set_background (window,
|
||||
>k_widget_get_style (popup->outline_window)->black);
|
||||
|
||||
#if GTK_CHECK_VERSION (2, 90, 8) /* gtk3 */
|
||||
{
|
||||
cairo_region_t *region;
|
||||
cairo_region_t *inner_region;
|
||||
|
||||
region = cairo_region_create_rectangle (&rect);
|
||||
inner_region = cairo_region_create_rectangle (&te->inner_rect);
|
||||
cairo_region_subtract (region, inner_region);
|
||||
cairo_region_destroy (inner_region);
|
||||
|
||||
gdk_window_shape_combine_region (window,
|
||||
region,
|
||||
0, 0);
|
||||
|
||||
cairo_region_destroy (region);
|
||||
}
|
||||
#else /* gtk2 */
|
||||
{
|
||||
GdkRegion *region;
|
||||
GdkRegion *inner_region;
|
||||
region = cairo_region_create_rectangle (&rect);
|
||||
inner_region = cairo_region_create_rectangle (&te->inner_rect);
|
||||
cairo_region_subtract (region, inner_region);
|
||||
cairo_region_destroy (inner_region);
|
||||
|
||||
region = gdk_region_rectangle (&rect);
|
||||
inner_region = gdk_region_rectangle (&te->inner_rect);
|
||||
gdk_region_subtract (region, inner_region);
|
||||
gdk_region_destroy (inner_region);
|
||||
gdk_window_shape_combine_region (window,
|
||||
region,
|
||||
0, 0);
|
||||
|
||||
gdk_window_shape_combine_region (window,
|
||||
region,
|
||||
0, 0);
|
||||
|
||||
gdk_region_destroy (region);
|
||||
}
|
||||
#endif /* gtk2 */
|
||||
cairo_region_destroy (region);
|
||||
|
||||
|
||||
/* This should piss off gtk a bit, but we don't want to raise
|
||||
* above the tab popup. So, instead of calling gtk_widget_show,
|
||||
@@ -693,13 +654,8 @@ unselect_image (GtkWidget *widget)
|
||||
}
|
||||
|
||||
static void meta_select_image_class_init (MetaSelectImageClass *klass);
|
||||
#if USE_GTK3
|
||||
static gboolean meta_select_image_draw (GtkWidget *widget,
|
||||
cairo_t *cr);
|
||||
#else
|
||||
static gboolean meta_select_image_expose_event (GtkWidget *widget,
|
||||
GdkEventExpose *event);
|
||||
#endif
|
||||
|
||||
static GtkImageClass *parent_class;
|
||||
|
||||
@@ -738,14 +694,9 @@ meta_select_image_class_init (MetaSelectImageClass *klass)
|
||||
|
||||
widget_class = GTK_WIDGET_CLASS (klass);
|
||||
|
||||
#if USE_GTK3
|
||||
widget_class->draw = meta_select_image_draw;
|
||||
#else
|
||||
widget_class->expose_event = meta_select_image_expose_event;
|
||||
#endif
|
||||
}
|
||||
|
||||
#if USE_GTK3
|
||||
static gboolean
|
||||
meta_select_image_draw (GtkWidget *widget,
|
||||
cairo_t *cr)
|
||||
@@ -753,19 +704,6 @@ meta_select_image_draw (GtkWidget *widget,
|
||||
GtkAllocation allocation;
|
||||
|
||||
gtk_widget_get_allocation (widget, &allocation);
|
||||
#else /* !USE_GTK3 */
|
||||
static gboolean
|
||||
meta_select_image_expose_event (GtkWidget *widget,
|
||||
GdkEventExpose *event)
|
||||
{
|
||||
GtkAllocation allocation;
|
||||
cairo_t *cr = gdk_cairo_create (event->window);
|
||||
|
||||
gdk_cairo_region (cr, event->region);
|
||||
cairo_clip (cr);
|
||||
gtk_widget_get_allocation (widget, &allocation);
|
||||
cairo_translate (cr, allocation.x, allocation.y);
|
||||
#endif
|
||||
|
||||
if (META_SELECT_IMAGE (widget)->selected)
|
||||
{
|
||||
@@ -806,13 +744,7 @@ meta_select_image_expose_event (GtkWidget *widget,
|
||||
cairo_set_line_width (cr, 1.0);
|
||||
}
|
||||
|
||||
#ifdef USE_GTK3
|
||||
return GTK_WIDGET_CLASS (parent_class)->draw (widget, cr);
|
||||
#else
|
||||
cairo_destroy (cr);
|
||||
|
||||
return GTK_WIDGET_CLASS (parent_class)->expose_event (widget, event);
|
||||
#endif /* !USE_GTK3 */
|
||||
}
|
||||
|
||||
#define META_TYPE_SELECT_WORKSPACE (meta_select_workspace_get_type ())
|
||||
@@ -876,13 +808,8 @@ unselect_workspace (GtkWidget *widget)
|
||||
|
||||
static void meta_select_workspace_class_init (MetaSelectWorkspaceClass *klass);
|
||||
|
||||
#if USE_GTK3
|
||||
static gboolean meta_select_workspace_draw (GtkWidget *widget,
|
||||
cairo_t *cr);
|
||||
#else
|
||||
static gboolean meta_select_workspace_expose_event (GtkWidget *widget,
|
||||
GdkEventExpose *event);
|
||||
#endif
|
||||
|
||||
GType
|
||||
meta_select_workspace_get_type (void)
|
||||
@@ -920,11 +847,7 @@ meta_select_workspace_class_init (MetaSelectWorkspaceClass *klass)
|
||||
|
||||
widget_class = GTK_WIDGET_CLASS (klass);
|
||||
|
||||
#if USE_GTK3
|
||||
widget_class->draw = meta_select_workspace_draw;
|
||||
#else
|
||||
widget_class->expose_event = meta_select_workspace_expose_event;
|
||||
#endif
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -961,18 +884,10 @@ meta_convert_meta_to_wnck (MetaWindow *window, MetaScreen *screen)
|
||||
}
|
||||
|
||||
|
||||
#ifdef USE_GTK3
|
||||
static gboolean
|
||||
meta_select_workspace_draw (GtkWidget *widget,
|
||||
cairo_t *cr)
|
||||
{
|
||||
#else /* !USE_GTK3 */
|
||||
static gboolean
|
||||
meta_select_workspace_expose_event (GtkWidget *widget,
|
||||
GdkEventExpose *event)
|
||||
{
|
||||
cairo_t *cr = gdk_cairo_create (event->window);
|
||||
#endif /* !USE_GTK3 */
|
||||
MetaWorkspace *workspace;
|
||||
WnckWindowDisplayInfo *windows;
|
||||
GtkAllocation allocation;
|
||||
@@ -1047,9 +962,5 @@ meta_select_workspace_expose_event (GtkWidget *widget,
|
||||
cairo_stroke (cr);
|
||||
}
|
||||
|
||||
#ifndef USE_GTK3
|
||||
cairo_destroy (cr);
|
||||
#endif
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
@@ -34,8 +34,6 @@
|
||||
#define _(x) dgettext (GETTEXT_PACKAGE, x)
|
||||
#define N_(x) x
|
||||
|
||||
#include "gdk2-drawing-utils.h"
|
||||
|
||||
/* We need to compute all different button arrangements
|
||||
* in terms of button location. We don't care about
|
||||
* different arrangements in terms of button function.
|
||||
@@ -942,7 +940,7 @@ static void
|
||||
run_theme_benchmark (void)
|
||||
{
|
||||
GtkWidget* widget;
|
||||
MetaPixmap *pixmap;
|
||||
cairo_surface_t *pixmap;
|
||||
int top_height, bottom_height, left_width, right_width;
|
||||
MetaButtonState button_states[META_BUTTON_TYPE_LAST] =
|
||||
{
|
||||
@@ -1006,11 +1004,12 @@ run_theme_benchmark (void)
|
||||
/* Creating the pixmap in the loop is right, since
|
||||
* GDK does the same with its double buffering.
|
||||
*/
|
||||
pixmap = meta_pixmap_new (gtk_widget_get_window (widget),
|
||||
client_width + left_width + right_width,
|
||||
client_height + top_height + bottom_height);
|
||||
pixmap = gdk_window_create_similar_surface (gtk_widget_get_window (widget),
|
||||
CAIRO_CONTENT_COLOR,
|
||||
client_width + left_width + right_width,
|
||||
client_height + top_height + bottom_height);
|
||||
|
||||
cr = meta_pixmap_cairo_create (pixmap);
|
||||
cr = cairo_create (pixmap);
|
||||
|
||||
meta_theme_draw_frame (global_theme,
|
||||
widget,
|
||||
@@ -1026,7 +1025,7 @@ run_theme_benchmark (void)
|
||||
meta_preview_get_icon ());
|
||||
|
||||
cairo_destroy (cr);
|
||||
meta_pixmap_free (pixmap);
|
||||
cairo_surface_destroy (pixmap);
|
||||
|
||||
++i;
|
||||
client_width += inc;
|
||||
|
@@ -61,10 +61,6 @@
|
||||
#include <stdlib.h>
|
||||
#include <math.h>
|
||||
|
||||
#include "gtk-compat.h"
|
||||
#include "gdk-compat.h"
|
||||
#include "gdk2-drawing-utils.h"
|
||||
|
||||
#define GDK_COLOR_RGBA(color) \
|
||||
((guint32) (0xff | \
|
||||
(((color).red / 256) << 24) | \
|
||||
@@ -3712,7 +3708,7 @@ meta_draw_op_draw_with_env (const MetaDrawOp *op,
|
||||
rwidth = parse_size_unchecked (op->data.gtk_arrow.width, env);
|
||||
rheight = parse_size_unchecked (op->data.gtk_arrow.height, env);
|
||||
|
||||
meta_paint_arrow (style_gtk,
|
||||
gtk_paint_arrow (style_gtk,
|
||||
cr,
|
||||
op->data.gtk_arrow.state,
|
||||
op->data.gtk_arrow.shadow,
|
||||
@@ -3733,7 +3729,7 @@ meta_draw_op_draw_with_env (const MetaDrawOp *op,
|
||||
rwidth = parse_size_unchecked (op->data.gtk_box.width, env);
|
||||
rheight = parse_size_unchecked (op->data.gtk_box.height, env);
|
||||
|
||||
meta_paint_box (style_gtk,
|
||||
gtk_paint_box (style_gtk,
|
||||
cr,
|
||||
op->data.gtk_box.state,
|
||||
op->data.gtk_box.shadow,
|
||||
@@ -3751,7 +3747,7 @@ meta_draw_op_draw_with_env (const MetaDrawOp *op,
|
||||
ry1 = parse_y_position_unchecked (op->data.gtk_vline.y1, env);
|
||||
ry2 = parse_y_position_unchecked (op->data.gtk_vline.y2, env);
|
||||
|
||||
meta_paint_vline (style_gtk,
|
||||
gtk_paint_vline (style_gtk,
|
||||
cr,
|
||||
op->data.gtk_vline.state,
|
||||
widget,
|
||||
|
@@ -29,8 +29,6 @@
|
||||
#include "tile-preview.h"
|
||||
#include "core.h"
|
||||
|
||||
#include "gdk2-drawing-utils.h"
|
||||
|
||||
#define OUTLINE_WIDTH 5 /* frame width in non-composite case */
|
||||
|
||||
|
||||
@@ -46,20 +44,11 @@ struct _MetaTilePreview {
|
||||
gboolean has_alpha: 1;
|
||||
};
|
||||
|
||||
#ifdef USE_GTK3
|
||||
static gboolean
|
||||
meta_tile_preview_draw (GtkWidget *widget,
|
||||
cairo_t *cr,
|
||||
gpointer user_data)
|
||||
{
|
||||
#else
|
||||
static gboolean
|
||||
meta_tile_preview_expose (GtkWidget *widget,
|
||||
GdkEventExpose *event,
|
||||
gpointer user_data)
|
||||
{
|
||||
cairo_t *cr = gdk_cairo_create (event->window);
|
||||
#endif
|
||||
MetaTilePreview *preview = user_data;
|
||||
|
||||
cairo_set_line_width (cr, 1.0);
|
||||
@@ -98,10 +87,6 @@ meta_tile_preview_expose (GtkWidget *widget,
|
||||
preview->tile_rect.height - 1);
|
||||
cairo_stroke (cr);
|
||||
|
||||
#ifndef USE_GTK3
|
||||
cairo_destroy (cr);
|
||||
#endif
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
@@ -163,13 +148,8 @@ meta_tile_preview_new (int screen_number,
|
||||
|
||||
if (preview->has_alpha)
|
||||
{
|
||||
#ifdef USE_GTK3
|
||||
gtk_widget_set_visual (preview->preview_window,
|
||||
gdk_screen_get_rgba_visual (screen));
|
||||
#else
|
||||
gtk_widget_set_colormap (preview->preview_window,
|
||||
gdk_screen_get_rgba_colormap (screen));
|
||||
#endif
|
||||
|
||||
g_signal_connect (preview->preview_window, "style-set",
|
||||
G_CALLBACK (on_preview_window_style_set), preview);
|
||||
@@ -181,15 +161,8 @@ meta_tile_preview_new (int screen_number,
|
||||
*/
|
||||
preview->create_serial = XNextRequest (GDK_DISPLAY_XDISPLAY (gdk_display_get_default ()));
|
||||
gtk_widget_realize (preview->preview_window);
|
||||
#ifdef USE_GTK3
|
||||
g_signal_connect (preview->preview_window, "draw",
|
||||
G_CALLBACK (meta_tile_preview_draw), preview);
|
||||
#else
|
||||
gdk_window_set_back_pixmap (gtk_widget_get_window (preview->preview_window),
|
||||
NULL, FALSE);
|
||||
g_signal_connect (preview->preview_window, "expose-event",
|
||||
G_CALLBACK (meta_tile_preview_expose), preview);
|
||||
#endif
|
||||
|
||||
return preview;
|
||||
}
|
||||
@@ -239,6 +212,7 @@ meta_tile_preview_show (MetaTilePreview *preview,
|
||||
|
||||
if (!preview->has_alpha)
|
||||
{
|
||||
cairo_region_t *outer_region, *inner_region;
|
||||
GdkRectangle outer_rect, inner_rect;
|
||||
GdkColor black;
|
||||
|
||||
@@ -254,33 +228,14 @@ meta_tile_preview_show (MetaTilePreview *preview,
|
||||
inner_rect.width = outer_rect.width - 2 * OUTLINE_WIDTH;
|
||||
inner_rect.height = outer_rect.height - 2 * OUTLINE_WIDTH;
|
||||
|
||||
#if GTK_CHECK_VERSION (2, 90, 8) /* gtk3 */
|
||||
{
|
||||
cairo_region_t *outer_region, *inner_region;
|
||||
outer_region = cairo_region_create_rectangle (&outer_rect);
|
||||
inner_region = cairo_region_create_rectangle (&inner_rect);
|
||||
|
||||
outer_region = cairo_region_create_rectangle (&outer_rect);
|
||||
inner_region = cairo_region_create_rectangle (&inner_rect);
|
||||
cairo_region_subtract (outer_region, inner_region);
|
||||
cairo_region_destroy (inner_region);
|
||||
|
||||
cairo_region_subtract (outer_region, inner_region);
|
||||
cairo_region_destroy (inner_region);
|
||||
|
||||
gdk_window_shape_combine_region (window, outer_region, 0, 0);
|
||||
cairo_region_destroy (outer_region);
|
||||
}
|
||||
#else /* gtk2 */
|
||||
{
|
||||
GdkRegion *outer_region, *inner_region;
|
||||
|
||||
outer_region = gdk_region_rectangle (&outer_rect);
|
||||
inner_region = gdk_region_rectangle (&inner_rect);
|
||||
|
||||
gdk_region_subtract (outer_region, inner_region);
|
||||
gdk_region_destroy (inner_region);
|
||||
|
||||
gdk_window_shape_combine_region (window, outer_region, 0, 0);
|
||||
gdk_region_destroy (outer_region);
|
||||
}
|
||||
#endif /* gtk2 */
|
||||
gdk_window_shape_combine_region (window, outer_region, 0, 0);
|
||||
cairo_region_destroy (outer_region);
|
||||
}
|
||||
}
|
||||
|
||||
|
94
src/ui/ui.c
94
src/ui/ui.c
@@ -32,8 +32,6 @@
|
||||
#include "theme-private.h"
|
||||
|
||||
#include "inlinepixbufs.h"
|
||||
#include "gdk-compat.h"
|
||||
#include "gdk2-drawing-utils.h"
|
||||
|
||||
#include <string.h>
|
||||
#include <stdlib.h>
|
||||
@@ -174,9 +172,6 @@ meta_ui_create_frame_window (MetaUI *ui,
|
||||
gint attributes_mask;
|
||||
GdkWindow *window;
|
||||
GdkVisual *visual;
|
||||
#ifndef USE_GTK3
|
||||
GdkColormap *cmap = gdk_screen_get_default_colormap (screen);
|
||||
#endif
|
||||
|
||||
/* Default depth/visual handles clients with weird visuals; they can
|
||||
* always be children of the root depth/visual obviously, but
|
||||
@@ -189,9 +184,6 @@ meta_ui_create_frame_window (MetaUI *ui,
|
||||
{
|
||||
visual = gdk_x11_screen_lookup_visual (screen,
|
||||
XVisualIDFromVisual (xvisual));
|
||||
#ifndef USE_GTK3
|
||||
cmap = gdk_colormap_new (visual, FALSE);
|
||||
#endif
|
||||
}
|
||||
|
||||
attrs.title = NULL;
|
||||
@@ -207,9 +199,6 @@ meta_ui_create_frame_window (MetaUI *ui,
|
||||
attrs.y = y;
|
||||
attrs.wclass = GDK_INPUT_OUTPUT;
|
||||
attrs.visual = visual;
|
||||
#ifndef USE_GTK3
|
||||
attrs.colormap = cmap;
|
||||
#endif
|
||||
attrs.window_type = GDK_WINDOW_CHILD;
|
||||
attrs.cursor = NULL;
|
||||
attrs.wmclass_name = NULL;
|
||||
@@ -219,11 +208,7 @@ meta_ui_create_frame_window (MetaUI *ui,
|
||||
attrs.width = width;
|
||||
attrs.height = height;
|
||||
|
||||
#ifdef USE_GTK3
|
||||
attributes_mask = GDK_WA_X | GDK_WA_Y | GDK_WA_VISUAL;
|
||||
#else
|
||||
attributes_mask = GDK_WA_X | GDK_WA_Y | GDK_WA_VISUAL | GDK_WA_COLORMAP;
|
||||
#endif
|
||||
|
||||
/* We make an assumption that gdk_window_new() is going to call
|
||||
* XCreateWindow as it's first operation; this seems to be true currently
|
||||
@@ -370,7 +355,6 @@ meta_ui_window_menu_free (MetaWindowMenu *menu)
|
||||
meta_window_menu_free (menu);
|
||||
}
|
||||
|
||||
#ifdef USE_GTK3
|
||||
GdkPixbuf*
|
||||
meta_gdk_pixbuf_get_from_pixmap (Pixmap xpixmap,
|
||||
int src_x,
|
||||
@@ -420,84 +404,6 @@ meta_gdk_pixbuf_get_from_pixmap (Pixmap xpixmap,
|
||||
|
||||
return retval;
|
||||
}
|
||||
#else /* !USE_GTK3 */
|
||||
static GdkColormap*
|
||||
get_cmap (GdkPixmap *pixmap)
|
||||
{
|
||||
GdkColormap *cmap;
|
||||
|
||||
cmap = gdk_drawable_get_colormap (pixmap);
|
||||
if (cmap)
|
||||
g_object_ref (G_OBJECT (cmap));
|
||||
|
||||
if (cmap == NULL)
|
||||
{
|
||||
if (gdk_drawable_get_depth (pixmap) == 1)
|
||||
{
|
||||
meta_verbose ("Using NULL colormap for snapshotting bitmap\n");
|
||||
cmap = NULL;
|
||||
}
|
||||
else
|
||||
{
|
||||
meta_verbose ("Using system cmap to snapshot pixmap\n");
|
||||
cmap = gdk_screen_get_system_colormap (gdk_drawable_get_screen (pixmap));
|
||||
|
||||
g_object_ref (G_OBJECT (cmap));
|
||||
}
|
||||
}
|
||||
|
||||
/* Be sure we aren't going to blow up due to visual mismatch */
|
||||
if (cmap &&
|
||||
(gdk_visual_get_depth (gdk_colormap_get_visual (cmap)) !=
|
||||
gdk_drawable_get_depth (pixmap)))
|
||||
{
|
||||
cmap = NULL;
|
||||
meta_verbose ("Switching back to NULL cmap because of depth mismatch\n");
|
||||
}
|
||||
|
||||
return cmap;
|
||||
}
|
||||
|
||||
GdkPixbuf*
|
||||
meta_gdk_pixbuf_get_from_pixmap (Pixmap xpixmap,
|
||||
int src_x,
|
||||
int src_y,
|
||||
int width,
|
||||
int height)
|
||||
{
|
||||
GdkDrawable *drawable;
|
||||
GdkPixbuf *retval;
|
||||
GdkColormap *cmap;
|
||||
|
||||
retval = NULL;
|
||||
cmap = NULL;
|
||||
|
||||
drawable = gdk_xid_table_lookup (xpixmap);
|
||||
|
||||
if (drawable)
|
||||
g_object_ref (G_OBJECT (drawable));
|
||||
else
|
||||
drawable = gdk_pixmap_foreign_new (xpixmap);
|
||||
|
||||
if (drawable)
|
||||
{
|
||||
cmap = get_cmap (drawable);
|
||||
|
||||
retval = gdk_pixbuf_get_from_drawable (NULL,
|
||||
drawable,
|
||||
cmap,
|
||||
src_x, src_y,
|
||||
0, 0,
|
||||
width, height);
|
||||
}
|
||||
if (cmap)
|
||||
g_object_unref (G_OBJECT (cmap));
|
||||
if (drawable)
|
||||
g_object_unref (G_OBJECT (drawable));
|
||||
|
||||
return retval;
|
||||
}
|
||||
#endif /* !USE_GTK3 */
|
||||
|
||||
void
|
||||
meta_ui_push_delay_exposes (MetaUI *ui)
|
||||
|
Reference in New Issue
Block a user