I made a patch that adds the following options to FvwmIconBox.

*FvwmIconBox: NoIconifiedParenthese

Turns off the parenthesis around the titles of iconified windows.

*FvwmIconBox: NormalTitleRelief num

Sets the width of the relief for the title of uniconified windows (0 no
relief).

*FvwmIconBox: IconifiedTitleRelief num 

Same for iconified windows.

I didn't implement inverted reliefs (as someone suggested), I could add
this also, if it's considered a useful feature.

//Marcus

? IconBox.diff
Index: ChangeLog
===================================================================
RCS file: /home/cvs/fvwm/fvwm/ChangeLog,v
retrieving revision 1.2161
diff -u -u -r1.2161 ChangeLog
--- ChangeLog   2002/11/26 13:56:45     1.2161
+++ ChangeLog   2002/11/26 22:09:13
@@ -1,3 +1,14 @@
+2002-11-26  Marcus Lundblad <[EMAIL PROTECTED]>
+       * modules/FvwmIconBox/FvwmIconBox.c (RedrawIcon, CreateWindow,
+                                            ParseOptions):
+       * modules/FvwmIconBox/icons.c (AdjustIconWindow):
+       impemented options for turning off parenthesisation of iconified
+       window title
+                                           
+       * modules/FvwmIconBox/FvwmIconBox.1:
+       documented options for turning off parenthesisation of iconified
+       window title
+
 2002-11-26  Mikhael Goikhman  <[EMAIL PROTECTED]>
 
        * fvwm/fvwm.c (InitVariables):
Index: modules/FvwmIconBox/FvwmIconBox.1
===================================================================
RCS file: /home/cvs/fvwm/fvwm/modules/FvwmIconBox/FvwmIconBox.1,v
retrieving revision 1.15
diff -u -u -r1.15 FvwmIconBox.1
--- modules/FvwmIconBox/FvwmIconBox.1   2002/04/25 16:34:29     1.15
+++ modules/FvwmIconBox/FvwmIconBox.1   2002/11/26 22:09:16
@@ -243,6 +243,20 @@
 is "*FvwmIconBox: NoIconAction SendToModule FvwmAnimate animate". A blank or 
null
 action turns this feature off.
 
+.IP "*FvwmIconBox: NoIconifiedParentheses"
+Tells FvwmIconBox to not enclose the title of an iconified window within
+parantheses.
+
+.IP "*FvwmIconBox: NormalTitleRelief \fInum\fP"
+Sets the width in pixels of the relief that is put around icon titles for
+windows that are not iconified. The default if this option is not specified is
+2 pixels.
+
+.IP "*FvwmIconBox: IconifiedTitleRelief \fInum\fP"
+Sets the width in pixels of the relief that is put around icon titles for
+windows that are iconified. The default if this option is not specified is
+2 pixels.
+
 .SH SAMPLE CONFIGURATION
 The following are excepts from a .fvwm2rc file which describe
 FvwmIconBox initialization commands:
Index: modules/FvwmIconBox/FvwmIconBox.c
===================================================================
RCS file: /home/cvs/fvwm/fvwm/modules/FvwmIconBox/FvwmIconBox.c,v
retrieving revision 1.90
diff -u -u -r1.90 FvwmIconBox.c
--- modules/FvwmIconBox/FvwmIconBox.c   2002/11/13 22:37:43     1.90
+++ modules/FvwmIconBox/FvwmIconBox.c   2002/11/26 22:09:23
@@ -68,7 +68,6 @@
 
 #include "FvwmIconBox.h"
 
-
 char *MyName;
 
 Display *dpy;                   /* which display are we talking to */
@@ -153,6 +152,12 @@
 int margin1 = 8;
 int margin2 = 6;
 
+/* true if iconified windows doesn't have () around the title */
+Bool iconified_has_normal_title = False;
+
+int normal_title_relief = 2;
+int iconified_title_relief = 2;
+
 Pixmap IconwinPixmap = None;
 char *IconwinPixmapFile = NULL;
 
@@ -760,6 +765,7 @@
 {
        int hr, len;
        int diff, lm ,w, h, tw;
+       int title_relief;
        char label[256];
        int cs;
        XRectangle inter;
@@ -885,17 +891,16 @@
                {
                        if (item->icon_w > 0 && item->icon_h > 0)
                                RelieveRectangle(dpy, item->icon_pixmap_w,
-                                                0, 0, item->icon_w
-                                                +icon_relief - 1,
+                                                0, 0, 
+                                                item->icon_w + icon_relief - 1,
                                                 item->icon_h + icon_relief - 1,
                                                 IconReliefGC,
                                                 IconShadowGC, 2);
                        else
                                RelieveRectangle(dpy, item->icon_pixmap_w,
-                                                0, 0, max_icon_width
-                                                + icon_relief - 1,
-                                                max_icon_height +
-                                                icon_relief - 1,
+                                                0, 0,
+                                                max_icon_width + icon_relief - 
1,
+                                                max_icon_height + icon_relief 
- 1,
                                                 IconReliefGC,
                                                 IconShadowGC, 2);
                }
@@ -909,12 +914,23 @@
 
                if (IS_ICONIFIED(item))
                {
-                       sprintf(label, "(%s)", item->name);
+                       if( ! iconified_has_normal_title )
+                               sprintf(label, "(%s)", item->name);
+                       else
+                               strcpy(label, item->name);
+                   
                }
                else
                {
                        strcpy(label, item->name);
                }
+
+               /* calculate the actual relief thickness */
+               title_relief = IS_ICONIFIED(item) ? 
+                                       iconified_title_relief :
+                                       normal_title_relief;
+               
+
                if (evp)
                {
                        inter.x = evp->xexpose.x;
@@ -934,13 +950,15 @@
                tw = FlocaleTextWidth(Ffont, label, len);
                diff = max_icon_width + icon_relief - tw;
                lm = diff/2;
-               lm = lm > 4 ? lm : 4;
+               lm = lm > 2 + title_relief ? lm : 2 + title_relief;
 
                FwinString->str = label;
                FwinString->win = item->IconWin;
                FwinString->gc =  NormalGC;
                FwinString->x = lm;
-               FwinString->y = 3 + Ffont->ascent;
+               FwinString->y = 1 + max(normal_title_relief,
+                                       iconified_title_relief) + 
+                               Ffont->ascent;
                if (cs >= 0)
                {
                        FwinString->colorset = &Colorset[cs];
@@ -950,14 +968,20 @@
                {
                        FwinString->flags.has_colorset = False;
                }
+               
 
+               
                if (Hilite == item)
                {
                        XRaiseWindow(dpy, item->IconWin);
                        XMoveResizeWindow(dpy, item->IconWin,
                                          item->x + min(0, (diff - 8))/2,
                                          item->y + h,
-                                         max(tw + 8, w), 6 + Ffont->height);
+                                         max(tw + 4 + 2 * title_relief, w), 
+                                         2 + 
+                                         2 * max(iconified_title_relief,
+                                                 normal_title_relief) + 
+                                         Ffont->height);
                        if (evp)
                        {
                                XClearArea(
@@ -971,16 +995,26 @@
                                XClearWindow(dpy, item->IconWin);
                        }
                        FlocaleDrawString(dpy, Ffont, FwinString, 0);
+
                        RelieveRectangle(dpy, item->IconWin, 0, 0,
-                                        max(tw + 8, w) - 1,
-                                        6 + Ffont->height - 1,
-                                        IconReliefGC, IconShadowGC, 2);
+                                        max(tw + 4 + 2 * title_relief, w) - 1,
+                                        2 + 
+                                        2 * max(iconified_title_relief,
+                                                normal_title_relief) + 
+                                        Ffont->height - 1,
+                                        IconReliefGC, IconShadowGC, 
+                                        title_relief);
                }
+
                else
                {
                        XMoveResizeWindow(dpy, item->IconWin,
                                          item->x, item->y + h,
-                                         w, 6 + Ffont->height);
+                                         w, 
+                                         2 + 
+                                         2 * max(iconified_title_relief,
+                                                 normal_title_relief) + 
+                                         Ffont->height);
                        if (evp)
                        {
                                XClearArea(
@@ -994,9 +1028,16 @@
                                XClearWindow(dpy, item->IconWin);
                        }
                        FlocaleDrawString(dpy, Ffont, FwinString, 0);
+                       
                        RelieveRectangle(dpy, item->IconWin, 0, 0,
-                                        w - 1, 5 + Ffont->height,
-                                        IconReliefGC, IconShadowGC, 2);
+                                        w - 1,
+                                        2 + 
+                                        2 * max(iconified_title_relief,
+                                                normal_title_relief) + 
+                                        Ffont->height - 1,
+                                        IconReliefGC, IconShadowGC,
+                                        title_relief );
+                       
                }
                if (region)
                {
@@ -1231,8 +1272,10 @@
   if ((local_flags & HIDE_V))
     h_margin -= bar_width + margin2 + 4;
 
+  /* calculate the (maximal) width and height of an icon */
   UWidth = max_icon_width + icon_relief + interval;
-  UHeight = Ffont->height + max_icon_height + icon_relief + 6 + interval;
+  UHeight = Ffont->height + 2 + 2 * 
max(normal_title_relief,iconified_title_relief) + 
+            max_icon_height + icon_relief + interval;
   Width = UWidth * num_columns + interval -1;
   Height = UHeight * num_rows + interval -1;
 
@@ -1912,6 +1955,29 @@
          max_icon_width += 4;
        }
       }
+      else if (strncasecmp(tline, CatString3(
+                          "*", MyName, "NoIconifiedParentheses"),
+                          Clength+23) == 0)
+      {
+       iconified_has_normal_title = True;
+      }
+
+      else if (strncasecmp(tline, CatString3(
+                          "*", MyName, "NormalTitleRelief"),
+                          Clength+18) == 0)
+      {
+       normal_title_relief = atoi(&tline[Clength+18]);
+       fprintf(stderr, "normal relief: %d\n", normal_title_relief);
+      }        
+      
+      else if (strncasecmp(tline, CatString3(
+                          "*", MyName, "IconifiedTitleRelief"),
+                          Clength+21) == 0)
+      {
+       iconified_title_relief = atoi(&tline[Clength+21]);
+       fprintf(stderr, "icon relief: %d\n", iconified_title_relief);
+      }
+
       else if (strncasecmp(tline, "Colorset", 8) == 0)
       {
        LoadColorset(&tline[8]);
Index: modules/FvwmIconBox/icons.c
===================================================================
RCS file: /home/cvs/fvwm/fvwm/modules/FvwmIconBox/icons.c,v
retrieving revision 1.31
diff -u -u -r1.31 icons.c
--- modules/FvwmIconBox/icons.c 2002/10/31 21:39:17     1.31
+++ modules/FvwmIconBox/icons.c 2002/11/26 22:09:24
@@ -61,6 +61,9 @@
 extern char *MyName;
 extern int Iconcolorset;
 
+extern int normal_title_relief;
+extern int iconified_title_relief;
+
 #define ICON_EVENTS (ExposureMask |\
 ButtonReleaseMask | ButtonPressMask | EnterWindowMask | LeaveWindowMask)
 
@@ -179,8 +182,9 @@
   int x=0,y=0,w,h,h2,h3,w3;
 
   w3 = w = max_icon_width + icon_relief;
+  /* the height of the picture window */
   h3 = h2 = max_icon_height + icon_relief;
-  h = h2 + 6 + Ffont->height;
+  h = h2 + 2 + 2 * max(normal_title_relief,iconified_title_relief) + 
Ffont->height;
 
   switch (primary){
   case LEFT:

Reply via email to