# HG changeset patch # User bsmith@81767d24-ef19-dc11-ae90-00e081727c95 # Date 1322823478 0 # Node ID ddf9cfb4a0746f2a8d4495910c7223250a76e7ec # Parent 38c4484f5b900a0a37c97810751e0d36dbe1dbde Add unique status bar class on Windows so we can identify it when calculating control sizes. diff -r 38c4484f5b90 -r ddf9cfb4a074 dw.h --- a/dw.h Fri Dec 02 10:00:24 2011 +0000 +++ b/dw.h Fri Dec 02 10:57:58 2011 +0000 @@ -596,6 +596,7 @@ #define ObjectClassName "dwobjectclass" #define BrowserClassName "dwbrowserclass" #define ScrollClassName "dwscrollclass" +#define StatusbarClassName "dwstatusbar" #define DefaultFont NULL typedef struct _color { diff -r 38c4484f5b90 -r ddf9cfb4a074 win/dw.c --- a/win/dw.c Fri Dec 02 10:00:24 2011 +0000 +++ b/win/dw.c Fri Dec 02 10:57:58 2011 +0000 @@ -3745,6 +3745,19 @@ RegisterClass(&wc); + /* Register a status bar control */ + memset(&wc, 0, sizeof(WNDCLASS)); + wc.style = CS_DBLCLKS; + wc.lpfnWndProc = (WNDPROC)_statuswndproc; + wc.cbClsExtra = 0; + wc.cbWndExtra = 32; + wc.hbrBackground = (HBRUSH)GetSysColorBrush(COLOR_3DFACE); + wc.hCursor = LoadCursor(NULL, IDC_ARROW); + wc.lpszMenuName = NULL; + wc.lpszClassName = StatusbarClassName; + + RegisterClass(&wc); + #if (defined(BUILD_DLL) || defined(BUILD_HTML)) && !defined(__MINGW32__) /* Register HTML renderer class */ memset(&wc, 0, sizeof(WNDCLASS)); @@ -4381,6 +4394,12 @@ extraheight = 4; } } + else if(strnicmp(tmpbuf, StatusbarClassName, strlen(StatusbarClassName)+1) == 0) + { + extrawidth = 4; + extraheight = 2; + } + /* Set the requested sizes */ if(width) @@ -5531,7 +5550,7 @@ */ HWND API dw_status_text_new(char *text, ULONG id) { - HWND tmp = CreateWindow(ObjectClassName, + HWND tmp = CreateWindow(StatusbarClassName, text, BS_TEXT | WS_VISIBLE | WS_CHILD | WS_CLIPCHILDREN, @@ -5541,7 +5560,6 @@ DWInstance, NULL); dw_window_set_font(tmp, DefaultFont); - SubclassWindow(tmp, _statuswndproc); return tmp; }