--- ctwm-3.5.2b/add_window.c.alwayssqueezetogravity     Mon Oct  4 09:51:25 1999
+++ ctwm-3.5.2b/add_window.c    Fri Apr 28 14:55:40 2000
@@ -408,6 +408,11 @@
     else
        tmp_win->StartSqueezed = False;
 
+    if (LookInList (Scr->AlwaysSqueezeToGravity, tmp_win->full_name, &tmp_win->class))
+       tmp_win->AlwaysSqueezeToGravity= True;
+    else
+       tmp_win->AlwaysSqueezeToGravity = False;
+
     if (tmp_win->transient || tmp_win->group) {
        TwmWindow *t;
        for (t = Scr->TwmRoot.next; t != NULL; t = t->next) {
--- ctwm-3.5.2b/ctwm.c.alwayssqueezetogravity   Mon Oct  4 09:51:26 1999
+++ ctwm-3.5.2b/ctwm.c  Fri Apr 28 14:55:40 2000
@@ -565,6 +565,7 @@
        Scr->DontSetInactive = NULL;
        Scr->AutoSqueeze = NULL;
        Scr->StartSqueezed = NULL;
+       Scr->AlwaysSqueezeToGravity = NULL;
        Scr->MakeTitle = NULL;
        Scr->AutoRaise = NULL;
        Scr->AutoLower = NULL;
@@ -954,6 +955,7 @@
     FreeList(&Scr->DontSetInactive);
     FreeList(&Scr->AutoSqueeze);
     FreeList(&Scr->StartSqueezed);
+    FreeList(&Scr->AlwaysSqueezeToGravity);
 
     NewFontCursor(&Scr->FrameCursor, "top_left_arrow");
     NewFontCursor(&Scr->TitleCursor, "top_left_arrow");
--- ctwm-3.5.2b/ctwm.man.alwayssqueezetogravity Mon Oct  4 09:51:26 1999
+++ ctwm-3.5.2b/ctwm.man        Fri Apr 28 14:55:40 2000
@@ -355,6 +355,12 @@
 window is always visible during the move, regardless of whether it crosses
 the current workspace or not. The Shift key toggles this behaviour.
 
+.IP "\fBAlwaysSqueezeToGravity\fP { \fIwin-list\fP }" 8
+This variable instructs \fIctwm\fP to obey window gravity when
+squeezing the named windows even when the windows have titlebars.
+Normally, \fIctwm\fP will always squeeze a window that has a titlebar
+toward the north.
+
 .IP "\fBAnimationSpeed\fP \fIspeed\fP" 8
 The \fIspeed\fP argument is a non-negative integer. It determines the number of
 times a second animations (if any) are updated. If \fIspeed\fP is 0, animations
--- ctwm-3.5.2b/gram.y.alwayssqueezetogravity   Mon Oct  4 09:51:26 1999
+++ ctwm-3.5.2b/gram.y  Fri Apr 28 14:55:40 2000
@@ -140,7 +140,7 @@
 %token <num> OCCUPYALL OCCUPYLIST MAPWINDOWCURRENTWORKSPACE MAPWINDOWDEFAULTWORKSPACE
 %token <num> UNMAPBYMOVINGFARAWAY OPAQUEMOVE NOOPAQUEMOVE OPAQUERESIZE NOOPAQUERESIZE
 %token <num> DONTSETINACTIVE CHANGE_WORKSPACE_FUNCTION DEICONIFY_FUNCTION 
ICONIFY_FUNCTION
-%token <num> AUTOSQUEEZE STARTSQUEEZED DONT_SAVE AUTO_LOWER
+%token <num> AUTOSQUEEZE STARTSQUEEZED DONT_SAVE AUTO_LOWER ALWAYSSQUEEZETOGRAVITY
 %token <ptr> STRING
 
 %type <ptr> string
@@ -293,6 +293,8 @@
                | AUTOSQUEEZE           { list = &Scr->AutoSqueeze; }
                  win_list
                | STARTSQUEEZED         { list = &Scr->StartSqueezed; }
+                 win_list
+               | ALWAYSSQUEEZETOGRAVITY        { list = &Scr->AlwaysSqueezeToGravity; 
+}
                  win_list
                | DONTSETINACTIVE       { list = &Scr->DontSetInactive; }
                  win_list
--- ctwm-3.5.2b/menus.c.alwayssqueezetogravity  Mon Oct  4 09:51:27 1999
+++ ctwm-3.5.2b/menus.c Fri Apr 28 14:55:40 2000
@@ -4017,7 +4017,7 @@
        default :
            south = False; break;
     }
-    if (tmp_win->title_height) south = False;
+    if (tmp_win->title_height && !tmp_win->AlwaysSqueezeToGravity) south = False;
 
     tmp_win->squeezed = True;
     tmp_win->actual_frame_width  = tmp_win->frame_width;
--- ctwm-3.5.2b/parse.c.alwayssqueezetogravity  Mon Oct  4 09:51:27 1999
+++ ctwm-3.5.2b/parse.c Fri Apr 28 14:55:40 2000
@@ -707,6 +707,7 @@
     { "alter",                 ALTER, 0 },
     { "alwaysontop",           ALWAYS_ON_TOP, 0 },
     { "alwaysshowwindowwhenmovingfromworkspacemanager", KEYWORD, 
kw0_ShowWinWhenMovingInWmgr },
+    { "alwayssqueezetogravity",                ALWAYSSQUEEZETOGRAVITY, 0 },
     { "animationspeed",                NKEYWORD, kwn_AnimationSpeed },
     { "autofocustotransients",  KEYWORD, kw0_AutoFocusToTransients }, /* kai */
     { "autolower",             AUTO_LOWER, 0 },
--- ctwm-3.5.2b/screen.h.alwayssqueezetogravity Mon Oct  4 09:51:27 1999
+++ ctwm-3.5.2b/screen.h        Fri Apr 28 14:55:40 2000
@@ -207,6 +207,7 @@
     name_list  *DontSetInactive;
     name_list  *AutoSqueeze;
     name_list  *StartSqueezed;
+    name_list  *AlwaysSqueezeToGravity;
     short      use3Dmenus;
     short      use3Dtitles;
     short      use3Diconmanagers;
--- ctwm-3.5.2b/twm.h.alwayssqueezetogravity    Mon Oct  4 09:51:12 1999
+++ ctwm-3.5.2b/twm.h   Fri Apr 28 14:55:40 2000
@@ -383,6 +383,7 @@
     short UnmapByMovingFarAway;
     short AutoSqueeze;
     short StartSqueezed;
+    short AlwaysSqueezeToGravity;
     short DontSetInactive;
     Bool hasfocusvisible;      /* The window has visivle focus*/
     int  occupation;
--- ctwm-3.6/add_window.c.alwayssqueezetogravity        Tue Dec 11 10:38:52 2001
+++ ctwm-3.6/add_window.c       Tue Jun 18 13:49:19 2002
@@ -423,6 +423,11 @@
     else
        tmp_win->StartSqueezed = False;
 
+    if (LookInList (Scr->AlwaysSqueezeToGravity, tmp_win->full_name, &tmp_win->class))
+       tmp_win->AlwaysSqueezeToGravity= True;
+    else
+       tmp_win->AlwaysSqueezeToGravity = False;
+
     if (tmp_win->transient || tmp_win->group) {
        TwmWindow *t;
        for (t = Scr->TwmRoot.next; t != NULL; t = t->next) {
--- ctwm-3.6/ctwm.c.alwayssqueezetogravity      Tue Dec 11 10:38:52 2001
+++ ctwm-3.6/ctwm.c     Tue Jun 18 13:49:51 2002
@@ -568,6 +568,7 @@
        Scr->DontSetInactive = NULL;
        Scr->AutoSqueeze = NULL;
        Scr->StartSqueezed = NULL;
+       Scr->AlwaysSqueezeToGravity = NULL;
        Scr->MakeTitle = NULL;
        Scr->AutoRaise = NULL;
        Scr->AutoLower = NULL;
@@ -959,6 +960,7 @@
     FreeList(&Scr->DontSetInactive);
     FreeList(&Scr->AutoSqueeze);
     FreeList(&Scr->StartSqueezed);
+    FreeList(&Scr->AlwaysSqueezeToGravity);
     FreeList(&Scr->IconMenuDontShow);
 
 
--- ctwm-3.6/ctwm.man.alwayssqueezetogravity    Tue Dec 11 10:38:52 2001
+++ ctwm-3.6/ctwm.man   Tue Jun 18 13:50:20 2002
@@ -360,6 +360,12 @@
 window is always visible during the move, regardless of whether it crosses
 the current workspace or not. The Shift key toggles this behaviour.
 
+.IP "\fBAlwaysSqueezeToGravity\fP { \fIwin-list\fP }" 8
+This variable instructs \fIctwm\fP to obey window gravity when
+squeezing the named windows even when the windows have titlebars.
+Normally, \fIctwm\fP will always squeeze a window that has a titlebar
+toward the north.
+
 .IP "\fBAnimationSpeed\fP \fIspeed\fP" 8
 The \fIspeed\fP argument is a non-negative integer. It determines the number of
 times a second animations (if any) are updated. If \fIspeed\fP is 0, animations
--- ctwm-3.6/gram.y.alwayssqueezetogravity      Tue Jun 18 13:47:26 2002
+++ ctwm-3.6/gram.y     Tue Jun 18 13:51:12 2002
@@ -143,6 +143,7 @@
 %token <num> DONTSETINACTIVE CHANGE_WORKSPACE_FUNCTION DEICONIFY_FUNCTION 
ICONIFY_FUNCTION
 %token <num> AUTOSQUEEZE STARTSQUEEZED DONT_SAVE AUTO_LOWER ICONMENU_DONTSHOW 
WINDOW_BOX
 %token <num> IGNOREMODIFIER WINDOW_GEOMETRIES
+%token <num> ALWAYSSQUEEZETOGRAVITY
 %token <ptr> STRING
 
 %type <ptr> string
@@ -304,6 +305,8 @@
                  win_list
                | STARTSQUEEZED         { list = &Scr->StartSqueezed; }
                  win_list
+               | ALWAYSSQUEEZETOGRAVITY        { list = &Scr->AlwaysSqueezeToGravity; 
+}
+                 win_list
                | DONTSETINACTIVE       { list = &Scr->DontSetInactive; }
                  win_list
                | ICONMGR_NOSHOW        { list = &Scr->IconMgrNoShow; }
--- ctwm-3.6/menus.c.alwayssqueezetogravity     Tue Dec 11 10:38:52 2001
+++ ctwm-3.6/menus.c    Tue Jun 18 13:51:31 2002
@@ -4097,7 +4097,7 @@
        default :
            south = False; break;
     }
-    if (tmp_win->title_height) south = False;
+    if (tmp_win->title_height && !tmp_win->AlwaysSqueezeToGravity) south = False;
 
     tmp_win->squeezed = True;
     tmp_win->actual_frame_width  = tmp_win->frame_width;
--- ctwm-3.6/parse.c.alwayssqueezetogravity     Tue Dec 11 10:38:52 2001
+++ ctwm-3.6/parse.c    Tue Jun 18 13:51:50 2002
@@ -724,6 +724,7 @@
     { "alter",                 ALTER, 0 },
     { "alwaysontop",           ALWAYS_ON_TOP, 0 },
     { "alwaysshowwindowwhenmovingfromworkspacemanager", KEYWORD, 
kw0_ShowWinWhenMovingInWmgr },
+    { "alwayssqueezetogravity",                ALWAYSSQUEEZETOGRAVITY, 0 },
     { "animationspeed",                NKEYWORD, kwn_AnimationSpeed },
     { "autofocustotransients",  KEYWORD, kw0_AutoFocusToTransients }, /* kai */
     { "autolower",             AUTO_LOWER, 0 },
--- ctwm-3.6/screen.h.alwayssqueezetogravity    Tue Dec 11 10:38:52 2001
+++ ctwm-3.6/screen.h   Tue Jun 18 13:52:05 2002
@@ -207,6 +207,7 @@
     name_list  *DontSetInactive;
     name_list  *AutoSqueeze;
     name_list  *StartSqueezed;
+    name_list  *AlwaysSqueezeToGravity;
     short      use3Dmenus;
     short      use3Dtitles;
     short      use3Diconmanagers;
--- ctwm-3.6/twm.h.alwayssqueezetogravity       Tue Dec 11 10:38:52 2001
+++ ctwm-3.6/twm.h      Tue Jun 18 13:52:26 2002
@@ -396,6 +396,7 @@
     short UnmapByMovingFarAway;
     short AutoSqueeze;
     short StartSqueezed;
+    short AlwaysSqueezeToGravity;
     short DontSetInactive;
     Bool hasfocusvisible;      /* The window has visivle focus*/
     int  occupation;


Reply via email to