rem: wwarning(X_ERR);
add: wwarning(_("Color Panel: X failed request"));
context: magnifyGetImageStored(WMColorPanel *panel, int x1, int y1, int x2, int y2){    /* (x1, y1) = topleft corner of existing rectangle      * (x2, y2) = topleft corner of new position     */        W_Screen	*scr = WMWidgetScreen(panel->win);    int		xa = 0, ya = 0, xb = 0, yb = 0;    int		width, height;    const int	dx = abs(x2 - x1),		dy = abs(y2 - y1);    XImage	*image;    const int	x_min = Cursor_x_hot,		y_min = Cursor_y_hot,		x_max = DisplayWidth(scr->display, scr->screen) -1 -		    (Cursor_mask_width - Cursor_x_hot),		y_max = DisplayHeight(scr->display, scr->screen) -1 -		    (Cursor_mask_height - Cursor_y_hot);    if ((dx == 0) && (dy == 0) && panel->magnifyGlass->image)	return;	/* No movement */		    if (x1 < x2)	xa = dx;    else	xb = dx;        if (y1 < y2)	ya = dy;    else	yb = dy;    width  = Cursor_mask_width - dx;    height = Cursor_mask_height - dy;    /* If the traversed distance is larger than the size of the magnifying      * glass contents, there is no need to do dirty rectangles. A whole new     * rectangle can be grabbed (unless that rectangle falls partially      * off screen).     * Destroying the image and setting it to NULL will achieve that later on.     *     * Of course, grabbing an XImage beyond the borders of the screen will     * cause trouble, this is considdered a special case. Part of the screen     * is grabbed, but there is no need for dirty rectangles.     */    if ((width <= 0) || (height <= 0)) {	if ((x2 >= x_min) && (y2 >= y_min) && (x2 <= x_max) && (y2 <= y_max)) {	    if (panel->magnifyGlass->image)		XDestroyImage(panel->magnifyGlass->image);	    panel->magnifyGlass->image = NULL;	}    } else {	if (panel->magnifyGlass->image) {	    /* Get dirty rectangle from panel->magnifyGlass->image */	    panel->magnifyGlass->dirtyRect =		XSubImage(panel->magnifyGlass->image, xa, ya, width, height);	    if (!panel->magnifyGlass->dirtyRect) {		wwarning(X_ERR);		return;	/* X returned a NULL from XSubImage */	    }	}    }     /* Get image from screen */    image = magnifyGetImage(scr, panel->magnifyGlass->image, x2, y2,	    Cursor_mask_width, Cursor_mask_height);    if (image) { /* Only reassign if a *new* image was grabbed */	panel->magnifyGlass->image = image;	return;    }    /* Copy previously stored rectangle on covered part of image */    if (panel->magnifyGlass->image && panel->magnifyGlass->dirtyRect) {	int old_height;    	/* "width" and "height" are used as coordinates here, 	 * and run from [0...width-1] and [0...height-1] respectively.	 */	width--;	height--;	old_height = height;		for (; width >= 0; width--)	    for (height = old_height; height >= 0; height--)		XPutPixel(panel->magnifyGlass->image, xb + width, yb + height,		    XGetPixel(panel->magnifyGlass->dirtyRect, width, height));	XDestroyImage(panel->magnifyGlass->dirtyRect);	panel->magnifyGlass->dirtyRect = NULL;    }        return;}