|
From: <kr_...@us...> - 2003-08-26 20:01:04
|
Update of /cvsroot/htoolkit/port/src/cbits/Win32
In directory sc8-pr-cvs1:/tmp/cvs-serv21238/src/cbits/Win32
Modified Files:
RadioBox.c
Log Message:
Consistent behaviour for RadioBox under Windows & GNOME
Index: RadioBox.c
===================================================================
RCS file: /cvsroot/htoolkit/port/src/cbits/Win32/RadioBox.c,v
retrieving revision 1.8
retrieving revision 1.9
diff -C2 -d -r1.8 -r1.9
*** RadioBox.c 24 Aug 2003 21:07:48 -0000 1.8
--- RadioBox.c 26 Aug 2003 20:00:55 -0000 1.9
***************
*** 1,120 ****
! #include "RadioBox.h"
! #include "Internals.h"
! #include "Handlers_stub.h"
!
! WindowHandle osCreateRadioBox(WindowHandle window)
! {
! HWND hRadioBox;
!
! hRadioBox = CreateWindow(
! "BUTTON",
! NULL,
! WS_CHILD | WS_VISIBLE | BS_AUTORADIOBUTTON | WS_TABSTOP,
! 0,0,0,0,
! window,
! NULL,
! ghModule,
! NULL
! );
! SetWindowLong(hRadioBox, GWL_USERDATA, (LONG) hRadioBox);
! return checkWindow(hRadioBox, "RADIOBOX");
! };
!
! void osGetRadioBoxReqSize(WindowHandle radiobox, int *res)
! {
! SIZE sz;
! TEXTMETRIC tm;
! HFONT hOldFont;
! HDC hDC = GetDC(radiobox);
! int nLen = GetWindowTextLength(radiobox);
! char *buffer = (char *) rmalloc(nLen+1);
! nLen = GetWindowText(radiobox, buffer, nLen+1);
!
! hOldFont = SelectObject(hDC, (HFONT) SendMessage(radiobox, WM_GETFONT, 0, 0));
!
! GetTextExtentPoint32(hDC, buffer, nLen, &sz);
! GetTextMetrics(hDC, &tm);
!
! SelectObject(hDC, hOldFont);
!
! rfree(buffer);
! ReleaseDC(radiobox, hDC);
!
! res[0] = sz.cx + 32;
! res[1] = tm.tmHeight+tm.tmDescent;
! };
!
! char *osGetRadioBoxText(WindowHandle radiobox)
! {
! int nLen = GetWindowTextLength(radiobox);
! char *buffer = (char *) rmalloc(nLen+1);
! GetWindowText(radiobox, buffer, nLen+1);
! return buffer;
! };
!
! void osSetRadioBoxText(WindowHandle radiobox, char *txt)
! {
! SetWindowText(radiobox, txt);
! osForceContainerReLayout(radiobox);
! };
!
! BOOL osGetRadioBoxState(WindowHandle radiobox)
! {
! return SendMessage(radiobox,BM_GETCHECK,0,0) == BST_CHECKED;
! };
!
! void osSetRadioBoxState(WindowHandle radiobox, BOOL state)
! {
! HWND hNextCtrl;
!
! if (state)
! {
! SendMessage(radiobox,BM_SETCHECK,BST_CHECKED,0);
!
! hNextCtrl = radiobox;
! for (;;)
! {
! hNextCtrl = (WindowHandle) GetWindowLong(hNextCtrl, GWL_USERDATA);
! if (hNextCtrl == radiobox) break;
!
! SendMessage(hNextCtrl,BM_SETCHECK,BST_UNCHECKED,0);
! }
! }
! else
! SendMessage(radiobox,BM_SETCHECK,BST_UNCHECKED,0);
! };
!
! void osSetRadioBoxGroup(WindowHandle *handles)
! {
! WindowHandle first, next, child, handle, *phandle;
!
! if (!(handles && *handles))
! return;
!
! phandle=handles;
! for (;;)
! {
! handle = *phandle;
!
! first = (WindowHandle) GetWindowLong(handle, GWL_USERDATA);
! child = first;
! for (;;)
! {
! next = (WindowHandle) GetWindowLong(child, GWL_USERDATA);
! if (next == handle) break;
! child = next;
! }
! SetWindowLong(child, GWL_USERDATA, (LONG) first);
!
! SendMessage(handle,BM_SETCHECK,(handle == *handles) ? BST_CHECKED : BST_UNCHECKED,0);
!
! phandle++;
! if (*phandle)
! SetWindowLong(handle, GWL_USERDATA, (LONG) *phandle);
! else
! {
! SetWindowLong(handle, GWL_USERDATA, (LONG) *handles);
! break;
! }
! }
! };
--- 1,149 ----
! #include "RadioBox.h"
! #include "Internals.h"
! #include "Handlers_stub.h"
!
! WindowHandle osCreateRadioBox(WindowHandle window)
! {
! HWND hRadioBox;
!
! hRadioBox = CreateWindow(
! "BUTTON",
! NULL,
! WS_CHILD | WS_VISIBLE | BS_AUTORADIOBUTTON | WS_TABSTOP,
! 0,0,0,0,
! window,
! NULL,
! ghModule,
! NULL
! );
! SetWindowLong(hRadioBox, GWL_USERDATA, (LONG) hRadioBox);
! return checkWindow(hRadioBox, "RADIOBOX");
! };
!
! void osGetRadioBoxReqSize(WindowHandle radiobox, int *res)
! {
! SIZE sz;
! TEXTMETRIC tm;
! HFONT hOldFont;
! HDC hDC = GetDC(radiobox);
! int nLen = GetWindowTextLength(radiobox);
! char *buffer = (char *) rmalloc(nLen+1);
! nLen = GetWindowText(radiobox, buffer, nLen+1);
!
! hOldFont = SelectObject(hDC, (HFONT) SendMessage(radiobox, WM_GETFONT, 0, 0));
!
! GetTextExtentPoint32(hDC, buffer, nLen, &sz);
! GetTextMetrics(hDC, &tm);
!
! SelectObject(hDC, hOldFont);
!
! rfree(buffer);
! ReleaseDC(radiobox, hDC);
!
! res[0] = sz.cx + 32;
! res[1] = tm.tmHeight+tm.tmDescent;
! };
!
! char *osGetRadioBoxText(WindowHandle radiobox)
! {
! int nLen = GetWindowTextLength(radiobox);
! char *buffer = (char *) rmalloc(nLen+1);
! GetWindowText(radiobox, buffer, nLen+1);
! return buffer;
! };
!
! void osSetRadioBoxText(WindowHandle radiobox, char *txt)
! {
! SetWindowText(radiobox, txt);
! osForceContainerReLayout(radiobox);
! };
!
! BOOL osGetRadioBoxState(WindowHandle radiobox)
! {
! return SendMessage(radiobox,BM_GETCHECK,0,0) == BST_CHECKED;
! };
!
! void osSetRadioBoxState(WindowHandle radiobox, BOOL state)
! {
! HWND hNextCtrl;
!
! if (state)
! {
! if (SendMessage(radiobox,BM_GETCHECK,0,0) == BST_UNCHECKED)
! {
! SendMessage(radiobox,BM_SETCHECK,BST_CHECKED,0);
! handleControlCommand(radiobox);
! }
!
! hNextCtrl = radiobox;
! for (;;)
! {
! hNextCtrl = (WindowHandle) GetWindowLong(hNextCtrl, GWL_USERDATA);
! if (hNextCtrl == radiobox) break;
!
! if (SendMessage(hNextCtrl,BM_GETCHECK,0,0) == BST_CHECKED)
! {
! SendMessage(hNextCtrl,BM_SETCHECK,BST_UNCHECKED,0);
! handleControlCommand(hNextCtrl);
! }
! }
! }
! else
! {
! if (SendMessage(radiobox,BM_GETCHECK,0,0) == BST_CHECKED)
! {
! SendMessage(radiobox,BM_SETCHECK,BST_UNCHECKED,0);
! handleControlCommand(radiobox);
! }
! }
! };
!
! void osSetRadioBoxGroup(WindowHandle *handles)
! {
! WindowHandle first, next, child, handle, *phandle;
!
! if (!(handles && *handles))
! return;
!
! phandle=handles;
! for (;;)
! {
! handle = *phandle;
!
! first = (WindowHandle) GetWindowLong(handle, GWL_USERDATA);
! child = first;
! for (;;)
! {
! next = (WindowHandle) GetWindowLong(child, GWL_USERDATA);
! if (next == handle) break;
! child = next;
! }
! SetWindowLong(child, GWL_USERDATA, (LONG) first);
!
! if (SendMessage(handle,BM_GETCHECK,0,0) == BST_CHECKED)
! {
! if (handle != *handles)
! {
! SendMessage(handle,BM_SETCHECK,BST_UNCHECKED,0);
! handleControlCommand(handle);
! }
! }
! else
! {
! if (handle == *handles)
! {
! SendMessage(handle,BM_SETCHECK,BST_CHECKED,0);
! handleControlCommand(handle);
! }
! }
!
! phandle++;
! if (*phandle)
! SetWindowLong(handle, GWL_USERDATA, (LONG) *phandle);
! else
! {
! SetWindowLong(handle, GWL_USERDATA, (LONG) *handles);
! break;
! }
! }
! };
|