[Xfce4-commits] r25773 - in xfwm4/trunk: . src

Olivier Fourdan olivier at xfce.org
Sun Jun 3 01:52:19 CEST 2007


Author: olivier
Date: 2007-06-02 23:52:19 +0000 (Sat, 02 Jun 2007)
New Revision: 25773

Modified:
   xfwm4/trunk/AUTHORS
   xfwm4/trunk/NEWS
   xfwm4/trunk/src/client.c
   xfwm4/trunk/src/client.h
   xfwm4/trunk/src/display.c
   xfwm4/trunk/src/display.h
   xfwm4/trunk/src/events.c
   xfwm4/trunk/src/frame.c
   xfwm4/trunk/src/frame.h
   xfwm4/trunk/src/screen.c
   xfwm4/trunk/src/screen.h
   xfwm4/trunk/src/settings.c
   xfwm4/trunk/src/settings.h
Log:
Add resize from top of window, based on a patch by Phil Vandry <vandry at tzone.org>, reworked to allow compatibility with unchanged themes, bug fixes, and various improvements

Modified: xfwm4/trunk/AUTHORS
===================================================================
--- xfwm4/trunk/AUTHORS	2007-06-01 18:36:12 UTC (rev 25772)
+++ xfwm4/trunk/AUTHORS	2007-06-02 23:52:19 UTC (rev 25773)
@@ -19,6 +19,7 @@
 Nils Rennebarth <Nils.Rennebarth at web.de>
 Ori Bernstein <rand_chars at rogers.com>
 Paramjit Oberoi <param at cs.wisc.edu>
+Phil Vandry <vandry at tzone.org>
 Thomas Leonard <tal at ecs.soton.ac.uk>
 
 Credits :

Modified: xfwm4/trunk/NEWS
===================================================================
--- xfwm4/trunk/NEWS	2007-06-01 18:36:12 UTC (rev 25772)
+++ xfwm4/trunk/NEWS	2007-06-02 23:52:19 UTC (rev 25773)
@@ -1,6 +1,7 @@
 4.5.x
 =====
 
+- Add resize from top of window
 - Rework the event filter to avoid passing all events top gtk+
 - Treat dialogs and utility windows as transients for group (bug #3102)
 - Add support for shape input with XShape extension 1.1 (Bug #3092)

Modified: xfwm4/trunk/src/client.c
===================================================================
--- xfwm4/trunk/src/client.c	2007-06-01 18:36:12 UTC (rev 25772)
+++ xfwm4/trunk/src/client.c	2007-06-02 23:52:19 UTC (rev 25773)
@@ -2017,6 +2017,11 @@
         myDisplayGetCursorResize(screen_info->display_info, CORNER_TOP_RIGHT));
     xfwmWindowCreate (screen_info,  c->visual, c->depth, c->frame,
         &c->title, None);
+    /* create the top side window AFTER the title window since they overlap
+       and the top side window should be on top */
+    xfwmWindowCreate (screen_info,  c->visual, c->depth, c->frame,
+	&c->sides[SIDE_TOP],
+	myDisplayGetCursorResize(screen_info->display_info, CORNER_COUNT + SIDE_TOP));
     for (i = 0; i < BUTTON_LAST; i++)
     {
         xfwmWindowCreate (screen_info,  c->visual, c->depth, c->frame,
@@ -2153,10 +2158,11 @@
     xfwmWindowDelete (&c->sides[SIDE_LEFT]);
     xfwmWindowDelete (&c->sides[SIDE_RIGHT]);
     xfwmWindowDelete (&c->sides[SIDE_BOTTOM]);
-    xfwmWindowDelete (&c->sides[CORNER_BOTTOM_LEFT]);
-    xfwmWindowDelete (&c->sides[CORNER_BOTTOM_RIGHT]);
-    xfwmWindowDelete (&c->sides[CORNER_TOP_LEFT]);
-    xfwmWindowDelete (&c->sides[CORNER_TOP_RIGHT]);
+    xfwmWindowDelete (&c->sides[SIDE_TOP]);
+    xfwmWindowDelete (&c->corners[CORNER_BOTTOM_LEFT]);
+    xfwmWindowDelete (&c->corners[CORNER_BOTTOM_RIGHT]);
+    xfwmWindowDelete (&c->corners[CORNER_TOP_LEFT]);
+    xfwmWindowDelete (&c->corners[CORNER_TOP_RIGHT]);
 
     xfwmPixmapFree (&c->appmenu[ACTIVE]);
     xfwmPixmapFree (&c->appmenu[INACTIVE]);

Modified: xfwm4/trunk/src/client.h
===================================================================
--- xfwm4/trunk/src/client.h	2007-06-01 18:36:12 UTC (rev 25772)
+++ xfwm4/trunk/src/client.h	2007-06-02 23:52:19 UTC (rev 25773)
@@ -223,8 +223,8 @@
     Window transient_for;
     Window *cmap_windows;
     xfwmWindow title;
-    xfwmWindow sides[3];
-    xfwmWindow corners[4];
+    xfwmWindow sides[SIDE_COUNT];
+    xfwmWindow corners[CORNER_COUNT];
     xfwmWindow buttons[BUTTON_COUNT];
     Window client_leader;
     Window group_leader;

Modified: xfwm4/trunk/src/display.c
===================================================================
--- xfwm4/trunk/src/display.c	2007-06-01 18:36:12 UTC (rev 25772)
+++ xfwm4/trunk/src/display.c	2007-06-02 23:52:19 UTC (rev 25773)
@@ -347,7 +347,7 @@
         display->hostname = NULL;
     }
 
-    for (i = 0; i < 7; i++)
+    for (i = 0; i < SIDE_COUNT + CORNER_COUNT; i++)
     {
         XFreeCursor (display->dpy, display->resize_cursor[i]);
         display->resize_cursor[i] = None;

Modified: xfwm4/trunk/src/display.h
===================================================================
--- xfwm4/trunk/src/display.h	2007-06-01 18:36:12 UTC (rev 25772)
+++ xfwm4/trunk/src/display.h	2007-06-02 23:52:19 UTC (rev 25773)
@@ -69,6 +69,16 @@
 
 enum
 {
+    TITLE_1 = 0,
+    TITLE_2,
+    TITLE_3,
+    TITLE_4,
+    TITLE_5,
+    TITLE_COUNT
+};
+
+enum
+{
     CORNER_TOP_LEFT = 0,
     CORNER_TOP_RIGHT,
     CORNER_BOTTOM_LEFT,
@@ -87,6 +97,30 @@
 
 enum
 {
+    MENU_BUTTON = 0,
+    STICK_BUTTON,
+    SHADE_BUTTON,
+    HIDE_BUTTON,
+    MAXIMIZE_BUTTON,
+    CLOSE_BUTTON,
+    TITLE_SEPARATOR,
+    BUTTON_COUNT
+};
+#define BUTTON_LAST (BUTTON_COUNT - 1)
+
+enum
+{
+    ACTIVE = 0,
+    INACTIVE,
+    PRESSED,
+    T_ACTIVE,
+    T_INACTIVE,
+    T_PRESSED,
+    STATE_COUNT
+};
+
+enum
+{
    ANY,
    WINDOW,
    FRAME
@@ -229,7 +263,7 @@
     Cursor busy_cursor;
     Cursor move_cursor;
     Cursor root_cursor;
-    Cursor resize_cursor[8];
+    Cursor resize_cursor[SIDE_COUNT + CORNER_COUNT];
 
     Atom atoms[ATOM_COUNT];
 

Modified: xfwm4/trunk/src/events.c
===================================================================
--- xfwm4/trunk/src/events.c	2007-06-01 18:36:12 UTC (rev 25772)
+++ xfwm4/trunk/src/events.c	2007-06-02 23:52:19 UTC (rev 25773)
@@ -976,6 +976,11 @@
         {
             edgeButton (c, CORNER_COUNT + SIDE_BOTTOM, ev);
         }
+        else if ((win == MYWINDOW_XWINDOW (c->sides[SIDE_TOP]))
+            && (state == 0))
+        {
+            edgeButton (c, CORNER_COUNT + SIDE_TOP, ev);
+        }
         else if ((win == MYWINDOW_XWINDOW (c->sides[SIDE_LEFT]))
             && (state == 0))
         {

Modified: xfwm4/trunk/src/frame.c
===================================================================
--- xfwm4/trunk/src/frame.c	2007-06-01 18:36:12 UTC (rev 25772)
+++ xfwm4/trunk/src/frame.c	2007-06-02 23:52:19 UTC (rev 25773)
@@ -249,9 +249,33 @@
 }
 
 static void
-frameCreateTitlePixmap (Client * c, int state, int left, int right, xfwmPixmap * pm)
+frameFillTitlePixmap (Client * c, int state, int part, int x, int w, int h, xfwmPixmap * title_pm, xfwmPixmap * top_pm)
 {
     ScreenInfo *screen_info;
+
+    TRACE ("entering frameFillTitlePixmap");
+
+    g_return_if_fail (c);
+    g_return_if_fail (title_pm);
+    g_return_if_fail (top_pm);
+
+    screen_info = c->screen_info;
+
+    if (screen_info->top[part][state].pixmap)
+    {
+        xfwmPixmapFill (&screen_info->top[part][state], top_pm, x, 0, w, h);
+    }
+    else
+    {
+        xfwmPixmapFill (&screen_info->title[part][state], top_pm, x, 0, w, h);
+    }
+    xfwmPixmapFill (&screen_info->title[part][state], title_pm, x, -h, w, frameTop (c) + h);
+}
+
+static void
+frameCreateTitlePixmap (Client * c, int state, int left, int right, xfwmPixmap * title_pm, xfwmPixmap * top_pm)
+{
+    ScreenInfo *screen_info;
     DisplayInfo *display_info;
     GdkPixmap *gpixmap;
     GdkGCValues values;
@@ -260,11 +284,13 @@
     PangoRectangle logical_rect;
     int width, x, hoffset, w1, w2, w3, w4, w5, temp;
     int voffset, title_x, title_y;
+    int top_height;
 
     TRACE ("entering frameCreateTitlePixmap");
 
     g_return_if_fail (c);
-    g_return_if_fail (pm);
+    g_return_if_fail (title_pm);
+    g_return_if_fail (top_pm);
 
     screen_info = c->screen_info;
     display_info = screen_info->display_info;
@@ -279,13 +305,22 @@
     width = frameWidth (c) - frameTopLeftWidth (c, state) - frameTopRightWidth (c, state);
     if (width < 1)
     {
-        pm->pixmap = None;
-        pm->mask = None;
-        pm->width = 0;
-        pm->height = 0;
+        title_pm->pixmap = None;
+        title_pm->mask = None;
+        title_pm->width = 0;
+        title_pm->height = 0;
+
+        top_pm->pixmap = None;
+        top_pm->mask = None;
+        top_pm->width = 0;
+        top_pm->height = 0;
+
         return;
     }
 
+    layout = gtk_widget_create_pango_layout (myScreenGetGtkWidget (screen_info), c->name);
+    pango_layout_get_pixel_extents (layout, NULL, &logical_rect);
+
     if (left < frameTopLeftWidth (c, state))
     {
         left = frameTopLeftWidth (c, state);
@@ -304,15 +339,39 @@
 
     x = 0;
     hoffset = 0;
-    voffset = 0;
 
+    if (state == ACTIVE)
+    {
+        voffset = screen_info->params->title_vertical_offset_active;
+    }
+    else
+    {
+        voffset = screen_info->params->title_vertical_offset_inactive;
+    }
+
+    title_y = voffset + (frameTop (c) - logical_rect.height) / 2;
+    if (title_y + logical_rect.height > frameTop (c))
+    {
+        title_y = MAX (0, frameTop (c) - logical_rect.height);
+    }
+
+    if (screen_info->top[3][ACTIVE].pixmap)
+    {
+        top_height = screen_info->top[3][ACTIVE].height;
+    }
+    else
+    {
+        top_height = frameTop (c) / 10 + 1;
+        if (top_height > title_y - 1)
+        {
+             top_height = MAX (title_y - 1, 0);
+        }
+    }
+
     w1 = 0;
     w2 = screen_info->title[TITLE_2][state].width;
     w4 = screen_info->title[TITLE_4][state].width;
 
-    layout = gtk_widget_create_pango_layout (myScreenGetGtkWidget (screen_info), c->name);
-    pango_layout_get_pixel_extents (layout, NULL, &logical_rect);
-
     if (screen_info->params->full_width_title)
     {
         w1 = left;
@@ -369,37 +428,25 @@
         }
     }
 
-    xfwmPixmapCreate (screen_info, pm, width, frameTop (c));
-    gpixmap = gdk_pixmap_foreign_new (pm->pixmap);
+    xfwmPixmapCreate (screen_info, top_pm, width, top_height);
+    xfwmPixmapCreate (screen_info, title_pm, width, frameTop (c));
+    gpixmap = gdk_pixmap_foreign_new (title_pm->pixmap);
     gdk_drawable_set_colormap (gpixmap, gdk_screen_get_rgb_colormap (screen_info->gscr));
     gc = gdk_gc_new (gpixmap);
 
     if (w1 > 0)
     {
-        xfwmPixmapFill (&screen_info->title[TITLE_1][state], pm, 0, 0, w1, frameTop (c));
+        frameFillTitlePixmap (c, state, TITLE_1, x, w1, top_height, title_pm, top_pm);
         x = x + w1;
     }
 
-    xfwmPixmapFill (&screen_info->title[TITLE_2][state], pm, x, 0, w2, frameTop (c));
+    frameFillTitlePixmap (c, state, TITLE_2, x, w2, top_height, title_pm, top_pm);
     x = x + w2;
 
     if (w3 > 0)
     {
-        if (state == ACTIVE)
-        {
-            voffset = screen_info->params->title_vertical_offset_active;
-        }
-        else
-        {
-            voffset = screen_info->params->title_vertical_offset_inactive;
-        }
-        xfwmPixmapFill (&screen_info->title[TITLE_3][state], pm, x, 0, w3, frameTop (c));
+        frameFillTitlePixmap (c, state, TITLE_3, x, w3, top_height, title_pm, top_pm);
         title_x = hoffset + x;
-        title_y = voffset + (frameTop (c) - logical_rect.height) / 2;
-        if (title_y + logical_rect.height > frameTop (c))
-        {
-            title_y = MAX (0, frameTop (c) - logical_rect.height);
-        }
         if (screen_info->params->title_shadow[state])
         {
             gdk_gc_get_values (screen_info->title_shadow_colors[state].gc, &values);
@@ -426,12 +473,12 @@
     {
         x = right - w4;
     }
-    xfwmPixmapFill (&screen_info->title[TITLE_4][state], pm, x, 0, w4, frameTop (c));
+    frameFillTitlePixmap (c, state, TITLE_4, x, w4, top_height, title_pm, top_pm);
     x = x + w4;
 
     if (w5 > 0)
     {
-        xfwmPixmapFill (&screen_info->title[TITLE_5][state], pm, x, 0, w5, frameTop (c));
+        frameFillTitlePixmap (c, state, TITLE_5, x, w5, top_height, title_pm, top_pm);
     }
     g_object_unref (G_OBJECT (gc));
     g_object_unref (G_OBJECT (gpixmap));
@@ -653,6 +700,12 @@
                                ShapeBounding, 0, 0, frame_pix->pm_sides[SIDE_BOTTOM].mask, ShapeSet);
         }
 
+        if (xfwmWindowVisible (&c->sides[SIDE_TOP]))
+        {
+            XShapeCombineMask (display_info->dpy, MYWINDOW_XWINDOW (c->sides[SIDE_TOP]),
+                               ShapeBounding, 0, 0, frame_pix->pm_sides[SIDE_TOP].mask, ShapeSet);
+        }
+
         if (xfwmWindowVisible (&c->corners[CORNER_BOTTOM_LEFT]))
         {
             XShapeCombineMask (display_info->dpy, MYWINDOW_XWINDOW (c->corners[CORNER_BOTTOM_LEFT]),
@@ -772,6 +825,14 @@
                                 MYWINDOW_XWINDOW (c->sides[SIDE_BOTTOM]), ShapeBounding, ShapeUnion);
         }
 
+        if (xfwmWindowVisible (&c->sides[SIDE_TOP]))
+        {
+            XShapeCombineShape (display_info->dpy, shape_win, ShapeBounding,
+                                screen_info->corners[CORNER_BOTTOM_LEFT][state].width,
+                                frameTop (c) - frameBottom (c),
+                                MYWINDOW_XWINDOW (c->sides[SIDE_TOP]), ShapeBounding, ShapeUnion);
+        }
+
         if (xfwmWindowVisible (&c->corners[CORNER_BOTTOM_LEFT]))
         {
             XShapeCombineShape (display_info->dpy, shape_win, ShapeBounding, 0,
@@ -1010,9 +1071,10 @@
         xfwmPixmapInit (screen_info, &frame_pix.pm_sides[SIDE_LEFT]);
         xfwmPixmapInit (screen_info, &frame_pix.pm_sides[SIDE_RIGHT]);
         xfwmPixmapInit (screen_info, &frame_pix.pm_sides[SIDE_BOTTOM]);
+        xfwmPixmapInit (screen_info, &frame_pix.pm_sides[SIDE_TOP]);
 
         /* The title is always visible */
-        frameCreateTitlePixmap (c, state, left, right, &frame_pix.pm_title);
+        frameCreateTitlePixmap (c, state, left, right, &frame_pix.pm_title, &frame_pix.pm_sides[SIDE_TOP]);
         xfwmWindowSetBG (&c->title, &frame_pix.pm_title);
         xfwmWindowShow (&c->title,
             frameTopLeftWidth (c, state), 0, top_width,
@@ -1037,6 +1099,7 @@
             xfwmWindowHide (&c->sides[SIDE_LEFT]);
             xfwmWindowHide (&c->sides[SIDE_RIGHT]);
             xfwmWindowHide (&c->sides[SIDE_BOTTOM]);
+            xfwmWindowHide (&c->sides[SIDE_TOP]);
             xfwmWindowHide (&c->corners[CORNER_TOP_LEFT]);
             xfwmWindowHide (&c->corners[CORNER_TOP_RIGHT]);
             xfwmWindowHide (&c->corners[CORNER_BOTTOM_LEFT]);
@@ -1085,6 +1148,19 @@
                 frameHeight (c) - frameBottom (c), bottom_width, frameBottom (c),
                 (requires_clearing | width_changed));
 
+            if (frame_pix.pm_sides[SIDE_TOP].pixmap)
+            {
+                xfwmWindowSetBG (&c->sides[SIDE_TOP], &frame_pix.pm_sides[SIDE_TOP]);
+                xfwmWindowShow (&c->sides[SIDE_TOP],
+                    screen_info->corners[CORNER_TOP_LEFT][state].width,
+                    0, top_width, frameTop (c),
+                    (requires_clearing | width_changed));
+            }
+            else
+            {
+                xfwmWindowHide (&c->sides[SIDE_TOP]);
+            }
+
             xfwmWindowShow (&c->corners[CORNER_TOP_LEFT], 0, 0,
                 frameTopLeftWidth (c, state),
                 screen_info->corners[CORNER_TOP_LEFT][state].height,
@@ -1117,6 +1193,7 @@
         xfwmPixmapFree (&frame_pix.pm_sides[SIDE_BOTTOM]);
         xfwmPixmapFree (&frame_pix.pm_sides[SIDE_LEFT]);
         xfwmPixmapFree (&frame_pix.pm_sides[SIDE_RIGHT]);
+        xfwmPixmapFree (&frame_pix.pm_sides[SIDE_TOP]);
     }
     else
     {
@@ -1124,7 +1201,7 @@
         {
             xfwmWindowHide (&c->title);
         }
-        for (i = 0; i < 3; i++)
+        for (i = 0; i < 4; i++)
         {
             if (MYWINDOW_XWINDOW (c->sides[i]) && xfwmWindowVisible (&c->sides[i]))
             {

Modified: xfwm4/trunk/src/frame.h
===================================================================
--- xfwm4/trunk/src/frame.h	2007-06-01 18:36:12 UTC (rev 25772)
+++ xfwm4/trunk/src/frame.h	2007-06-02 23:52:19 UTC (rev 25773)
@@ -33,8 +33,9 @@
 struct _FramePixmap
 {
     xfwmPixmap pm_title;
-    xfwmPixmap pm_sides[3];
+    xfwmPixmap pm_sides[SIDE_COUNT];
 };
+
 typedef struct _FramePixmap FramePixmap;
 
 int                      frameDecorationLeft                    (ScreenInfo *);

Modified: xfwm4/trunk/src/screen.c
===================================================================
--- xfwm4/trunk/src/screen.c	2007-06-01 18:36:12 UTC (rev 25772)
+++ xfwm4/trunk/src/screen.c	2007-06-02 23:52:19 UTC (rev 25773)
@@ -210,17 +210,17 @@
         xfwmPixmapInit (screen_info, &screen_info->buttons[i][T_INACTIVE]);
         xfwmPixmapInit (screen_info, &screen_info->buttons[i][T_PRESSED]);
     }
-    for (i = 0; i < 4; i++)
+    for (i = 0; i < CORNER_COUNT; i++)
     {
         xfwmPixmapInit (screen_info, &screen_info->corners[i][ACTIVE]);
         xfwmPixmapInit (screen_info, &screen_info->corners[i][INACTIVE]);
     }
-    for (i = 0; i < 3; i++)
+    for (i = 0; i < SIDE_COUNT; i++)
     {
         xfwmPixmapInit (screen_info, &screen_info->sides[i][ACTIVE]);
         xfwmPixmapInit (screen_info, &screen_info->sides[i][INACTIVE]);
     }
-    for (i = 0; i < 5; i++)
+    for (i = 0; i < TITLE_COUNT; i++)
     {
         xfwmPixmapInit (screen_info, &screen_info->title[i][ACTIVE]);
         xfwmPixmapInit (screen_info, &screen_info->title[i][INACTIVE]);

Modified: xfwm4/trunk/src/screen.h
===================================================================
--- xfwm4/trunk/src/screen.h	2007-06-01 18:36:12 UTC (rev 25772)
+++ xfwm4/trunk/src/screen.h	2007-06-02 23:52:19 UTC (rev 25773)
@@ -70,10 +70,11 @@
     /* Theme pixmaps and other params, per screen */
     XfwmColor title_colors[2];
     XfwmColor title_shadow_colors[2];
-    xfwmPixmap buttons[BUTTON_COUNT][6];
-    xfwmPixmap corners[4][2];
-    xfwmPixmap sides[3][2];
-    xfwmPixmap title[5][2];
+    xfwmPixmap buttons[BUTTON_COUNT][STATE_COUNT];
+    xfwmPixmap corners[CORNER_COUNT][2];
+    xfwmPixmap sides[SIDE_COUNT][2];
+    xfwmPixmap title[TITLE_COUNT][2];
+    xfwmPixmap top[TITLE_COUNT][2];
 
     /* Per screen graphic contexts */
     GC box_gc;

Modified: xfwm4/trunk/src/settings.c
===================================================================
--- xfwm4/trunk/src/settings.c	2007-06-01 18:36:12 UTC (rev 25772)
+++ xfwm4/trunk/src/settings.c	2007-06-02 23:52:19 UTC (rev 25773)
@@ -1006,6 +1006,7 @@
 static void
 loadTheme (ScreenInfo *screen_info, Settings *rc)
 {
+    gchar imagename[30];
     GValue tmp_val = { 0, };
     DisplayInfo *display_info;
     xfwmColorSymbol colsym[ XPM_COLOR_SYMBOL_SIZE + 1 ];
@@ -1183,27 +1184,22 @@
         "maximize-toggled-inactive", colsym);
     xfwmPixmapLoad (screen_info, &screen_info->buttons[MAXIMIZE_BUTTON][T_PRESSED], theme,
         "maximize-toggled-pressed", colsym);
-    xfwmPixmapLoad (screen_info, &screen_info->title[TITLE_1][ACTIVE], theme,
-        "title-1-active", colsym);
-    xfwmPixmapLoad (screen_info, &screen_info->title[TITLE_1][INACTIVE], theme,
-        "title-1-inactive", colsym);
-    xfwmPixmapLoad (screen_info, &screen_info->title[TITLE_2][ACTIVE], theme,
-        "title-2-active", colsym);
-    xfwmPixmapLoad (screen_info, &screen_info->title[TITLE_2][INACTIVE], theme,
-        "title-2-inactive", colsym);
-    xfwmPixmapLoad (screen_info, &screen_info->title[TITLE_3][ACTIVE], theme,
-        "title-3-active", colsym);
-    xfwmPixmapLoad (screen_info, &screen_info->title[TITLE_3][INACTIVE], theme,
-        "title-3-inactive", colsym);
-    xfwmPixmapLoad (screen_info, &screen_info->title[TITLE_4][ACTIVE], theme,
-        "title-4-active", colsym);
-    xfwmPixmapLoad (screen_info, &screen_info->title[TITLE_4][INACTIVE], theme,
-        "title-4-inactive", colsym);
-    xfwmPixmapLoad (screen_info, &screen_info->title[TITLE_5][ACTIVE], theme,
-        "title-5-active", colsym);
-    xfwmPixmapLoad (screen_info, &screen_info->title[TITLE_5][INACTIVE], theme,
-        "title-5-inactive", colsym);
 
+    for (i = 0; i < TITLE_COUNT; i++)
+    {
+        g_snprintf(imagename, sizeof (imagename), "title-%d-active", i+1);
+        xfwmPixmapLoad (screen_info, &screen_info->title[i][ACTIVE], theme, imagename, colsym);
+
+        g_snprintf(imagename, sizeof (imagename), "title-%d-inactive", i+1);
+        xfwmPixmapLoad (screen_info, &screen_info->title[i][INACTIVE], theme, imagename, colsym);
+
+        g_snprintf(imagename, sizeof (imagename), "top-%d-active", i+1);
+        xfwmPixmapLoad (screen_info, &screen_info->top[i][ACTIVE], theme, imagename, colsym);
+
+        g_snprintf(imagename, sizeof (imagename), "top-%d-inactive", i+1);
+        xfwmPixmapLoad (screen_info, &screen_info->top[i][INACTIVE], theme, imagename, colsym);
+    }
+
     screen_info->box_gc = createGC (screen_info, "#FFFFFF", GXxor, NULL, 2, TRUE);
 
     if (!g_ascii_strcasecmp ("left", getValue ("title_alignment", rc)))
@@ -1646,17 +1642,17 @@
 
     TRACE ("entering unloadTheme");
 
-    for (i = 0; i < 3; i++)
+    for (i = 0; i < SIDE_COUNT; i++)
     {
         xfwmPixmapFree (&screen_info->sides[i][ACTIVE]);
         xfwmPixmapFree (&screen_info->sides[i][INACTIVE]);
     }
-    for (i = 0; i < 4; i++)
+    for (i = 0; i < CORNER_COUNT; i++)
     {
         xfwmPixmapFree (&screen_info->corners[i][ACTIVE]);
         xfwmPixmapFree (&screen_info->corners[i][INACTIVE]);
     }
-    for (i = 0; i < BUTTON_LAST; i++)
+    for (i = 0; i < BUTTON_COUNT; i++)
     {
         xfwmPixmapFree (&screen_info->buttons[i][ACTIVE]);
         xfwmPixmapFree (&screen_info->buttons[i][INACTIVE]);
@@ -1665,7 +1661,7 @@
         xfwmPixmapFree (&screen_info->buttons[i][T_INACTIVE]);
         xfwmPixmapFree (&screen_info->buttons[i][T_PRESSED]);
     }
-    for (i = 0; i < 5; i++)
+    for (i = 0; i < TITLE_COUNT; i++)
     {
         xfwmPixmapFree (&screen_info->title[i][ACTIVE]);
         xfwmPixmapFree (&screen_info->title[i][INACTIVE]);

Modified: xfwm4/trunk/src/settings.h
===================================================================
--- xfwm4/trunk/src/settings.h	2007-06-01 18:36:12 UTC (rev 25772)
+++ xfwm4/trunk/src/settings.h	2007-06-02 23:52:19 UTC (rev 25773)
@@ -35,15 +35,6 @@
 
 enum
 {
-    TITLE_1,
-    TITLE_2,
-    TITLE_3,
-    TITLE_4,
-    TITLE_5
-};
-
-enum
-{
     TITLE_SHADOW_NONE,
     TITLE_SHADOW_UNDER,
     TITLE_SHADOW_FRAME
@@ -51,29 +42,6 @@
 
 enum
 {
-    MENU_BUTTON,
-    STICK_BUTTON,
-    SHADE_BUTTON,
-    HIDE_BUTTON,
-    MAXIMIZE_BUTTON,
-    CLOSE_BUTTON,
-    TITLE_SEPARATOR,
-    BUTTON_COUNT
-};
-#define BUTTON_LAST (BUTTON_COUNT - 1)
-
-enum
-{
-    ACTIVE,
-    INACTIVE,
-    PRESSED,
-    T_ACTIVE,
-    T_INACTIVE,
-    T_PRESSED
-};
-
-enum
-{
     KEY_ADD_WORKSPACE,
     KEY_CANCEL,
     KEY_CLOSE_WINDOW,



More information about the Xfce4-commits mailing list