* gnu/packages/patches/wmfire-update-for-new-gdk-versions.patch: New file. * gnu/local.mk (dist_patch_DATA): Add it. * gnu/packages/gnustep.scm (wmfire)[source]: Add patch.
		
			
				
	
	
		
			144 lines
		
	
	
	
		
			4.2 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			144 lines
		
	
	
	
		
			4.2 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
| This patch comes from Debian and was modified by Kei Kebreau <kei@openmailbox.org>.
 | |
| Link: https://anonscm.debian.org/cgit/pkg-wmaker/wmfire.git/plain/debian/patches/gdk_updates.patch?h=debian/1.2.4-2&id=a272234fc5eecdbfc469adb12133196bc62f3059
 | |
| 
 | |
| Description: Update for newer versions of GDK.
 | |
|  In particular, the icon window was not receiving enter and leave events from
 | |
|  the pointer.  To fix this, we get rid of the second GdkWindow iconwin entirely
 | |
|  and set win to be its own icon.
 | |
|  .
 | |
|  This also removes the need for the "broken window manager" fix, so we remove it
 | |
|  and all references to it.
 | |
| Author: Doug Torrance <dtorrance@piedmont.edu>
 | |
| 
 | |
| diff -ur wmfire-1.2.4.old/src/wmfire.c wmfire-1.2.4/src/wmfire.c
 | |
| --- wmfire-1.2.4.old/src/wmfire.c	2017-04-23 14:26:58.449487117 -0400
 | |
| +++ wmfire-1.2.4/src/wmfire.c	2017-04-23 14:32:10.785238671 -0400
 | |
| @@ -77,7 +77,6 @@
 | |
|  typedef struct {
 | |
|  	Display *display;	/* X11 display */
 | |
|  	GdkWindow *win;		/* Main window */
 | |
| -	GdkWindow *iconwin;	/* Icon window */
 | |
|  	GdkGC *gc;		/* Drawing GC */
 | |
|  	GdkPixmap *pixmap;	/* Main pixmap */
 | |
|  	GdkBitmap *mask;	/* Dockapp mask */
 | |
| @@ -141,7 +140,6 @@
 | |
|  int cmap = 0;
 | |
|  int lock = 0;
 | |
|  int proximity = 0;
 | |
| -int broken_wm = 0;
 | |
|  
 | |
|  /******************************************/
 | |
|  /* Main                                   */
 | |
| @@ -262,12 +260,8 @@
 | |
|  		usleep(REFRESH);
 | |
|  
 | |
|  		/* Draw the rgb buffer to screen */
 | |
| -		if (!broken_wm)
 | |
| -			gdk_draw_rgb_image(bm.iconwin, bm.gc, 4, 4, XMAX, YMAX, GDK_RGB_DITHER_NONE, bm.rgb, XMAX * 3);
 | |
| -		else
 | |
| -			gdk_draw_rgb_image(bm.win, bm.gc, 4, 4, XMAX, YMAX, GDK_RGB_DITHER_NONE, bm.rgb, XMAX * 3);
 | |
| +                gdk_draw_rgb_image(bm.win, bm.gc, 4, 4, XMAX, YMAX, GDK_RGB_DITHER_NONE, bm.rgb, XMAX * 3);
 | |
|  	}
 | |
| -
 | |
|  	return 0;
 | |
|  }
 | |
|  
 | |
| @@ -556,9 +550,7 @@
 | |
|  #define MASK GDK_BUTTON_PRESS_MASK | GDK_ENTER_NOTIFY_MASK | GDK_LEAVE_NOTIFY_MASK | GDK_POINTER_MOTION_HINT_MASK
 | |
|  
 | |
|  	GdkWindowAttr attr;
 | |
| -	GdkWindowAttr attri;
 | |
|  	Window win;
 | |
| -	Window iconwin;
 | |
|  
 | |
|  	GdkPixmap *icon;
 | |
|  
 | |
| @@ -578,10 +570,6 @@
 | |
|  	attr.wmclass_class = "wmfire";
 | |
|  	attr.window_type = GDK_WINDOW_TOPLEVEL;
 | |
|  
 | |
| -	/* Make a copy for the iconwin - parameters are the same */
 | |
| -	memcpy(&attri, &attr, sizeof (GdkWindowAttr));
 | |
| -	attri.window_type = GDK_WINDOW_CHILD;
 | |
| -
 | |
|  	sizehints.flags = USSize;
 | |
|  	sizehints.width = 64;
 | |
|  	sizehints.height = 64;
 | |
| @@ -592,18 +580,11 @@
 | |
|  		exit(1);
 | |
|  	}
 | |
|  
 | |
| -	bm.iconwin = gdk_window_new(bm.win, &attri, GDK_WA_TITLE | GDK_WA_WMCLASS);
 | |
| -	if (!bm.iconwin) {
 | |
| -		fprintf(stderr, "FATAL: Cannot make icon window\n");
 | |
| -		exit(1);
 | |
| -	}
 | |
| -
 | |
|  	win = GDK_WINDOW_XWINDOW(bm.win);
 | |
| -	iconwin = GDK_WINDOW_XWINDOW(bm.iconwin);
 | |
|  	XSetWMNormalHints(GDK_WINDOW_XDISPLAY(bm.win), win, &sizehints);
 | |
|  
 | |
|  	wmhints.initial_state = WithdrawnState;
 | |
| -	wmhints.icon_window = iconwin;
 | |
| +	wmhints.icon_window = win;
 | |
|  	wmhints.icon_x = 0;
 | |
|  	wmhints.icon_y = 0;
 | |
|  	wmhints.window_group = win;
 | |
| @@ -613,10 +594,8 @@
 | |
|  
 | |
|  	bm.pixmap = gdk_pixmap_create_from_xpm_d(bm.win, &(bm.mask), NULL, master_xpm);
 | |
|  	gdk_window_shape_combine_mask(bm.win, bm.mask, 0, 0);
 | |
| -	gdk_window_shape_combine_mask(bm.iconwin, bm.mask, 0, 0);
 | |
|  
 | |
|  	gdk_window_set_back_pixmap(bm.win, bm.pixmap, False);
 | |
| -	gdk_window_set_back_pixmap(bm.iconwin, bm.pixmap, False);
 | |
|  
 | |
|  #if 0
 | |
|          gdk_window_set_type_hint(bm.win, GDK_WINDOW_TYPE_HINT_DOCK);
 | |
| @@ -626,7 +605,6 @@
 | |
|  #endif
 | |
|  
 | |
|  	icon = gdk_pixmap_create_from_xpm_d(bm.win, NULL, NULL, icon_xpm);
 | |
| -	gdk_window_set_icon(bm.win, bm.iconwin, icon, NULL);
 | |
|  
 | |
|  	gdk_window_show(bm.win);
 | |
|  
 | |
| @@ -721,9 +699,6 @@
 | |
|  		case 'l':
 | |
|  			lock = 1;
 | |
|  			break;
 | |
| -		case 'b':
 | |
| -			broken_wm = 1;
 | |
| -			break;
 | |
|  		case 'h':
 | |
|  		default:
 | |
|  			do_help();
 | |
| @@ -766,6 +741,5 @@
 | |
|  	for (i = 0; i < NFLAMES; i++)
 | |
|  		fprintf(stderr, "%d:%s ", i + 1, fire[i].text);
 | |
|  	fprintf(stderr, "\n\t-l\t\t\tlock flame colour and monitor\n");
 | |
| -	fprintf(stderr, "\t-b\t\t\tactivate broken window manager fix\n");
 | |
|  	fprintf(stderr, "\t-h\t\t\tprints this help\n");
 | |
|  }
 | |
| Only in wmfire-1.2.4/src: wmfire.c~
 | |
| diff -ur wmfire-1.2.4.old/wmfire.1 wmfire-1.2.4/wmfire.1
 | |
| --- wmfire-1.2.4.old/wmfire.1	2017-04-23 14:26:58.449487117 -0400
 | |
| +++ wmfire-1.2.4/wmfire.1	2017-04-23 14:41:20.697186114 -0400
 | |
| @@ -8,7 +8,6 @@
 | |
|  
 | |
|  .SH SYNOPSIS
 | |
|  .B wmfire
 | |
| -[-b]
 | |
|  [-c CPU]
 | |
|  [-f COLOUR]
 | |
|  [-F FILE]
 | |
| @@ -54,9 +53,6 @@
 | |
|  
 | |
|  .SH OPTIONS
 | |
|  .TP
 | |
| -.B -b
 | |
| -Activate broken window manager fix (if grey box diplayed)
 | |
| -.TP
 | |
|  .B -c [0..3]
 | |
|  .br
 | |
|  Monitor SMP CPU number X
 |