Index: trunk/src/helpers/_call_filedlg.c
===================================================================
--- trunk/src/helpers/_call_filedlg.c	(revision 232)
+++ trunk/src/helpers/_call_filedlg.c	(revision 233)
@@ -107,5 +107,5 @@
             {
                 gpihSwitchToRGB(hps);
-                WinFillRect(hps, &rcl, RGBCOL_GRAY);
+                WinFillRect(hps, &rcl, RGBCOL_DARKGRAY);
                 WinEndPaint(hps);
             }
@@ -130,4 +130,7 @@
     HMQ             hmq;
 
+    #undef TBBS_TEXT
+    #define TBBS_TEXT 0
+
     #define TBBS_COMMON TBBS_AUTORESIZE | TBBS_FLAT | TBBS_HILITE | WS_VISIBLE
 
@@ -137,4 +140,5 @@
     TOOLBARCONTROL  aControls[] =
         {
+            /*
             WC_CCTL_TBBUTTON,
             szExit,
@@ -146,5 +150,5 @@
             WC_CCTL_TBBUTTON,
             szExit,
-            TBBS_COMMON | TBBS_BIGICON /* TBBS_TEXT | */ ,
+            TBBS_COMMON | TBBS_BIGICON,
             0,
             10,
@@ -153,8 +157,9 @@
             WC_CCTL_TBBUTTON,
             szExit,
-            TBBS_COMMON | TBBS_MINIICON /* TBBS_TEXT | */ ,
+            TBBS_COMMON | TBBS_MINIICON,
             0,
             10,
             10,
+            */
 
             WC_CCTL_TBBUTTON,
@@ -181,5 +186,5 @@
             WC_CCTL_TBBUTTON,
             "Group 1",
-            TBBS_COMMON | TBBS_TEXT | TBBS_CHECKGROUP | TBBS_CHECKINITIAL,
+            TBBS_COMMON | TBBS_TEXT | TBBS_RADIO | TBBS_CHECKINITIAL,
             1101,
             10,
@@ -188,5 +193,5 @@
             WC_CCTL_TBBUTTON,
             "Group 2",
-            TBBS_COMMON | TBBS_TEXT | TBBS_CHECKGROUP,
+            TBBS_COMMON | TBBS_TEXT | TBBS_RADIO,
             1102,
             10,
@@ -195,5 +200,5 @@
             WC_CCTL_TBBUTTON,
             "Group 3",
-            TBBS_COMMON | TBBS_TEXT | TBBS_CHECKGROUP,
+            TBBS_COMMON | TBBS_TEXT | TBBS_RADIO,
             1103,
             10,
@@ -270,5 +275,5 @@
     WinSetWindowText(hwndStatusBar, "Status bar");
 
-    hwndMenu = WinCreateMenu(hwndFrame,
+    /* hwndMenu = WinCreateMenu(hwndFrame,
                              NULL);
 
@@ -289,4 +294,5 @@
                        MIS_SYSCOMMAND | MIS_TEXT,
                        0);
+    */
 
     WinSendMsg(hwndFrame, WM_UPDATEFRAME, MPNULL, MPNULL);
Index: trunk/src/helpers/cctl_toolbar.c
===================================================================
--- trunk/src/helpers/cctl_toolbar.c	(revision 232)
+++ trunk/src/helpers/cctl_toolbar.c	(revision 233)
@@ -65,5 +65,7 @@
 #include "helpers\linklist.h"
 #include "helpers\standards.h"
+#include "helpers\stringh.h"
 #include "helpers\winh.h"
+#include "helpers\xstring.h"
 
 #include "helpers\comctl.h"
@@ -102,5 +104,6 @@
     DEFWINDATA  dwd;
 
-    HWND        hwndControlsOwner;
+    HWND        hwndControlsOwner,
+                hwndToolTip;        // != NULLHANDLE if TBS_TOOLTIPS is set
 
     LONG        lSpacing,
@@ -111,4 +114,6 @@
     ULONG       flReformat;
         #define RFFL_HEIGHT         0x0001      // height changed, needs complete resize
+
+    XSTRING     strToolTipBuf;
 
 } TOOLBARDATA, *PTOOLBARDATA;
@@ -169,4 +174,5 @@
  *@@changed V0.9.20 (2002-08-04) [umoeller]: fixed button offset, depressed color
  *@@changed V1.0.1 (2002-11-30) [umoeller]: moved this here from comctl.c, renamed
+ *@@changed V1.0.1 (2002-12-08) [umoeller]: added support for WS_DISABLED
  */
 
@@ -212,7 +218,9 @@
         lRight = G_lcol3DDark;
 
-        if (!lBorder)
-            if (pbs->fMouseOver)
-                lBorder = 1;
+        if (    (!lBorder)
+             && (pbs->fMouseOver)
+             && (fl & TBBS_HILITE)
+           )
+            lBorder = 1;
     }
 
@@ -310,14 +318,22 @@
                           0,
                           0,
-                          DBM_NORMAL);
+                          (fl & WS_DISABLED)
+                               ? DBM_HALFTONE
+                               : DBM_NORMAL);
         else
+        {
+            ULONG   fl2 = DP_NORMAL;     // 0x0000
+
+            if (!(fl & TBBS_BIGICON))
+                fl2 = DP_MINI;
+            if (fl & WS_DISABLED)       // V1.0.1 (2002-12-08) [umoeller]
+                fl2 |= DP_HALFTONED;    // I love this... DBM_HALFTONE, but DP_HALFTONED!
+                                        // PM is just so half-toned itself...
             WinDrawPointer(hps,
-                           // center this in remaining rectl
                            ptl.x,
                            ptl.y,
                            pbd->hptr,
-                           (fl & TBBS_BIGICON)
-                               ? DP_NORMAL
-                               : DP_MINI);
+                           fl2);
+        }
 
         rclTemp.yTop -= pbd->szlIconOrBitmap.cy;
@@ -747,5 +763,7 @@
                 {
                     pData->bs.fMouseOver = fMouseOver;
-                    WinInvalidateRect(hwndButton, NULL, FALSE);
+
+                    if (winhQueryWindowStyle(hwndButton) & TBBS_HILITE)
+                        WinInvalidateRect(hwndButton, NULL, FALSE);
                 }
             }
@@ -763,5 +781,6 @@
                     gpihSwitchToRGB(hps);
                     ctlPaintTBButton(hps,
-                                     winhQueryWindowStyle(hwndButton) | TBBS_BACKGROUND,
+                                     winhQueryWindowStyle(hwndButton)
+                                        | TBBS_BACKGROUND,
                                      &pData->bd,
                                      &pData->bs);
@@ -865,4 +884,17 @@
     {
         *px += pControl->cx + pData->lSpacing;
+
+        if (pData->hwndToolTip)
+        {
+            TOOLINFO    ti = {0};
+            ti.ulFlags = TTF_CENTER_X_ON_TOOL | TTF_POS_Y_BELOW_TOOL | TTF_SUBCLASS;
+            ti.hwndToolOwner = pData->dwd.hwnd;
+            ti.pszText = PSZ_TEXTCALLBACK;
+            ti.hwndTool = hwndControl;
+            WinSendMsg(pData->hwndToolTip,
+                       TTM_ADDTOOL,
+                       (MPARAM)0,
+                       &ti);
+        }
     }
 
@@ -1085,4 +1117,20 @@
     lstInit(&pData->llControls, FALSE);
 
+    xstrInit(&pData->strToolTipBuf, 0);
+
+    if (((PCREATESTRUCT)mp2)->flStyle & TBS_TOOLTIPS)
+    {
+        pData->hwndToolTip = WinCreateWindow(HWND_DESKTOP,
+                                             WC_CCTL_TOOLTIP,
+                                             NULL,
+                                             TTS_ALWAYSTIP,
+                                             0, 0, 0, 0,    // window pos and size, ignored
+                                             hwndToolBar,
+                                             NULLHANDLE,    // hwndInsertBehind, ignored
+                                             0,
+                                             NULL,          // control data
+                                             NULL);         // presparams
+    }
+
     if (    (ptbcd->cControls)
          && (ptbcd->patbc)
@@ -1109,4 +1157,8 @@
     {
         PLISTNODE pNode;
+
+        if (pData->hwndToolTip)
+            WinDestroyWindow(pData->hwndToolTip);
+
         FOR_ALL_NODES(&pData->llControls, pNode)
         {
@@ -1114,4 +1166,7 @@
         }
         lstClear(&pData->llControls);
+
+        xstrClear(&pData->strToolTipBuf);
+
         free(pData);
     }
@@ -1171,4 +1226,22 @@
         break;
 
+        case WM_CONTROL:
+            if (    (pData = (PTOOLBARDATA)WinQueryWindowPtr(hwndToolBar, QWL_USER + 1))
+                 && (pData->hwndToolTip)
+                 && (SHORT2FROMMP(mp1) == TTN_NEEDTEXT)
+               )
+            {
+                PTOOLTIPTEXT pttt = (PTOOLTIPTEXT)mp2;
+                PSZ psz;
+                xstrClear(&pData->strToolTipBuf);
+
+                if (psz = winhQueryWindowText(pttt->hwndTool))
+                    xstrset(&pData->strToolTipBuf, psz);
+
+                pttt->ulFormat = TTFMT_PSZ;
+                pttt->pszText = pData->strToolTipBuf.psz;
+            }
+        break;
+
         case WM_PAINT:
         {
@@ -1286,2 +1359,3 @@
                            NULL);
 }
+
Index: trunk/src/helpers/cctl_xframe.c
===================================================================
--- trunk/src/helpers/cctl_xframe.c	(revision 232)
+++ trunk/src/helpers/cctl_xframe.c	(revision 233)
@@ -77,4 +77,6 @@
  *      window proc that implements tool or status bars.
  *      (XWorkplace status bars).
+ *
+ *@@changed V1.0.1 (2002-12-08) [umoeller]: didn't work if frame had no menu, fixed
  */
 
@@ -103,4 +105,5 @@
                     pswpClient = NULL,
                     pswpMenu = NULL,
+                    pswpTitleBar = NULL,
                     pswpToolBar = NULL,
                     pswpStatusBar = NULL,
@@ -132,4 +135,8 @@
                     pswpMenu = &paswp[ul];
                 break;
+
+                case FID_TITLEBAR:
+                    pswpTitleBar = &paswp[ul];
+                break;
             }
         }
@@ -145,4 +152,8 @@
             if (pswpMenu)
                 pswpToolBar->y = pswpMenu->y - pxfc->lToolBarHeight;
+            // if we don't have a menu, we need to use the title bar instead
+            // or the toolbar will overlap it V1.0.1 (2002-12-08) [umoeller]
+            else if (pswpTitleBar)
+                pswpToolBar->y = pswpTitleBar->y - pxfc->lToolBarHeight;
             else
                 pswpToolBar->y  = rclFrame.yTop - ptlBorderSizes.y - pxfc->lToolBarHeight;
Index: trunk/src/helpers/comctl.c
===================================================================
--- trunk/src/helpers/comctl.c	(revision 232)
+++ trunk/src/helpers/comctl.c	(revision 233)
@@ -246,4 +246,8 @@
         break;
 
+        case WM_ENABLE:
+            WinInvalidateRect(pdwd->hwnd, NULL, TRUE);
+        break;
+
         default:
             mrc = pdwd->pDefWindowProc(pdwd->hwnd, msg, mp1, mp2);
@@ -268,4 +272,5 @@
  *@@added V0.9.20 (2002-08-10) [umoeller]
  *@@changed V1.0.1 (2002-11-30) [umoeller]: added SEPS_VERTICAL
+ *@@changed V1.0.1 (2002-11-30) [umoeller]: fixed default background color
  */
 
@@ -293,5 +298,6 @@
                                                 PP_BACKGROUNDCOLORINDEX,
                                                 TRUE,
-                                                SYSCLR_WINDOW));
+                                                SYSCLR_DIALOGBACKGROUND)); // SYSCLR_WINDOW));
+                                                        // fixed V1.0.1 (2002-11-30) [umoeller]
 
                 if (WinQueryWindowULong(hwnd, QWL_STYLE) & SEPS_VERTICAL)
