]> git.draconx.ca Git - gentoo-fixes.git/blob - x11-wm/fvwm/files/fvwm-2.5.27-translucent-menus.diff
x11-wm/fvwm: fixed prefix and man page installation.
[gentoo-fixes.git] / x11-wm / fvwm / files / fvwm-2.5.27-translucent-menus.diff
1 Index: fvwm/colorset.c
2 ===================================================================
3 RCS file: /home/cvs/fvwm/fvwm/fvwm/colorset.c,v
4 retrieving revision 1.52
5 diff -u -r1.52 colorset.c
6 --- fvwm/colorset.c     27 Jan 2007 11:33:15 -0000      1.52
7 +++ fvwm/colorset.c     5 Feb 2007 19:15:51 -0000
8 @@ -164,6 +164,8 @@
9         "NoIconTint",
10         "IconAlpha",
11  
12 +       "Translucent",
13 +       "NoTranslucent",
14         NULL
15  };
16  
17 @@ -625,6 +627,7 @@
18         char *fg_tint = NULL;
19         char *bg_tint = NULL;
20         char *icon_tint = NULL;
21 +       char *translucent_tint = NULL;
22         Bool have_pixels_changed = False;
23         Bool has_icon_pixels_changed = False;
24         Bool has_fg_changed = False;
25 @@ -637,6 +640,7 @@
26         Bool has_fg_tint_changed = False;
27         Bool has_bg_tint_changed = False;
28         Bool has_icon_tint_changed = False;
29 +       Bool has_translucent_tint_changed = False;
30         Bool has_pixmap_changed = False;
31         Bool has_shape_changed = False;
32         Bool has_image_alpha_changed = False;
33 @@ -763,6 +767,10 @@
34                 case 21: /* Plain */
35                         has_pixmap_changed = True;
36                         free_colorset_background(cs, True);
37 +                       cs->is_translucent = False;
38 +                       cs->translucent_tint_percent = 0;
39 +                       cs->color_flags &= ~TRANSLUCENT_TINT_SUPPLIED;
40 +                       has_translucent_tint_changed = True;
41                         break;
42                 case 22: /* NoShape */
43                         has_shape_changed = True;
44 @@ -929,6 +937,24 @@
45                                 cs->icon_alpha_percent = tmp;
46                         }
47                         break;
48 +               case 42: /* Translucent */
49 +                       cs->is_translucent = True;
50 +                       parse_simple_tint(
51 +                               cs, args, &translucent_tint,
52 +                               TRANSLUCENT_TINT_SUPPLIED,
53 +                               &has_translucent_tint_changed, &percent,
54 +                               "Translucent");
55 +                       if (has_translucent_tint_changed)
56 +                       {
57 +                               cs->translucent_tint_percent = percent;
58 +                       }
59 +                       break;
60 +               case 43: /* NoTranslucent */
61 +                       cs->is_translucent = False;
62 +                       cs->translucent_tint_percent = 0;
63 +                       cs->color_flags &= ~TRANSLUCENT_TINT_SUPPLIED;
64 +                       has_translucent_tint_changed = True;
65 +                       break;
66                 default:
67                         /* test for ?Gradient */
68                         if (option[0] && StrEquals(&option[1], "Gradient"))
69 @@ -1615,6 +1641,27 @@
70         }
71  
72         /*
73 +        * ---------- change the translucent tint colour ----------
74 +        */
75 +       if (has_translucent_tint_changed)
76 +       {
77 +               /* user specified colour */
78 +               if (translucent_tint != NULL)
79 +               {
80 +                       PictureFreeColors(
81 +                               dpy, Pcmap, &cs->translucent_tint, 1, 0, True);
82 +                       cs->translucent_tint = GetColor(translucent_tint);
83 +               }
84 +               else
85 +               {
86 +                       /* default */
87 +                       PictureFreeColors(
88 +                               dpy, Pcmap, &cs->translucent_tint, 1, 0, True);
89 +                       cs->translucent_tint = GetColor(black);
90 +               }
91 +       }
92 +
93 +       /*
94          * ---------- send new colorset to fvwm and clean up ----------
95          */
96         /* make sure the server has this to avoid races */
97 @@ -1710,6 +1757,7 @@
98                         ncs->fgsh = GetColor(white);
99                         ncs->tint = GetColor(black);
100                         ncs->icon_tint = GetColor(black);
101 +                       ncs->translucent_tint = GetColor(black);
102                         ncs->pixmap = XCreatePixmapFromBitmapData(
103                                 dpy, Scr.NoFocusWin,
104                                 &g_bits[4 * (nColorsets % 3)], 4, 4,
105 @@ -1727,6 +1775,7 @@
106                         ncs->fgsh = GetForeShadow(ncs->fg, ncs->bg);
107                         ncs->tint = GetColor(black);
108                         ncs->icon_tint = GetColor(black);
109 +                       ncs->translucent_tint = GetColor(black);
110                 }
111                 ncs->fg_tint = ncs->bg_tint = GetColor(black);
112                 /* set flags for fg contrast, bg average */
113 @@ -1738,6 +1787,7 @@
114                 ncs->icon_alpha_percent = 100;
115                 ncs->tint_percent = 0;
116                 ncs->icon_tint_percent = 0;
117 +               ncs->translucent_tint_percent = 0;
118                 ncs->fg_tint_percent = ncs->bg_tint_percent = 0;
119                 ncs->dither = (PictureDitherByDefault())? True:False;
120                 nColorsets++;
121 Index: fvwm/menuroot.h
122 ===================================================================
123 RCS file: /home/cvs/fvwm/fvwm/fvwm/menuroot.h,v
124 retrieving revision 1.3
125 diff -u -r1.3 menuroot.h
126 --- fvwm/menuroot.h     13 Jan 2007 15:07:14 -0000      1.3
127 +++ fvwm/menuroot.h     5 Feb 2007 19:17:37 -0000
128 @@ -146,6 +146,9 @@
129                 int d_npixels;
130         } stored_pixels;
131         /* alloc pixels when dithering is used for gradients */
132 +       /* x,y XMapRaise */
133 +       int x;
134 +       int y;
135  } MenuRootDynamic;
136  
137  /* access macros to dynamic menu members */
138 Index: fvwm/menus.c
139 ===================================================================
140 RCS file: /home/cvs/fvwm/fvwm/fvwm/menus.c,v
141 retrieving revision 1.409
142 diff -u -r1.409 menus.c
143 --- fvwm/menus.c        27 Jan 2007 11:51:15 -0000      1.409
144 +++ fvwm/menus.c        5 Feb 2007 19:17:50 -0000
145 @@ -75,6 +75,19 @@
146  
147  /* ---------------------------- local macros ------------------------------- */
148  
149 +#define MENU_IS_TRANSLUCENT(mr,cs) \
150 +       (!MR_IS_TEAR_OFF_MENU(mr) && CSET_IS_TRANSLUCENT(cs))
151 +#define MENU_IS_TRANSPARENT(mr,cs) \
152 +       (MENU_IS_TRANSLUCENT(mr,cs) || CSET_IS_TRANSPARENT(cs))
153 +#define MR_IS_TRANSLUCENT_MENU(mr)  \
154 +       (!MR_IS_TEAR_OFF_MENU(mr) && MR_STYLE(mr) && \
155 +       ST_HAS_MENU_CSET(MR_STYLE(mr)) && CSET_IS_TRANSLUCENT( \
156 +                                               ST_CSET_MENU(MR_STYLE(mr))))
157 +#define MR_IS_TRANSPARENT_MENU(mr) \
158 +       (MR_IS_TRANSLUCENT_MENU(mr) || (MR_STYLE(mr) && \
159 +       ST_HAS_MENU_CSET(MR_STYLE(mr)) && CSET_IS_TRANSPARENT( \
160 +                                               ST_CSET_MENU(MR_STYLE(mr)))))
161 +
162  /* ---------------------------- imports ------------------------------------ */
163  
164  /* This external is safe. It's written only during startup. */
165 @@ -188,6 +201,8 @@
166  } mloop_static_info_t;
167  
168  /* ---------------------------- forward declarations ----------------------- */
169 +static MenuRoot *seek_submenu_instance(
170 +       MenuRoot *parent_menu, MenuItem *parent_item);
171  
172  /* ---------------------------- local variables ---------------------------- */
173  
174 @@ -353,12 +368,22 @@
175                 Bool transparent_bg = False;
176  
177                 /* move it back */
178 -               if (ST_HAS_MENU_CSET(MR_STYLE(mr)) &&
179 -                   CSET_IS_TRANSPARENT(ST_CSET_MENU(MR_STYLE(mr))))
180 +               if (MR_IS_TRANSPARENT_MENU(mr))
181                 {
182                         transparent_bg = True;
183                         get_menu_repaint_transparent_parameters(
184                                 &mrtp, mr, fw);
185 +                       if (MR_IS_TRANSLUCENT_MENU(mr) && MR_SUBMENU_ITEM(mr))
186 +                       {
187 +                               MenuRoot *smr;
188 +                               smr = seek_submenu_instance(
189 +                                       mr, MR_SUBMENU_ITEM(mr));
190 +                               if (smr)
191 +                               {
192 +                                       /* just unmap it here, popdown later */
193 +                                       XUnmapWindow(dpy, MR_WINDOW(smr));
194 +                               }
195 +                       }
196                 }
197                 AnimatedMoveOfWindow(
198                         MR_WINDOW(mr), act_x, act_y, act_x - MR_XANIMATION(mr),
199 @@ -1779,6 +1804,7 @@
200                                 /* Doh.  Use the standard display instead. */
201                                 MR_CREATE_DPY(mr) = dpy;
202                         }
203 +                       MR_IS_TEAR_OFF_MENU(mr) = 1;
204                 }
205                 else
206                 {
207 @@ -2594,7 +2620,37 @@
208         }
209         MR_IS_PAINTED(mr) = 1;
210         /* paint the menu background */
211 -       if (ms && ST_HAS_MENU_CSET(ms))
212 +       if (MR_IS_TRANSLUCENT_MENU(mr))
213 +       {
214 +               Pixmap trans = None;
215 +               FvwmRenderAttributes fra;
216 +               colorset_t *colorset = &Colorset[ST_CSET_MENU(ms)];
217 +       
218 +               fra.mask = 0;
219 +               if (colorset->translucent_tint_percent > 0)
220 +               {
221 +                       fra.mask = FRAM_HAVE_TINT;
222 +                       fra.tint = colorset->translucent_tint;
223 +                       fra.tint_percent = colorset->translucent_tint_percent;
224 +               }
225 +               if (MR_IS_BACKGROUND_SET(mr) == False)
226 +               {
227 +                       trans = PGraphicsCreateTranslucent(
228 +                               dpy, MR_WINDOW(mr), &fra,
229 +                               BACK_GC(ST_MENU_INACTIVE_GCS(ms)),
230 +                               MR_X(mr), MR_Y(mr), MR_WIDTH(mr), MR_HEIGHT(mr));
231 +                       XMapRaised(dpy, MR_WINDOW(mr));
232 +                       if (trans != None)
233 +                       {
234 +                               XSetWindowBackgroundPixmap(
235 +                                       dpy, MR_WINDOW(mr), trans);
236 +                               MR_IS_BACKGROUND_SET(mr) = True;
237 +                               clear_expose_menu_area(MR_WINDOW(mr), pevent);
238 +                               XFreePixmap(dpy, trans);
239 +                       }
240 +               }
241 +       }
242 +       else if (ms && ST_HAS_MENU_CSET(ms))
243         {
244                 if (MR_IS_BACKGROUND_SET(mr) == False)
245                 {
246 @@ -3401,10 +3457,7 @@
247                                         MR_HAS_POPPED_UP_RIGHT(mr) = 0;
248                                 }
249                                 MR_XANIMATION(parent_menu) += end_x - prev_x;
250 -                               if (ST_HAS_MENU_CSET(MR_STYLE(parent_menu)) &&
251 -                                   CSET_IS_TRANSPARENT(
252 -                                           ST_CSET_MENU(
253 -                                                   MR_STYLE(parent_menu))))
254 +                               if (MR_IS_TRANSPARENT_MENU(parent_menu))
255                                 {
256                                         transparent_bg = True;
257                                         get_menu_repaint_transparent_parameters(
258 @@ -3583,10 +3636,21 @@
259          */
260  
261         XMoveWindow(dpy, MR_WINDOW(mr), x, y);
262 +       MR_X(mr) = x;
263 +       MR_Y(mr) = y;
264         XSelectInput(dpy, MR_WINDOW(mr), event_mask);
265 -       XMapRaised(dpy, MR_WINDOW(mr));
266 -       if (popdown_window)
267 -               XUnmapWindow(dpy, popdown_window);
268 +       if (MR_IS_TRANSLUCENT_MENU(mr))
269 +       {
270 +               if (popdown_window)
271 +                       XUnmapWindow(dpy, popdown_window);
272 +               paint_menu(mr, NULL, fw);
273 +       }
274 +       else
275 +       {
276 +               XMapRaised(dpy, MR_WINDOW(mr));
277 +               if (popdown_window)
278 +                       XUnmapWindow(dpy, popdown_window);
279 +       }
280         XFlush(dpy);
281         MR_MAPPED_COPIES(mr)++;
282         MST_USAGE_COUNT(mr)++;
283 @@ -6123,16 +6187,122 @@
284         {
285                 last = True;
286         }
287 -       if (!last && CSET_IS_TRANSPARENT_PR_TINT(ST_CSET_MENU(ms)))
288 +       if (!last &&
289 +           (CSET_IS_TRANSPARENT_PR_TINT(ST_CSET_MENU(ms)) ||
290 +            MR_IS_TRANSLUCENT_MENU(mr)))
291         {
292                 /* too slow ... */
293                 return;
294         }
295 -       SetWindowBackgroundWithOffset(
296 -               dpy, MR_WINDOW(mr), step_x - current_x, step_y - current_y,
297 -               MR_WIDTH(mr), MR_HEIGHT(mr),
298 -               &Colorset[ST_CSET_MENU(ms)], Pdepth,
299 -               FORE_GC(MST_MENU_INACTIVE_GCS(mr)), False);
300 +       if (MR_IS_TRANSLUCENT_MENU(mr))
301 +       {
302 +               Pixmap trans, tmp;
303 +               FvwmRenderAttributes fra;
304 +               colorset_t *colorset = &Colorset[ST_CSET_MENU(ms)];
305 +
306 +               fra.mask = 0;
307 +               if (colorset->translucent_tint_percent > 0)
308 +               {
309 +                       fra.mask = FRAM_HAVE_TINT;
310 +                       fra.tint = colorset->translucent_tint;
311 +                       fra.tint_percent = colorset->translucent_tint_percent;
312 +               }
313 +               if (current_x == step_x) 
314 +               {
315 +                       /* Reuse the old pixmap for the part of the menu 
316 +                        * that has not moved. (This can be extended to get
317 +                        * two new rectangles, one in each direction)
318 +                        * 
319 +                        * It saves the unmapping of the window and makes 
320 +                        * Things less flickering.
321 +                        */
322 +                       GC my_gc;
323 +                       unsigned long valuemask = GCSubwindowMode;
324 +                       XGCValues values;
325 +                       int out_y=0;
326 +                       values.subwindow_mode = IncludeInferiors;
327 +                       if (step_y < 0)
328 +                       {
329 +                               out_y = -step_y;
330 +                       }
331 +                       trans = XCreatePixmap(dpy, MR_WINDOW(mr), MR_WIDTH(mr),
332 +                                             MR_HEIGHT(mr), Pdepth);
333 +                       my_gc = fvwmlib_XCreateGC(dpy,  MR_WINDOW(mr), 0, NULL);
334 +                       XChangeGC(dpy, my_gc, valuemask, &values);
335 +
336 +                       XClearWindow(dpy, MR_WINDOW(mr));
337 +
338 +                       if (current_y < step_y)
339 +                       {
340 +                               XCopyArea(dpy, MR_WINDOW(mr), trans, my_gc, 0, 
341 +                                         step_y-current_y, MR_WIDTH(mr), 
342 +                                         MR_HEIGHT(mr)-(step_y-current_y),
343 +                                         0,0);
344 +                               tmp = PGraphicsCreateTranslucent(
345 +                                       dpy, MR_WINDOW(mr), &fra,
346 +                                       BACK_GC(ST_MENU_INACTIVE_GCS(ms)),
347 +                                       current_x, current_y+MR_HEIGHT(mr), 
348 +                                       MR_WIDTH(mr), step_y-current_y);
349 +
350 +                               XCopyArea(dpy, tmp, trans, my_gc, 0, 0,
351 +                                         MR_WIDTH(mr), step_y-current_y,0,
352 +                                         MR_HEIGHT(mr)-(step_y-current_y));
353 +                       }
354 +                       else 
355 +                       {
356 +                               XCopyArea(dpy, MR_WINDOW(mr), trans, my_gc, 0, 
357 +                                         0, MR_WIDTH(mr), 
358 +                                         MR_HEIGHT(mr)-(current_y-step_y), 0,
359 +                                         current_y-step_y);
360 +                               tmp = PGraphicsCreateTranslucent(
361 +                                       dpy, MR_WINDOW(mr), &fra,
362 +                                       BACK_GC(ST_MENU_INACTIVE_GCS(ms)),
363 +                                       current_x,step_y, MR_WIDTH(mr),
364 +                                       current_y-step_y);
365 +                               XCopyArea(dpy, tmp, trans, my_gc, 0, 0,
366 +                                         MR_WIDTH(mr), current_y-step_y,0,
367 +                                         out_y);
368 +                       }
369 +                       MR_X(mr) = step_x;
370 +                       MR_Y(mr) = step_y;
371 +                       XFreePixmap(dpy, tmp);
372 +                       XFreeGC(dpy,my_gc);
373 +               }               
374 +               else
375 +               {
376 +                       XUnmapWindow(dpy, MR_WINDOW(mr));
377 +                       MR_X(mr) = step_x;
378 +                       MR_Y(mr) = step_y;
379 +                       trans = PGraphicsCreateTranslucent(
380 +                               dpy, MR_WINDOW(mr), &fra,
381 +                               BACK_GC(ST_MENU_INACTIVE_GCS(ms)),
382 +                               step_x, step_y, MR_WIDTH(mr), 
383 +                               MR_HEIGHT(mr));
384 +                       XMapRaised(dpy, MR_WINDOW(mr));
385 +               }
386 +               XSetWindowBackgroundPixmap(
387 +                       dpy, MR_WINDOW(mr), trans);
388 +               XFreePixmap(dpy, trans);
389 +               if (current_x == step_x)
390 +               {
391 +                       /* Redraw the border */
392 +                       RelieveRectangle(
393 +                               dpy, MR_WINDOW(mr), 0, 0, MR_WIDTH(mr) - 1,
394 +                               MR_HEIGHT(mr) - 1, (Pdepth < 2) ?
395 +                               SHADOW_GC(MST_MENU_INACTIVE_GCS(mr)) :
396 +                               HILIGHT_GC(MST_MENU_INACTIVE_GCS(mr)),
397 +                               SHADOW_GC(MST_MENU_INACTIVE_GCS(mr)), 
398 +                               MST_BORDER_WIDTH(mr));
399 +               }
400 +       }
401 +       else
402 +       {
403 +               SetWindowBackgroundWithOffset(
404 +                       dpy, MR_WINDOW(mr), step_x - current_x,
405 +                       step_y - current_y, MR_WIDTH(mr), MR_HEIGHT(mr),
406 +                       &Colorset[ST_CSET_MENU(ms)], Pdepth,
407 +                       FORE_GC(MST_MENU_INACTIVE_GCS(mr)), False);
408 +       }
409  }
410  
411  
412 @@ -6173,10 +6343,7 @@
413         }
414         if (!is_bg_set)
415         {
416 -               SetWindowBackground(
417 -                       dpy, MR_WINDOW(mr), MR_WIDTH(mr), MR_HEIGHT(mr),
418 -                       &Colorset[ST_CSET_MENU(ms)], Pdepth,
419 -                       FORE_GC(MST_MENU_INACTIVE_GCS(mr)), False);
420 +               update_transparent_menu_bg(prtm, x, y, x, y, end_x, end_y);
421         }
422         /* redraw the background of non active item */
423         for (mi = MR_FIRST_ITEM(mr); mi != NULL; mi = MI_NEXT_ITEM(mi))
424 @@ -6813,10 +6980,12 @@
425                                 SetWindowBackground(
426                                         dpy, MR_WINDOW(mr), MR_WIDTH(mr),
427                                         MR_HEIGHT(mr),
428 -                                       &Colorset[ST_CSET_MENU(ms)],
429 -                                       Pdepth,
430 +                                       &Colorset[ST_CSET_MENU(ms)], Pdepth,
431                                         FORE_GC(MST_MENU_INACTIVE_GCS(mr)),
432 -                                       True);
433 +                                       False);
434 +                               XClearArea(
435 +                                       dpy, MR_WINDOW(mr), 0, 0, MR_WIDTH(mr),
436 +                                       MR_HEIGHT(mr), True);
437                         }
438                         else if ((ST_HAS_ACTIVE_CSET(ms) &&
439                                   ST_CSET_ACTIVE(ms) == cset) ||
440 Index: fvwm/menus.h
441 ===================================================================
442 RCS file: /home/cvs/fvwm/fvwm/fvwm/menus.h,v
443 retrieving revision 1.111
444 diff -u -r1.111 menus.h
445 --- fvwm/menus.h        27 Jan 2007 11:51:15 -0000      1.111
446 +++ fvwm/menus.h        5 Feb 2007 19:17:50 -0000
447 @@ -15,6 +15,9 @@
448  #define IS_MENU_RETURN(x) \
449    ((x)==MENU_DONE || (x)==MENU_ABORTED || (x)==MENU_SUBMENU_TORN_OFF)
450  
451 +#define MR_X(m)                     ((m)->d->x)
452 +#define MR_Y(m)                     ((m)->d->y)
453 +
454  struct MenuRoot;
455  struct MenuStyle;
456  struct MenuReturn;
457 Index: libs/Colorset.h
458 ===================================================================
459 RCS file: /home/cvs/fvwm/fvwm/libs/Colorset.h,v
460 retrieving revision 1.38
461 diff -u -r1.38 Colorset.h
462 --- libs/Colorset.h     10 Jan 2007 00:34:27 -0000      1.38
463 +++ libs/Colorset.h     5 Feb 2007 19:19:00 -0000
464 @@ -51,6 +51,10 @@
465         Bool dither;
466         Bool allows_buffered_transparency;
467         Bool is_maybe_root_transparent;
468 +       /* only use by fvwm menu (non tear-off) */
469 +       Bool is_translucent;
470 +       Pixel translucent_tint;
471 +       unsigned int translucent_tint_percent : 7;
472  #endif
473  } colorset_t;
474  
475 @@ -78,6 +82,7 @@
476  #define FG_TINT_SUPPLIED  0x100
477  #define BG_TINT_SUPPLIED  0x200
478  #define ICON_TINT_SUPPLIED 0x400
479 +#define TRANSLUCENT_TINT_SUPPLIED 0x800
480  #endif
481  
482  /* colorsets are stored as an array of structs to permit fast dereferencing */
483 @@ -153,6 +158,11 @@
484      (cset != NULL && cset->pixmap == ParentRelative && \
485       cset->tint_percent > 0)
486  
487 +#define CSET_IS_TRANSLUCENT(cset) \
488 +    (cset >= 0 && Colorset[cset].is_translucent)
489 +#define CSETS_IS_TRANSLUCENT(cset) \
490 +    (cset && cset->is_translucent)
491 +
492  #ifndef FVWM_COLORSET_PRIVATE
493  /* Create n new colorsets, fvwm/colorset.c does its own thing (different size)
494   */
495 Index: libs/PictureGraphics.c
496 ===================================================================
497 RCS file: /home/cvs/fvwm/fvwm/libs/PictureGraphics.c,v
498 retrieving revision 1.29
499 diff -u -r1.29 PictureGraphics.c
500 --- libs/PictureGraphics.c      27 Jan 2007 11:33:16 -0000      1.29
501 +++ libs/PictureGraphics.c      5 Feb 2007 19:19:49 -0000
502 @@ -1340,7 +1340,7 @@
503         }
504  }
505  
506 -#if 0 /* humm... maybe useful one day with menus */
507 +#if 1 /* humm... maybe useful one day with menus */
508  Pixmap PGraphicsCreateTranslucent(
509         Display *dpy, Window win, FvwmRenderAttributes *fra, GC gc,
510         int x, int y, int width, int height)
511 Index: libs/PictureGraphics.h
512 ===================================================================
513 RCS file: /home/cvs/fvwm/fvwm/libs/PictureGraphics.h,v
514 retrieving revision 1.13
515 diff -u -r1.13 PictureGraphics.h
516 --- libs/PictureGraphics.h      9 May 2006 20:46:29 -0000       1.13
517 +++ libs/PictureGraphics.h      5 Feb 2007 19:19:49 -0000
518 @@ -122,7 +122,9 @@
519         Display *dpy, Window win, Pixel tint, int tint_percent,
520         Drawable dest, Bool dest_is_a_window, GC gc, GC mono_gc, GC alpha_gc,
521         int dest_x, int dest_y, int dest_w, int dest_h);
522 -
523 +Pixmap PGraphicsCreateTranslucent(
524 +       Display *dpy, Window win, FvwmRenderAttributes *fra, GC gc,
525 +       int x, int y, int width, int height);
526  /* never used ! */
527  Pixmap PGraphicsCreateDitherPixmap(
528         Display *dpy, Window win, Drawable src, Pixmap mask, int depth, GC gc,