[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#241469: here's a patch to implement it



tags 241469 + patch
thanks

I'm using this patch successfully.  It's all fairly simple.

-zefram

diff -ru3 ./xc/programs/twm/add_window.c ../build-tree.new/xc/programs/twm/add_window.c
--- ./xc/programs/twm/add_window.c	2002-12-10 22:28:07.000000000 +0000
+++ ../build-tree.new/xc/programs/twm/add_window.c	2004-10-23 11:38:10.000000000 +0100
@@ -596,6 +596,9 @@
 
 	    if (event.xbutton.button == Button2) {
 		int lastx, lasty;
+		short saveOpaqueResize = Scr->OpaqueResize;
+
+		Scr->OpaqueResize = FALSE;
 
 		Scr->SizeStringOffset = width +
 		  MyFont_TextWidth(&Scr->SizeFont, ": ", 2);
@@ -645,6 +648,7 @@
 		    if (event.type == ButtonRelease)
 		    {
 			AddEndResize(tmp_win);
+			Scr->OpaqueResize = saveOpaqueResize;
 			break;
 		    }
 
diff -ru3 ./xc/programs/twm/parse.c ../build-tree.new/xc/programs/twm/parse.c
--- ./xc/programs/twm/parse.c	2002-12-10 22:29:55.000000000 +0000
+++ ../build-tree.new/xc/programs/twm/parse.c	2004-10-23 10:19:15.000000000 +0100
@@ -368,6 +368,7 @@
 #define kw0_NoCaseSensitive		23
 #define kw0_NoRaiseOnWarp		24
 #define kw0_WarpUnmapped		25
+#define kw0_OpaqueResize		26
 
 #define kws_UsePPosition		1
 #define kws_IconFont			2
@@ -576,6 +577,7 @@
     { "notitlehighlight",	NO_TITLE_HILITE, 0 },
     { "noversion",		KEYWORD, kw0_NoVersion },
     { "opaquemove",		KEYWORD, kw0_OpaqueMove },
+    { "opaqueresize",		KEYWORD, kw0_OpaqueResize },
     { "pixmaps",		PIXMAPS, 0 },
     { "pointerbackground",	CKEYWORD, kwc_PointerBackground },
     { "pointerforeground",	CKEYWORD, kwc_PointerForeground },
@@ -754,6 +756,10 @@
       case kw0_WarpUnmapped:
 	Scr->WarpUnmapped = TRUE;
 	return 1;
+
+      case kw0_OpaqueResize:
+	Scr->OpaqueResize = TRUE;
+	return 1;
     }
 
     return 0;
diff -ru3 ./xc/programs/twm/resize.c ../build-tree.new/xc/programs/twm/resize.c
--- ./xc/programs/twm/resize.c	2001-12-14 20:01:09.000000000 +0000
+++ ../build-tree.new/xc/programs/twm/resize.c	2004-10-23 11:29:05.000000000 +0100
@@ -163,7 +163,8 @@
     unsigned int junkbw, junkDepth;
 
     ResizeWindow = tmp_win->frame;
-    XGrabServer(dpy);
+    if(!Scr->NoGrabServer || !Scr->OpaqueResize)
+	XGrabServer(dpy);
     XGrabPointer(dpy, Scr->Root, True,
         ButtonPressMask | ButtonReleaseMask |
 	ButtonMotionMask | PointerMotionHintMask,
@@ -193,10 +194,19 @@
     last_width = 0;
     last_height = 0;
     DisplaySize(tmp_win, origWidth, origHeight);
-    MoveOutline (Scr->Root, dragx - tmp_win->frame_bw,
-		 dragy - tmp_win->frame_bw, dragWidth + 2 * tmp_win->frame_bw,
-		 dragHeight + 2 * tmp_win->frame_bw,
-		 tmp_win->frame_bw, tmp_win->title_height);
+    if(Scr->OpaqueResize)
+    {
+	if (!Scr->NoRaiseResize)
+	    XRaiseWindow(dpy, tmp_win->frame);
+    }
+    else
+    {
+	MoveOutline (Scr->Root, dragx - tmp_win->frame_bw,
+		     dragy - tmp_win->frame_bw,
+		     dragWidth + 2 * tmp_win->frame_bw,
+		     dragHeight + 2 * tmp_win->frame_bw,
+		     tmp_win->frame_bw, tmp_win->title_height);
+    }
 }
 
 
@@ -206,7 +216,8 @@
 TwmWindow *tmp_win;
 int x, y, w, h;
 {
-    XGrabServer(dpy);
+    if(!Scr->NoGrabServer || !Scr->OpaqueResize)
+	XGrabServer(dpy);
     XGrabPointer(dpy, Scr->Root, True,
         ButtonPressMask | ButtonMotionMask | PointerMotionMask,
         GrabModeAsync, GrabModeAsync,
@@ -226,11 +237,12 @@
 		   Scr->SizeFont.height + SIZE_VINDENT * 2);
     XMapRaised(dpy, Scr->SizeWindow);
     DisplaySize(tmp_win, origWidth, origHeight);
-    MoveOutline (Scr->Root, dragx - tmp_win->frame_bw,
-		 dragy - tmp_win->frame_bw, 
-		 dragWidth + 2 * tmp_win->frame_bw,
-		 dragHeight + 2 * tmp_win->frame_bw,
-		 tmp_win->frame_bw, tmp_win->title_height);
+    if(!Scr->OpaqueResize)
+	MoveOutline (Scr->Root, dragx - tmp_win->frame_bw,
+		     dragy - tmp_win->frame_bw, 
+		     dragWidth + 2 * tmp_win->frame_bw,
+		     dragHeight + 2 * tmp_win->frame_bw,
+		     tmp_win->frame_bw, tmp_win->title_height);
 }
 
 /***********************************************************************
@@ -368,12 +380,17 @@
             dragx = origx + origWidth - dragWidth;
         if (clampTop)
             dragy = origy + origHeight - dragHeight;
-        MoveOutline(Scr->Root,
-            dragx - tmp_win->frame_bw,
-            dragy - tmp_win->frame_bw,
-            dragWidth + 2 * tmp_win->frame_bw,
-            dragHeight + 2 * tmp_win->frame_bw,
-	    tmp_win->frame_bw, tmp_win->title_height);
+	if(Scr->OpaqueResize)
+	    SetupWindow (tmp_win, dragx - tmp_win->frame_bw,
+			 dragy - tmp_win->frame_bw,
+			 dragWidth, dragHeight, -1);
+	else
+	    MoveOutline(Scr->Root,
+		dragx - tmp_win->frame_bw,
+		dragy - tmp_win->frame_bw,
+		dragWidth + 2 * tmp_win->frame_bw,
+		dragHeight + 2 * tmp_win->frame_bw,
+		tmp_win->frame_bw, tmp_win->title_height);
     }
 
     DisplaySize(tmp_win, dragWidth, dragHeight);
@@ -491,12 +508,17 @@
             dragx = origx + origWidth - dragWidth;
         if (clampTop)
             dragy = origy + origHeight - dragHeight;
-        MoveOutline(Scr->Root,
-            dragx - tmp_win->frame_bw,
-            dragy - tmp_win->frame_bw,
-            dragWidth + 2 * tmp_win->frame_bw,
-            dragHeight + 2 * tmp_win->frame_bw,
-	    tmp_win->frame_bw, tmp_win->title_height);
+	if(Scr->OpaqueResize)
+	    SetupWindow (tmp_win, dragx - tmp_win->frame_bw,
+			 dragy - tmp_win->frame_bw,
+			 dragWidth, dragHeight, -1);
+	else
+	    MoveOutline(Scr->Root,
+		dragx - tmp_win->frame_bw,
+		dragy - tmp_win->frame_bw,
+		dragWidth + 2 * tmp_win->frame_bw,
+		dragHeight + 2 * tmp_win->frame_bw,
+		tmp_win->frame_bw, tmp_win->title_height);
     }
 
     DisplaySize(tmp_win, dragWidth, dragHeight);
@@ -606,7 +628,7 @@
         PackIconManager(tmp_win->iconmgrp);
     }
 
-    if (!Scr->NoRaiseResize)
+    if (!Scr->OpaqueResize && !Scr->NoRaiseResize)
         XRaiseWindow(dpy, tmp_win->frame);
 
     UninstallRootColormap();
diff -ru3 ./xc/programs/twm/screen.h ../build-tree.new/xc/programs/twm/screen.h
--- ./xc/programs/twm/screen.h	2001-12-14 20:01:10.000000000 +0000
+++ ../build-tree.new/xc/programs/twm/screen.h	2004-10-23 10:19:38.000000000 +0100
@@ -249,6 +249,7 @@
     short FirstTime;		/* first time we've read .twmrc */
     short CaseSensitive;	/* be case-sensitive when sorting names */
     short WarpUnmapped;		/* allow warping to unmapped windows */
+    short OpaqueResize;		/* resize the window rather than outline */
 
     FuncKey FuncKeyRoot;
 } ScreenInfo;
END_OF_PATCH



Reply to: