]> Pileus Git - ~andy/gtk/commitdiff
Merge with gtk-wimp's CVS. Includes improved menu icon spacing, [+]/[-]
authorDom Lachowicz <doml@src.gnome.org>
Fri, 25 Nov 2005 23:47:46 +0000 (23:47 +0000)
committerDom Lachowicz <doml@src.gnome.org>
Fri, 25 Nov 2005 23:47:46 +0000 (23:47 +0000)
* modules/engines/ms-windows/*.[ch]: Merge with gtk-wimp's CVS.
Includes improved menu icon spacing, [+]/[-] expander drawing,
status-bar gippie drawing, and notebook tab drawing.

ChangeLog
ChangeLog.pre-2-10
modules/engines/ms-windows/msw_style.c
modules/engines/ms-windows/xp_theme.c
modules/engines/ms-windows/xp_theme.h
modules/engines/ms-windows/xp_theme_defs.h

index 6fb5ff27a883e1fa6b5e3c95f15b9defaf45b075..3b9f16617e2ae5b000f2bd52988e8ddbb605beaf 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2005-11-25  Dom Lachowicz <cinamod@hotmail.com>
+
+       * modules/engines/ms-windows/*.[ch]: Merge with gtk-wimp's CVS.
+       Includes improved menu icon spacing, [+]/[-] expander drawing,
+       status-bar gippie drawing, and notebook tab drawing.
+       
 2005-11-24  Michael Natterer  <mitch@imendio.com>
 
        * gtk/gtktoolbar.h (struct _GtkToolbar): changed two private guint
index 6fb5ff27a883e1fa6b5e3c95f15b9defaf45b075..3b9f16617e2ae5b000f2bd52988e8ddbb605beaf 100644 (file)
@@ -1,3 +1,9 @@
+2005-11-25  Dom Lachowicz <cinamod@hotmail.com>
+
+       * modules/engines/ms-windows/*.[ch]: Merge with gtk-wimp's CVS.
+       Includes improved menu icon spacing, [+]/[-] expander drawing,
+       status-bar gippie drawing, and notebook tab drawing.
+       
 2005-11-24  Michael Natterer  <mitch@imendio.com>
 
        * gtk/gtktoolbar.h (struct _GtkToolbar): changed two private guint
index d8e9396aa6a0b0d482d77bba72853cae1c71d50b..cd637ffa83aebe831575f4dfb789674040f71a71 100755 (executable)
 /*
  * Useful resources:
  *
- *  http://lxr.mozilla.org/mozilla/source/gfx/src/windows/nsNativeThemeWin.cpp
+ *  http://lxr.mozilla.org/seamonkey/source/widget/src/windows/nsNativeThemeWin.cpp
  *  http://lxr.mozilla.org/seamonkey/source/widget/src/windows/nsLookAndFeel.cpp
  *  http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/commctls/userex/functions/drawthemebackground.asp
+ *  http://msdn.microsoft.com/library/default.asp?url=/library/en-us/gdi/pantdraw_4b3g.asp
  */
 
 #include "msw_style.h"
@@ -290,9 +291,9 @@ get_family_name (LOGFONT * lfp, HDC pango_win32_hdc)
 
     size_t i, l, nbytes;
 
-    /* If lfFaceName is ASCII, assume it is the common (English) name for the 
+    /* If lfFaceName is ASCII, assume it is the common (English) name for the
        font. Is this valid? Do some TrueType fonts have different names in
-       French, German, etc, and does the system return these if the locale is 
+       French, German, etc, and does the system return these if the locale is
        set to use French, German, etc? */
     l = strlen (lfp->lfFaceName);
     for (i = 0; i < l; i++)
@@ -329,7 +330,7 @@ get_family_name (LOGFONT * lfp, HDC pango_win32_hdc)
            if (record.platform_id == APPLE_UNICODE_PLATFORM_ID ||
                record.platform_id == ISO_PLATFORM_ID)
                unicode_ix = i;
-           else if (record.platform_id == MACINTOSH_PLATFORM_ID && record.encoding_id == 0 &&  /* Roman 
+           else if (record.platform_id == MACINTOSH_PLATFORM_ID && record.encoding_id == 0 &&  /* Roman
                                                                                                 */
                     record.language_id == 0)   /* English */
                mac_ix = i;
@@ -560,7 +561,7 @@ msw_style_setup_system_settings (void)
 
     setup_menu_settings (settings);
 
-    /* 
+    /*
        http://developer.gnome.org/doc/API/2.0/gtk/GtkSettings.html
        http://msdn.microsoft.com/library/default.asp?url=/library/en-us/sysinfo/base/systemparametersinfo.asp
        http://msdn.microsoft.com/library/default.asp?url=/library/en-us/sysinfo/base/getsystemmetrics.asp */
@@ -661,6 +662,7 @@ setup_msw_rc_style (void)
                                font_buf, sizeof (font_buf));
     g_snprintf (buf, sizeof (buf),
                "style \"msw-menu\" = \"msw-default\"\n" "{\n"
+               "GtkMenuItem::toggle-spacing = 8\n"
                "fg[PRELIGHT] = { %d, %d, %d }\n"
                "bg[PRELIGHT] = { %d, %d, %d }\n"
                "text[PRELIGHT] = { %d, %d, %d }\n"
@@ -1057,7 +1059,7 @@ draw_expander (GtkStyle * style,
 
            gdk_draw_line
                (window, style->fg_gc[state], x + 2, y + expander_semi_size,
-                x + expander_size - 2, y + expander_semi_size);
+                x + expander_size - 3, y + expander_semi_size);
 
            switch (expander_style)
                {
@@ -1066,7 +1068,7 @@ draw_expander (GtkStyle * style,
                    gdk_draw_line
                        (window, style->fg_gc[state], x + expander_semi_size,
                         y + 2, x + expander_semi_size,
-                        y + expander_size - 2);
+                        y + expander_size - 3);
                    break;
 
                default:
@@ -1440,6 +1442,46 @@ is_toolbar_child (GtkWidget * wid)
     return FALSE;
 }
 
+static HDC get_window_dc(GtkStyle * style, GdkWindow * window, GtkStateType state_type, gint x, gint y, gint width, gint height, RECT *rect)
+{
+       int xoff, yoff;
+       GdkDrawable *drawable;
+
+       if (!GDK_IS_WINDOW (window))
+               {
+                   xoff = 0;
+                   yoff = 0;
+                   drawable = window;
+               }
+       else
+               {
+                   gdk_window_get_internal_paint_info (window, &drawable, &xoff, &yoff);
+               }
+
+       rect->left = x - xoff;
+       rect->top = y - yoff;
+       rect->right = rect->left + width;
+    rect->bottom = rect->top + height;
+
+       return gdk_win32_hdc_get (drawable, style->dark_gc[state_type], 0);
+}
+
+static void release_window_dc(GtkStyle * style, GdkWindow * window, GtkStateType state_type)
+{
+       GdkDrawable *drawable;
+
+       if (!GDK_IS_WINDOW (window))
+               {
+                   drawable = window;
+               }
+       else
+               {
+                   gdk_window_get_internal_paint_info (window, &drawable, NULL, NULL);
+               }
+
+       gdk_win32_hdc_release (drawable, style->dark_gc[state_type], 0);
+}
+
 static void
 draw_box (GtkStyle * style,
          GdkWindow * window,
@@ -1505,7 +1547,7 @@ draw_box (GtkStyle * style,
                    GtkScrollbar *scrollbar = GTK_SCROLLBAR (widget);
                    gboolean is_v = GTK_IS_VSCROLLBAR (widget);
 
-                   if (xp_theme_draw (window,
+                       if (xp_theme_draw (window,
                                       is_v
                                       ? XP_THEME_ELEMENT_SCROLLBAR_V
                                       : XP_THEME_ELEMENT_SCROLLBAR_H,
@@ -1517,7 +1559,7 @@ draw_box (GtkStyle * style,
                                 XP_THEME_ELEMENT_SCROLLBAR_GRIPPER_H);
 
                            /* Do not display grippers on tiny scroll bars,
-                              the limit imposed is rather arbitrary, perhaps 
+                              the limit imposed is rather arbitrary, perhaps
                               we can fetch the gripper geometry from
                               somewhere and use that... */
                            if ((gripper ==
@@ -1699,14 +1741,6 @@ draw_box (GtkStyle * style,
             && (strcmp (detail, "vscrollbar") == 0
                 || strcmp (detail, "hscrollbar") == 0))
        {
-           GtkScrollbar *scrollbar = GTK_SCROLLBAR (widget);
-
-           if (shadow_type == GTK_SHADOW_IN)
-               shadow_type = GTK_SHADOW_ETCHED_IN;
-           if (scrollbar->range.adjustment->page_size >=
-               (scrollbar->range.adjustment->upper -
-                scrollbar->range.adjustment->lower))
-               shadow_type = GTK_SHADOW_OUT;
        }
     else if (detail
             && (strcmp (detail, "handlebox_bin") == 0
@@ -1737,32 +1771,11 @@ draw_box (GtkStyle * style,
                    else
                        {
                            HBRUSH brush;
-                           gint xoff, yoff;
-                           GdkDrawable *drawable;
                            RECT rect;
                            HDC hdc;
 
-                           if (!GDK_IS_WINDOW (window))
-                               {
-                                   xoff = 0;
-                                   yoff = 0;
-                                   drawable = window;
-                               }
-                           else
-                               {
-                                   gdk_window_get_internal_paint_info
-                                       (window, &drawable, &xoff, &yoff);
-                               }
-
-                           rect.left = x - xoff;
-                           rect.top = y - yoff;
-                           rect.right = rect.left + width;
-                           rect.bottom = rect.top + height;
+                               hdc = get_window_dc(style, window, state_type, x, y, width, height, &rect);
 
-                           hdc =
-                               gdk_win32_hdc_get (window,
-                                                  style->dark_gc[state_type],
-                                                  0);
                            brush = GetSysColorBrush (COLOR_3DDKSHADOW);
                            if (brush)
                                FrameRect (hdc, &rect, brush);
@@ -1770,6 +1783,8 @@ draw_box (GtkStyle * style,
                            FillRect (hdc, &rect,
                                      (HBRUSH) (COLOR_INFOBK + 1));
 
+                               release_window_dc (style, window, state_type);
+
                            return;
                        }
 
@@ -1851,9 +1866,95 @@ draw_tab (GtkStyle * style,
                 x, y, indicator_size.width, arrow_height);
 }
 
-/* this is an undefined magic value that, according to the mozilla folks,
-   worked for all the various themes that they tried */
-#define XP_EDGE_SIZE 2
+/* Draw classic Windows tab - thanks Mozilla!
+  (no system API for this, but DrawEdge can draw all the parts of a tab) */
+static void DrawTab(HDC hdc, const RECT R, gint32 aPosition, gboolean aSelected,
+                     gboolean aDrawLeft, gboolean aDrawRight)
+ {
+   gint32 leftFlag, topFlag, rightFlag, lightFlag, shadeFlag;
+   RECT topRect, sideRect, bottomRect, lightRect, shadeRect;
+   gint32 selectedOffset, lOffset, rOffset;
+
+   selectedOffset = aSelected ? 1 : 0;
+   lOffset = aDrawLeft ? 2 : 0;
+   rOffset = aDrawRight ? 2 : 0;
+
+   /* Get info for tab orientation/position (Left, Top, Right, Bottom) */
+   switch (aPosition) {
+     case BF_LEFT:
+       leftFlag = BF_TOP; topFlag = BF_LEFT;
+       rightFlag = BF_BOTTOM;
+       lightFlag = BF_DIAGONAL_ENDTOPRIGHT;
+       shadeFlag = BF_DIAGONAL_ENDBOTTOMRIGHT;
+
+      SetRect(&topRect, R.left, R.top+lOffset, R.right, R.bottom-rOffset);
+      SetRect(&sideRect, R.left+2, R.top, R.right-2+selectedOffset, R.bottom);
+      SetRect(&bottomRect, R.right-2, R.top, R.right, R.bottom);
+      SetRect(&lightRect, R.left, R.top, R.left+3, R.top+3);
+      SetRect(&shadeRect, R.left+1, R.bottom-2, R.left+2, R.bottom-1);
+      break;
+    case BF_TOP:
+       leftFlag = BF_LEFT; topFlag = BF_TOP;
+       rightFlag = BF_RIGHT;
+       lightFlag = BF_DIAGONAL_ENDTOPRIGHT;
+       shadeFlag = BF_DIAGONAL_ENDBOTTOMRIGHT;
+
+       SetRect(&topRect, R.left+lOffset, R.top, R.right-rOffset, R.bottom);
+       SetRect(&sideRect, R.left, R.top+2, R.right, R.bottom-1+selectedOffset);
+       SetRect(&bottomRect, R.left, R.bottom-1, R.right, R.bottom);
+       SetRect(&lightRect, R.left, R.top, R.left+3, R.top+3);
+       SetRect(&shadeRect, R.right-2, R.top+1, R.right-1, R.top+2);
+       break;
+     case BF_RIGHT:
+       leftFlag = BF_TOP; topFlag = BF_RIGHT;
+       rightFlag = BF_BOTTOM;
+       lightFlag = BF_DIAGONAL_ENDTOPLEFT;
+       shadeFlag = BF_DIAGONAL_ENDBOTTOMLEFT;
+
+       SetRect(&topRect, R.left, R.top+lOffset, R.right, R.bottom-rOffset);
+       SetRect(&sideRect, R.left+2-selectedOffset, R.top, R.right-2, R.bottom);
+       SetRect(&bottomRect, R.left, R.top, R.left+2, R.bottom);
+       SetRect(&lightRect, R.right-3, R.top, R.right-1, R.top+2);
+       SetRect(&shadeRect, R.right-2, R.bottom-3, R.right, R.bottom-1);
+       break;
+     case BF_BOTTOM:
+       leftFlag = BF_LEFT; topFlag = BF_BOTTOM;
+       rightFlag = BF_RIGHT;
+       lightFlag = BF_DIAGONAL_ENDTOPLEFT;
+       shadeFlag = BF_DIAGONAL_ENDBOTTOMLEFT;
+
+       SetRect(&topRect, R.left+lOffset, R.top, R.right-rOffset, R.bottom);
+       SetRect(&sideRect, R.left, R.top+2-selectedOffset, R.right, R.bottom-2);
+       SetRect(&bottomRect, R.left, R.top, R.right, R.top+2);
+       SetRect(&lightRect, R.left, R.bottom-3, R.left+2, R.bottom-1);
+       SetRect(&shadeRect, R.right-2, R.bottom-3, R.right, R.bottom-1);
+       break;
+   }
+
+   /* Background */
+   FillRect(hdc, &R, (HBRUSH) (COLOR_3DFACE+1) );
+
+   /* Tab "Top" */
+   DrawEdge(hdc, &topRect, EDGE_RAISED, BF_SOFT | topFlag);
+
+   /* Tab "Bottom" */
+   if (!aSelected)
+     DrawEdge(hdc, &bottomRect, EDGE_RAISED, BF_SOFT | topFlag);
+
+   /* Tab "Sides" */
+   if (!aDrawLeft)
+     leftFlag = 0;
+   if (!aDrawRight)
+     rightFlag = 0;
+   DrawEdge(hdc, &sideRect, EDGE_RAISED, BF_SOFT | leftFlag | rightFlag);
+
+   /* Tab Diagonal Corners */
+   if (aDrawLeft)
+     DrawEdge(hdc, &lightRect, EDGE_RAISED, BF_SOFT | lightFlag);
+
+   if (aDrawRight)
+     DrawEdge(hdc, &shadeRect, EDGE_RAISED, BF_SOFT | shadeFlag);
+ }
 
 static void
 draw_extension (GtkStyle * style,
@@ -1866,43 +1967,47 @@ draw_extension (GtkStyle * style,
                gint x,
                gint y, gint width, gint height, GtkPositionType gap_side)
 {
-    if (GTK_IS_NOTEBOOK (widget) && detail && !strcmp (detail, "tab"))
+    if (widget && GTK_IS_NOTEBOOK (widget) && detail && !strcmp (detail, "tab"))
        {
            GtkNotebook *notebook = GTK_NOTEBOOK (widget);
            gint x2, y2, w2, h2;
+           int tab_part = XP_THEME_ELEMENT_TAB_ITEM;
+               int real_gap_side = gtk_notebook_get_tab_pos (notebook);
 
+               /* why this differs from the above gap_side, i have no idea... */
            x2 = x;
            y2 = y;
            w2 = width;
            h2 = height;
-           if (gap_side == GTK_POS_TOP && state_type == GTK_STATE_NORMAL)
-               {
-                   /* h2 += XP_EDGE_SIZE; */
-               }
-           else if (gap_side == GTK_POS_BOTTOM
-                    && state_type == GTK_STATE_NORMAL)
-               {
-                   /* h2 += XP_EDGE_SIZE; */
-               }
-           else if (gap_side == GTK_POS_LEFT
-                    && state_type == GTK_STATE_NORMAL)
-               {
-                   x2 += 1;
-                   w2 -= XP_EDGE_SIZE;
-               }
-           else if (gap_side == GTK_POS_RIGHT
-                    && state_type == GTK_STATE_NORMAL)
-               {
-                   w2 -= (XP_EDGE_SIZE + 1);
-               }
 
-           if (xp_theme_draw
-               (window, gtk_notebook_get_current_page (notebook) == 0
-                ? XP_THEME_ELEMENT_TAB_ITEM_LEFT_EDGE
-                : XP_THEME_ELEMENT_TAB_ITEM,
-                style, x2, y2, w2, h2, state_type, area))
+           if (xp_theme_draw (window, tab_part,
+                        style, x2, y2, w2, h2, (real_gap_side == GTK_POS_TOP ? state_type : GTK_STATE_SELECTED), area))
                {
-                   return;
+                       return;
+               } else if (real_gap_side == GTK_POS_TOP || real_gap_side == GTK_POS_BOTTOM) {
+                       /* experimental tab-drawing code from mozilla */
+                   RECT rect;
+               HDC dc;
+                       gint32 aPosition;
+
+               dc = get_window_dc(style, window, state_type, x, y, width, height, &rect);
+
+                       if (real_gap_side == GTK_POS_TOP)
+                               aPosition = BF_TOP;
+                       else if (real_gap_side == GTK_POS_BOTTOM)
+                               aPosition = BF_BOTTOM;
+                       else if (real_gap_side == GTK_POS_LEFT)
+                               aPosition = BF_LEFT;
+                       else
+                               aPosition = BF_RIGHT;
+
+                       if (area)
+                               gdk_gc_set_clip_rectangle (style->dark_gc[state_type], area);
+                       DrawTab (dc, rect, aPosition, state_type != GTK_STATE_PRELIGHT, (real_gap_side != GTK_POS_LEFT), (real_gap_side != GTK_POS_RIGHT));
+                       if (area)
+                               gdk_gc_set_clip_rectangle (style->dark_gc[state_type], NULL);
+
+                       release_window_dc (style, window, state_type);
                }
        }
     parent_class->draw_extension
@@ -1919,9 +2024,7 @@ draw_box_gap (GtkStyle * style, GdkWindow * window, GtkStateType state_type,
 {
     if (GTK_IS_NOTEBOOK (widget) && detail && !strcmp (detail, "notebook"))
        {
-           /* FIXME: pos != TOP to be implemented */
-           if (gap_side == GTK_POS_TOP
-               && xp_theme_draw (window, XP_THEME_ELEMENT_TAB_PANE, style, x,
+           if (xp_theme_draw (window, XP_THEME_ELEMENT_TAB_PANE, style, x,
                                  y, width, height, state_type, area))
                {
                    return;
@@ -2203,7 +2306,19 @@ draw_resize_grip (GtkStyle * style,
            if (xp_theme_draw
                (window, XP_THEME_ELEMENT_STATUS_GRIPPER, style, x, y, width,
                 height, state_type, area))
-               return;
+                       return;
+               else {
+                       RECT rect;
+                       HDC dc = get_window_dc(style, window, state_type, x, y, width, height, &rect);
+
+                       if (area)
+                               gdk_gc_set_clip_rectangle (style->dark_gc[state_type], area);
+                       DrawFrameControl(dc, &rect, DFC_SCROLL, DFCS_SCROLLSIZEGRIP);
+                       release_window_dc(style, window, state_type);
+                       if (area)
+                               gdk_gc_set_clip_rectangle (style->dark_gc[state_type], NULL);
+                       return;
+               }
        }
 
     parent_class->draw_resize_grip (style, window, state_type, area,
index 7d2d6483b3a1d39529a0519194a0251379379c9a..43d59c477f8539f965276dfa6b701f4f53de9d1b 100755 (executable)
 /* #include "gdk/gdkwin32.h" */
 #include "gdk/win32/gdkwin32.h"
 
-#ifdef HAVE_UXTHEME_H
-#include <uxtheme.h>
-#include <tmschema.h>
-#else
 #include "xp_theme_defs.h"
-#endif
 
 #ifndef TMT_CAPTIONFONT
 
@@ -86,7 +81,7 @@ static const LPCWSTR class_descriptors[] = {
     L"Button",                 /* XP_THEME_CLASS_BUTTON */
     L"Header",                 /* XP_THEME_CLASS_HEADER */
     L"ComboBox",               /* XP_THEME_CLASS_COMBOBOX */
-    L"Tab",                    /* XP_THEME_CLASS_TAB */
+    L"Tab",                        /* XP_THEME_CLASS_TAB */
     L"Edit",                   /* XP_THEME_CLASS_EDIT */
     L"TreeView",               /* XP_THEME_CLASS_TREEVIEW */
     L"Spin",                   /* XP_THEME_CLASS_SPIN */
@@ -110,6 +105,7 @@ static const short element_part_map[] = {
     TABP_BODY,
     TABP_TABITEM,
     TABP_TABITEMLEFTEDGE,
+       TABP_TABITEMRIGHTEDGE,
     TABP_PANE,
     SBP_THUMBBTNHORZ,
     SBP_THUMBBTNVERT,
@@ -365,6 +361,7 @@ xp_theme_get_handle_by_element (XpThemeElement element)
        case XP_THEME_ELEMENT_BODY:
        case XP_THEME_ELEMENT_TAB_ITEM:
        case XP_THEME_ELEMENT_TAB_ITEM_LEFT_EDGE:
+       case XP_THEME_ELEMENT_TAB_ITEM_RIGHT_EDGE:
        case XP_THEME_ELEMENT_TAB_PANE:
            klazz = XP_THEME_CLASS_TAB;
            break;
@@ -486,6 +483,7 @@ xp_theme_map_gtk_state (XpThemeElement element, GtkStateType state)
            break;
 
        case XP_THEME_ELEMENT_TAB_ITEM_LEFT_EDGE:
+       case XP_THEME_ELEMENT_TAB_ITEM_RIGHT_EDGE:
        case XP_THEME_ELEMENT_TAB_ITEM:
            switch (state)
                {
index 4627590e87f65c6653feeb94c5de003f3d4d2039..7c03565f1dc07c68248a751249af8db9b2d84aa3 100755 (executable)
@@ -57,6 +57,7 @@ typedef enum
   XP_THEME_ELEMENT_BODY,\r
   XP_THEME_ELEMENT_TAB_ITEM,\r
   XP_THEME_ELEMENT_TAB_ITEM_LEFT_EDGE,\r
+  XP_THEME_ELEMENT_TAB_ITEM_RIGHT_EDGE,\r
   XP_THEME_ELEMENT_TAB_PANE,\r
   XP_THEME_ELEMENT_SCROLLBAR_H,\r
   XP_THEME_ELEMENT_SCROLLBAR_V,\r
index 14376331e2b44cd8b1f1df2a8b92e8441e75261b..67dc147ed84003a2e340e3dc512926a5e6ce3f57 100644 (file)
@@ -33,127 +33,226 @@ typedef HANDLE HTHEME;
 #define ETDT_USETABTEXTURE  0x00000004
 #define ETDT_ENABLETAB      (ETDT_ENABLE  | ETDT_USETABTEXTURE)
 
-#define BP_PUSHBUTTON 1
-#define BP_CHECKBOX 3
-
-#define HP_HEADERITEM 1
-
-#define CP_DROPDOWNBUTTON 1
-
-#define TABP_TABITEM 1
-#define TABP_TABITEMLEFTEDGE 2
-#define TABP_PANE 9
-#define TABP_BODY 10
-
-#define SBP_ARROWBTN 1
-#define SBP_THUMBBTNHORZ 2
-#define SBP_THUMBBTNVERT 3
-#define SBP_LOWERTRACKHORZ 4
-#define SBP_UPPERTRACKHORZ 5
-#define SBP_LOWERTRACKVERT 6
-#define SBP_UPPERTRACKVERT 7
-#define SBP_GRIPPERHORZ 8
-#define SBP_GRIPPERVERT 9
-
-#define EP_EDITTEXT 1
-
-#define SPNP_UP 1
-#define SPNP_DOWN 2
-
-#define BP_RADIOBUTTON 2
-
-#define TVP_GLYPH 2
-
-#define PP_BAR 1
-#define PP_BARVERT 2
-#define PP_CHUNK 3
-#define PP_CHUNKVERT 4
-
-#define TTP_STANDARD 1
-
-#define RP_GRIPPER 1
-#define RP_GRIPPERVERT 2
-#define RP_BAND 3
-#define RP_CHEVRON 4
-
-#define TP_BUTTON 1
-#define TS_NORMAL 1
-#define TS_HOT 2
-#define TS_PRESSED 3
-#define TS_DISABLED 4
-
-#define TTSS_NORMAL 1
-
-#define CHEVS_NORMAL 1
-#define CHEVS_HOT 2
-#define CHEVS_PRESSED 3
-
-#define TIS_NORMAL 1
-#define TIS_HOT 2
-#define TIS_SELECTED 3
-#define TIS_DISABLED 4
-
-#define ETS_NORMAL 1
-#define ETS_FOCUSED 5
-#define ETS_READONLY 6
-
-#define SCRBS_NORMAL 1
-#define SCRBS_HOT 2
-#define SCRBS_PRESSED 3
-#define SCRBS_DISABLED 4
-
-#define ABS_UPNORMAL 1
-#define ABS_UPHOT 2
-#define ABS_UPPRESSED 3
-#define ABS_UPDISABLED 4
-#define ABS_DOWNNORMAL 5
-#define ABS_DOWNHOT 6
-#define ABS_DOWNPRESSED 7
-#define ABS_DOWNDISABLED 8
-#define ABS_LEFTNORMAL 9
-#define ABS_LEFTHOT 10
-#define ABS_LEFTPRESSED 11
-#define ABS_LEFTDISABLED 12
-#define ABS_RIGHTNORMAL 13
-#define ABS_RIGHTHOT 14
-#define ABS_RIGHTPRESSED 15
-#define ABS_RIGHTDISABLED 16
-
-#define CBS_UNCHECKEDNORMAL 1
-#define CBS_UNCHECKEDHOT 2
-#define CBS_UNCHECKEDPRESSED 3
-#define CBS_UNCHECKEDDISABLED 4
-#define CBS_CHECKEDNORMAL 5
-#define CBS_CHECKEDHOT 6
-#define CBS_CHECKEDPRESSED 7
-#define CBS_CHECKEDDISABLED 8
-
-#define PBS_NORMAL 1
-#define PBS_HOT 2
-#define PBS_PRESSED 3
-#define PBS_DISABLED 4
-#define PBS_DEFAULTED 5
-
-#define DNS_NORMAL 1
-#define DNS_HOT 2
-#define DNS_PRESSED 3
-#define DNS_DISABLED 4
-
-#define UPS_NORMAL 1
-#define UPS_HOT 2
-#define UPS_PRESSED 3
-#define UPS_DISABLED 4
-
-#define GLPS_CLOSED 1
-#define GLPS_OPENED 2
-
-#define MP_MENUITEM 1
-#define MP_SEPARATOR 6
-#define MS_NORMAL 1
-#define MS_SELECTED 2
-#define MS_DEMOTED 3
-
-#define SP_PANE 2
-#define SP_GRIPPER 3
+enum   {
+  BP_PUSHBUTTON = 1, BP_RADIOBUTTON = 2, BP_CHECKBOX = 3, BP_GROUPBOX = 4,
+  BP_USERBUTTON = 5
+};
+enum   {
+  CBS_UNCHECKEDNORMAL = 1, CBS_UNCHECKEDHOT = 2, CBS_UNCHECKEDPRESSED = 3, CBS_UNCHECKEDDISABLED = 4,
+  CBS_CHECKEDNORMAL = 5, CBS_CHECKEDHOT = 6, CBS_CHECKEDPRESSED = 7, CBS_CHECKEDDISABLED = 8,
+  CBS_MIXEDNORMAL = 9, CBS_MIXEDHOT = 10, CBS_MIXEDPRESSED = 11, CBS_MIXEDDISABLED = 12
+};
+enum   { GBS_NORMAL = 1, GBS_DISABLED = 2 };;
+enum   {
+  PBS_NORMAL = 1, PBS_HOT = 2, PBS_PRESSED = 3, PBS_DISABLED = 4,
+  PBS_DEFAULTED = 5
+};
+enum   {
+  RBS_UNCHECKEDNORMAL = 1, RBS_UNCHECKEDHOT = 2, RBS_UNCHECKEDPRESSED = 3, RBS_UNCHECKEDDISABLED = 4,
+  RBS_CHECKEDNORMAL = 5, RBS_CHECKEDHOT = 6, RBS_CHECKEDPRESSED = 7, RBS_CHECKEDDISABLED = 8
+};
+enum   { CLP_TIME = 1 };
+enum   { CLS_NORMAL = 1 };
+enum   { CP_DROPDOWNBUTTON = 1 };
+enum   { CBXS_NORMAL = 1, CBXS_HOT = 2, CBXS_PRESSED = 3, CBXS_DISABLED = 4 };
+enum   { EP_EDITTEXT = 1, EP_CARET = 2 };
+enum   {
+  ETS_NORMAL = 1, ETS_HOT = 2, ETS_SELECTED = 3, ETS_DISABLED = 4,
+  ETS_FOCUSED = 5, ETS_READONLY = 6, ETS_ASSIST = 7
+};
+enum   {
+  EBP_HEADERBACKGROUND = 1, EBP_HEADERCLOSE = 2, EBP_HEADERPIN = 3, EBP_IEBARMENU = 4,
+  EBP_NORMALGROUPBACKGROUND = 5, EBP_NORMALGROUPCOLLAPSE = 6, EBP_NORMALGROUPEXPAND = 7, EBP_NORMALGROUPHEAD = 8,
+  EBP_SPECIALGROUPBACKGROUND = 9, EBP_SPECIALGROUPCOLLAPSE = 10, EBP_SPECIALGROUPEXPAND = 11, EBP_SPECIALGROUPHEAD = 12
+};
+enum   { EBHC_NORMAL = 1, EBHC_HOT = 2, EBHC_PRESSED = 3 };
+enum   {
+  EBHP_NORMAL = 1, EBHP_HOT = 2, EBHP_PRESSED = 3, EBHP_SELECTEDNORMAL = 4,
+  EBHP_SELECTEDHOT = 5, EBHP_SELECTEDPRESSED = 6
+};
+enum   { EBM_NORMAL = 1, EBM_HOT = 2, EBM_PRESSED = 3 };
+enum   { EBNGC_NORMAL = 1, EBNGC_HOT = 2, EBNGC_PRESSED = 3 };
+enum   { EBNGE_NORMAL = 1, EBNGE_HOT = 2, EBNGE_PRESSED = 3 };
+enum   { EBSGC_NORMAL = 1, EBSGC_HOT = 2, EBSGC_PRESSED = 3 };
+enum   { EBSGE_NORMAL = 1, EBSGE_HOT = 2, EBSGE_PRESSED = 3 };
+enum   { HP_HEADERITEM = 1, HP_HEADERITEMLEFT = 2, HP_HEADERITEMRIGHT = 3, HP_HEADERSORTARROW = 4 };
+enum   { HIS_NORMAL = 1, HIS_HOT = 2, HIS_PRESSED = 3 };
+enum   { HILS_NORMAL = 1, HILS_HOT = 2, HILS_PRESSED = 3 };
+enum   { HIRS_NORMAL = 1, HIRS_HOT = 2, HIRS_PRESSED = 3 };
+enum   { HSAS_SORTEDUP = 1, HSAS_SORTEDDOWN = 2 };
+enum   {
+  LVP_LISTITEM = 1, LVP_LISTGROUP = 2, LVP_LISTDETAIL = 3, LVP_LISTSORTEDDETAIL = 4,
+  LVP_EMPTYTEXT = 5
+};
+enum   {
+  LIS_NORMAL = 1, LIS_HOT = 2, LIS_SELECTED = 3, LIS_DISABLED = 4,
+  LIS_SELECTEDNOTFOCUS = 5
+};
+enum   {
+  MP_MENUITEM = 1, MP_MENUDROPDOWN = 2, MP_MENUBARITEM = 3, MP_MENUBARDROPDOWN = 4,
+  MP_CHEVRON = 5, MP_SEPARATOR = 6
+};
+enum   { MS_NORMAL = 1, MS_SELECTED = 2, MS_DEMOTED = 3 };
+enum   { MDP_NEWAPPBUTTON = 1, MDP_SEPERATOR = 2 };
+enum   {
+  MDS_NORMAL = 1, MDS_HOT = 2, MDS_PRESSED = 3, MDS_DISABLED = 4,
+  MDS_CHECKED = 5, MDS_HOTCHECKED = 6
+};
+enum   { PGRP_UP = 1, PGRP_DOWN = 2, PGRP_UPHORZ = 3, PGRP_DOWNHORZ = 4 };
+enum   { DNS_NORMAL = 1, DNS_HOT = 2, DNS_PRESSED = 3, DNS_DISABLED = 4 };
+enum   { DNHZS_NORMAL = 1, DNHZS_HOT = 2, DNHZS_PRESSED = 3, DNHZS_DISABLED = 4 };
+enum   { UPS_NORMAL = 1, UPS_HOT = 2, UPS_PRESSED = 3, UPS_DISABLED = 4 };
+enum   { UPHZS_NORMAL = 1, UPHZS_HOT = 2, UPHZS_PRESSED = 3, UPHZS_DISABLED = 4 };
+enum   { PP_BAR = 1, PP_BARVERT = 2, PP_CHUNK = 3, PP_CHUNKVERT = 4 };
+enum   {
+  RP_GRIPPER = 1, RP_GRIPPERVERT = 2, RP_BAND = 3, RP_CHEVRON = 4,
+  RP_CHEVRONVERT = 5
+};
+enum   { CHEVS_NORMAL = 1, CHEVS_HOT = 2, CHEVS_PRESSED = 3 };
+enum   {
+  SBP_ARROWBTN = 1, SBP_THUMBBTNHORZ = 2, SBP_THUMBBTNVERT = 3, SBP_LOWERTRACKHORZ = 4,
+  SBP_UPPERTRACKHORZ = 5, SBP_LOWERTRACKVERT = 6, SBP_UPPERTRACKVERT = 7, SBP_GRIPPERHORZ = 8,
+  SBP_GRIPPERVERT = 9, SBP_SIZEBOX = 10
+};
+enum   {
+  ABS_UPNORMAL = 1, ABS_UPHOT = 2, ABS_UPPRESSED = 3, ABS_UPDISABLED = 4,
+  ABS_DOWNNORMAL = 5, ABS_DOWNHOT = 6, ABS_DOWNPRESSED = 7, ABS_DOWNDISABLED = 8,
+  ABS_LEFTNORMAL = 9, ABS_LEFTHOT = 10, ABS_LEFTPRESSED = 11, ABS_LEFTDISABLED = 12,
+  ABS_RIGHTNORMAL = 13, ABS_RIGHTHOT = 14, ABS_RIGHTPRESSED = 15, ABS_RIGHTDISABLED = 16
+};
+enum   { SCRBS_NORMAL = 1, SCRBS_HOT = 2, SCRBS_PRESSED = 3, SCRBS_DISABLED = 4 };
+enum   { SZB_RIGHTALIGN = 1, SZB_LEFTALIGN = 2 };
+enum   { SPNP_UP = 1, SPNP_DOWN = 2, SPNP_UPHORZ = 3, SPNP_DOWNHORZ = 4 };
+enum   {
+  SPP_USERPANE = 1, SPP_MOREPROGRAMS = 2, SPP_MOREPROGRAMSARROW = 3, SPP_PROGLIST = 4,
+  SPP_PROGLISTSEPARATOR = 5, SPP_PLACESLIST = 6, SPP_PLACESLISTSEPARATOR = 7, SPP_LOGOFF = 8,
+  SPP_LOGOFFBUTTONS = 9, SPP_USERPICTURE = 10, SPP_PREVIEW = 11
+};
+enum   { SPLS_NORMAL = 1, SPLS_HOT = 2, SPLS_PRESSED = 3 };
+enum   { SPS_NORMAL = 1, SPS_HOT = 2, SPS_PRESSED = 3 };
+enum   { SP_PANE = 1, SP_GRIPPERPANE = 2, SP_GRIPPER = 3 };
+enum   {
+  TABP_TABITEM = 1, TABP_TABITEMLEFTEDGE = 2, TABP_TABITEMRIGHTEDGE = 3, TABP_TABITEMBOTHEDGE = 4,
+  TABP_TOPTABITEM = 5, TABP_TOPTABITEMLEFTEDGE = 6, TABP_TOPTABITEMRIGHTEDGE = 7, TABP_TOPTABITEMBOTHEDGE = 8,
+  TABP_PANE = 9, TABP_BODY = 10
+};
+enum   {
+  TIS_NORMAL = 1, TIS_HOT = 2, TIS_SELECTED = 3, TIS_DISABLED = 4,
+  TIS_FOCUSED = 5
+};
+enum   {
+  TIBES_NORMAL = 1, TIBES_HOT = 2, TIBES_SELECTED = 3, TIBES_DISABLED = 4,
+  TIBES_FOCUSED = 5
+};
+enum   {
+  TILES_NORMAL = 1, TILES_HOT = 2, TILES_SELECTED = 3, TILES_DISABLED = 4,
+  TILES_FOCUSED = 5
+};
+enum   {
+  TIRES_NORMAL = 1, TIRES_HOT = 2, TIRES_SELECTED = 3, TIRES_DISABLED = 4,
+  TIRES_FOCUSED = 5
+};
+enum   {
+  TTIS_NORMAL = 1, TTIS_HOT = 2, TTIS_SELECTED = 3, TTIS_DISABLED = 4,
+  TTIS_FOCUSED = 5
+};
+enum   {
+  TTIBES_NORMAL = 1, TTIBES_HOT = 2, TTIBES_SELECTED = 3, TTIBES_DISABLED = 4,
+  TTIBES_FOCUSED = 5
+};
+enum   {
+  TTILES_NORMAL = 1, TTILES_HOT = 2, TTILES_SELECTED = 3, TTILES_DISABLED = 4,
+  TTILES_FOCUSED = 5
+};
+enum   {
+  TTIRES_NORMAL = 1, TTIRES_HOT = 2, TTIRES_SELECTED = 3, TTIRES_DISABLED = 4,
+  TTIRES_FOCUSED = 5
+};
+enum   { TDP_GROUPCOUNT = 1, TDP_FLASHBUTTON = 2, TDP_FLASHBUTTONGROUPMENU = 3 };
+enum   {
+  TBP_BACKGROUNDBOTTOM = 1, TBP_BACKGROUNDRIGHT = 2, TBP_BACKGROUNDTOP = 3, TBP_BACKGROUNDLEFT = 4,
+  TBP_SIZINGBARBOTTOM = 5, TBP_SIZINGBARRIGHT = 6, TBP_SIZINGBARTOP = 7, TBP_SIZINGBARLEFT = 8
+};
+enum   {
+  TP_BUTTON = 1, TP_DROPDOWNBUTTON = 2, TP_SPLITBUTTON = 3, TP_SPLITBUTTONDROPDOWN = 4,
+  TP_SEPARATOR = 5, TP_SEPARATORVERT = 6
+};
+enum   {
+  TS_NORMAL = 1, TS_HOT = 2, TS_PRESSED = 3, TS_DISABLED = 4,
+  TS_CHECKED = 5, TS_HOTCHECKED = 6
+};
+enum   {
+  TTP_STANDARD = 1, TTP_STANDARDTITLE = 2, TTP_BALLOON = 3, TTP_BALLOONTITLE = 4,
+  TTP_CLOSE = 5
+};
+enum   { TTBS_NORMAL = 1, TTBS_LINK = 2 };
+enum   { TTCS_NORMAL = 1, TTCS_HOT = 2, TTCS_PRESSED = 3 };
+enum   { TTSS_NORMAL = 1, TTSS_LINK = 2 };
+enum   {
+  TKP_TRACK = 1, TKP_TRACKVERT = 2, TKP_THUMB = 3, TKP_THUMBBOTTOM = 4,
+  TKP_THUMBTOP = 5, TKP_THUMBVERT = 6, TKP_THUMBLEFT = 7, TKP_THUMBRIGHT = 8,
+  TKP_TICS = 9, TKP_TICSVERT = 10
+};
+enum   {
+  TUS_NORMAL = 1, TUS_HOT = 2, TUS_PRESSED = 3, TUS_FOCUSED = 4,
+  TUS_DISABLED = 5
+};
+enum   {
+  TUBS_NORMAL = 1, TUBS_HOT = 2, TUBS_PRESSED = 3, TUBS_FOCUSED = 4,
+  TUBS_DISABLED = 5
+};
+enum   {
+  TUVLS_NORMAL = 1, TUVLS_HOT = 2, TUVLS_PRESSED = 3, TUVLS_FOCUSED = 4,
+  TUVLS_DISABLED = 5
+};
+enum   {
+  TUVRS_NORMAL = 1, TUVRS_HOT = 2, TUVRS_PRESSED = 3, TUVRS_FOCUSED = 4,
+  TUVRS_DISABLED = 5
+};
+enum   {
+  TUTS_NORMAL = 1, TUTS_HOT = 2, TUTS_PRESSED = 3, TUTS_FOCUSED = 4,
+  TUTS_DISABLED = 5
+};
+enum   {
+  TUVS_NORMAL = 1, TUVS_HOT = 2, TUVS_PRESSED = 3, TUVS_FOCUSED = 4,
+  TUVS_DISABLED = 5
+};
+enum   { TSS_NORMAL = 1 };
+enum   { TSVS_NORMAL = 1 };
+enum   { TRS_NORMAL = 1 };
+enum   { TRVS_NORMAL = 1 };
+enum   { TNP_BACKGROUND = 1, TNP_ANIMBACKGROUND = 2 };
+enum   { TVP_TREEITEM = 1, TVP_GLYPH = 2, TVP_BRANCH = 3 };
+enum   { GLPS_CLOSED = 1, GLPS_OPENED = 2 };
+enum   {
+  TREIS_NORMAL = 1, TREIS_HOT = 2, TREIS_SELECTED = 3, TREIS_DISABLED = 4,
+  TREIS_SELECTEDNOTFOCUS = 5
+};
+enum   {
+  WP_CAPTION = 1, WP_SMALLCAPTION = 2, WP_MINCAPTION = 3, WP_SMALLMINCAPTION = 4,
+  WP_MAXCAPTION = 5, WP_SMALLMAXCAPTION = 6, WP_FRAMELEFT = 7, WP_FRAMERIGHT = 8,
+  WP_FRAMEBOTTOM = 9, WP_SMALLFRAMELEFT = 10, WP_SMALLFRAMERIGHT = 11, WP_SMALLFRAMEBOTTOM = 12,
+  WP_SYSBUTTON = 13, WP_MDISYSBUTTON = 14, WP_MINBUTTON = 15, WP_MDIMINBUTTON = 16,
+  WP_MAXBUTTON = 17, WP_CLOSEBUTTON = 18, WP_SMALLCLOSEBUTTON = 19, WP_MDICLOSEBUTTON = 20,
+  WP_RESTOREBUTTON = 21, WP_MDIRESTOREBUTTON = 22, WP_HELPBUTTON = 23, WP_MDIHELPBUTTON = 24,
+  WP_HORZSCROLL = 25, WP_HORZTHUMB = 26, WP_VERTSCROLL = 27, WP_VERTTHUMB = 28,
+  WP_DIALOG = 29, WP_CAPTIONSIZINGTEMPLATE = 30, WP_SMALLCAPTIONSIZINGTEMPLATE = 31, WP_FRAMELEFTSIZINGTEMPLATE = 32,
+  WP_SMALLFRAMELEFTSIZINGTEMPLATE = 33, WP_FRAMERIGHTSIZINGTEMPLATE = 34, WP_SMALLFRAMERIGHTSIZINGTEMPLATE = 35, WP_FRAMEBOTTOMSIZINGTEMPLATE = 36,
+  WP_SMALLFRAMEBOTTOMSIZINGTEMPLATE = 37
+};
+enum   { CS_ACTIVE = 1, CS_INACTIVE = 2, CS_DISABLED = 3 };
+enum   { CBS_NORMAL = 1, CBS_HOT = 2, CBS_PUSHED = 3, CBS_DISABLED = 4 };
+enum   { FS_ACTIVE = 1, FS_INACTIVE = 2 };
+enum   { HBS_NORMAL = 1, HBS_HOT = 2, HBS_PUSHED = 3, HBS_DISABLED = 4 };
+enum   { HSS_NORMAL = 1, HSS_HOT = 2, HSS_PUSHED = 3, HSS_DISABLED = 4 };
+enum   { HTS_NORMAL = 1, HTS_HOT = 2, HTS_PUSHED = 3, HTS_DISABLED = 4 };
+enum   { MAXBS_NORMAL = 1, MAXBS_HOT = 2, MAXBS_PUSHED = 3, MAXBS_DISABLED = 4 };
+enum   { MXCS_ACTIVE = 1, MXCS_INACTIVE = 2, MXCS_DISABLED = 3 };
+enum   { MINBS_NORMAL = 1, MINBS_HOT = 2, MINBS_PUSHED = 3, MINBS_DISABLED = 4 };
+enum   { RBS_NORMAL = 1, RBS_HOT = 2, RBS_PUSHED = 3, RBS_DISABLED = 4 };
+enum   { SBS_NORMAL = 1, SBS_HOT = 2, SBS_PUSHED = 3, SBS_DISABLED = 4 };
+enum   { MNCS_ACTIVE = 1, MNCS_INACTIVE = 2, MNCS_DISABLED = 3 };
+enum   { VSS_NORMAL = 1, VSS_HOT = 2, VSS_PUSHED = 3, VSS_DISABLED = 4 };
+enum   { VTS_NORMAL = 1, VTS_HOT = 2, VTS_PUSHED = 3, VTS_DISABLED = 4 };
 
 #endif /* XP_THEME_DFNS_H */