annotate src/redisplay-gtk.c @ 4948:8b230c53075b

fix some tests in `make check', also add our own file-tests -------------------- ChangeLog entries follow: -------------------- lisp/ChangeLog addition: 2010-01-25 Ben Wing <ben@xemacs.org> * mule/cyrillic.el (koi8-c): Fix bug in #83 mapping. * mule/vietnamese.el (viscii): Fix bug in #A6 mapping. tests/ChangeLog addition: 2010-01-25 Ben Wing <ben@xemacs.org> * automated/file-tests.el: New file. * automated/mule-tests.el (featurep): * automated/test-harness.el (test-harness-from-buffer): * automated/test-harness.el (batch-test-emacs):
author Ben Wing <ben@xemacs.org>
date Mon, 25 Jan 2010 03:03:49 -0600
parents eab9498ecc0e
children b3ce27ca7647
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
714
02339d4ebed4 [xemacs-hg @ 2001-12-23 20:28:19 by wmperry]
wmperry
parents: 665
diff changeset
1 /* GTK output and frame manipulation routines.
462
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
2 Copyright (C) 1994, 1995 Board of Trustees, University of Illinois.
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
3 Copyright (C) 1994 Lucid, Inc.
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
4 Copyright (C) 1995 Sun Microsystems, Inc.
1318
b531bf8658e9 [xemacs-hg @ 2003-02-21 06:56:46 by ben]
ben
parents: 872
diff changeset
5 Copyright (C) 2002, 2003 Ben Wing.
462
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
6
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
7 This file is part of XEmacs.
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
8
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
9 XEmacs is free software; you can redistribute it and/or modify it
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
10 under the terms of the GNU General Public License as published by the
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
11 Free Software Foundation; either version 2, or (at your option) any
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
12 later version.
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
13
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
14 XEmacs is distributed in the hope that it will be useful, but WITHOUT
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
15 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
16 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
17 for more details.
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
18
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
19 You should have received a copy of the GNU General Public License
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
20 along with XEmacs; see the file COPYING. If not, write to
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
21 the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
22 Boston, MA 02111-1307, USA. */
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
23
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
24 /* Synched up with: Not in FSF. */
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
25
4881
a4322ac49e37 break out common separate-into-runs routines into redisplay-xlike-inc.c
Ben Wing <ben@xemacs.org>
parents: 3479
diff changeset
26 #include "redisplay-xlike-inc.c"
462
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
27
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
28 /*****************************************************************************
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
29 gtk_bevel_modeline
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
30
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
31 Draw a 3d border around the modeline on window W.
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
32 ****************************************************************************/
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
33 static void
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
34 gtk_bevel_modeline (struct window *w, struct display_line *dl)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
35 {
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
36 struct frame *f = XFRAME (w->frame);
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
37 int shadow_thickness = MODELINE_SHADOW_THICKNESS (w);
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
38 int x,y, width, height;
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
39
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
40 x = WINDOW_MODELINE_LEFT (w);
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
41 width = WINDOW_MODELINE_RIGHT (w) - x;
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
42 y = dl->ypos - dl->ascent - shadow_thickness;
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
43 height = dl->ascent + dl->descent + 2 * shadow_thickness;
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
44
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
45 gtk_output_shadows (f, x, y, width, height, shadow_thickness);
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
46 }
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
47
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
48 /*****************************************************************************
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
49 gtk_output_shadows
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
50
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
51 Draw a shadow around the given area using the standard theme engine routines.
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
52 ****************************************************************************/
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
53 void
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
54 gtk_output_shadows (struct frame *f, int x, int y, int width, int height,
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
55 int shadow_thickness)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
56 {
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
57 GdkWindow *x_win = GET_GTK_WIDGET_WINDOW (FRAME_GTK_TEXT_WIDGET (f));
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
58 GtkStyle *style = FRAME_GTK_TEXT_WIDGET (f)->style;
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
59 GtkShadowType stype = GTK_SHADOW_OUT;
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
60
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
61 if (shadow_thickness < 0)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
62 {
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
63 stype = GTK_SHADOW_IN;
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
64 }
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
65 else if (shadow_thickness == 0)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
66 {
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
67 stype = GTK_SHADOW_NONE;
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
68 }
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
69
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
70 /* Do we want to have some magic constants to set
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
71 GTK_SHADOW_ETCHED_IN or GTK_SHADOW_ETCHED_OUT? */
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
72
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
73 gtk_paint_shadow (style, x_win, GTK_STATE_NORMAL, stype, NULL,
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
74 FRAME_GTK_TEXT_WIDGET (f), "modeline",
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
75 x, y, width, height);
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
76 }
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
77
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
78 static void
2286
04bc9d2f42c7 [xemacs-hg @ 2004-09-20 19:18:55 by james]
james
parents: 2054
diff changeset
79 gtk_bevel_area (struct window *w, face_index UNUSED (findex),
462
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
80 int x, int y, int width, int height,
2286
04bc9d2f42c7 [xemacs-hg @ 2004-09-20 19:18:55 by james]
james
parents: 2054
diff changeset
81 int shadow_thickness, int UNUSED (edges),
04bc9d2f42c7 [xemacs-hg @ 2004-09-20 19:18:55 by james]
james
parents: 2054
diff changeset
82 enum edge_style UNUSED (style))
462
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
83 {
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
84 struct frame *f = XFRAME (w->frame);
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
85
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
86 gtk_output_shadows (f, x, y, width, height, shadow_thickness);
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
87 }
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
88
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
89
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
90
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
91 /* Make audible bell. */
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
92 static void
2286
04bc9d2f42c7 [xemacs-hg @ 2004-09-20 19:18:55 by james]
james
parents: 2054
diff changeset
93 gtk_ring_bell (struct device *UNUSED (d), int volume, int UNUSED (pitch),
04bc9d2f42c7 [xemacs-hg @ 2004-09-20 19:18:55 by james]
james
parents: 2054
diff changeset
94 int UNUSED (duration))
462
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
95 {
714
02339d4ebed4 [xemacs-hg @ 2001-12-23 20:28:19 by wmperry]
wmperry
parents: 665
diff changeset
96 /* Gdk does not allow us to control the duration / pitch / volume */
02339d4ebed4 [xemacs-hg @ 2001-12-23 20:28:19 by wmperry]
wmperry
parents: 665
diff changeset
97 if (volume > 0)
02339d4ebed4 [xemacs-hg @ 2001-12-23 20:28:19 by wmperry]
wmperry
parents: 665
diff changeset
98 {
02339d4ebed4 [xemacs-hg @ 2001-12-23 20:28:19 by wmperry]
wmperry
parents: 665
diff changeset
99 gdk_beep ();
02339d4ebed4 [xemacs-hg @ 2001-12-23 20:28:19 by wmperry]
wmperry
parents: 665
diff changeset
100 }
462
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
101 }
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
102
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
103
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
104 /* This makes me feel incredibly dirty... but there is no other way to
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
105 get this done right other than calling clear_area before every
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
106 single $#!%@ing piece of text, which I do NOT want to do. */
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
107 #define USE_X_SPECIFIC_DRAW_ROUTINES 1
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
108
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
109 #include <gdk/gdkx.h>
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
110
714
02339d4ebed4 [xemacs-hg @ 2001-12-23 20:28:19 by wmperry]
wmperry
parents: 665
diff changeset
111 static
02339d4ebed4 [xemacs-hg @ 2001-12-23 20:28:19 by wmperry]
wmperry
parents: 665
diff changeset
112 void gdk_draw_text_image (GdkDrawable *drawable,
02339d4ebed4 [xemacs-hg @ 2001-12-23 20:28:19 by wmperry]
wmperry
parents: 665
diff changeset
113 GdkFont *font,
02339d4ebed4 [xemacs-hg @ 2001-12-23 20:28:19 by wmperry]
wmperry
parents: 665
diff changeset
114 GdkGC *gc,
02339d4ebed4 [xemacs-hg @ 2001-12-23 20:28:19 by wmperry]
wmperry
parents: 665
diff changeset
115 gint x,
02339d4ebed4 [xemacs-hg @ 2001-12-23 20:28:19 by wmperry]
wmperry
parents: 665
diff changeset
116 gint y,
02339d4ebed4 [xemacs-hg @ 2001-12-23 20:28:19 by wmperry]
wmperry
parents: 665
diff changeset
117 const gchar *text,
02339d4ebed4 [xemacs-hg @ 2001-12-23 20:28:19 by wmperry]
wmperry
parents: 665
diff changeset
118 gint text_length)
462
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
119 {
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
120 #if !USE_X_SPECIFIC_DRAW_ROUTINES
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
121 int width = gdk_text_measure (font, text, text_length);
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
122 int height = gdk_text_height (font, text, text_length);
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
123
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
124 gdk_draw_rectangle (drawable, gc, TRUE, x, y, width, height);
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
125 gdk_draw_text (drawable, font, gc, x, y, text, text_length);
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
126 #else
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
127 GdkWindowPrivate *drawable_private;
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
128 GdkFontPrivate *font_private;
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
129 GdkGCPrivate *gc_private;
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
130
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
131 g_return_if_fail (drawable != NULL);
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
132 g_return_if_fail (font != NULL);
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
133 g_return_if_fail (gc != NULL);
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
134 g_return_if_fail (text != NULL);
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
135
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
136 drawable_private = (GdkWindowPrivate*) drawable;
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
137 if (drawable_private->destroyed)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
138 return;
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
139 gc_private = (GdkGCPrivate*) gc;
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
140 font_private = (GdkFontPrivate*) font;
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
141
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
142 if (font->type == GDK_FONT_FONT)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
143 {
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
144 XFontStruct *xfont = (XFontStruct *) font_private->xfont;
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
145 XSetFont(drawable_private->xdisplay, gc_private->xgc, xfont->fid);
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
146 if ((xfont->min_byte1 == 0) && (xfont->max_byte1 == 0))
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
147 {
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
148 XDrawImageString (drawable_private->xdisplay, drawable_private->xwindow,
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
149 gc_private->xgc, x, y, text, text_length);
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
150 }
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
151 else
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
152 {
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
153 XDrawImageString16 (drawable_private->xdisplay, drawable_private->xwindow,
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
154 gc_private->xgc, x, y, (XChar2b *) text, text_length / 2);
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
155 }
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
156 }
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
157 else if (font->type == GDK_FONT_FONTSET)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
158 {
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
159 XFontSet fontset = (XFontSet) font_private->xfont;
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
160 XmbDrawImageString (drawable_private->xdisplay, drawable_private->xwindow,
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
161 fontset, gc_private->xgc, x, y, text, text_length);
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
162 }
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
163 else
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
164 g_error("undefined font type\n");
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
165 #endif
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
166 }
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
167
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
168 static void
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
169 our_draw_bitmap (GdkDrawable *drawable,
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
170 GdkGC *gc,
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
171 GdkPixmap *src,
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
172 gint xsrc,
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
173 gint ysrc,
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
174 gint xdest,
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
175 gint ydest,
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
176 gint width,
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
177 gint height)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
178 {
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
179 GdkWindowPrivate *drawable_private;
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
180 GdkWindowPrivate *src_private;
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
181 GdkGCPrivate *gc_private;
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
182
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
183 g_return_if_fail (drawable != NULL);
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
184 g_return_if_fail (src != NULL);
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
185 g_return_if_fail (gc != NULL);
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
186
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
187 drawable_private = (GdkWindowPrivate*) drawable;
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
188 src_private = (GdkWindowPrivate*) src;
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
189 if (drawable_private->destroyed || src_private->destroyed)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
190 return;
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
191 gc_private = (GdkGCPrivate*) gc;
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
192
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
193 if (width == -1)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
194 width = src_private->width;
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
195 if (height == -1)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
196 height = src_private->height;
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
197
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
198 XCopyPlane (drawable_private->xdisplay,
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
199 src_private->xwindow,
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
200 drawable_private->xwindow,
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
201 gc_private->xgc,
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
202 xsrc, ysrc,
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
203 width, height,
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
204 xdest, ydest, 1L);
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
205 }