mirror of
https://github.com/reactos/reactos.git
synced 2025-08-03 15:46:13 +00:00
Sync to Wine-20041201
Ulrich Czekalla <ulrich@codeweavers.com> - Prevent the animation thread from waiting on itself when it stops. Robert Shearman <rob@codeweavers.com> - Remove unnecessary WNDPROC casts. Alexandre Julliard <julliard@winehq.org> - Avoid using the MAKEPOINTS macro, it's broken on big endian. - Use correct type instead of void* in item linked list. Dimitrie O. Paun <dpaun@rogers.com> - Minor cleanups. - Implement proper GWL_STYLE handling, proper reaction to style changes. - Merge {{Inc,Dec}rement,Reset{Up,Down}}Field into one method. Fix a bunch of bugs in the process. Implement DTM_[GS]ETMCFONT. Indentation fixes, cleanups. - Use typesafe signature where possible. - Use Unicode functions where possible. - Send notification messages in the format dictated by infoPtr->notifyFormat. - Audit the month calendar. - Rename STATUSWINDOWINFO to STATUS_INFO, for consistency with other controls. Fix some prototypes. Always pass infoPtr around. - Use only Unicode functions, it makes it easier to see we are fully Unicode compliant. Robert Shearman <rob@codeweavers.com> - Always remove WS_BORDER style from ComboBoxEx control. - Correct the date of the completeness audit. - Store the new style before redrawing and repositioning the control. - Set cache bitmap dimensions correctly when a 0x0 image list is used. - Optimize WM_STYLECHANGED handler to only redraw when a CCS_* style is changed, like native. - bNtfUnicode is a dup' of bUnicode so remove it and fix the few places where it was used. - Remove a load of useless NULL infoPtr checks. - Hardcode the default padding like native instead of using a wacky formula. - Replace some tabs with spaces and remove NMHDR casts. - Implement TBN_RESTORE notification. - Don't fill in any more information than native does for notifications. - Store hit code in a signed integer so that we can see whether it is less than zero. - Draw with ILD_TRANSPARENT instead of ILD_NORMAL to draw bitmaps from the native shell image list properly (reported by Thorsten Kani). - Rewrite TOOLBAR_NotifyFormat to avoid side-effects. James Hawkins <truiken@gmail.com> - Fixed a few memory leaks. Zach Gorman <zach@archetypeauction.com> - Add the DT_NOPREFIX flag when calling DrawText() for single-line listview controls. Dmitry Timoshkov <dmitry@codeweavers.com> - Pass infoPtr around in month calendar control. - Add support for WM_SETFONT and WM_GETFONT messages. - Dimensions of month calendar control should not depend on the client window size. - Convert NativeFont control to unicode, use hbrBackground as in native. - Do not retrieve infoPtr twice in ToolbarWindowProc entry. - do not move updown control and buddy if an alignment was not requested - in UDM_SETACCEL handler do not forget to update number of accelerators - update arrows info in WM_LBUTTONDOWN as well as in WM_MOUSEMOVE - use accelerators in WM_LBUTTONDOWN handler Uwe Bonnes <bon@elektron.ikp.physik.tu-darmstadt.de> - Monthcal_SetRange: Set proper value for min date. Thorsten Kani <beebix@gmx.net> - Use address of tab_item.extra when building drawitemstruct. - Don't add extra OFFSET_X/Y to the calculation of rcBitmap.top/left, just use GetSystemMetrics. Huw Davies <huw@codeweavers.com> - The default font for the treeview should be the icon title font. svn path=/trunk/; revision=11952
This commit is contained in:
parent
a0b99a485e
commit
88f1bf6c5c
23 changed files with 1676 additions and 1855 deletions
|
@ -73,6 +73,7 @@ typedef struct
|
|||
CRITICAL_SECTION cs;
|
||||
HANDLE hStopEvent;
|
||||
HANDLE hThread;
|
||||
DWORD threadId;
|
||||
UINT uTimer;
|
||||
/* data for playing the file */
|
||||
int nFromFrame;
|
||||
|
@ -149,14 +150,20 @@ static LRESULT ANIMATE_DoStop(ANIMATE_INFO *infoPtr)
|
|||
HANDLE handle = infoPtr->hThread;
|
||||
|
||||
TRACE("stopping animation thread\n");
|
||||
infoPtr->hThread = 0;
|
||||
SetEvent( infoPtr->hStopEvent );
|
||||
|
||||
if (infoPtr->threadId != GetCurrentThreadId())
|
||||
{
|
||||
LeaveCriticalSection(&infoPtr->cs); /* leave it a chance to run */
|
||||
WaitForSingleObject( handle, INFINITE );
|
||||
TRACE("animation thread stopped\n");
|
||||
EnterCriticalSection(&infoPtr->cs);
|
||||
CloseHandle( infoPtr->hThread );
|
||||
}
|
||||
|
||||
CloseHandle( handle );
|
||||
CloseHandle( infoPtr->hStopEvent );
|
||||
infoPtr->hThread = 0;
|
||||
infoPtr->hStopEvent = 0;
|
||||
}
|
||||
if (infoPtr->uTimer) {
|
||||
KillTimer(infoPtr->hwndSelf, infoPtr->uTimer);
|
||||
|
@ -399,7 +406,7 @@ static DWORD CALLBACK ANIMATE_AnimationThread(LPVOID ptr_)
|
|||
LeaveCriticalSection(&infoPtr->cs);
|
||||
|
||||
/* time is in microseconds, we should convert it to milliseconds */
|
||||
if (WaitForSingleObject( event, (timeout+500)/1000) == WAIT_OBJECT_0)
|
||||
if ((event == 0) || WaitForSingleObject( event, (timeout+500)/1000) == WAIT_OBJECT_0)
|
||||
break;
|
||||
}
|
||||
return TRUE;
|
||||
|
@ -439,8 +446,6 @@ static LRESULT ANIMATE_Play(HWND hWnd, WPARAM wParam, LPARAM lParam)
|
|||
/* create a timer to display AVI */
|
||||
infoPtr->uTimer = SetTimer(hWnd, 1, infoPtr->mah.dwMicroSecPerFrame / 1000, NULL);
|
||||
} else {
|
||||
DWORD threadID;
|
||||
|
||||
if(GetWindowLongA(hWnd, GWL_STYLE) & ACS_TRANSPARENT)
|
||||
{
|
||||
infoPtr->hbrushBG = (HBRUSH)SendMessageA(infoPtr->hwndNotify,
|
||||
|
@ -449,7 +454,7 @@ static LRESULT ANIMATE_Play(HWND hWnd, WPARAM wParam, LPARAM lParam)
|
|||
|
||||
TRACE("Using an animation thread\n");
|
||||
infoPtr->hStopEvent = CreateEventW( NULL, TRUE, FALSE, NULL );
|
||||
infoPtr->hThread = CreateThread(0,0,ANIMATE_AnimationThread,(LPVOID)infoPtr, 0, &threadID);
|
||||
infoPtr->hThread = CreateThread(0,0,ANIMATE_AnimationThread,(LPVOID)infoPtr, 0, &infoPtr->threadId);
|
||||
if(!infoPtr->hThread)
|
||||
{
|
||||
ERR("Could not create animation thread!\n");
|
||||
|
@ -950,7 +955,7 @@ void ANIMATE_Register(void)
|
|||
|
||||
ZeroMemory(&wndClass, sizeof(WNDCLASSA));
|
||||
wndClass.style = CS_GLOBALCLASS | CS_DBLCLKS;
|
||||
wndClass.lpfnWndProc = (WNDPROC)ANIMATE_WindowProc;
|
||||
wndClass.lpfnWndProc = ANIMATE_WindowProc;
|
||||
wndClass.cbClsExtra = 0;
|
||||
wndClass.cbWndExtra = sizeof(ANIMATE_INFO *);
|
||||
wndClass.hCursor = LoadCursorA(0, (LPSTR)IDC_ARROW);
|
||||
|
|
|
@ -45,9 +45,9 @@
|
|||
WINE_DEFAULT_DEBUG_CHANNEL(comboex);
|
||||
|
||||
/* Item structure */
|
||||
typedef struct
|
||||
typedef struct _CBE_ITEMDATA
|
||||
{
|
||||
VOID *next;
|
||||
struct _CBE_ITEMDATA *next;
|
||||
UINT mask;
|
||||
LPWSTR pszText;
|
||||
LPWSTR pszTemp;
|
||||
|
@ -126,10 +126,8 @@ typedef struct
|
|||
|
||||
|
||||
/* Things common to the entire DLL */
|
||||
static LRESULT WINAPI
|
||||
COMBOEX_EditWndProc (HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
|
||||
static LRESULT WINAPI
|
||||
COMBOEX_ComboWndProc (HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
|
||||
static LRESULT WINAPI COMBOEX_EditWndProc (HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
|
||||
static LRESULT WINAPI COMBOEX_ComboWndProc (HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
|
||||
static LRESULT COMBOEX_Destroy (COMBOEX_INFO *infoPtr);
|
||||
typedef INT (WINAPI *cmp_func_t)(LPCWSTR, LPCWSTR);
|
||||
|
||||
|
@ -458,7 +456,7 @@ static CBE_ITEMDATA * COMBOEX_FindItem(COMBOEX_INFO *infoPtr, INT index)
|
|||
|
||||
/* find the item in the list */
|
||||
while (item && (i > index)) {
|
||||
item = (CBE_ITEMDATA *)item->next;
|
||||
item = item->next;
|
||||
i--;
|
||||
}
|
||||
if (!item || (i != index)) {
|
||||
|
@ -579,7 +577,7 @@ static INT COMBOEX_InsertItemW (COMBOEX_INFO *infoPtr, COMBOBOXEXITEMW *cit)
|
|||
CBE_ITEMDATA *moving = infoPtr->items;
|
||||
|
||||
while ((i > index) && moving) {
|
||||
moving = (CBE_ITEMDATA *)moving->next;
|
||||
moving = moving->next;
|
||||
i--;
|
||||
}
|
||||
if (!moving) {
|
||||
|
@ -1252,7 +1250,7 @@ static BOOL COMBOEX_WM_DeleteItem (COMBOEX_INFO *infoPtr, DELETEITEMSTRUCT *dis)
|
|||
|
||||
/* find the prior item in the list */
|
||||
while (item->next && (i > dis->itemID)) {
|
||||
item = (CBE_ITEMDATA *)item->next;
|
||||
item = item->next;
|
||||
i--;
|
||||
}
|
||||
if (!item->next || (i != dis->itemID)) {
|
||||
|
@ -1260,7 +1258,7 @@ static BOOL COMBOEX_WM_DeleteItem (COMBOEX_INFO *infoPtr, DELETEITEMSTRUCT *dis)
|
|||
return FALSE;
|
||||
}
|
||||
olditem = item->next;
|
||||
item->next = (CBE_ITEMDATA *)((CBE_ITEMDATA *)item->next)->next;
|
||||
item->next = item->next->next;
|
||||
}
|
||||
infoPtr->nb_items--;
|
||||
|
||||
|
@ -1529,7 +1527,7 @@ static LRESULT COMBOEX_Destroy (COMBOEX_INFO *infoPtr)
|
|||
|
||||
item = infoPtr->items;
|
||||
while (item) {
|
||||
next = (CBE_ITEMDATA *)item->next;
|
||||
next = item->next;
|
||||
COMBOEX_FreeText (item);
|
||||
Free (item);
|
||||
item = next;
|
||||
|
@ -1570,7 +1568,7 @@ static LRESULT COMBOEX_NCCreate (HWND hwnd)
|
|||
DWORD oldstyle, newstyle;
|
||||
|
||||
oldstyle = (DWORD)GetWindowLongW (hwnd, GWL_STYLE);
|
||||
newstyle = oldstyle & ~(WS_VSCROLL | WS_HSCROLL);
|
||||
newstyle = oldstyle & ~(WS_VSCROLL | WS_HSCROLL | WS_BORDER);
|
||||
if (newstyle != oldstyle) {
|
||||
TRACE("req style %08lx, reseting style %08lx\n",
|
||||
oldstyle, newstyle);
|
||||
|
@ -1912,7 +1910,8 @@ COMBOEX_ComboWndProc (HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
|||
rect.bottom = rect.top + SendMessageW(infoPtr->hwndSelf,
|
||||
CB_GETITEMHEIGHT, -1, 0);
|
||||
rect.left = rect.right - GetSystemMetrics(SM_CXVSCROLL);
|
||||
POINTSTOPOINT(pt, MAKEPOINTS(lParam));
|
||||
pt.x = (short)LOWORD(lParam);
|
||||
pt.y = (short)HIWORD(lParam);
|
||||
if (PtInRect(&rect, pt))
|
||||
return CallWindowProcW (infoPtr->prevComboWndProc,
|
||||
hwnd, uMsg, wParam, lParam);
|
||||
|
@ -2254,7 +2253,7 @@ void COMBOEX_Register (void)
|
|||
|
||||
ZeroMemory (&wndClass, sizeof(WNDCLASSW));
|
||||
wndClass.style = CS_GLOBALCLASS;
|
||||
wndClass.lpfnWndProc = (WNDPROC)COMBOEX_WindowProc;
|
||||
wndClass.lpfnWndProc = COMBOEX_WindowProc;
|
||||
wndClass.cbClsExtra = 0;
|
||||
wndClass.cbWndExtra = sizeof(COMBOEX_INFO *);
|
||||
wndClass.hCursor = LoadCursorW (0, (LPWSTR)IDC_ARROW);
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -274,7 +274,7 @@ FLATSB_Register (void)
|
|||
|
||||
ZeroMemory (&wndClass, sizeof(WNDCLASSA));
|
||||
wndClass.style = CS_GLOBALCLASS;
|
||||
wndClass.lpfnWndProc = (WNDPROC)FlatSB_WindowProc;
|
||||
wndClass.lpfnWndProc = FlatSB_WindowProc;
|
||||
wndClass.cbClsExtra = 0;
|
||||
wndClass.cbWndExtra = sizeof(FLATSB_INFO *);
|
||||
wndClass.hCursor = LoadCursorA (0, (LPSTR)IDC_ARROW);
|
||||
|
|
|
@ -1842,7 +1842,7 @@ HEADER_Register (void)
|
|||
|
||||
ZeroMemory (&wndClass, sizeof(WNDCLASSA));
|
||||
wndClass.style = CS_GLOBALCLASS | CS_DBLCLKS;
|
||||
wndClass.lpfnWndProc = (WNDPROC)HEADER_WindowProc;
|
||||
wndClass.lpfnWndProc = HEADER_WindowProc;
|
||||
wndClass.cbClsExtra = 0;
|
||||
wndClass.cbWndExtra = sizeof(HEADER_INFO *);
|
||||
wndClass.hCursor = LoadCursorA (0, (LPSTR)IDC_ARROW);
|
||||
|
|
|
@ -57,10 +57,8 @@ typedef struct tagHOTKEY_INFO
|
|||
WCHAR strNone[15]; /* hope its long enough ... */
|
||||
} HOTKEY_INFO;
|
||||
|
||||
#define HOTKEY_GetInfoPtr(hwnd) ((HOTKEY_INFO *)GetWindowLongPtrA (hwnd, 0))
|
||||
|
||||
static const WCHAR HOTKEY_plussep[] = { ' ', '+', ' ' };
|
||||
static LRESULT HOTKEY_SetFont (HOTKEY_INFO *infoPtr, WPARAM wParam, LPARAM lParam);
|
||||
static LRESULT HOTKEY_SetFont (HOTKEY_INFO *infoPtr, HFONT hFont, BOOL redraw);
|
||||
|
||||
#define IsOnlySet(flags) (infoPtr->CurrMod == (flags))
|
||||
|
||||
|
@ -94,7 +92,7 @@ HOTKEY_IsCombInv(HOTKEY_INFO *infoPtr)
|
|||
#undef IsOnlySet
|
||||
|
||||
static void
|
||||
HOTKEY_DrawHotKey(HOTKEY_INFO *infoPtr, LPCWSTR KeyName, WORD NameLen, HDC hdc)
|
||||
HOTKEY_DrawHotKey(HOTKEY_INFO *infoPtr, HDC hdc, LPCWSTR KeyName, WORD NameLen)
|
||||
{
|
||||
SIZE TextSize;
|
||||
INT nXStart, nYStart;
|
||||
|
@ -142,7 +140,7 @@ HOTKEY_Refresh(HOTKEY_INFO *infoPtr, HDC hdc)
|
|||
TRACE("(infoPtr=%p hdc=%p)\n", infoPtr, hdc);
|
||||
|
||||
if(!infoPtr->CurrMod && !infoPtr->HotKey) {
|
||||
HOTKEY_DrawHotKey (infoPtr, infoPtr->strNone, 4, hdc);
|
||||
HOTKEY_DrawHotKey (infoPtr, hdc, infoPtr->strNone, 4);
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -182,7 +180,7 @@ HOTKEY_Refresh(HOTKEY_INFO *infoPtr, HDC hdc)
|
|||
else
|
||||
KeyName[NameLen] = 0;
|
||||
|
||||
HOTKEY_DrawHotKey (infoPtr, KeyName, NameLen, hdc);
|
||||
HOTKEY_DrawHotKey (infoPtr, hdc, KeyName, NameLen);
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -207,39 +205,39 @@ HOTKEY_GetHotKey(HOTKEY_INFO *infoPtr)
|
|||
}
|
||||
|
||||
static void
|
||||
HOTKEY_SetHotKey(HOTKEY_INFO *infoPtr, WPARAM wParam)
|
||||
HOTKEY_SetHotKey(HOTKEY_INFO *infoPtr, WORD hotKey)
|
||||
{
|
||||
infoPtr->HotKey = (WORD)wParam;
|
||||
infoPtr->HotKey = hotKey;
|
||||
infoPtr->ScanCode =
|
||||
MAKELPARAM(0, MapVirtualKeyW(LOBYTE(infoPtr->HotKey), 0));
|
||||
TRACE("(infoPtr=%p wParam=%x) Modifiers: 0x%x, Virtual Key: %d\n", infoPtr,
|
||||
wParam, HIBYTE(infoPtr->HotKey), LOBYTE(infoPtr->HotKey));
|
||||
TRACE("(infoPtr=%p hotKey=%x) Modifiers: 0x%x, Virtual Key: %d\n", infoPtr,
|
||||
hotKey, HIBYTE(infoPtr->HotKey), LOBYTE(infoPtr->HotKey));
|
||||
InvalidateRect(infoPtr->hwndSelf, NULL, TRUE);
|
||||
}
|
||||
|
||||
static void
|
||||
HOTKEY_SetRules(HOTKEY_INFO *infoPtr, WPARAM wParam, LPARAM lParam)
|
||||
HOTKEY_SetRules(HOTKEY_INFO *infoPtr, WORD invComb, WORD invMod)
|
||||
{
|
||||
infoPtr->InvComb = (WORD)wParam;
|
||||
infoPtr->InvMod = (WORD)lParam;
|
||||
infoPtr->InvComb = invComb;
|
||||
infoPtr->InvMod = invMod;
|
||||
TRACE("(infoPtr=%p) Invalid Modifers: 0x%x, If Invalid: 0x%x\n", infoPtr,
|
||||
infoPtr->InvComb, infoPtr->InvMod);
|
||||
}
|
||||
|
||||
|
||||
static LRESULT
|
||||
HOTKEY_Create (HOTKEY_INFO *infoPtr, WPARAM wParam, LPARAM lParam)
|
||||
HOTKEY_Create (HOTKEY_INFO *infoPtr, LPCREATESTRUCTW lpcs)
|
||||
{
|
||||
infoPtr->hwndNotify = ((LPCREATESTRUCTA)lParam)->hwndParent;
|
||||
infoPtr->hwndNotify = lpcs->hwndParent;
|
||||
|
||||
HOTKEY_SetFont(infoPtr, (WPARAM)GetStockObject(SYSTEM_FONT), 0);
|
||||
HOTKEY_SetFont(infoPtr, GetStockObject(SYSTEM_FONT), 0);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
static LRESULT
|
||||
HOTKEY_Destroy (HOTKEY_INFO *infoPtr, WPARAM wParam, LPARAM lParam)
|
||||
HOTKEY_Destroy (HOTKEY_INFO *infoPtr)
|
||||
{
|
||||
HWND hwnd = infoPtr->hwndSelf;
|
||||
/* free hotkey info data */
|
||||
|
@ -250,7 +248,7 @@ HOTKEY_Destroy (HOTKEY_INFO *infoPtr, WPARAM wParam, LPARAM lParam)
|
|||
|
||||
|
||||
static LRESULT
|
||||
HOTKEY_EraseBackground (HOTKEY_INFO *infoPtr, WPARAM wParam, LPARAM lParam)
|
||||
HOTKEY_EraseBackground (HOTKEY_INFO *infoPtr, HDC hdc)
|
||||
{
|
||||
HBRUSH hBrush, hSolidBrush = NULL;
|
||||
RECT rc;
|
||||
|
@ -260,14 +258,14 @@ HOTKEY_EraseBackground (HOTKEY_INFO *infoPtr, WPARAM wParam, LPARAM lParam)
|
|||
else
|
||||
{
|
||||
hBrush = (HBRUSH)SendMessageW(infoPtr->hwndNotify, WM_CTLCOLOREDIT,
|
||||
wParam, (LPARAM)infoPtr->hwndSelf);
|
||||
(WPARAM)hdc, (LPARAM)infoPtr->hwndSelf);
|
||||
if (!hBrush)
|
||||
hBrush = hSolidBrush = CreateSolidBrush(comctl32_color.clrWindow);
|
||||
}
|
||||
|
||||
GetClientRect (infoPtr->hwndSelf, &rc);
|
||||
|
||||
FillRect ((HDC)wParam, &rc, hBrush);
|
||||
FillRect (hdc, &rc, hBrush);
|
||||
|
||||
if (hSolidBrush)
|
||||
DeleteObject(hSolidBrush);
|
||||
|
@ -277,13 +275,13 @@ HOTKEY_EraseBackground (HOTKEY_INFO *infoPtr, WPARAM wParam, LPARAM lParam)
|
|||
|
||||
|
||||
inline static LRESULT
|
||||
HOTKEY_GetFont (HOTKEY_INFO *infoPtr, WPARAM wParam, LPARAM lParam)
|
||||
HOTKEY_GetFont (HOTKEY_INFO *infoPtr)
|
||||
{
|
||||
return (LRESULT)infoPtr->hFont;
|
||||
}
|
||||
|
||||
static LRESULT
|
||||
HOTKEY_KeyDown (HOTKEY_INFO *infoPtr, WPARAM wParam, LPARAM lParam)
|
||||
HOTKEY_KeyDown (HOTKEY_INFO *infoPtr, DWORD key, DWORD flags)
|
||||
{
|
||||
WORD wOldHotKey;
|
||||
BYTE bOldMod;
|
||||
|
@ -291,7 +289,7 @@ HOTKEY_KeyDown (HOTKEY_INFO *infoPtr, WPARAM wParam, LPARAM lParam)
|
|||
if (GetWindowLongW(infoPtr->hwndSelf, GWL_STYLE) & WS_DISABLED)
|
||||
return 0;
|
||||
|
||||
TRACE("() Key: %d\n", wParam);
|
||||
TRACE("() Key: %ld\n", key);
|
||||
|
||||
wOldHotKey = infoPtr->HotKey;
|
||||
bOldMod = infoPtr->CurrMod;
|
||||
|
@ -299,7 +297,7 @@ HOTKEY_KeyDown (HOTKEY_INFO *infoPtr, WPARAM wParam, LPARAM lParam)
|
|||
/* If any key is Pressed, we have to reset the hotkey in the control */
|
||||
infoPtr->HotKey = 0;
|
||||
|
||||
switch (wParam)
|
||||
switch (key)
|
||||
{
|
||||
case VK_RETURN:
|
||||
case VK_TAB:
|
||||
|
@ -308,8 +306,7 @@ HOTKEY_KeyDown (HOTKEY_INFO *infoPtr, WPARAM wParam, LPARAM lParam)
|
|||
case VK_ESCAPE:
|
||||
case VK_BACK:
|
||||
InvalidateRect(infoPtr->hwndSelf, NULL, TRUE);
|
||||
return DefWindowProcW (infoPtr->hwndSelf, WM_KEYDOWN, wParam,
|
||||
lParam);
|
||||
return DefWindowProcW (infoPtr->hwndSelf, WM_KEYDOWN, key, flags);
|
||||
|
||||
case VK_SHIFT:
|
||||
infoPtr->CurrMod |= HOTKEYF_SHIFT;
|
||||
|
@ -323,10 +320,10 @@ HOTKEY_KeyDown (HOTKEY_INFO *infoPtr, WPARAM wParam, LPARAM lParam)
|
|||
|
||||
default:
|
||||
if(HOTKEY_IsCombInv(infoPtr))
|
||||
infoPtr->HotKey = MAKEWORD(wParam, infoPtr->InvMod);
|
||||
infoPtr->HotKey = MAKEWORD(key, infoPtr->InvMod);
|
||||
else
|
||||
infoPtr->HotKey = MAKEWORD(wParam, infoPtr->CurrMod);
|
||||
infoPtr->ScanCode = lParam;
|
||||
infoPtr->HotKey = MAKEWORD(key, infoPtr->CurrMod);
|
||||
infoPtr->ScanCode = flags;
|
||||
break;
|
||||
}
|
||||
|
||||
|
@ -345,18 +342,18 @@ HOTKEY_KeyDown (HOTKEY_INFO *infoPtr, WPARAM wParam, LPARAM lParam)
|
|||
|
||||
|
||||
static LRESULT
|
||||
HOTKEY_KeyUp (HOTKEY_INFO *infoPtr, WPARAM wParam, LPARAM lParam)
|
||||
HOTKEY_KeyUp (HOTKEY_INFO *infoPtr, DWORD key, DWORD flags)
|
||||
{
|
||||
BYTE bOldMod;
|
||||
|
||||
if (GetWindowLongW(infoPtr->hwndSelf, GWL_STYLE) & WS_DISABLED)
|
||||
return 0;
|
||||
|
||||
TRACE("() Key: %d\n", wParam);
|
||||
TRACE("() Key: %ld\n", key);
|
||||
|
||||
bOldMod = infoPtr->CurrMod;
|
||||
|
||||
switch (wParam)
|
||||
switch (key)
|
||||
{
|
||||
case VK_SHIFT:
|
||||
infoPtr->CurrMod &= ~HOTKEYF_SHIFT;
|
||||
|
@ -386,7 +383,7 @@ HOTKEY_KeyUp (HOTKEY_INFO *infoPtr, WPARAM wParam, LPARAM lParam)
|
|||
|
||||
|
||||
static LRESULT
|
||||
HOTKEY_KillFocus (HOTKEY_INFO *infoPtr, WPARAM wParam, LPARAM lParam)
|
||||
HOTKEY_KillFocus (HOTKEY_INFO *infoPtr, HWND receiveFocus)
|
||||
{
|
||||
infoPtr->bFocus = FALSE;
|
||||
DestroyCaret ();
|
||||
|
@ -396,7 +393,7 @@ HOTKEY_KillFocus (HOTKEY_INFO *infoPtr, WPARAM wParam, LPARAM lParam)
|
|||
|
||||
|
||||
static LRESULT
|
||||
HOTKEY_LButtonDown (HOTKEY_INFO *infoPtr, WPARAM wParam, LPARAM lParam)
|
||||
HOTKEY_LButtonDown (HOTKEY_INFO *infoPtr)
|
||||
{
|
||||
if (!(GetWindowLongW(infoPtr->hwndSelf, GWL_STYLE) & WS_DISABLED))
|
||||
SetFocus (infoPtr->hwndSelf);
|
||||
|
@ -406,7 +403,7 @@ HOTKEY_LButtonDown (HOTKEY_INFO *infoPtr, WPARAM wParam, LPARAM lParam)
|
|||
|
||||
|
||||
inline static LRESULT
|
||||
HOTKEY_NCCreate (HWND hwnd, WPARAM wParam, LPARAM lParam)
|
||||
HOTKEY_NCCreate (HWND hwnd, LPCREATESTRUCTW lpcs)
|
||||
{
|
||||
HOTKEY_INFO *infoPtr;
|
||||
DWORD dwExStyle = GetWindowLongW (hwnd, GWL_EXSTYLE);
|
||||
|
@ -423,11 +420,11 @@ HOTKEY_NCCreate (HWND hwnd, WPARAM wParam, LPARAM lParam)
|
|||
infoPtr->hwndSelf = hwnd;
|
||||
LoadStringW(COMCTL32_hModule, HKY_NONE, infoPtr->strNone, 15);
|
||||
|
||||
return DefWindowProcW (infoPtr->hwndSelf, WM_NCCREATE, wParam, lParam);
|
||||
return DefWindowProcW (infoPtr->hwndSelf, WM_NCCREATE, 0, (LPARAM)lpcs);
|
||||
}
|
||||
|
||||
static LRESULT
|
||||
HOTKEY_SetFocus (HOTKEY_INFO *infoPtr, WPARAM wParam, LPARAM lParam)
|
||||
HOTKEY_SetFocus (HOTKEY_INFO *infoPtr, HWND lostFocus)
|
||||
{
|
||||
infoPtr->bFocus = TRUE;
|
||||
|
||||
|
@ -440,13 +437,13 @@ HOTKEY_SetFocus (HOTKEY_INFO *infoPtr, WPARAM wParam, LPARAM lParam)
|
|||
|
||||
|
||||
static LRESULT
|
||||
HOTKEY_SetFont (HOTKEY_INFO *infoPtr, WPARAM wParam, LPARAM lParam)
|
||||
HOTKEY_SetFont (HOTKEY_INFO *infoPtr, HFONT hFont, BOOL redraw)
|
||||
{
|
||||
TEXTMETRICW tm;
|
||||
HDC hdc;
|
||||
HFONT hOldFont = 0;
|
||||
|
||||
infoPtr->hFont = (HFONT)wParam;
|
||||
infoPtr->hFont = hFont;
|
||||
|
||||
hdc = GetDC (infoPtr->hwndSelf);
|
||||
if (infoPtr->hFont)
|
||||
|
@ -459,7 +456,7 @@ HOTKEY_SetFont (HOTKEY_INFO *infoPtr, WPARAM wParam, LPARAM lParam)
|
|||
SelectObject (hdc, hOldFont);
|
||||
ReleaseDC (infoPtr->hwndSelf, hdc);
|
||||
|
||||
if (LOWORD(lParam))
|
||||
if (redraw)
|
||||
InvalidateRect (infoPtr->hwndSelf, NULL, TRUE);
|
||||
|
||||
return 0;
|
||||
|
@ -468,7 +465,7 @@ HOTKEY_SetFont (HOTKEY_INFO *infoPtr, WPARAM wParam, LPARAM lParam)
|
|||
static LRESULT WINAPI
|
||||
HOTKEY_WindowProc (HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
||||
{
|
||||
HOTKEY_INFO *infoPtr = HOTKEY_GetInfoPtr (hwnd);
|
||||
HOTKEY_INFO *infoPtr = (HOTKEY_INFO *)GetWindowLongPtrW (hwnd, 0);
|
||||
TRACE("hwnd=%p msg=%x wparam=%x lparam=%lx\n", hwnd, uMsg, wParam, lParam);
|
||||
if (!infoPtr && (uMsg != WM_NCCREATE))
|
||||
return DefWindowProcW (hwnd, uMsg, wParam, lParam);
|
||||
|
@ -477,10 +474,10 @@ HOTKEY_WindowProc (HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
|||
case HKM_GETHOTKEY:
|
||||
return HOTKEY_GetHotKey (infoPtr);
|
||||
case HKM_SETHOTKEY:
|
||||
HOTKEY_SetHotKey (infoPtr, wParam);
|
||||
HOTKEY_SetHotKey (infoPtr, (WORD)wParam);
|
||||
break;
|
||||
case HKM_SETRULES:
|
||||
HOTKEY_SetRules (infoPtr, wParam, lParam);
|
||||
HOTKEY_SetRules (infoPtr, (WORD)wParam, (WORD)lParam);
|
||||
break;
|
||||
|
||||
case WM_CHAR:
|
||||
|
@ -488,19 +485,19 @@ HOTKEY_WindowProc (HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
|||
return HOTKEY_KeyDown (infoPtr, MapVirtualKeyW(LOBYTE(HIWORD(lParam)), 1), lParam);
|
||||
|
||||
case WM_CREATE:
|
||||
return HOTKEY_Create (infoPtr, wParam, lParam);
|
||||
return HOTKEY_Create (infoPtr, (LPCREATESTRUCTW)lParam);
|
||||
|
||||
case WM_DESTROY:
|
||||
return HOTKEY_Destroy (infoPtr, wParam, lParam);
|
||||
return HOTKEY_Destroy (infoPtr);
|
||||
|
||||
case WM_ERASEBKGND:
|
||||
return HOTKEY_EraseBackground (infoPtr, wParam, lParam);
|
||||
return HOTKEY_EraseBackground (infoPtr, (HDC)wParam);
|
||||
|
||||
case WM_GETDLGCODE:
|
||||
return DLGC_WANTCHARS | DLGC_WANTARROWS;
|
||||
|
||||
case WM_GETFONT:
|
||||
return HOTKEY_GetFont (infoPtr, wParam, lParam);
|
||||
return HOTKEY_GetFont (infoPtr);
|
||||
|
||||
case WM_KEYDOWN:
|
||||
case WM_SYSKEYDOWN:
|
||||
|
@ -511,23 +508,23 @@ HOTKEY_WindowProc (HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
|||
return HOTKEY_KeyUp (infoPtr, wParam, lParam);
|
||||
|
||||
case WM_KILLFOCUS:
|
||||
return HOTKEY_KillFocus (infoPtr, wParam, lParam);
|
||||
return HOTKEY_KillFocus (infoPtr, (HWND)wParam);
|
||||
|
||||
case WM_LBUTTONDOWN:
|
||||
return HOTKEY_LButtonDown (infoPtr, wParam, lParam);
|
||||
return HOTKEY_LButtonDown (infoPtr);
|
||||
|
||||
case WM_NCCREATE:
|
||||
return HOTKEY_NCCreate (hwnd, wParam, lParam);
|
||||
return HOTKEY_NCCreate (hwnd, (LPCREATESTRUCTW)lParam);
|
||||
|
||||
case WM_PAINT:
|
||||
HOTKEY_Paint(infoPtr, (HDC)wParam);
|
||||
return 0;
|
||||
|
||||
case WM_SETFOCUS:
|
||||
return HOTKEY_SetFocus (infoPtr, wParam, lParam);
|
||||
return HOTKEY_SetFocus (infoPtr, (HWND)wParam);
|
||||
|
||||
case WM_SETFONT:
|
||||
return HOTKEY_SetFont (infoPtr, wParam, lParam);
|
||||
return HOTKEY_SetFont (infoPtr, (HFONT)wParam, LOWORD(lParam));
|
||||
|
||||
default:
|
||||
if ((uMsg >= WM_USER) && (uMsg < WM_APP))
|
||||
|
|
|
@ -2731,6 +2731,7 @@ _write_bitmap(HBITMAP hBitmap, LPSTREAM pstm, int cx, int cy)
|
|||
failed:
|
||||
ReleaseDC(0, xdc);
|
||||
LocalFree((HLOCAL)lpBitsOrg);
|
||||
LocalFree((HLOCAL)data);
|
||||
|
||||
return result;
|
||||
}
|
||||
|
|
|
@ -65,15 +65,14 @@ typedef struct
|
|||
IPPART_INFO Part[4];
|
||||
} IPADDRESS_INFO;
|
||||
|
||||
static const WCHAR IP_SUBCLASS_PROP[] =
|
||||
{ 'C', 'C', 'I', 'P', '3', '2', 'S', 'u', 'b', 'c', 'l', 'a', 's', 's', 'I', 'n', 'f', 'o', 0 };
|
||||
|
||||
#define POS_DEFAULT 0
|
||||
#define POS_LEFT 1
|
||||
#define POS_RIGHT 2
|
||||
#define POS_SELALL 3
|
||||
|
||||
#define IP_SUBCLASS_PROP "CCIP32SubclassInfo"
|
||||
#define IPADDRESS_GetInfoPtr(hwnd) ((IPADDRESS_INFO *)GetWindowLongPtrW (hwnd, 0))
|
||||
|
||||
|
||||
static LRESULT CALLBACK
|
||||
IPADDRESS_SubclassProc (HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
|
||||
|
||||
|
@ -125,6 +124,7 @@ static int IPADDRESS_GetPartIndex(IPADDRESS_INFO *infoPtr, HWND hwnd)
|
|||
|
||||
static LRESULT IPADDRESS_Draw (IPADDRESS_INFO *infoPtr, HDC hdc)
|
||||
{
|
||||
static const WCHAR dotW[] = { '.', 0 };
|
||||
RECT rect, rcPart;
|
||||
POINT pt;
|
||||
int i;
|
||||
|
@ -143,7 +143,7 @@ static LRESULT IPADDRESS_Draw (IPADDRESS_INFO *infoPtr, HDC hdc)
|
|||
pt.x = rcPart.left;
|
||||
ScreenToClient(infoPtr->Self, &pt);
|
||||
rect.right = pt.x;
|
||||
DrawTextA(hdc, ".", 1, &rect, DT_SINGLELINE | DT_CENTER | DT_BOTTOM);
|
||||
DrawTextW(hdc, dotW, 1, &rect, DT_SINGLELINE | DT_CENTER | DT_BOTTOM);
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
@ -152,10 +152,10 @@ static LRESULT IPADDRESS_Draw (IPADDRESS_INFO *infoPtr, HDC hdc)
|
|||
|
||||
static LRESULT IPADDRESS_Create (HWND hwnd, LPCREATESTRUCTA lpCreate)
|
||||
{
|
||||
static const WCHAR EDIT[] = { 'E', 'd', 'i', 't', 0 };
|
||||
IPADDRESS_INFO *infoPtr;
|
||||
RECT rcClient, edit;
|
||||
int i, fieldsize;
|
||||
static const WCHAR EDIT[] = { 'E', 'd', 'i', 't', 0 };
|
||||
|
||||
TRACE("\n");
|
||||
|
||||
|
@ -188,7 +188,7 @@ static LRESULT IPADDRESS_Create (HWND hwnd, LPCREATESTRUCTA lpCreate)
|
|||
edit.left, edit.top, edit.right - edit.left,
|
||||
edit.bottom - edit.top, hwnd, (HMENU) 1,
|
||||
(HINSTANCE)GetWindowLongPtrW(hwnd, GWLP_HINSTANCE), NULL);
|
||||
SetPropA(part->EditHwnd, IP_SUBCLASS_PROP, hwnd);
|
||||
SetPropW(part->EditHwnd, IP_SUBCLASS_PROP, hwnd);
|
||||
part->OrigProc = (WNDPROC)
|
||||
SetWindowLongPtrW (part->EditHwnd, GWLP_WNDPROC,
|
||||
(DWORD_PTR)IPADDRESS_SubclassProc);
|
||||
|
@ -419,8 +419,8 @@ static BOOL IPADDRESS_GotoNextField (IPADDRESS_INFO *infoPtr, int cur, int sel)
|
|||
LRESULT CALLBACK
|
||||
IPADDRESS_SubclassProc (HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
||||
{
|
||||
HWND Self = (HWND)GetPropA (hwnd, IP_SUBCLASS_PROP);
|
||||
IPADDRESS_INFO *infoPtr = IPADDRESS_GetInfoPtr (Self);
|
||||
HWND Self = (HWND)GetPropW (hwnd, IP_SUBCLASS_PROP);
|
||||
IPADDRESS_INFO *infoPtr = (IPADDRESS_INFO *)GetWindowLongPtrW (Self, 0);
|
||||
CHAR c = (CHAR)wParam;
|
||||
INT index, len = 0, startsel, endsel;
|
||||
IPPART_INFO *part;
|
||||
|
@ -502,7 +502,7 @@ IPADDRESS_SubclassProc (HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
|||
static LRESULT WINAPI
|
||||
IPADDRESS_WindowProc (HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
||||
{
|
||||
IPADDRESS_INFO *infoPtr = IPADDRESS_GetInfoPtr (hwnd);
|
||||
IPADDRESS_INFO *infoPtr = (IPADDRESS_INFO *)GetWindowLongPtrW (hwnd, 0);
|
||||
|
||||
TRACE("(hwnd=%p msg=0x%x wparam=0x%x lparam=0x%lx)\n", hwnd, uMsg, wParam, lParam);
|
||||
|
||||
|
|
|
@ -348,7 +348,7 @@ typedef struct tagLISTVIEW_INFO
|
|||
/* Standard DrawText flags */
|
||||
#define LV_ML_DT_FLAGS (DT_TOP | DT_NOPREFIX | DT_EDITCONTROL | DT_CENTER | DT_WORDBREAK | DT_WORD_ELLIPSIS | DT_END_ELLIPSIS)
|
||||
#define LV_FL_DT_FLAGS (DT_TOP | DT_NOPREFIX | DT_EDITCONTROL | DT_CENTER | DT_WORDBREAK | DT_NOCLIP)
|
||||
#define LV_SL_DT_FLAGS (DT_VCENTER | DT_EDITCONTROL | DT_SINGLELINE | DT_WORD_ELLIPSIS | DT_END_ELLIPSIS)
|
||||
#define LV_SL_DT_FLAGS (DT_VCENTER | DT_NOPREFIX | DT_EDITCONTROL | DT_SINGLELINE | DT_WORD_ELLIPSIS | DT_END_ELLIPSIS)
|
||||
|
||||
/* The time in milliseconds to reset the search in the list */
|
||||
#define KEY_DELAY 450
|
||||
|
@ -819,10 +819,8 @@ static int get_ansi_notification(INT unicodeNotificationCode)
|
|||
}
|
||||
|
||||
/*
|
||||
With testing on Windows 2000 it looks like the notify format
|
||||
has nothing to do with this message. It ALWAYS seems to be
|
||||
in ansi format.
|
||||
|
||||
Send notification. depends on dispinfoW having same
|
||||
structure as dispinfoA.
|
||||
infoPtr : listview struct
|
||||
notificationCode : *Unicode* notification code
|
||||
pdi : dispinfo structure (can be unicode or ansi)
|
||||
|
@ -831,19 +829,23 @@ static int get_ansi_notification(INT unicodeNotificationCode)
|
|||
static BOOL notify_dispinfoT(LISTVIEW_INFO *infoPtr, INT notificationCode, LPNMLVDISPINFOW pdi, BOOL isW)
|
||||
{
|
||||
BOOL bResult = FALSE;
|
||||
BOOL convertToAnsi = FALSE;
|
||||
INT cchTempBufMax = 0, savCchTextMax = 0;
|
||||
BOOL convertToAnsi = FALSE, convertToUnicode = FALSE;
|
||||
INT cchTempBufMax = 0, savCchTextMax = 0, realNotifCode;
|
||||
LPWSTR pszTempBuf = NULL, savPszText = NULL;
|
||||
|
||||
if ((pdi->item.mask & LVIF_TEXT) && is_textT(pdi->item.pszText, isW))
|
||||
convertToAnsi = isW;
|
||||
{
|
||||
convertToAnsi = (isW && infoPtr->notifyFormat == NFR_ANSI);
|
||||
convertToUnicode = (!isW && infoPtr->notifyFormat == NFR_UNICODE);
|
||||
}
|
||||
|
||||
if (convertToAnsi)
|
||||
if (convertToAnsi || convertToUnicode)
|
||||
{
|
||||
if (notificationCode != LVN_GETDISPINFOW)
|
||||
{
|
||||
cchTempBufMax = WideCharToMultiByte(CP_ACP, 0, pdi->item.pszText,
|
||||
-1, NULL, 0, NULL, NULL);
|
||||
cchTempBufMax = convertToUnicode ?
|
||||
MultiByteToWideChar(CP_ACP, 0, (LPCSTR)pdi->item.pszText, -1, NULL, 0):
|
||||
WideCharToMultiByte(CP_ACP, 0, pdi->item.pszText, -1, NULL, 0, NULL, NULL);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -851,12 +853,16 @@ static BOOL notify_dispinfoT(LISTVIEW_INFO *infoPtr, INT notificationCode, LPNML
|
|||
*pdi->item.pszText = 0; /* make sure we don't process garbage */
|
||||
}
|
||||
|
||||
pszTempBuf = HeapAlloc(GetProcessHeap(), 0, sizeof(CHAR) *
|
||||
cchTempBufMax);
|
||||
pszTempBuf = HeapAlloc(GetProcessHeap(), 0,
|
||||
(convertToUnicode ? sizeof(WCHAR) : sizeof(CHAR)) * cchTempBufMax);
|
||||
if (!pszTempBuf) return FALSE;
|
||||
|
||||
WideCharToMultiByte(CP_ACP, 0, pdi->item.pszText, -1, (LPSTR)
|
||||
pszTempBuf, cchTempBufMax, NULL, NULL);
|
||||
if (convertToUnicode)
|
||||
MultiByteToWideChar(CP_ACP, 0, (LPCSTR)pdi->item.pszText, -1,
|
||||
pszTempBuf, cchTempBufMax);
|
||||
else
|
||||
WideCharToMultiByte(CP_ACP, 0, pdi->item.pszText, -1, (LPSTR) pszTempBuf,
|
||||
cchTempBufMax, NULL, NULL);
|
||||
|
||||
savCchTextMax = pdi->item.cchTextMax;
|
||||
savPszText = pdi->item.pszText;
|
||||
|
@ -864,14 +870,19 @@ static BOOL notify_dispinfoT(LISTVIEW_INFO *infoPtr, INT notificationCode, LPNML
|
|||
pdi->item.cchTextMax = cchTempBufMax;
|
||||
}
|
||||
|
||||
TRACE(" pdi->item=%s\n", debuglvitem_t(&pdi->item, infoPtr->notifyFormat !=
|
||||
NFR_ANSI));
|
||||
if (infoPtr->notifyFormat == NFR_ANSI)
|
||||
realNotifCode = get_ansi_notification(notificationCode);
|
||||
else
|
||||
realNotifCode = notificationCode;
|
||||
TRACE(" pdi->item=%s\n", debuglvitem_t(&pdi->item, infoPtr->notifyFormat != NFR_ANSI));
|
||||
bResult = notify_hdr(infoPtr, realNotifCode, &pdi->hdr);
|
||||
|
||||
bResult = notify_hdr(infoPtr, get_ansi_notification(notificationCode),
|
||||
(LPNMHDR)pdi);
|
||||
|
||||
if (convertToAnsi)
|
||||
if (convertToUnicode || convertToAnsi)
|
||||
{
|
||||
if (convertToUnicode) /* note : pointer can be changed by app ! */
|
||||
WideCharToMultiByte(CP_ACP, 0, pdi->item.pszText, -1, (LPSTR) savPszText,
|
||||
savCchTextMax, NULL, NULL);
|
||||
else
|
||||
MultiByteToWideChar(CP_ACP, 0, (LPSTR) pdi->item.pszText, -1,
|
||||
savPszText, savCchTextMax);
|
||||
pdi->item.pszText = savPszText; /* restores our buffer */
|
||||
|
@ -3131,7 +3142,7 @@ static BOOL LISTVIEW_KeySelection(LISTVIEW_INFO *infoPtr, INT nItem)
|
|||
* PARAMETER(S):
|
||||
* [I] infoPtr : valid pointer to the listview structure
|
||||
* [I] fwKeys : key indicator
|
||||
* [I] pts : mouse position
|
||||
* [I] x,y : mouse position
|
||||
*
|
||||
* RETURN:
|
||||
* 0 if the message was processed, non-zero if there was an error
|
||||
|
@ -3141,7 +3152,7 @@ static BOOL LISTVIEW_KeySelection(LISTVIEW_INFO *infoPtr, INT nItem)
|
|||
* over the item for a certain period of time.
|
||||
*
|
||||
*/
|
||||
static LRESULT LISTVIEW_MouseHover(LISTVIEW_INFO *infoPtr, WORD fwKyes, POINTS pts)
|
||||
static LRESULT LISTVIEW_MouseHover(LISTVIEW_INFO *infoPtr, WORD fwKyes, INT x, INT y)
|
||||
{
|
||||
if(infoPtr->dwLvExStyle & LVS_EX_TRACKSELECT)
|
||||
/* FIXME: select the item!!! */
|
||||
|
@ -3157,12 +3168,12 @@ static LRESULT LISTVIEW_MouseHover(LISTVIEW_INFO *infoPtr, WORD fwKyes, POINTS p
|
|||
* PARAMETER(S):
|
||||
* [I] infoPtr : valid pointer to the listview structure
|
||||
* [I] fwKeys : key indicator
|
||||
* [I] pts : mouse position
|
||||
* [I] x,y : mouse position
|
||||
*
|
||||
* RETURN:
|
||||
* 0 if the message is processed, non-zero if there was an error
|
||||
*/
|
||||
static LRESULT LISTVIEW_MouseMove(LISTVIEW_INFO *infoPtr, WORD fwKeys, POINTS pts)
|
||||
static LRESULT LISTVIEW_MouseMove(LISTVIEW_INFO *infoPtr, WORD fwKeys, INT x, INT y)
|
||||
{
|
||||
TRACKMOUSEEVENT trackinfo;
|
||||
|
||||
|
@ -7951,22 +7962,22 @@ static LRESULT LISTVIEW_TrackMouse(LISTVIEW_INFO *infoPtr, POINT pt)
|
|||
* PARAMETER(S):
|
||||
* [I] infoPtr : valid pointer to the listview structure
|
||||
* [I] wKey : key flag
|
||||
* [I] pts : mouse coordinate
|
||||
* [I] x,y : mouse coordinate
|
||||
*
|
||||
* RETURN:
|
||||
* Zero
|
||||
*/
|
||||
static LRESULT LISTVIEW_LButtonDblClk(LISTVIEW_INFO *infoPtr, WORD wKey, POINTS pts)
|
||||
static LRESULT LISTVIEW_LButtonDblClk(LISTVIEW_INFO *infoPtr, WORD wKey, INT x, INT y)
|
||||
{
|
||||
LVHITTESTINFO htInfo;
|
||||
|
||||
TRACE("(key=%hu, X=%hu, Y=%hu)\n", wKey, pts.x, pts.y);
|
||||
TRACE("(key=%hu, X=%hu, Y=%hu)\n", wKey, x, y);
|
||||
|
||||
/* send NM_RELEASEDCAPTURE notification */
|
||||
notify(infoPtr, NM_RELEASEDCAPTURE);
|
||||
|
||||
htInfo.pt.x = pts.x;
|
||||
htInfo.pt.y = pts.y;
|
||||
htInfo.pt.x = x;
|
||||
htInfo.pt.y = y;
|
||||
|
||||
/* send NM_DBLCLK notification */
|
||||
LISTVIEW_HitTest(infoPtr, &htInfo, TRUE, FALSE);
|
||||
|
@ -7985,19 +7996,19 @@ static LRESULT LISTVIEW_LButtonDblClk(LISTVIEW_INFO *infoPtr, WORD wKey, POINTS
|
|||
* PARAMETER(S):
|
||||
* [I] infoPtr : valid pointer to the listview structure
|
||||
* [I] wKey : key flag
|
||||
* [I] pts : mouse coordinate
|
||||
* [I] x,y : mouse coordinate
|
||||
*
|
||||
* RETURN:
|
||||
* Zero
|
||||
*/
|
||||
static LRESULT LISTVIEW_LButtonDown(LISTVIEW_INFO *infoPtr, WORD wKey, POINTS pts)
|
||||
static LRESULT LISTVIEW_LButtonDown(LISTVIEW_INFO *infoPtr, WORD wKey, INT x, INT y)
|
||||
{
|
||||
LVHITTESTINFO lvHitTestInfo;
|
||||
static BOOL bGroupSelect = TRUE;
|
||||
POINT pt = { pts.x, pts.y };
|
||||
POINT pt = { x, y };
|
||||
INT nItem;
|
||||
|
||||
TRACE("(key=%hu, X=%hu, Y=%hu)\n", wKey, pts.x, pts.y);
|
||||
TRACE("(key=%hu, X=%hu, Y=%hu)\n", wKey, x, y);
|
||||
|
||||
/* send NM_RELEASEDCAPTURE notification */
|
||||
notify(infoPtr, NM_RELEASEDCAPTURE);
|
||||
|
@ -8007,8 +8018,8 @@ static LRESULT LISTVIEW_LButtonDown(LISTVIEW_INFO *infoPtr, WORD wKey, POINTS pt
|
|||
/* set left button down flag */
|
||||
infoPtr->bLButtonDown = TRUE;
|
||||
|
||||
lvHitTestInfo.pt.x = pts.x;
|
||||
lvHitTestInfo.pt.y = pts.y;
|
||||
lvHitTestInfo.pt.x = x;
|
||||
lvHitTestInfo.pt.y = y;
|
||||
|
||||
nItem = LISTVIEW_HitTest(infoPtr, &lvHitTestInfo, TRUE, TRUE);
|
||||
TRACE("at %s, nItem=%d\n", debugpoint(&pt), nItem);
|
||||
|
@ -8112,21 +8123,21 @@ static LRESULT LISTVIEW_LButtonDown(LISTVIEW_INFO *infoPtr, WORD wKey, POINTS pt
|
|||
* PARAMETER(S):
|
||||
* [I] infoPtr : valid pointer to the listview structure
|
||||
* [I] wKey : key flag
|
||||
* [I] pts : mouse coordinate
|
||||
* [I] x,y : mouse coordinate
|
||||
*
|
||||
* RETURN:
|
||||
* Zero
|
||||
*/
|
||||
static LRESULT LISTVIEW_LButtonUp(LISTVIEW_INFO *infoPtr, WORD wKey, POINTS pts)
|
||||
static LRESULT LISTVIEW_LButtonUp(LISTVIEW_INFO *infoPtr, WORD wKey, INT x, INT y)
|
||||
{
|
||||
LVHITTESTINFO lvHitTestInfo;
|
||||
|
||||
TRACE("(key=%hu, X=%hu, Y=%hu)\n", wKey, pts.x, pts.y);
|
||||
TRACE("(key=%hu, X=%hu, Y=%hu)\n", wKey, x, y);
|
||||
|
||||
if (!infoPtr->bLButtonDown) return 0;
|
||||
|
||||
lvHitTestInfo.pt.x = pts.x;
|
||||
lvHitTestInfo.pt.y = pts.y;
|
||||
lvHitTestInfo.pt.x = x;
|
||||
lvHitTestInfo.pt.y = y;
|
||||
|
||||
/* send NM_CLICK notification */
|
||||
LISTVIEW_HitTest(infoPtr, &lvHitTestInfo, TRUE, FALSE);
|
||||
|
@ -8344,23 +8355,23 @@ static LRESULT LISTVIEW_Paint(LISTVIEW_INFO *infoPtr, HDC hdc)
|
|||
* PARAMETER(S):
|
||||
* [I] infoPtr : valid pointer to the listview structure
|
||||
* [I] wKey : key flag
|
||||
* [I] pts : mouse coordinate
|
||||
* [I] x,y : mouse coordinate
|
||||
*
|
||||
* RETURN:
|
||||
* Zero
|
||||
*/
|
||||
static LRESULT LISTVIEW_RButtonDblClk(LISTVIEW_INFO *infoPtr, WORD wKey, POINTS pts)
|
||||
static LRESULT LISTVIEW_RButtonDblClk(LISTVIEW_INFO *infoPtr, WORD wKey, INT x, INT y)
|
||||
{
|
||||
LVHITTESTINFO lvHitTestInfo;
|
||||
|
||||
TRACE("(key=%hu,X=%hu,Y=%hu)\n", wKey, pts.x, pts.y);
|
||||
TRACE("(key=%hu,X=%hu,Y=%hu)\n", wKey, x, y);
|
||||
|
||||
/* send NM_RELEASEDCAPTURE notification */
|
||||
notify(infoPtr, NM_RELEASEDCAPTURE);
|
||||
|
||||
/* send NM_RDBLCLK notification */
|
||||
lvHitTestInfo.pt.x = pts.x;
|
||||
lvHitTestInfo.pt.y = pts.y;
|
||||
lvHitTestInfo.pt.x = x;
|
||||
lvHitTestInfo.pt.y = y;
|
||||
LISTVIEW_HitTest(infoPtr, &lvHitTestInfo, TRUE, FALSE);
|
||||
notify_click(infoPtr, NM_RDBLCLK, &lvHitTestInfo);
|
||||
|
||||
|
@ -8374,17 +8385,17 @@ static LRESULT LISTVIEW_RButtonDblClk(LISTVIEW_INFO *infoPtr, WORD wKey, POINTS
|
|||
* PARAMETER(S):
|
||||
* [I] infoPtr : valid pointer to the listview structure
|
||||
* [I] wKey : key flag
|
||||
* [I] pts : mouse coordinate
|
||||
* [I] x,y : mouse coordinate
|
||||
*
|
||||
* RETURN:
|
||||
* Zero
|
||||
*/
|
||||
static LRESULT LISTVIEW_RButtonDown(LISTVIEW_INFO *infoPtr, WORD wKey, POINTS pts)
|
||||
static LRESULT LISTVIEW_RButtonDown(LISTVIEW_INFO *infoPtr, WORD wKey, INT x, INT y)
|
||||
{
|
||||
LVHITTESTINFO lvHitTestInfo;
|
||||
INT nItem;
|
||||
|
||||
TRACE("(key=%hu,X=%hu,Y=%hu)\n", wKey, pts.x, pts.y);
|
||||
TRACE("(key=%hu,X=%hu,Y=%hu)\n", wKey, x, y);
|
||||
|
||||
/* send NM_RELEASEDCAPTURE notification */
|
||||
notify(infoPtr, NM_RELEASEDCAPTURE);
|
||||
|
@ -8396,8 +8407,8 @@ static LRESULT LISTVIEW_RButtonDown(LISTVIEW_INFO *infoPtr, WORD wKey, POINTS pt
|
|||
infoPtr->bRButtonDown = TRUE;
|
||||
|
||||
/* determine the index of the selected item */
|
||||
lvHitTestInfo.pt.x = pts.x;
|
||||
lvHitTestInfo.pt.y = pts.y;
|
||||
lvHitTestInfo.pt.x = x;
|
||||
lvHitTestInfo.pt.y = y;
|
||||
nItem = LISTVIEW_HitTest(infoPtr, &lvHitTestInfo, TRUE, TRUE);
|
||||
|
||||
if ((nItem >= 0) && (nItem < infoPtr->nItemCount))
|
||||
|
@ -8422,17 +8433,17 @@ static LRESULT LISTVIEW_RButtonDown(LISTVIEW_INFO *infoPtr, WORD wKey, POINTS pt
|
|||
* PARAMETER(S):
|
||||
* [I] infoPtr : valid pointer to the listview structure
|
||||
* [I] wKey : key flag
|
||||
* [I] pts : mouse coordinate
|
||||
* [I] x,y : mouse coordinate
|
||||
*
|
||||
* RETURN:
|
||||
* Zero
|
||||
*/
|
||||
static LRESULT LISTVIEW_RButtonUp(LISTVIEW_INFO *infoPtr, WORD wKey, POINTS pts)
|
||||
static LRESULT LISTVIEW_RButtonUp(LISTVIEW_INFO *infoPtr, WORD wKey, INT x, INT y)
|
||||
{
|
||||
LVHITTESTINFO lvHitTestInfo;
|
||||
POINT pt;
|
||||
|
||||
TRACE("(key=%hu,X=%hu,Y=%hu)\n", wKey, pts.x, pts.y);
|
||||
TRACE("(key=%hu,X=%hu,Y=%hu)\n", wKey, x, y);
|
||||
|
||||
if (!infoPtr->bRButtonDown) return 0;
|
||||
|
||||
|
@ -8440,8 +8451,8 @@ static LRESULT LISTVIEW_RButtonUp(LISTVIEW_INFO *infoPtr, WORD wKey, POINTS pts)
|
|||
infoPtr->bRButtonDown = FALSE;
|
||||
|
||||
/* Send NM_RClICK notification */
|
||||
lvHitTestInfo.pt.x = pts.x;
|
||||
lvHitTestInfo.pt.y = pts.y;
|
||||
lvHitTestInfo.pt.x = x;
|
||||
lvHitTestInfo.pt.y = y;
|
||||
LISTVIEW_HitTest(infoPtr, &lvHitTestInfo, TRUE, FALSE);
|
||||
notify_click(infoPtr, NM_RCLICK, &lvHitTestInfo);
|
||||
|
||||
|
@ -9159,19 +9170,19 @@ LISTVIEW_WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
|||
return LISTVIEW_KillFocus(infoPtr);
|
||||
|
||||
case WM_LBUTTONDBLCLK:
|
||||
return LISTVIEW_LButtonDblClk(infoPtr, (WORD)wParam, MAKEPOINTS(lParam));
|
||||
return LISTVIEW_LButtonDblClk(infoPtr, (WORD)wParam, (SHORT)LOWORD(lParam), (SHORT)HIWORD(lParam));
|
||||
|
||||
case WM_LBUTTONDOWN:
|
||||
return LISTVIEW_LButtonDown(infoPtr, (WORD)wParam, MAKEPOINTS(lParam));
|
||||
return LISTVIEW_LButtonDown(infoPtr, (WORD)wParam, (SHORT)LOWORD(lParam), (SHORT)HIWORD(lParam));
|
||||
|
||||
case WM_LBUTTONUP:
|
||||
return LISTVIEW_LButtonUp(infoPtr, (WORD)wParam, MAKEPOINTS(lParam));
|
||||
return LISTVIEW_LButtonUp(infoPtr, (WORD)wParam, (SHORT)LOWORD(lParam), (SHORT)HIWORD(lParam));
|
||||
|
||||
case WM_MOUSEMOVE:
|
||||
return LISTVIEW_MouseMove (infoPtr, (WORD)wParam, MAKEPOINTS(lParam));
|
||||
return LISTVIEW_MouseMove (infoPtr, (WORD)wParam, (SHORT)LOWORD(lParam), (SHORT)HIWORD(lParam));
|
||||
|
||||
case WM_MOUSEHOVER:
|
||||
return LISTVIEW_MouseHover(infoPtr, (WORD)wParam, MAKEPOINTS(lParam));
|
||||
return LISTVIEW_MouseHover(infoPtr, (WORD)wParam, (SHORT)LOWORD(lParam), (SHORT)HIWORD(lParam));
|
||||
|
||||
case WM_NCDESTROY:
|
||||
return LISTVIEW_NCDestroy(infoPtr);
|
||||
|
@ -9188,13 +9199,13 @@ LISTVIEW_WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
|||
return LISTVIEW_Paint(infoPtr, (HDC)wParam);
|
||||
|
||||
case WM_RBUTTONDBLCLK:
|
||||
return LISTVIEW_RButtonDblClk(infoPtr, (WORD)wParam, MAKEPOINTS(lParam));
|
||||
return LISTVIEW_RButtonDblClk(infoPtr, (WORD)wParam, (SHORT)LOWORD(lParam), (SHORT)HIWORD(lParam));
|
||||
|
||||
case WM_RBUTTONDOWN:
|
||||
return LISTVIEW_RButtonDown(infoPtr, (WORD)wParam, MAKEPOINTS(lParam));
|
||||
return LISTVIEW_RButtonDown(infoPtr, (WORD)wParam, (SHORT)LOWORD(lParam), (SHORT)HIWORD(lParam));
|
||||
|
||||
case WM_RBUTTONUP:
|
||||
return LISTVIEW_RButtonUp(infoPtr, (WORD)wParam, MAKEPOINTS(lParam));
|
||||
return LISTVIEW_RButtonUp(infoPtr, (WORD)wParam, (SHORT)LOWORD(lParam), (SHORT)HIWORD(lParam));
|
||||
|
||||
case WM_SETCURSOR:
|
||||
if(LISTVIEW_SetCursor(infoPtr, (HWND)wParam, LOWORD(lParam), HIWORD(lParam)))
|
||||
|
@ -9270,7 +9281,7 @@ void LISTVIEW_Register(void)
|
|||
|
||||
ZeroMemory(&wndClass, sizeof(WNDCLASSW));
|
||||
wndClass.style = CS_GLOBALCLASS | CS_DBLCLKS;
|
||||
wndClass.lpfnWndProc = (WNDPROC)LISTVIEW_WindowProc;
|
||||
wndClass.lpfnWndProc = LISTVIEW_WindowProc;
|
||||
wndClass.cbClsExtra = 0;
|
||||
wndClass.cbWndExtra = sizeof(LISTVIEW_INFO *);
|
||||
wndClass.hCursor = LoadCursorW(0, (LPWSTR)IDC_ARROW);
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -28,12 +28,11 @@
|
|||
*/
|
||||
|
||||
#include <stdarg.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "windef.h"
|
||||
#include "winbase.h"
|
||||
#include "wingdi.h"
|
||||
#include "winuser.h"
|
||||
#include "winnls.h"
|
||||
#include "commctrl.h"
|
||||
#include "comctl32.h"
|
||||
#include "wine/debug.h"
|
||||
|
@ -42,12 +41,11 @@ WINE_DEFAULT_DEBUG_CHANNEL(nativefont);
|
|||
|
||||
typedef struct
|
||||
{
|
||||
DWORD dwDummy; /* just to keep the compiler happy ;-) */
|
||||
HWND hwndSelf; /* my own handle */
|
||||
} NATIVEFONT_INFO;
|
||||
|
||||
#define NATIVEFONT_GetInfoPtr(hwnd) ((NATIVEFONT_INFO *)GetWindowLongPtrW (hwnd, 0))
|
||||
|
||||
|
||||
static LRESULT
|
||||
NATIVEFONT_Create (HWND hwnd, WPARAM wParam, LPARAM lParam)
|
||||
{
|
||||
|
@ -57,45 +55,40 @@ NATIVEFONT_Create (HWND hwnd, WPARAM wParam, LPARAM lParam)
|
|||
infoPtr = (NATIVEFONT_INFO *)Alloc (sizeof(NATIVEFONT_INFO));
|
||||
SetWindowLongPtrW (hwnd, 0, (DWORD_PTR)infoPtr);
|
||||
|
||||
|
||||
/* initialize info structure */
|
||||
|
||||
infoPtr->hwndSelf = hwnd;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
static LRESULT
|
||||
NATIVEFONT_Destroy (HWND hwnd, WPARAM wParam, LPARAM lParam)
|
||||
NATIVEFONT_Destroy (NATIVEFONT_INFO *infoPtr)
|
||||
{
|
||||
NATIVEFONT_INFO *infoPtr = NATIVEFONT_GetInfoPtr (hwnd);
|
||||
|
||||
|
||||
|
||||
|
||||
/* free comboex info data */
|
||||
/* free control info data */
|
||||
SetWindowLongPtrW( infoPtr->hwndSelf, 0, 0 );
|
||||
Free (infoPtr);
|
||||
SetWindowLongPtrW( hwnd, 0, 0 );
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
static LRESULT WINAPI
|
||||
NATIVEFONT_WindowProc (HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
||||
{
|
||||
if (!NATIVEFONT_GetInfoPtr(hwnd) && (uMsg != WM_CREATE))
|
||||
return DefWindowProcA( hwnd, uMsg, wParam, lParam );
|
||||
NATIVEFONT_INFO *infoPtr = NATIVEFONT_GetInfoPtr(hwnd);
|
||||
|
||||
TRACE("hwnd=%p msg=%04x wparam=%08x lparam=%08lx\n",
|
||||
hwnd, uMsg, wParam, lParam);
|
||||
|
||||
if (!infoPtr && (uMsg != WM_CREATE))
|
||||
return DefWindowProcW( hwnd, uMsg, wParam, lParam );
|
||||
|
||||
switch (uMsg)
|
||||
{
|
||||
|
||||
case WM_CREATE:
|
||||
return NATIVEFONT_Create (hwnd, wParam, lParam);
|
||||
|
||||
case WM_DESTROY:
|
||||
return NATIVEFONT_Destroy (hwnd, wParam, lParam);
|
||||
return NATIVEFONT_Destroy (infoPtr);
|
||||
|
||||
case WM_MOVE:
|
||||
case WM_SIZE:
|
||||
|
@ -105,12 +98,13 @@ NATIVEFONT_WindowProc (HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
|||
case WM_SETFONT:
|
||||
case WM_GETDLGCODE:
|
||||
/* FIXME("message %04x seen but stubbed\n", uMsg); */
|
||||
return DefWindowProcA (hwnd, uMsg, wParam, lParam);
|
||||
return DefWindowProcW (hwnd, uMsg, wParam, lParam);
|
||||
|
||||
default:
|
||||
if ((uMsg >= WM_USER) && (uMsg < WM_APP))
|
||||
ERR("unknown msg %04x wp=%08x lp=%08lx\n",
|
||||
uMsg, wParam, lParam);
|
||||
return DefWindowProcA (hwnd, uMsg, wParam, lParam);
|
||||
return DefWindowProcW (hwnd, uMsg, wParam, lParam);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
@ -119,23 +113,23 @@ NATIVEFONT_WindowProc (HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
|||
VOID
|
||||
NATIVEFONT_Register (void)
|
||||
{
|
||||
WNDCLASSA wndClass;
|
||||
WNDCLASSW wndClass;
|
||||
|
||||
ZeroMemory (&wndClass, sizeof(WNDCLASSA));
|
||||
ZeroMemory (&wndClass, sizeof(WNDCLASSW));
|
||||
wndClass.style = CS_GLOBALCLASS;
|
||||
wndClass.lpfnWndProc = (WNDPROC)NATIVEFONT_WindowProc;
|
||||
wndClass.lpfnWndProc = NATIVEFONT_WindowProc;
|
||||
wndClass.cbClsExtra = 0;
|
||||
wndClass.cbWndExtra = sizeof(NATIVEFONT_INFO *);
|
||||
wndClass.hCursor = LoadCursorA (0, (LPSTR)IDC_ARROW);
|
||||
wndClass.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1);
|
||||
wndClass.lpszClassName = WC_NATIVEFONTCTLA;
|
||||
wndClass.hCursor = LoadCursorW (0, (LPWSTR)IDC_ARROW);
|
||||
wndClass.hbrBackground = (HBRUSH)(COLOR_BTNFACE + 1);
|
||||
wndClass.lpszClassName = WC_NATIVEFONTCTLW;
|
||||
|
||||
RegisterClassA (&wndClass);
|
||||
RegisterClassW (&wndClass);
|
||||
}
|
||||
|
||||
|
||||
VOID
|
||||
NATIVEFONT_Unregister (void)
|
||||
{
|
||||
UnregisterClassA (WC_NATIVEFONTCTLA, NULL);
|
||||
UnregisterClassW (WC_NATIVEFONTCTLW, NULL);
|
||||
}
|
||||
|
|
|
@ -654,7 +654,7 @@ static LRESULT WINAPI ProgressWindowProc(HWND hwnd, UINT message,
|
|||
*
|
||||
* Registers the progress bar window class.
|
||||
*/
|
||||
VOID PROGRESS_Register (void)
|
||||
void PROGRESS_Register (void)
|
||||
{
|
||||
WNDCLASSW wndClass;
|
||||
|
||||
|
@ -675,7 +675,7 @@ VOID PROGRESS_Register (void)
|
|||
*
|
||||
* Unregisters the progress bar window class.
|
||||
*/
|
||||
VOID PROGRESS_Unregister (void)
|
||||
void PROGRESS_Unregister (void)
|
||||
{
|
||||
UnregisterClassW (PROGRESS_CLASSW, NULL);
|
||||
}
|
||||
|
|
|
@ -19,7 +19,7 @@
|
|||
*
|
||||
*
|
||||
* This code was audited for completeness against the documented features
|
||||
* of Comctl32.dll version 6.0 on Mar. 14, 2004, by Robert Shearman.
|
||||
* of Comctl32.dll version 6.0 on Oct. 19, 2004, by Robert Shearman.
|
||||
*
|
||||
* Unless otherwise noted, we believe this code to be complete, as per
|
||||
* the specification mentioned above.
|
||||
|
@ -194,8 +194,8 @@ typedef struct
|
|||
HCURSOR hcurVert; /* handle to the NS cursor */
|
||||
HCURSOR hcurDrag; /* handle to the drag cursor */
|
||||
INT iVersion; /* version number */
|
||||
POINTS dragStart; /* x,y of button down */
|
||||
POINTS dragNow; /* x,y of this MouseMove */
|
||||
POINT dragStart; /* x,y of button down */
|
||||
POINT dragNow; /* x,y of this MouseMove */
|
||||
INT iOldBand; /* last band that had the mouse cursor over it */
|
||||
INT ihitoffset; /* offset of hotspot from gripper.left */
|
||||
POINT origin; /* left/upper corner of client */
|
||||
|
@ -394,7 +394,7 @@ REBAR_DumpBand (REBAR_INFO *iP)
|
|||
TRACE("hwnd=%p: color=%08lx/%08lx, bands=%u, rows=%u, cSize=%ld,%ld\n",
|
||||
iP->hwndSelf, iP->clrText, iP->clrBk, iP->uNumBands, iP->uNumRows,
|
||||
iP->calcSize.cx, iP->calcSize.cy);
|
||||
TRACE("hwnd=%p: flags=%08x, dragStart=%d,%d, dragNow=%d,%d, iGrabbedBand=%d\n",
|
||||
TRACE("hwnd=%p: flags=%08x, dragStart=%ld,%ld, dragNow=%ld,%ld, iGrabbedBand=%d\n",
|
||||
iP->hwndSelf, iP->fStatus, iP->dragStart.x, iP->dragStart.y,
|
||||
iP->dragNow.x, iP->dragNow.y,
|
||||
iP->iGrabbedBand);
|
||||
|
@ -2418,7 +2418,7 @@ REBAR_Shrink (REBAR_INFO *infoPtr, REBAR_BAND *band, INT movement, INT i)
|
|||
|
||||
|
||||
static void
|
||||
REBAR_HandleLRDrag (REBAR_INFO *infoPtr, POINTS *ptsmove)
|
||||
REBAR_HandleLRDrag (REBAR_INFO *infoPtr, const POINT *ptsmove)
|
||||
/* Function: This will implement the functionality of a */
|
||||
/* Gripper drag within a row. It will not implement "out- */
|
||||
/* of-row" drags. (They are detected and handled in */
|
||||
|
@ -2491,7 +2491,7 @@ REBAR_HandleLRDrag (REBAR_INFO *infoPtr, POINTS *ptsmove)
|
|||
infoPtr->ihitoffset);
|
||||
infoPtr->dragNow = *ptsmove;
|
||||
|
||||
TRACE("before: movement=%d (%d,%d), imindBand=%d, ihitBand=%d, imaxdBand=%d, LSum=%d, RSum=%d\n",
|
||||
TRACE("before: movement=%d (%ld,%ld), imindBand=%d, ihitBand=%d, imaxdBand=%d, LSum=%d, RSum=%d\n",
|
||||
movement, ptsmove->x, ptsmove->y, imindBand, ihitBand,
|
||||
imaxdBand, LHeaderSum, RHeaderSum);
|
||||
REBAR_DumpBand (infoPtr);
|
||||
|
@ -3874,7 +3874,8 @@ REBAR_LButtonDown (REBAR_INFO *infoPtr, WPARAM wParam, LPARAM lParam)
|
|||
infoPtr->iGrabbedBand = iHitBand;
|
||||
|
||||
/* save off the LOWORD and HIWORD of lParam as initial x,y */
|
||||
infoPtr->dragStart = MAKEPOINTS(lParam);
|
||||
infoPtr->dragStart.x = (short)LOWORD(lParam);
|
||||
infoPtr->dragStart.y = (short)HIWORD(lParam);
|
||||
infoPtr->dragNow = infoPtr->dragStart;
|
||||
if (infoPtr->dwStyle & CCS_VERT)
|
||||
infoPtr->ihitoffset = infoPtr->dragStart.y - (lpBand->rcBand.top+REBAR_PRE_GRIPPER);
|
||||
|
@ -3935,9 +3936,10 @@ static LRESULT
|
|||
REBAR_MouseMove (REBAR_INFO *infoPtr, WPARAM wParam, LPARAM lParam)
|
||||
{
|
||||
REBAR_BAND *lpChevronBand;
|
||||
POINTS ptsmove;
|
||||
POINT ptMove;
|
||||
|
||||
ptsmove = MAKEPOINTS(lParam);
|
||||
ptMove.x = (short)LOWORD(lParam);
|
||||
ptMove.y = (short)HIWORD(lParam);
|
||||
|
||||
/* if we are currently dragging a band */
|
||||
if (infoPtr->iGrabbedBand >= 0)
|
||||
|
@ -3951,40 +3953,37 @@ REBAR_MouseMove (REBAR_INFO *infoPtr, WPARAM wParam, LPARAM lParam)
|
|||
band2 = &infoPtr->bands[infoPtr->iGrabbedBand];
|
||||
|
||||
/* if mouse did not move much, exit */
|
||||
if ((abs(ptsmove.x - infoPtr->dragNow.x) <= mindragx) &&
|
||||
(abs(ptsmove.y - infoPtr->dragNow.y) <= mindragy)) return 0;
|
||||
if ((abs(ptMove.x - infoPtr->dragNow.x) <= mindragx) &&
|
||||
(abs(ptMove.y - infoPtr->dragNow.y) <= mindragy)) return 0;
|
||||
|
||||
/* Test for valid drag case - must not be first band in row */
|
||||
if (infoPtr->dwStyle & CCS_VERT) {
|
||||
if ((ptsmove.x < band2->rcBand.left) ||
|
||||
(ptsmove.x > band2->rcBand.right) ||
|
||||
if ((ptMove.x < band2->rcBand.left) ||
|
||||
(ptMove.x > band2->rcBand.right) ||
|
||||
((infoPtr->iGrabbedBand > 0) && (band1->iRow != band2->iRow))) {
|
||||
FIXME("Cannot drag to other rows yet!!\n");
|
||||
}
|
||||
else {
|
||||
REBAR_HandleLRDrag (infoPtr, &ptsmove);
|
||||
REBAR_HandleLRDrag (infoPtr, &ptMove);
|
||||
}
|
||||
}
|
||||
else {
|
||||
if ((ptsmove.y < band2->rcBand.top) ||
|
||||
(ptsmove.y > band2->rcBand.bottom) ||
|
||||
if ((ptMove.y < band2->rcBand.top) ||
|
||||
(ptMove.y > band2->rcBand.bottom) ||
|
||||
((infoPtr->iGrabbedBand > 0) && (band1->iRow != band2->iRow))) {
|
||||
FIXME("Cannot drag to other rows yet!!\n");
|
||||
}
|
||||
else {
|
||||
REBAR_HandleLRDrag (infoPtr, &ptsmove);
|
||||
REBAR_HandleLRDrag (infoPtr, &ptMove);
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
POINT ptMove;
|
||||
INT iHitBand;
|
||||
UINT htFlags;
|
||||
TRACKMOUSEEVENT trackinfo;
|
||||
|
||||
ptMove.x = (INT)ptsmove.x;
|
||||
ptMove.y = (INT)ptsmove.y;
|
||||
REBAR_InternalHitTest(infoPtr, &ptMove, &htFlags, &iHitBand);
|
||||
|
||||
if (infoPtr->iOldBand >= 0 && infoPtr->iOldBand == infoPtr->ichevronhotBand)
|
||||
|
@ -4152,8 +4151,7 @@ static LRESULT
|
|||
REBAR_NCHitTest (REBAR_INFO *infoPtr, WPARAM wParam, LPARAM lParam)
|
||||
{
|
||||
NMMOUSE nmmouse;
|
||||
POINTS shortpt;
|
||||
POINT clpt, pt;
|
||||
POINT clpt;
|
||||
INT i;
|
||||
UINT scrap;
|
||||
LRESULT ret = HTCLIENT;
|
||||
|
@ -4166,9 +4164,8 @@ REBAR_NCHitTest (REBAR_INFO *infoPtr, WPARAM wParam, LPARAM lParam)
|
|||
* 3. native always seems to return HTCLIENT if notify return is 0.
|
||||
*/
|
||||
|
||||
shortpt = MAKEPOINTS (lParam);
|
||||
POINTSTOPOINT(pt, shortpt);
|
||||
clpt = pt;
|
||||
clpt.x = (short)LOWORD(lParam);
|
||||
clpt.y = (short)HIWORD(lParam);
|
||||
ScreenToClient (infoPtr->hwndSelf, &clpt);
|
||||
REBAR_InternalHitTest (infoPtr, &clpt, &scrap,
|
||||
(INT *)&nmmouse.dwItemSpec);
|
||||
|
@ -4710,7 +4707,7 @@ REBAR_Register (void)
|
|||
|
||||
ZeroMemory (&wndClass, sizeof(WNDCLASSA));
|
||||
wndClass.style = CS_GLOBALCLASS | CS_DBLCLKS;
|
||||
wndClass.lpfnWndProc = (WNDPROC)REBAR_WindowProc;
|
||||
wndClass.lpfnWndProc = REBAR_WindowProc;
|
||||
wndClass.cbClsExtra = 0;
|
||||
wndClass.cbWndExtra = sizeof(REBAR_INFO *);
|
||||
wndClass.hCursor = 0;
|
||||
|
|
|
@ -79,7 +79,7 @@ typedef struct
|
|||
BOOL NtfUnicode; /* notify format */
|
||||
STATUSWINDOWPART part0; /* simple window */
|
||||
STATUSWINDOWPART* parts;
|
||||
} STATUSWINDOWINFO;
|
||||
} STATUS_INFO;
|
||||
|
||||
/*
|
||||
* Run tests using Waite Group Windows95 API Bible Vol. 1&2
|
||||
|
@ -91,11 +91,9 @@ typedef struct
|
|||
#define VERT_BORDER 2
|
||||
#define HORZ_GAP 2
|
||||
|
||||
#define STATUSBAR_GetInfoPtr(hwnd) ((STATUSWINDOWINFO *)GetWindowLongPtrW (hwnd, 0))
|
||||
|
||||
/* prototype */
|
||||
static void
|
||||
STATUSBAR_SetPartBounds (STATUSWINDOWINFO *infoPtr);
|
||||
STATUSBAR_SetPartBounds (STATUS_INFO *infoPtr);
|
||||
|
||||
static inline LPCSTR debugstr_t(LPCWSTR text, BOOL isW)
|
||||
{
|
||||
|
@ -148,7 +146,7 @@ STATUSBAR_DrawSizeGrip (HDC hdc, LPRECT lpRect)
|
|||
|
||||
|
||||
static void
|
||||
STATUSBAR_DrawPart (HDC hdc, const STATUSWINDOWPART *part, const STATUSWINDOWINFO *infoPtr, int itemID)
|
||||
STATUSBAR_DrawPart (STATUS_INFO *infoPtr, HDC hdc, STATUSWINDOWPART *part, int itemID)
|
||||
{
|
||||
RECT r = part->bound;
|
||||
UINT border = BDR_SUNKENOUTER;
|
||||
|
@ -189,7 +187,7 @@ STATUSBAR_DrawPart (HDC hdc, const STATUSWINDOWPART *part, const STATUSWINDOWINF
|
|||
|
||||
|
||||
static void
|
||||
STATUSBAR_RefreshPart (const STATUSWINDOWINFO *infoPtr, const STATUSWINDOWPART *part, HDC hdc, int itemID)
|
||||
STATUSBAR_RefreshPart (STATUS_INFO *infoPtr, HDC hdc, STATUSWINDOWPART *part, int itemID)
|
||||
{
|
||||
HBRUSH hbrBk;
|
||||
HFONT hOldFont;
|
||||
|
@ -208,7 +206,7 @@ STATUSBAR_RefreshPart (const STATUSWINDOWINFO *infoPtr, const STATUSWINDOWPART *
|
|||
|
||||
hOldFont = SelectObject (hdc, infoPtr->hFont ? infoPtr->hFont : infoPtr->hDefaultFont);
|
||||
|
||||
STATUSBAR_DrawPart (hdc, part, infoPtr, itemID);
|
||||
STATUSBAR_DrawPart (infoPtr, hdc, part, itemID);
|
||||
|
||||
SelectObject (hdc, hOldFont);
|
||||
|
||||
|
@ -226,7 +224,7 @@ STATUSBAR_RefreshPart (const STATUSWINDOWINFO *infoPtr, const STATUSWINDOWPART *
|
|||
|
||||
|
||||
static LRESULT
|
||||
STATUSBAR_Refresh (STATUSWINDOWINFO *infoPtr, HDC hdc)
|
||||
STATUSBAR_Refresh (STATUS_INFO *infoPtr, HDC hdc)
|
||||
{
|
||||
int i;
|
||||
RECT rect;
|
||||
|
@ -250,10 +248,10 @@ STATUSBAR_Refresh (STATUSWINDOWINFO *infoPtr, HDC hdc)
|
|||
hOldFont = SelectObject (hdc, infoPtr->hFont ? infoPtr->hFont : infoPtr->hDefaultFont);
|
||||
|
||||
if (infoPtr->simple) {
|
||||
STATUSBAR_RefreshPart (infoPtr, &infoPtr->part0, hdc, 0);
|
||||
STATUSBAR_RefreshPart (infoPtr, hdc, &infoPtr->part0, 0);
|
||||
} else {
|
||||
for (i = 0; i < infoPtr->numParts; i++) {
|
||||
STATUSBAR_RefreshPart (infoPtr, &infoPtr->parts[i], hdc, i);
|
||||
STATUSBAR_RefreshPart (infoPtr, hdc, &infoPtr->parts[i], i);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -270,7 +268,7 @@ STATUSBAR_Refresh (STATUSWINDOWINFO *infoPtr, HDC hdc)
|
|||
|
||||
|
||||
static void
|
||||
STATUSBAR_SetPartBounds (STATUSWINDOWINFO *infoPtr)
|
||||
STATUSBAR_SetPartBounds (STATUS_INFO *infoPtr)
|
||||
{
|
||||
STATUSWINDOWPART *part;
|
||||
RECT rect, *r;
|
||||
|
@ -315,7 +313,7 @@ STATUSBAR_SetPartBounds (STATUSWINDOWINFO *infoPtr)
|
|||
|
||||
|
||||
static LRESULT
|
||||
STATUSBAR_Relay2Tip (STATUSWINDOWINFO *infoPtr, UINT uMsg,
|
||||
STATUSBAR_Relay2Tip (STATUS_INFO *infoPtr, UINT uMsg,
|
||||
WPARAM wParam, LPARAM lParam)
|
||||
{
|
||||
MSG msg;
|
||||
|
@ -345,7 +343,7 @@ STATUSBAR_GetBorders (INT out[])
|
|||
|
||||
|
||||
static HICON
|
||||
STATUSBAR_GetIcon (STATUSWINDOWINFO *infoPtr, INT nPart)
|
||||
STATUSBAR_GetIcon (STATUS_INFO *infoPtr, INT nPart)
|
||||
{
|
||||
TRACE("%d\n", nPart);
|
||||
/* MSDN says: "simple parts are indexed with -1" */
|
||||
|
@ -360,7 +358,7 @@ STATUSBAR_GetIcon (STATUSWINDOWINFO *infoPtr, INT nPart)
|
|||
|
||||
|
||||
static INT
|
||||
STATUSBAR_GetParts (STATUSWINDOWINFO *infoPtr, INT num_parts, INT parts[])
|
||||
STATUSBAR_GetParts (STATUS_INFO *infoPtr, INT num_parts, INT parts[])
|
||||
{
|
||||
INT i;
|
||||
|
||||
|
@ -375,7 +373,7 @@ STATUSBAR_GetParts (STATUSWINDOWINFO *infoPtr, INT num_parts, INT parts[])
|
|||
|
||||
|
||||
static BOOL
|
||||
STATUSBAR_GetRect (STATUSWINDOWINFO *infoPtr, INT nPart, LPRECT rect)
|
||||
STATUSBAR_GetRect (STATUS_INFO *infoPtr, INT nPart, LPRECT rect)
|
||||
{
|
||||
TRACE("part %d\n", nPart);
|
||||
if (infoPtr->simple)
|
||||
|
@ -387,7 +385,7 @@ STATUSBAR_GetRect (STATUSWINDOWINFO *infoPtr, INT nPart, LPRECT rect)
|
|||
|
||||
|
||||
static LRESULT
|
||||
STATUSBAR_GetTextA (STATUSWINDOWINFO *infoPtr, INT nPart, LPSTR buf)
|
||||
STATUSBAR_GetTextA (STATUS_INFO *infoPtr, INT nPart, LPSTR buf)
|
||||
{
|
||||
STATUSWINDOWPART *part;
|
||||
LRESULT result;
|
||||
|
@ -416,7 +414,7 @@ STATUSBAR_GetTextA (STATUSWINDOWINFO *infoPtr, INT nPart, LPSTR buf)
|
|||
|
||||
|
||||
static LRESULT
|
||||
STATUSBAR_GetTextW (STATUSWINDOWINFO *infoPtr, INT nPart, LPWSTR buf)
|
||||
STATUSBAR_GetTextW (STATUS_INFO *infoPtr, INT nPart, LPWSTR buf)
|
||||
{
|
||||
STATUSWINDOWPART *part;
|
||||
LRESULT result;
|
||||
|
@ -442,7 +440,7 @@ STATUSBAR_GetTextW (STATUSWINDOWINFO *infoPtr, INT nPart, LPWSTR buf)
|
|||
|
||||
|
||||
static LRESULT
|
||||
STATUSBAR_GetTextLength (STATUSWINDOWINFO *infoPtr, INT nPart)
|
||||
STATUSBAR_GetTextLength (STATUS_INFO *infoPtr, INT nPart)
|
||||
{
|
||||
STATUSWINDOWPART *part;
|
||||
DWORD result;
|
||||
|
@ -467,7 +465,7 @@ STATUSBAR_GetTextLength (STATUSWINDOWINFO *infoPtr, INT nPart)
|
|||
}
|
||||
|
||||
static LRESULT
|
||||
STATUSBAR_GetTipTextA (STATUSWINDOWINFO *infoPtr, INT id, LPSTR tip, INT size)
|
||||
STATUSBAR_GetTipTextA (STATUS_INFO *infoPtr, INT id, LPSTR tip, INT size)
|
||||
{
|
||||
TRACE("\n");
|
||||
if (tip) {
|
||||
|
@ -489,7 +487,7 @@ STATUSBAR_GetTipTextA (STATUSWINDOWINFO *infoPtr, INT id, LPSTR tip, INT size)
|
|||
|
||||
|
||||
static LRESULT
|
||||
STATUSBAR_GetTipTextW (STATUSWINDOWINFO *infoPtr, INT id, LPWSTR tip, INT size)
|
||||
STATUSBAR_GetTipTextW (STATUS_INFO *infoPtr, INT id, LPWSTR tip, INT size)
|
||||
{
|
||||
TRACE("\n");
|
||||
if (tip) {
|
||||
|
@ -512,7 +510,7 @@ STATUSBAR_GetTipTextW (STATUSWINDOWINFO *infoPtr, INT id, LPWSTR tip, INT size)
|
|||
|
||||
|
||||
static COLORREF
|
||||
STATUSBAR_SetBkColor (STATUSWINDOWINFO *infoPtr, COLORREF color)
|
||||
STATUSBAR_SetBkColor (STATUS_INFO *infoPtr, COLORREF color)
|
||||
{
|
||||
COLORREF oldBkColor;
|
||||
|
||||
|
@ -526,7 +524,7 @@ STATUSBAR_SetBkColor (STATUSWINDOWINFO *infoPtr, COLORREF color)
|
|||
|
||||
|
||||
static BOOL
|
||||
STATUSBAR_SetIcon (STATUSWINDOWINFO *infoPtr, INT nPart, HICON hIcon)
|
||||
STATUSBAR_SetIcon (STATUS_INFO *infoPtr, INT nPart, HICON hIcon)
|
||||
{
|
||||
if ((nPart < -1) || (nPart >= infoPtr->numParts))
|
||||
return FALSE;
|
||||
|
@ -553,7 +551,7 @@ STATUSBAR_SetIcon (STATUSWINDOWINFO *infoPtr, INT nPart, HICON hIcon)
|
|||
|
||||
|
||||
static BOOL
|
||||
STATUSBAR_SetMinHeight (STATUSWINDOWINFO *infoPtr, INT height)
|
||||
STATUSBAR_SetMinHeight (STATUS_INFO *infoPtr, INT height)
|
||||
{
|
||||
|
||||
TRACE("(height=%d)\n", height);
|
||||
|
@ -577,7 +575,7 @@ STATUSBAR_SetMinHeight (STATUSWINDOWINFO *infoPtr, INT height)
|
|||
|
||||
|
||||
static BOOL
|
||||
STATUSBAR_SetParts (STATUSWINDOWINFO *infoPtr, INT count, LPINT parts)
|
||||
STATUSBAR_SetParts (STATUS_INFO *infoPtr, INT count, LPINT parts)
|
||||
{
|
||||
STATUSWINDOWPART *tmp;
|
||||
int i, oldNumParts;
|
||||
|
@ -647,7 +645,7 @@ STATUSBAR_SetParts (STATUSWINDOWINFO *infoPtr, INT count, LPINT parts)
|
|||
|
||||
|
||||
static BOOL
|
||||
STATUSBAR_SetTextT (STATUSWINDOWINFO *infoPtr, INT nPart, WORD style,
|
||||
STATUSBAR_SetTextT (STATUS_INFO *infoPtr, INT nPart, WORD style,
|
||||
LPCWSTR text, BOOL isW)
|
||||
{
|
||||
STATUSWINDOWPART *part=NULL;
|
||||
|
@ -715,7 +713,7 @@ STATUSBAR_SetTextT (STATUSWINDOWINFO *infoPtr, INT nPart, WORD style,
|
|||
|
||||
|
||||
static LRESULT
|
||||
STATUSBAR_SetTipTextA (STATUSWINDOWINFO *infoPtr, INT id, LPSTR text)
|
||||
STATUSBAR_SetTipTextA (STATUS_INFO *infoPtr, INT id, LPSTR text)
|
||||
{
|
||||
TRACE("part %d: \"%s\"\n", id, text);
|
||||
if (infoPtr->hwndToolTip) {
|
||||
|
@ -734,7 +732,7 @@ STATUSBAR_SetTipTextA (STATUSWINDOWINFO *infoPtr, INT id, LPSTR text)
|
|||
|
||||
|
||||
static LRESULT
|
||||
STATUSBAR_SetTipTextW (STATUSWINDOWINFO *infoPtr, INT id, LPWSTR text)
|
||||
STATUSBAR_SetTipTextW (STATUS_INFO *infoPtr, INT id, LPWSTR text)
|
||||
{
|
||||
TRACE("part %d: \"%s\"\n", id, debugstr_w(text));
|
||||
if (infoPtr->hwndToolTip) {
|
||||
|
@ -753,7 +751,7 @@ STATUSBAR_SetTipTextW (STATUSWINDOWINFO *infoPtr, INT id, LPWSTR text)
|
|||
|
||||
|
||||
inline static LRESULT
|
||||
STATUSBAR_SetUnicodeFormat (STATUSWINDOWINFO *infoPtr, BOOL bUnicode)
|
||||
STATUSBAR_SetUnicodeFormat (STATUS_INFO *infoPtr, BOOL bUnicode)
|
||||
{
|
||||
BOOL bOld = infoPtr->bUnicode;
|
||||
|
||||
|
@ -765,7 +763,7 @@ STATUSBAR_SetUnicodeFormat (STATUSWINDOWINFO *infoPtr, BOOL bUnicode)
|
|||
|
||||
|
||||
static BOOL
|
||||
STATUSBAR_Simple (STATUSWINDOWINFO *infoPtr, BOOL simple)
|
||||
STATUSBAR_Simple (STATUS_INFO *infoPtr, BOOL simple)
|
||||
{
|
||||
NMHDR nmhdr;
|
||||
|
||||
|
@ -786,7 +784,7 @@ STATUSBAR_Simple (STATUSWINDOWINFO *infoPtr, BOOL simple)
|
|||
|
||||
|
||||
static LRESULT
|
||||
STATUSBAR_WMDestroy (STATUSWINDOWINFO *infoPtr)
|
||||
STATUSBAR_WMDestroy (STATUS_INFO *infoPtr)
|
||||
{
|
||||
int i;
|
||||
|
||||
|
@ -816,7 +814,7 @@ STATUSBAR_WMDestroy (STATUSWINDOWINFO *infoPtr)
|
|||
static LRESULT
|
||||
STATUSBAR_WMCreate (HWND hwnd, LPCREATESTRUCTA lpCreate)
|
||||
{
|
||||
STATUSWINDOWINFO *infoPtr;
|
||||
STATUS_INFO *infoPtr;
|
||||
NONCLIENTMETRICSW nclm;
|
||||
DWORD dwStyle;
|
||||
RECT rect;
|
||||
|
@ -824,7 +822,7 @@ STATUSBAR_WMCreate (HWND hwnd, LPCREATESTRUCTA lpCreate)
|
|||
HDC hdc;
|
||||
|
||||
TRACE("\n");
|
||||
infoPtr = (STATUSWINDOWINFO*)Alloc (sizeof(STATUSWINDOWINFO));
|
||||
infoPtr = (STATUS_INFO*)Alloc (sizeof(STATUS_INFO));
|
||||
if (!infoPtr) goto create_fail;
|
||||
SetWindowLongPtrW (hwnd, 0, (DWORD_PTR)infoPtr);
|
||||
|
||||
|
@ -944,7 +942,7 @@ create_fail:
|
|||
/* in contrast to SB_GETTEXT*, WM_GETTEXT handles the text
|
||||
* of the first part only (usual behaviour) */
|
||||
static INT
|
||||
STATUSBAR_WMGetText (STATUSWINDOWINFO *infoPtr, INT size, LPWSTR buf)
|
||||
STATUSBAR_WMGetText (STATUS_INFO *infoPtr, INT size, LPWSTR buf)
|
||||
{
|
||||
INT len;
|
||||
|
||||
|
@ -970,7 +968,7 @@ STATUSBAR_WMGetText (STATUSWINDOWINFO *infoPtr, INT size, LPWSTR buf)
|
|||
|
||||
|
||||
static BOOL
|
||||
STATUSBAR_WMNCHitTest (STATUSWINDOWINFO *infoPtr, INT x, INT y)
|
||||
STATUSBAR_WMNCHitTest (STATUS_INFO *infoPtr, INT x, INT y)
|
||||
{
|
||||
if (GetWindowLongW (infoPtr->Self, GWL_STYLE) & SBARS_SIZEGRIP) {
|
||||
RECT rect;
|
||||
|
@ -994,7 +992,7 @@ STATUSBAR_WMNCHitTest (STATUSWINDOWINFO *infoPtr, INT x, INT y)
|
|||
|
||||
|
||||
static LRESULT
|
||||
STATUSBAR_WMPaint (STATUSWINDOWINFO *infoPtr, HDC hdc)
|
||||
STATUSBAR_WMPaint (STATUS_INFO *infoPtr, HDC hdc)
|
||||
{
|
||||
PAINTSTRUCT ps;
|
||||
|
||||
|
@ -1009,7 +1007,7 @@ STATUSBAR_WMPaint (STATUSWINDOWINFO *infoPtr, HDC hdc)
|
|||
|
||||
|
||||
static LRESULT
|
||||
STATUSBAR_WMSetFont (STATUSWINDOWINFO *infoPtr, HFONT font, BOOL redraw)
|
||||
STATUSBAR_WMSetFont (STATUS_INFO *infoPtr, HFONT font, BOOL redraw)
|
||||
{
|
||||
infoPtr->hFont = font;
|
||||
TRACE("%p\n", infoPtr->hFont);
|
||||
|
@ -1021,7 +1019,7 @@ STATUSBAR_WMSetFont (STATUSWINDOWINFO *infoPtr, HFONT font, BOOL redraw)
|
|||
|
||||
|
||||
static BOOL
|
||||
STATUSBAR_WMSetText (STATUSWINDOWINFO *infoPtr, LPCSTR text)
|
||||
STATUSBAR_WMSetText (STATUS_INFO *infoPtr, LPCSTR text)
|
||||
{
|
||||
STATUSWINDOWPART *part;
|
||||
int len;
|
||||
|
@ -1058,7 +1056,7 @@ STATUSBAR_WMSetText (STATUSWINDOWINFO *infoPtr, LPCSTR text)
|
|||
|
||||
|
||||
static BOOL
|
||||
STATUSBAR_WMSize (STATUSWINDOWINFO *infoPtr, WORD flags)
|
||||
STATUSBAR_WMSize (STATUS_INFO *infoPtr, WORD flags)
|
||||
{
|
||||
INT width, x, y;
|
||||
RECT parent_rect;
|
||||
|
@ -1088,7 +1086,7 @@ STATUSBAR_WMSize (STATUSWINDOWINFO *infoPtr, WORD flags)
|
|||
|
||||
|
||||
static LRESULT
|
||||
STATUSBAR_NotifyFormat (STATUSWINDOWINFO *infoPtr, HWND from, INT cmd)
|
||||
STATUSBAR_NotifyFormat (STATUS_INFO *infoPtr, HWND from, INT cmd)
|
||||
{
|
||||
if (cmd == NF_REQUERY) {
|
||||
INT i = SendMessageW(from, WM_NOTIFYFORMAT, (WPARAM)infoPtr->Self, NF_QUERY);
|
||||
|
@ -1099,14 +1097,13 @@ STATUSBAR_NotifyFormat (STATUSWINDOWINFO *infoPtr, HWND from, INT cmd)
|
|||
|
||||
|
||||
static LRESULT
|
||||
STATUSBAR_SendNotify (HWND hwnd, UINT code)
|
||||
STATUSBAR_SendNotify (STATUS_INFO *infoPtr, UINT code)
|
||||
{
|
||||
STATUSWINDOWINFO *infoPtr = STATUSBAR_GetInfoPtr(hwnd);
|
||||
NMHDR nmhdr;
|
||||
|
||||
TRACE("code %04x\n", code);
|
||||
nmhdr.hwndFrom = hwnd;
|
||||
nmhdr.idFrom = GetWindowLongPtrW (hwnd, GWLP_ID);
|
||||
nmhdr.hwndFrom = infoPtr->Self;
|
||||
nmhdr.idFrom = GetWindowLongPtrW (infoPtr->Self, GWLP_ID);
|
||||
nmhdr.code = code;
|
||||
SendMessageW (infoPtr->Notify, WM_NOTIFY, 0, (LPARAM)&nmhdr);
|
||||
return 0;
|
||||
|
@ -1117,7 +1114,7 @@ STATUSBAR_SendNotify (HWND hwnd, UINT code)
|
|||
static LRESULT WINAPI
|
||||
StatusWindowProc (HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
|
||||
{
|
||||
STATUSWINDOWINFO *infoPtr = STATUSBAR_GetInfoPtr(hwnd);
|
||||
STATUS_INFO *infoPtr = (STATUS_INFO *)GetWindowLongPtrW (hwnd, 0);
|
||||
INT nPart = ((INT) wParam) & 0x00ff;
|
||||
LRESULT res;
|
||||
|
||||
|
@ -1206,10 +1203,10 @@ StatusWindowProc (HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
|
|||
return STATUSBAR_GetTextLength (infoPtr, 0);
|
||||
|
||||
case WM_LBUTTONDBLCLK:
|
||||
return STATUSBAR_SendNotify (hwnd, NM_DBLCLK);
|
||||
return STATUSBAR_SendNotify (infoPtr, NM_DBLCLK);
|
||||
|
||||
case WM_LBUTTONUP:
|
||||
return STATUSBAR_SendNotify (hwnd, NM_CLICK);
|
||||
return STATUSBAR_SendNotify (infoPtr, NM_CLICK);
|
||||
|
||||
case WM_MOUSEMOVE:
|
||||
return STATUSBAR_Relay2Tip (infoPtr, msg, wParam, lParam);
|
||||
|
@ -1232,10 +1229,10 @@ StatusWindowProc (HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
|
|||
return STATUSBAR_WMPaint (infoPtr, (HDC)wParam);
|
||||
|
||||
case WM_RBUTTONDBLCLK:
|
||||
return STATUSBAR_SendNotify (hwnd, NM_RDBLCLK);
|
||||
return STATUSBAR_SendNotify (infoPtr, NM_RDBLCLK);
|
||||
|
||||
case WM_RBUTTONUP:
|
||||
return STATUSBAR_SendNotify (hwnd, NM_RCLICK);
|
||||
return STATUSBAR_SendNotify (infoPtr, NM_RCLICK);
|
||||
|
||||
case WM_SETFONT:
|
||||
return STATUSBAR_WMSetFont (infoPtr, (HFONT)wParam, LOWORD(lParam));
|
||||
|
@ -1272,7 +1269,7 @@ STATUS_Register (void)
|
|||
wndClass.style = CS_GLOBALCLASS | CS_DBLCLKS | CS_VREDRAW;
|
||||
wndClass.lpfnWndProc = StatusWindowProc;
|
||||
wndClass.cbClsExtra = 0;
|
||||
wndClass.cbWndExtra = sizeof(STATUSWINDOWINFO *);
|
||||
wndClass.cbWndExtra = sizeof(STATUS_INFO *);
|
||||
wndClass.hCursor = LoadCursorW (0, (LPWSTR)IDC_ARROW);
|
||||
wndClass.hbrBackground = (HBRUSH)(COLOR_BTNFACE + 1);
|
||||
wndClass.lpszClassName = STATUSCLASSNAMEW;
|
||||
|
|
|
@ -1478,12 +1478,10 @@ static LRESULT WINAPI SysLinkWindowProc(HWND hwnd, UINT message,
|
|||
case WM_SETCURSOR:
|
||||
{
|
||||
LHITTESTINFO ht;
|
||||
POINTS pt;
|
||||
DWORD mp = GetMessagePos();
|
||||
|
||||
pt = MAKEPOINTS(mp);
|
||||
ht.pt.x = pt.x;
|
||||
ht.pt.y = pt.y;
|
||||
ht.pt.x = (short)LOWORD(mp);
|
||||
ht.pt.y = (short)HIWORD(mp);
|
||||
|
||||
ScreenToClient(infoPtr->Self, &ht.pt);
|
||||
if(SYSLINK_HitTest (infoPtr, &ht))
|
||||
|
@ -1662,7 +1660,7 @@ VOID SYSLINK_Register (void)
|
|||
|
||||
ZeroMemory (&wndClass, sizeof(wndClass));
|
||||
wndClass.style = CS_GLOBALCLASS | CS_VREDRAW | CS_HREDRAW;
|
||||
wndClass.lpfnWndProc = (WNDPROC)SysLinkWindowProc;
|
||||
wndClass.lpfnWndProc = SysLinkWindowProc;
|
||||
wndClass.cbClsExtra = 0;
|
||||
wndClass.cbWndExtra = sizeof (SYSLINK_INFO *);
|
||||
wndClass.hCursor = LoadCursorW (0, (LPWSTR)IDC_ARROW);
|
||||
|
|
|
@ -1659,8 +1659,7 @@ TAB_DrawItemInterior
|
|||
dis.hwndItem = hwnd; /* */
|
||||
dis.hDC = hdc;
|
||||
CopyRect(&dis.rcItem,drawRect);
|
||||
dis.itemData = 0;
|
||||
memcpy( &dis.itemData, TAB_GetItem(infoPtr, iItem)->extra, min(sizeof(dis.itemData),infoPtr->cbInfo) );
|
||||
dis.itemData = (ULONG_PTR)TAB_GetItem(infoPtr, iItem)->extra;
|
||||
|
||||
/*
|
||||
* send the draw message
|
||||
|
|
|
@ -47,11 +47,11 @@
|
|||
* - TB_INSERTMARKHITTEST
|
||||
* - TB_SAVERESTORE
|
||||
* - TB_SETMETRICS
|
||||
* - WM_WININICHANGE
|
||||
* - Notifications:
|
||||
* - NM_CHAR
|
||||
* - NM_KEYDOWN
|
||||
* - TBN_GETOBJECT
|
||||
* - TBN_RESTORE
|
||||
* - TBN_SAVE
|
||||
* - Button wrapping (under construction).
|
||||
* - Fix TB_SETROWS.
|
||||
|
@ -73,6 +73,7 @@
|
|||
|
||||
#include "windef.h"
|
||||
#include "winbase.h"
|
||||
#include "winreg.h"
|
||||
#include "wingdi.h"
|
||||
#include "winuser.h"
|
||||
#include "wine/unicode.h"
|
||||
|
@ -157,10 +158,9 @@ typedef struct
|
|||
BOOL bBtnTranspnt; /* button transparency flag */
|
||||
BOOL bAutoSize; /* auto size deadlock indicator */
|
||||
BOOL bAnchor; /* anchor highlight enabled */
|
||||
BOOL bNtfUnicode; /* TRUE if NOTIFYs use {W} */
|
||||
BOOL bDoRedraw; /* Redraw status */
|
||||
BOOL bDragOutSent; /* has TBN_DRAGOUT notification been sent for this drag? */
|
||||
BOOL bUnicode; /* ASCII (FALSE) or Unicode (TRUE)? */
|
||||
BOOL bUnicode; /* Notifications are ASCII (FALSE) or Unicode (TRUE)? */
|
||||
BOOL bCaptured; /* mouse captured? */
|
||||
DWORD dwStyle; /* regular toolbar style */
|
||||
DWORD dwExStyle; /* extended toolbar style */
|
||||
|
@ -208,6 +208,9 @@ typedef enum
|
|||
#define ARROW_HEIGHT 3
|
||||
#define INSERTMARK_WIDTH 2
|
||||
|
||||
#define DEFPAD_CX 7
|
||||
#define DEFPAD_CY 6
|
||||
|
||||
/* gap between border of button and text/image */
|
||||
#define OFFSET_X 1
|
||||
#define OFFSET_Y 1
|
||||
|
@ -231,6 +234,10 @@ static inline int TOOLBAR_GetListTextOffset(TOOLBAR_INFO *infoPtr, INT iListGap)
|
|||
TBSTYLE_EX_MIXEDBUTTONS | \
|
||||
TBSTYLE_EX_HIDECLIPPEDBUTTONS)
|
||||
|
||||
/* all of the CCS_ styles */
|
||||
#define COMMON_STYLES (CCS_TOP|CCS_NOMOVEY|CCS_BOTTOM|CCS_NORESIZE| \
|
||||
CCS_NOPARENTALIGN|CCS_ADJUSTABLE|CCS_NODIVIDER|CCS_VERT)
|
||||
|
||||
#define GETIBITMAP(infoPtr, i) (infoPtr->iVersion >= 5 ? LOWORD(i) : i)
|
||||
#define GETHIMLID(infoPtr, i) (infoPtr->iVersion >= 5 ? HIWORD(i) : 0)
|
||||
#define GETDEFIMAGELIST(infoPtr, id) TOOLBAR_GetImageList(infoPtr->himlDef, infoPtr->cimlDef, id)
|
||||
|
@ -329,14 +336,10 @@ TOOLBAR_SendNotify (NMHDR *nmhdr, TOOLBAR_INFO *infoPtr, UINT code)
|
|||
nmhdr->code = code;
|
||||
|
||||
TRACE("to window %p, code=%08x, %s\n", infoPtr->hwndNotify, code,
|
||||
(infoPtr->bNtfUnicode) ? "via Unicode" : "via ANSI");
|
||||
(infoPtr->bUnicode) ? "via Unicode" : "via ANSI");
|
||||
|
||||
if (infoPtr->bNtfUnicode)
|
||||
return SendMessageW(infoPtr->hwndNotify, WM_NOTIFY,
|
||||
(WPARAM)nmhdr->idFrom, (LPARAM)nmhdr);
|
||||
else
|
||||
return SendMessageA (infoPtr->hwndNotify, WM_NOTIFY,
|
||||
(WPARAM) nmhdr->idFrom, (LPARAM)nmhdr);
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
|
@ -351,19 +354,19 @@ TOOLBAR_GetBitmapIndex(TOOLBAR_INFO *infoPtr, TBUTTON_INFO *btnPtr)
|
|||
{
|
||||
INT ret = btnPtr->iBitmap;
|
||||
|
||||
if (ret == I_IMAGECALLBACK) {
|
||||
if (ret == I_IMAGECALLBACK)
|
||||
{
|
||||
/* issue TBN_GETDISPINFO */
|
||||
NMTBDISPINFOA nmgd;
|
||||
|
||||
memset(&nmgd, 0, sizeof(nmgd));
|
||||
nmgd.idCommand = btnPtr->idCommand;
|
||||
nmgd.lParam = btnPtr->dwData;
|
||||
nmgd.dwMask = TBNF_IMAGE;
|
||||
TOOLBAR_SendNotify ((NMHDR *) &nmgd, infoPtr,
|
||||
(infoPtr->bNtfUnicode) ? TBN_GETDISPINFOW :
|
||||
TBN_GETDISPINFOA);
|
||||
if (nmgd.dwMask & TBNF_DI_SETITEM) {
|
||||
TOOLBAR_SendNotify(&nmgd.hdr, infoPtr,
|
||||
infoPtr->bUnicode ? TBN_GETDISPINFOW : TBN_GETDISPINFOA);
|
||||
if (nmgd.dwMask & TBNF_DI_SETITEM)
|
||||
btnPtr->iBitmap = nmgd.iImage;
|
||||
}
|
||||
ret = nmgd.iImage;
|
||||
TRACE("TBN_GETDISPINFO returned bitmap id %d, mask=%08lx, nNumBitmaps=%d\n",
|
||||
ret, nmgd.dwMask, infoPtr->nNumBitmaps);
|
||||
|
@ -707,7 +710,7 @@ TOOLBAR_DrawImage(TOOLBAR_INFO *infoPtr, TBUTTON_INFO *btnPtr, INT left, INT top
|
|||
BOOL draw_masked = FALSE;
|
||||
INT index;
|
||||
INT offset = 0;
|
||||
UINT draw_flags = ILD_NORMAL;
|
||||
UINT draw_flags = ILD_TRANSPARENT;
|
||||
|
||||
if (tbcd->nmcd.uItemState & (CDIS_DISABLED | CDIS_INDETERMINATE))
|
||||
{
|
||||
|
@ -868,12 +871,12 @@ TOOLBAR_DrawButton (HWND hwnd, TBUTTON_INFO *btnPtr, HDC hdc)
|
|||
|
||||
/* Center the bitmap horizontally and vertically */
|
||||
if (dwStyle & TBSTYLE_LIST)
|
||||
rcBitmap.left += GetSystemMetrics(SM_CXEDGE) + OFFSET_X;
|
||||
rcBitmap.left += GetSystemMetrics(SM_CXEDGE);
|
||||
else
|
||||
rcBitmap.left+=(infoPtr->nButtonWidth - infoPtr->nBitmapWidth) / 2;
|
||||
|
||||
if(lpText)
|
||||
rcBitmap.top+= GetSystemMetrics(SM_CYEDGE) + OFFSET_Y;
|
||||
rcBitmap.top+= GetSystemMetrics(SM_CYEDGE);
|
||||
else
|
||||
rcBitmap.top+=(infoPtr->nButtonHeight - infoPtr->nBitmapHeight) / 2;
|
||||
|
||||
|
@ -942,7 +945,7 @@ TOOLBAR_DrawButton (HWND hwnd, TBUTTON_INFO *btnPtr, HDC hdc)
|
|||
tbcd.nmcd.dwDrawStage = CDDS_ITEMPREPAINT;
|
||||
tbcd.nmcd.dwItemSpec = btnPtr->idCommand;
|
||||
tbcd.nmcd.lItemlParam = btnPtr->dwData;
|
||||
ntfret = TOOLBAR_SendNotify ((NMHDR *)&tbcd, infoPtr, NM_CUSTOMDRAW);
|
||||
ntfret = TOOLBAR_SendNotify(&tbcd.nmcd.hdr, infoPtr, NM_CUSTOMDRAW);
|
||||
/* reset these fields so the user can't alter the behaviour like native */
|
||||
tbcd.nmcd.hdc = hdc;
|
||||
tbcd.nmcd.rc = rc;
|
||||
|
@ -1032,7 +1035,7 @@ FINALNOTIFY:
|
|||
tbcd.rcText = rcText;
|
||||
tbcd.nStringBkMode = (infoPtr->bBtnTranspnt) ? TRANSPARENT : OPAQUE;
|
||||
tbcd.nHLStringBkMode = (infoPtr->bBtnTranspnt) ? TRANSPARENT : OPAQUE;
|
||||
ntfret = TOOLBAR_SendNotify ((NMHDR *)&tbcd, infoPtr, NM_CUSTOMDRAW);
|
||||
ntfret = TOOLBAR_SendNotify(&tbcd.nmcd.hdr, infoPtr, NM_CUSTOMDRAW);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -1068,7 +1071,7 @@ TOOLBAR_Refresh (HWND hwnd, HDC hdc, PAINTSTRUCT* ps)
|
|||
tbcd.nmcd.dwDrawStage = CDDS_PREPAINT;
|
||||
tbcd.nmcd.hdc = hdc;
|
||||
tbcd.nmcd.rc = ps->rcPaint;
|
||||
ntfret = TOOLBAR_SendNotify ((NMHDR *)&tbcd, infoPtr, NM_CUSTOMDRAW);
|
||||
ntfret = TOOLBAR_SendNotify(&tbcd.nmcd.hdr, infoPtr, NM_CUSTOMDRAW);
|
||||
infoPtr->dwBaseCustDraw = ntfret & 0xffff;
|
||||
|
||||
if (infoPtr->bBtnTranspnt)
|
||||
|
@ -1117,7 +1120,7 @@ TOOLBAR_Refresh (HWND hwnd, HDC hdc, PAINTSTRUCT* ps)
|
|||
tbcd.nmcd.dwDrawStage = CDDS_POSTPAINT;
|
||||
tbcd.nmcd.hdc = hdc;
|
||||
tbcd.nmcd.rc = ps->rcPaint;
|
||||
ntfret = TOOLBAR_SendNotify ((NMHDR *)&tbcd, infoPtr, NM_CUSTOMDRAW);
|
||||
ntfret = TOOLBAR_SendNotify(&tbcd.nmcd.hdr, infoPtr, NM_CUSTOMDRAW);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1804,7 +1807,7 @@ static void TOOLBAR_Cust_MoveButton(PCUSTDLG_INFO custInfo, HWND hwnd, INT nInde
|
|||
/* MSDN states that iItem is the index of the button, rather than the
|
||||
* command ID as used by every other NMTOOLBAR notification */
|
||||
nmtb.iItem = nIndexFrom;
|
||||
if (TOOLBAR_SendNotify((NMHDR *)&nmtb, custInfo->tbInfo, TBN_QUERYINSERT))
|
||||
if (TOOLBAR_SendNotify(&nmtb.hdr, custInfo->tbInfo, TBN_QUERYINSERT))
|
||||
{
|
||||
PCUSTOMBUTTON btnInfo;
|
||||
NMHDR hdr;
|
||||
|
@ -1845,7 +1848,7 @@ static void TOOLBAR_Cust_AddButton(PCUSTDLG_INFO custInfo, HWND hwnd, INT nIndex
|
|||
/* MSDN states that iItem is the index of the button, rather than the
|
||||
* command ID as used by every other NMTOOLBAR notification */
|
||||
nmtb.iItem = nIndexAvail;
|
||||
if (TOOLBAR_SendNotify((NMHDR *)&nmtb, custInfo->tbInfo, TBN_QUERYINSERT))
|
||||
if (TOOLBAR_SendNotify(&nmtb.hdr, custInfo->tbInfo, TBN_QUERYINSERT))
|
||||
{
|
||||
PCUSTOMBUTTON btnInfo;
|
||||
NMHDR hdr;
|
||||
|
@ -2074,10 +2077,11 @@ TOOLBAR_CustomizeDialogProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
|||
/* send TBN_QUERYINSERT notification */
|
||||
nmtb.iItem = custInfo->tbInfo->nNumButtons;
|
||||
|
||||
if (!TOOLBAR_SendNotify ((NMHDR *) &nmtb, infoPtr, TBN_QUERYINSERT))
|
||||
if (!TOOLBAR_SendNotify(&nmtb.hdr, infoPtr, TBN_QUERYINSERT))
|
||||
return FALSE;
|
||||
|
||||
/* UNDOCUMENTED: dialog hwnd immediately follows NMHDR */
|
||||
/* FIXME: this hack won't work on 64-bit - we need to declare a structure for this */
|
||||
nmtb.iItem = (int)hwnd;
|
||||
/* Send TBN_INITCUSTOMIZE notification */
|
||||
if (TOOLBAR_SendNotify ((NMHDR *) &nmtb, infoPtr, TBN_INITCUSTOMIZE) ==
|
||||
|
@ -2222,8 +2226,7 @@ TOOLBAR_CustomizeDialogProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
|||
|
||||
/* send TBN_QUERYINSERT notification */
|
||||
nmtb.iItem = index;
|
||||
TOOLBAR_SendNotify ((NMHDR *) &nmtb, infoPtr,
|
||||
TBN_QUERYINSERT);
|
||||
TOOLBAR_SendNotify(&nmtb.hdr, infoPtr, TBN_QUERYINSERT);
|
||||
|
||||
/* get list box item */
|
||||
btnInfo = (PCUSTOMBUTTON)SendDlgItemMessageW (hwnd, IDC_TOOLBARBTN_LBOX, LB_GETITEMDATA, index, 0);
|
||||
|
@ -3029,7 +3032,7 @@ TOOLBAR_AutoSize (HWND hwnd)
|
|||
{
|
||||
x = y = 1;
|
||||
cy += GetSystemMetrics(SM_CYEDGE);
|
||||
cx += GetSystemMetrics(SM_CYEDGE);
|
||||
cx += GetSystemMetrics(SM_CXEDGE);
|
||||
}
|
||||
|
||||
infoPtr->bAutoSize = TRUE;
|
||||
|
@ -3056,12 +3059,6 @@ TOOLBAR_ButtonStructSize (HWND hwnd, WPARAM wParam, LPARAM lParam)
|
|||
{
|
||||
TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr (hwnd);
|
||||
|
||||
if (infoPtr == NULL) {
|
||||
ERR("(%p, 0x%x, 0x%lx)\n", hwnd, wParam, lParam);
|
||||
ERR("infoPtr == NULL!\n");
|
||||
return 0;
|
||||
}
|
||||
|
||||
infoPtr->dwStructSize = (DWORD)wParam;
|
||||
|
||||
return 0;
|
||||
|
@ -3162,8 +3159,7 @@ TOOLBAR_Customize (HWND hwnd)
|
|||
custInfo.tbHwnd = hwnd;
|
||||
|
||||
/* send TBN_BEGINADJUST notification */
|
||||
TOOLBAR_SendNotify ((NMHDR *) &nmhdr, infoPtr,
|
||||
TBN_BEGINADJUST);
|
||||
TOOLBAR_SendNotify (&nmhdr, infoPtr, TBN_BEGINADJUST);
|
||||
|
||||
if (!(hRes = FindResourceW (COMCTL32_hModule,
|
||||
MAKEINTRESOURCEW(IDD_TBCUSTOMIZE),
|
||||
|
@ -3180,8 +3176,7 @@ TOOLBAR_Customize (HWND hwnd)
|
|||
(LPARAM)&custInfo);
|
||||
|
||||
/* send TBN_ENDADJUST notification */
|
||||
TOOLBAR_SendNotify ((NMHDR *) &nmhdr, infoPtr,
|
||||
TBN_ENDADJUST);
|
||||
TOOLBAR_SendNotify (&nmhdr, infoPtr, TBN_ENDADJUST);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
@ -3206,7 +3201,7 @@ TOOLBAR_DeleteButton (HWND hwnd, WPARAM wParam, LPARAM lParam)
|
|||
nmtb.tbButton.fsStyle = btnPtr->fsStyle;
|
||||
nmtb.tbButton.dwData = btnPtr->dwData;
|
||||
nmtb.tbButton.iString = btnPtr->iString;
|
||||
TOOLBAR_SendNotify((NMHDR *)&nmtb, infoPtr, TBN_DELETINGBUTTON);
|
||||
TOOLBAR_SendNotify(&nmtb.hdr, infoPtr, TBN_DELETINGBUTTON);
|
||||
|
||||
if ((infoPtr->hwndToolTip) &&
|
||||
!(btnPtr->fsStyle & BTNS_SEP)) {
|
||||
|
@ -3325,9 +3320,6 @@ TOOLBAR_GetButton (HWND hwnd, WPARAM wParam, LPARAM lParam)
|
|||
INT nIndex = (INT)wParam;
|
||||
TBUTTON_INFO *btnPtr;
|
||||
|
||||
if (infoPtr == NULL)
|
||||
return FALSE;
|
||||
|
||||
if (lpTbb == NULL)
|
||||
return FALSE;
|
||||
|
||||
|
@ -3356,8 +3348,6 @@ TOOLBAR_GetButtonInfoA (HWND hwnd, WPARAM wParam, LPARAM lParam)
|
|||
TBUTTON_INFO *btnPtr;
|
||||
INT nIndex;
|
||||
|
||||
if (infoPtr == NULL)
|
||||
return -1;
|
||||
if (lpTbInfo == NULL)
|
||||
return -1;
|
||||
if (lpTbInfo->cbSize < sizeof(TBBUTTONINFOA))
|
||||
|
@ -3404,8 +3394,6 @@ TOOLBAR_GetButtonInfoW (HWND hwnd, WPARAM wParam, LPARAM lParam)
|
|||
TBUTTON_INFO *btnPtr;
|
||||
INT nIndex;
|
||||
|
||||
if (infoPtr == NULL)
|
||||
return -1;
|
||||
if (lpTbInfo == NULL)
|
||||
return -1;
|
||||
if (lpTbInfo->cbSize < sizeof(TBBUTTONINFOW))
|
||||
|
@ -3594,8 +3582,6 @@ TOOLBAR_GetItemRect (HWND hwnd, WPARAM wParam, LPARAM lParam)
|
|||
LPRECT lpRect;
|
||||
INT nIndex;
|
||||
|
||||
if (infoPtr == NULL)
|
||||
return FALSE;
|
||||
nIndex = (INT)wParam;
|
||||
btnPtr = &infoPtr->buttons[nIndex];
|
||||
if ((nIndex < 0) || (nIndex >= infoPtr->nNumButtons))
|
||||
|
@ -3657,8 +3643,6 @@ TOOLBAR_GetRect (HWND hwnd, WPARAM wParam, LPARAM lParam)
|
|||
LPRECT lpRect;
|
||||
INT nIndex;
|
||||
|
||||
if (infoPtr == NULL)
|
||||
return FALSE;
|
||||
nIndex = TOOLBAR_GetButtonIndex (infoPtr, (INT)wParam, FALSE);
|
||||
btnPtr = &infoPtr->buttons[nIndex];
|
||||
if ((nIndex < 0) || (nIndex >= infoPtr->nNumButtons))
|
||||
|
@ -3714,9 +3698,6 @@ TOOLBAR_GetTextRows (HWND hwnd, WPARAM wParam, LPARAM lParam)
|
|||
{
|
||||
TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr (hwnd);
|
||||
|
||||
if (infoPtr == NULL)
|
||||
return 0;
|
||||
|
||||
return infoPtr->nMaxTextRows;
|
||||
}
|
||||
|
||||
|
@ -3726,8 +3707,6 @@ TOOLBAR_GetToolTips (HWND hwnd, WPARAM wParam, LPARAM lParam)
|
|||
{
|
||||
TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr (hwnd);
|
||||
|
||||
if (infoPtr == NULL)
|
||||
return 0;
|
||||
return (LRESULT)infoPtr->hwndToolTip;
|
||||
}
|
||||
|
||||
|
@ -4385,64 +4364,184 @@ TOOLBAR_ReplaceBitmap (HWND hwnd, WPARAM wParam, LPARAM lParam)
|
|||
return TRUE;
|
||||
}
|
||||
|
||||
static LRESULT
|
||||
TOOLBAR_SaveRestoreA (HWND hwnd, WPARAM wParam, LPARAM lParam)
|
||||
|
||||
/* helper for TOOLBAR_SaveRestoreW */
|
||||
static BOOL
|
||||
TOOLBAR_Save(TOOLBAR_INFO *infoPtr, LPTBSAVEPARAMSW lpSave)
|
||||
{
|
||||
FIXME("save to %s %s\n", debugstr_w(lpSave->pszSubKey),
|
||||
debugstr_w(lpSave->pszValueName));
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
|
||||
/* helper for TOOLBAR_Restore */
|
||||
static void
|
||||
TOOLBAR_DeleteAllButtons(TOOLBAR_INFO *infoPtr)
|
||||
{
|
||||
INT i;
|
||||
TTTOOLINFOW ti;
|
||||
|
||||
ZeroMemory(&ti, sizeof(ti));
|
||||
ti.cbSize = sizeof(ti);
|
||||
ti.hwnd = infoPtr->hwndSelf;
|
||||
|
||||
for (i = 0; i < infoPtr->nNumButtons; i++)
|
||||
{
|
||||
if ((infoPtr->hwndToolTip) &&
|
||||
!(infoPtr->buttons[i].fsStyle & BTNS_SEP))
|
||||
{
|
||||
ti.uId = infoPtr->buttons[i].idCommand;
|
||||
SendMessageW(infoPtr->hwndToolTip, TTM_DELTOOLW, 0, (LPARAM)&ti);
|
||||
}
|
||||
}
|
||||
|
||||
Free(infoPtr->buttons);
|
||||
infoPtr->buttons = NULL;
|
||||
infoPtr->nNumButtons = 0;
|
||||
}
|
||||
|
||||
|
||||
/* helper for TOOLBAR_SaveRestoreW */
|
||||
static BOOL
|
||||
TOOLBAR_Restore(TOOLBAR_INFO *infoPtr, LPTBSAVEPARAMSW lpSave)
|
||||
{
|
||||
LONG res;
|
||||
HKEY hkey = NULL;
|
||||
BOOL ret = FALSE;
|
||||
DWORD dwType;
|
||||
DWORD dwSize = 0;
|
||||
NMTBRESTORE nmtbr;
|
||||
|
||||
/* restore toolbar information */
|
||||
TRACE("restore from %s %s\n", debugstr_w(lpSave->pszSubKey),
|
||||
debugstr_w(lpSave->pszValueName));
|
||||
|
||||
memset(&nmtbr, 0, sizeof(nmtbr));
|
||||
|
||||
res = RegOpenKeyExW(lpSave->hkr, lpSave->pszSubKey, 0,
|
||||
KEY_QUERY_VALUE, &hkey);
|
||||
if (!res)
|
||||
res = RegQueryValueExW(hkey, lpSave->pszValueName, NULL, &dwType,
|
||||
NULL, &dwSize);
|
||||
if (!res && dwType != REG_BINARY)
|
||||
res = ERROR_FILE_NOT_FOUND;
|
||||
if (!res)
|
||||
{
|
||||
nmtbr.pData = HeapAlloc(GetProcessHeap(), 0, dwSize);
|
||||
nmtbr.cbData = (UINT)dwSize;
|
||||
if (!nmtbr.pData) res = ERROR_OUTOFMEMORY;
|
||||
}
|
||||
if (!res)
|
||||
res = RegQueryValueExW(hkey, lpSave->pszValueName, NULL, &dwType,
|
||||
(LPBYTE)nmtbr.pData, &dwSize);
|
||||
if (!res)
|
||||
{
|
||||
nmtbr.pCurrent = nmtbr.pData;
|
||||
nmtbr.iItem = -1;
|
||||
nmtbr.cbBytesPerRecord = sizeof(DWORD);
|
||||
nmtbr.cButtons = nmtbr.cbData / nmtbr.cbBytesPerRecord;
|
||||
|
||||
if (!TOOLBAR_SendNotify(&nmtbr.hdr, infoPtr, TBN_RESTORE))
|
||||
{
|
||||
INT i;
|
||||
|
||||
/* remove all existing buttons as this function is designed to
|
||||
* restore the toolbar to a previously saved state */
|
||||
TOOLBAR_DeleteAllButtons(infoPtr);
|
||||
|
||||
for (i = 0; i < nmtbr.cButtons; i++)
|
||||
{
|
||||
nmtbr.iItem = i;
|
||||
nmtbr.tbButton.iBitmap = -1;
|
||||
nmtbr.tbButton.fsState = 0;
|
||||
nmtbr.tbButton.fsStyle = 0;
|
||||
nmtbr.tbButton.idCommand = 0;
|
||||
if (*nmtbr.pCurrent == (DWORD)-1)
|
||||
{
|
||||
/* separator */
|
||||
nmtbr.tbButton.fsStyle = TBSTYLE_SEP;
|
||||
nmtbr.tbButton.iBitmap = SEPARATOR_WIDTH;
|
||||
}
|
||||
else if (*nmtbr.pCurrent == (DWORD)-2)
|
||||
/* hidden button */
|
||||
nmtbr.tbButton.fsState = TBSTATE_HIDDEN;
|
||||
else
|
||||
nmtbr.tbButton.idCommand = (int)*nmtbr.pCurrent;
|
||||
|
||||
nmtbr.pCurrent++;
|
||||
|
||||
TOOLBAR_SendNotify(&nmtbr.hdr, infoPtr, TBN_RESTORE);
|
||||
|
||||
/* can't contain real string as we don't know whether
|
||||
* the client put an ANSI or Unicode string in there */
|
||||
if (HIWORD(nmtbr.tbButton.iString))
|
||||
nmtbr.tbButton.iString = 0;
|
||||
|
||||
TOOLBAR_InsertButtonW(infoPtr->hwndSelf, -1,
|
||||
(LPARAM)&nmtbr.tbButton);
|
||||
}
|
||||
|
||||
/* do legacy notifications */
|
||||
if (infoPtr->iVersion < 5)
|
||||
{
|
||||
/* FIXME: send TBN_BEGINADJUST */
|
||||
FIXME("send TBN_GETBUTTONINFO for each button\n");
|
||||
/* FIXME: send TBN_ENDADJUST */
|
||||
}
|
||||
|
||||
/* remove all uninitialised buttons
|
||||
* note: loop backwards to avoid having to fixup i on a
|
||||
* delete */
|
||||
for (i = infoPtr->nNumButtons - 1; i >= 0; i--)
|
||||
if (infoPtr->buttons[i].iBitmap == -1)
|
||||
TOOLBAR_DeleteButton(infoPtr->hwndSelf, i, 0);
|
||||
|
||||
/* only indicate success if at least one button survived */
|
||||
if (infoPtr->nNumButtons > 0) ret = TRUE;
|
||||
}
|
||||
}
|
||||
HeapFree(GetProcessHeap(), 0, nmtbr.pData);
|
||||
RegCloseKey(hkey);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
static LRESULT
|
||||
TOOLBAR_SaveRestoreW (HWND hwnd, WPARAM wParam, LPTBSAVEPARAMSW lpSave)
|
||||
{
|
||||
#if 0
|
||||
TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr (hwnd);
|
||||
LPTBSAVEPARAMSA lpSave = (LPTBSAVEPARAMSA)lParam;
|
||||
|
||||
if (lpSave == NULL) return 0;
|
||||
|
||||
if ((BOOL)wParam) {
|
||||
/* save toolbar information */
|
||||
FIXME("save to \"%s\" \"%s\"\n",
|
||||
lpSave->pszSubKey, lpSave->pszValueName);
|
||||
|
||||
|
||||
}
|
||||
else {
|
||||
/* restore toolbar information */
|
||||
|
||||
FIXME("restore from \"%s\" \"%s\"\n",
|
||||
lpSave->pszSubKey, lpSave->pszValueName);
|
||||
|
||||
|
||||
}
|
||||
#endif
|
||||
|
||||
return 0;
|
||||
if (wParam)
|
||||
return TOOLBAR_Save(infoPtr, lpSave);
|
||||
else
|
||||
return TOOLBAR_Restore(infoPtr, lpSave);
|
||||
}
|
||||
|
||||
|
||||
static LRESULT
|
||||
TOOLBAR_SaveRestoreW (HWND hwnd, WPARAM wParam, LPARAM lParam)
|
||||
TOOLBAR_SaveRestoreA (HWND hwnd, WPARAM wParam, LPTBSAVEPARAMSA lpSave)
|
||||
{
|
||||
#if 0
|
||||
TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr (hwnd);
|
||||
LPTBSAVEPARAMSW lpSave = (LPTBSAVEPARAMSW)lParam;
|
||||
TBSAVEPARAMSW SaveW;
|
||||
int len;
|
||||
|
||||
if (lpSave == NULL)
|
||||
return 0;
|
||||
if (lpSave == NULL) return 0;
|
||||
|
||||
if ((BOOL)wParam) {
|
||||
/* save toolbar information */
|
||||
FIXME("save to \"%s\" \"%s\"\n",
|
||||
lpSave->pszSubKey, lpSave->pszValueName);
|
||||
SaveW.hkr = lpSave->hkr;
|
||||
|
||||
len = MultiByteToWideChar(CP_ACP, 0, lpSave->pszSubKey, -1, NULL, 0);
|
||||
SaveW.pszSubKey = HeapAlloc(GetProcessHeap(), 0, len * sizeof(WCHAR));
|
||||
MultiByteToWideChar(CP_ACP, 0, lpSave->pszSubKey, -1, (LPWSTR)SaveW.pszSubKey, len);
|
||||
|
||||
}
|
||||
else {
|
||||
/* restore toolbar information */
|
||||
len = MultiByteToWideChar(CP_ACP, 0, lpSave->pszValueName, -1, NULL, 0);
|
||||
SaveW.pszValueName = HeapAlloc(GetProcessHeap(), 0, len * sizeof(WCHAR));
|
||||
MultiByteToWideChar(CP_ACP, 0, lpSave->pszValueName, -1, (LPWSTR)SaveW.pszValueName, len);
|
||||
|
||||
FIXME("restore from \"%s\" \"%s\"\n",
|
||||
lpSave->pszSubKey, lpSave->pszValueName);
|
||||
|
||||
|
||||
}
|
||||
#endif
|
||||
|
||||
return 0;
|
||||
return TOOLBAR_SaveRestoreW(hwnd, wParam, &SaveW);
|
||||
}
|
||||
|
||||
|
||||
|
@ -4616,6 +4715,8 @@ TOOLBAR_SetButtonSize (HWND hwnd, WPARAM wParam, LPARAM lParam)
|
|||
return FALSE;
|
||||
}
|
||||
|
||||
TRACE("%p, cx = %d, cy = %d\n", hwnd, cx, cy);
|
||||
|
||||
/* The documentation claims you can only change the button size before
|
||||
* any button has been added. But this is wrong.
|
||||
* WINZIP32.EXE (ver 8) calls this on one of its buttons after adding
|
||||
|
@ -4638,11 +4739,6 @@ TOOLBAR_SetButtonWidth (HWND hwnd, WPARAM wParam, LPARAM lParam)
|
|||
{
|
||||
TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr (hwnd);
|
||||
|
||||
if (infoPtr == NULL) {
|
||||
TRACE("Toolbar not initialized yet?????\n");
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/* if setting to current values, ignore */
|
||||
if ((infoPtr->cxMin == (INT)LOWORD(lParam)) &&
|
||||
(infoPtr->cxMax == (INT)HIWORD(lParam))) {
|
||||
|
@ -4824,7 +4920,7 @@ TOOLBAR_SetHotItemEx (TOOLBAR_INFO *infoPtr, INT nHit, DWORD dwReason)
|
|||
else
|
||||
nmhotitem.dwFlags |= HICF_LEAVING;
|
||||
|
||||
no_highlight = TOOLBAR_SendNotify((NMHDR*)&nmhotitem, infoPtr, TBN_HOTITEMCHANGE);
|
||||
no_highlight = TOOLBAR_SendNotify(&nmhotitem.hdr, infoPtr, TBN_HOTITEMCHANGE);
|
||||
|
||||
/* now invalidate the old and new buttons so they will be painted */
|
||||
if (oldBtnPtr)
|
||||
|
@ -4879,10 +4975,15 @@ TOOLBAR_SetImageList (HWND hwnd, WPARAM wParam, LPARAM lParam)
|
|||
for (i = 0; i < infoPtr->cimlDef; i++)
|
||||
infoPtr->nNumBitmaps += ImageList_GetImageCount(infoPtr->himlDef[i]->himl);
|
||||
|
||||
ImageList_GetIconSize(himl, &infoPtr->nBitmapWidth,
|
||||
&infoPtr->nBitmapHeight);
|
||||
TRACE("hwnd %p, new himl=%08x, count=%d, bitmap w=%d, h=%d\n",
|
||||
hwnd, (INT)infoPtr->himlDef, infoPtr->nNumBitmaps,
|
||||
if (!ImageList_GetIconSize(himl, &infoPtr->nBitmapWidth,
|
||||
&infoPtr->nBitmapHeight))
|
||||
{
|
||||
infoPtr->nBitmapWidth = 0;
|
||||
infoPtr->nBitmapHeight = 0;
|
||||
}
|
||||
|
||||
TRACE("hwnd %p, new himl=%p, id = %d, count=%d, bitmap w=%d, h=%d\n",
|
||||
hwnd, infoPtr->himlDef, id, infoPtr->nNumBitmaps,
|
||||
infoPtr->nBitmapWidth, infoPtr->nBitmapHeight);
|
||||
|
||||
InvalidateRect(hwnd, NULL, TRUE);
|
||||
|
@ -4960,9 +5061,6 @@ TOOLBAR_SetMaxTextRows (HWND hwnd, WPARAM wParam, LPARAM lParam)
|
|||
{
|
||||
TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr (hwnd);
|
||||
|
||||
if (infoPtr == NULL)
|
||||
return FALSE;
|
||||
|
||||
infoPtr->nMaxTextRows = (INT)wParam;
|
||||
|
||||
TOOLBAR_CalcToolbar(hwnd);
|
||||
|
@ -5003,8 +5101,6 @@ TOOLBAR_SetParent (HWND hwnd, WPARAM wParam, LPARAM lParam)
|
|||
|
||||
TRACE("\n");
|
||||
|
||||
if (infoPtr == NULL)
|
||||
return 0;
|
||||
hwndOldNotify = infoPtr->hwndNotify;
|
||||
infoPtr->hwndNotify = (HWND)wParam;
|
||||
|
||||
|
@ -5095,8 +5191,6 @@ TOOLBAR_SetToolTips (HWND hwnd, WPARAM wParam, LPARAM lParam)
|
|||
|
||||
TRACE("hwnd=%p, hwndTooltip=%p, lParam=0x%lx\n", hwnd, (HWND)wParam, lParam);
|
||||
|
||||
if (infoPtr == NULL)
|
||||
return 0;
|
||||
infoPtr->hwndToolTip = (HWND)wParam;
|
||||
return 0;
|
||||
}
|
||||
|
@ -5370,7 +5464,6 @@ TOOLBAR_Create (HWND hwnd, WPARAM wParam, LPARAM lParam)
|
|||
infoPtr->nOldHit = -1;
|
||||
infoPtr->nHotItem = -1;
|
||||
infoPtr->hwndNotify = ((LPCREATESTRUCTW)lParam)->hwndParent;
|
||||
infoPtr->bUnicode = IsWindowUnicode (infoPtr->hwndNotify);
|
||||
infoPtr->bBtnTranspnt = (dwStyle & (TBSTYLE_FLAT | TBSTYLE_LIST));
|
||||
infoPtr->dwDTFlags = (dwStyle & TBSTYLE_LIST) ? DT_LEFT | DT_VCENTER | DT_SINGLELINE | DT_END_ELLIPSIS: DT_CENTER | DT_END_ELLIPSIS;
|
||||
infoPtr->bAnchor = FALSE; /* no anchor highlighting */
|
||||
|
@ -5380,15 +5473,14 @@ TOOLBAR_Create (HWND hwnd, WPARAM wParam, LPARAM lParam)
|
|||
infoPtr->bDoRedraw = TRUE;
|
||||
infoPtr->clrBtnHighlight = CLR_DEFAULT;
|
||||
infoPtr->clrBtnShadow = CLR_DEFAULT;
|
||||
/* not sure where the +1 comes from, but this comes to the same value
|
||||
* as native so this is probably correct */
|
||||
infoPtr->szPadding.cx = 2*(GetSystemMetrics(SM_CXEDGE)+OFFSET_X) + 1;
|
||||
infoPtr->szPadding.cy = 2*(GetSystemMetrics(SM_CYEDGE)+OFFSET_Y);
|
||||
infoPtr->szPadding.cx = DEFPAD_CX;
|
||||
infoPtr->szPadding.cy = DEFPAD_CY;
|
||||
infoPtr->iListGap = infoPtr->szPadding.cx / 2;
|
||||
infoPtr->dwStyle = dwStyle;
|
||||
infoPtr->tbim.iButton = -1;
|
||||
GetClientRect(hwnd, &infoPtr->client_rect);
|
||||
TOOLBAR_NotifyFormat(infoPtr, (WPARAM)hwnd, (LPARAM)NF_REQUERY);
|
||||
infoPtr->bUnicode = infoPtr->hwndNotify &&
|
||||
(NFR_UNICODE == SendMessageW(hwnd, WM_NOTIFYFORMAT, (WPARAM)hwnd, (LPARAM)NF_REQUERY));
|
||||
|
||||
SystemParametersInfoA (SPI_GETICONTITLELOGFONT, 0, &logFont, 0);
|
||||
infoPtr->hFont = infoPtr->hDefaultFont = CreateFontIndirectA (&logFont);
|
||||
|
@ -5402,13 +5494,13 @@ TOOLBAR_Create (HWND hwnd, WPARAM wParam, LPARAM lParam)
|
|||
hwnd, 0, 0, 0);
|
||||
|
||||
/* Send NM_TOOLTIPSCREATED notification */
|
||||
if (infoPtr->hwndToolTip) {
|
||||
if (infoPtr->hwndToolTip)
|
||||
{
|
||||
NMTOOLTIPSCREATED nmttc;
|
||||
|
||||
nmttc.hwndToolTips = infoPtr->hwndToolTip;
|
||||
|
||||
TOOLBAR_SendNotify ((NMHDR *) &nmttc, infoPtr,
|
||||
NM_TOOLTIPSCREATED);
|
||||
TOOLBAR_SendNotify (&nmttc.hdr, infoPtr, NM_TOOLTIPSCREATED);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -5483,7 +5575,7 @@ TOOLBAR_EraseBackground (HWND hwnd, WPARAM wParam, LPARAM lParam)
|
|||
ZeroMemory (&tbcd, sizeof(NMTBCUSTOMDRAW));
|
||||
tbcd.nmcd.dwDrawStage = CDDS_PREERASE;
|
||||
tbcd.nmcd.hdc = (HDC)wParam;
|
||||
ntfret = TOOLBAR_SendNotify ((NMHDR *)&tbcd, infoPtr, NM_CUSTOMDRAW);
|
||||
ntfret = TOOLBAR_SendNotify (&tbcd.nmcd.hdr, infoPtr, NM_CUSTOMDRAW);
|
||||
infoPtr->dwBaseCustDraw = ntfret & 0xffff;
|
||||
|
||||
/* FIXME: in general the return flags *can* be or'ed together */
|
||||
|
@ -5523,7 +5615,7 @@ TOOLBAR_EraseBackground (HWND hwnd, WPARAM wParam, LPARAM lParam)
|
|||
ZeroMemory (&tbcd, sizeof(NMTBCUSTOMDRAW));
|
||||
tbcd.nmcd.dwDrawStage = CDDS_POSTERASE;
|
||||
tbcd.nmcd.hdc = (HDC)wParam;
|
||||
ntfret = TOOLBAR_SendNotify ((NMHDR *)&tbcd, infoPtr, NM_CUSTOMDRAW);
|
||||
ntfret = TOOLBAR_SendNotify (&tbcd.nmcd.hdr, infoPtr, NM_CUSTOMDRAW);
|
||||
infoPtr->dwBaseCustDraw = ntfret & 0xffff;
|
||||
switch (infoPtr->dwBaseCustDraw)
|
||||
{
|
||||
|
@ -5632,11 +5724,9 @@ TOOLBAR_LButtonDown (HWND hwnd, WPARAM wParam, LPARAM lParam)
|
|||
RedrawWindow(hwnd,&btnPtr->rect,0,
|
||||
RDW_ERASE|RDW_INVALIDATE|RDW_UPDATENOW);
|
||||
|
||||
memset(&nmtb, 0, sizeof(nmtb));
|
||||
nmtb.iItem = btnPtr->idCommand;
|
||||
memset(&nmtb.tbButton, 0, sizeof(TBBUTTON));
|
||||
nmtb.cchText = 0;
|
||||
nmtb.pszText = 0;
|
||||
CopyRect(&nmtb.rcButton, &btnPtr->rect);
|
||||
nmtb.rcButton = btnPtr->rect;
|
||||
res = TOOLBAR_SendNotify ((NMHDR *) &nmtb, infoPtr,
|
||||
TBN_DROPDOWN);
|
||||
TRACE("TBN_DROPDOWN responded with %ld\n", res);
|
||||
|
@ -5686,22 +5776,15 @@ TOOLBAR_LButtonDown (HWND hwnd, WPARAM wParam, LPARAM lParam)
|
|||
|
||||
if (nHit >=0)
|
||||
{
|
||||
memset(&nmtb, 0, sizeof(nmtb));
|
||||
nmtb.iItem = btnPtr->idCommand;
|
||||
nmtb.tbButton.iBitmap = btnPtr->iBitmap;
|
||||
nmtb.tbButton.idCommand = btnPtr->idCommand;
|
||||
nmtb.tbButton.fsState = btnPtr->fsState;
|
||||
nmtb.tbButton.fsStyle = btnPtr->fsStyle;
|
||||
nmtb.tbButton.dwData = btnPtr->dwData;
|
||||
nmtb.tbButton.iString = btnPtr->iString;
|
||||
nmtb.cchText = 0; /* !!! not correct */
|
||||
nmtb.pszText = 0; /* !!! not correct */
|
||||
TOOLBAR_SendNotify((NMHDR *)&nmtb, infoPtr, TBN_BEGINDRAG);
|
||||
}
|
||||
|
||||
nmmouse.dwHitInfo = nHit;
|
||||
|
||||
/* !!! Undocumented - sends NM_LDOWN with the NMMOUSE structure. */
|
||||
if (nmmouse.dwHitInfo < 0)
|
||||
if (nHit < 0)
|
||||
nmmouse.dwItemSpec = -1;
|
||||
else
|
||||
{
|
||||
|
@ -5712,7 +5795,7 @@ TOOLBAR_LButtonDown (HWND hwnd, WPARAM wParam, LPARAM lParam)
|
|||
ClientToScreen(hwnd, &pt);
|
||||
nmmouse.pt = pt;
|
||||
|
||||
if (!TOOLBAR_SendNotify((LPNMHDR)&nmmouse, infoPtr, NM_LDOWN))
|
||||
if (!TOOLBAR_SendNotify(&nmmouse.hdr, infoPtr, NM_LDOWN))
|
||||
return DefWindowProcW(hwnd, WM_LBUTTONDOWN, wParam, lParam);
|
||||
|
||||
return 0;
|
||||
|
@ -5847,15 +5930,8 @@ TOOLBAR_LButtonUp (HWND hwnd, WPARAM wParam, LPARAM lParam)
|
|||
/* native issues TBN_ENDDRAG here, if _LBUTTONDOWN issued the
|
||||
* TBN_BEGINDRAG
|
||||
*/
|
||||
memset(&nmtb, 0, sizeof(nmtb));
|
||||
nmtb.iItem = btnPtr->idCommand;
|
||||
nmtb.tbButton.iBitmap = btnPtr->iBitmap;
|
||||
nmtb.tbButton.idCommand = btnPtr->idCommand;
|
||||
nmtb.tbButton.fsState = btnPtr->fsState;
|
||||
nmtb.tbButton.fsStyle = btnPtr->fsStyle;
|
||||
nmtb.tbButton.dwData = btnPtr->dwData;
|
||||
nmtb.tbButton.iString = btnPtr->iString;
|
||||
nmtb.cchText = 0; /* !!! not correct */
|
||||
nmtb.pszText = 0; /* !!! not correct */
|
||||
TOOLBAR_SendNotify ((NMHDR *) &nmtb, infoPtr,
|
||||
TBN_ENDDRAG);
|
||||
|
||||
|
@ -5891,16 +5967,17 @@ static LRESULT
|
|||
TOOLBAR_RButtonUp( HWND hwnd, WPARAM wParam, LPARAM lParam)
|
||||
{
|
||||
TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr (hwnd);
|
||||
|
||||
INT nHit;
|
||||
NMMOUSE nmmouse;
|
||||
POINT pt;
|
||||
|
||||
pt.x = LOWORD(lParam);
|
||||
pt.y = HIWORD(lParam);
|
||||
|
||||
nmmouse.dwHitInfo = TOOLBAR_InternalHitTest(hwnd, &pt);
|
||||
nHit = TOOLBAR_InternalHitTest(hwnd, &pt);
|
||||
nmmouse.dwHitInfo = nHit;
|
||||
|
||||
if (nmmouse.dwHitInfo < 0) {
|
||||
if (nHit < 0) {
|
||||
nmmouse.dwItemSpec = -1;
|
||||
} else {
|
||||
nmmouse.dwItemSpec = infoPtr->buttons[nmmouse.dwHitInfo].idCommand;
|
||||
|
@ -6207,7 +6284,7 @@ static LRESULT TOOLBAR_TTGetDispInfo (TOOLBAR_INFO *infoPtr, NMTTDISPINFOW *lpnm
|
|||
if (index < 0)
|
||||
return 0;
|
||||
|
||||
if (infoPtr->bNtfUnicode)
|
||||
if (infoPtr->bUnicode)
|
||||
{
|
||||
WCHAR wszBuffer[INFOTIPSIZE+1];
|
||||
NMTBGETINFOTIPW tbgit;
|
||||
|
@ -6362,7 +6439,7 @@ TOOLBAR_Notify (HWND hwnd, WPARAM wParam, LPARAM lParam)
|
|||
return TOOLBAR_TTGetDispInfo(infoPtr, (LPNMTTDISPINFOW)lParam);
|
||||
|
||||
case TTN_GETDISPINFOA:
|
||||
FIXME("TTN_GETDISPINFOA - stub\n");
|
||||
FIXME("TTN_GETDISPINFOA - should not be received; please report\n");
|
||||
return 0;
|
||||
|
||||
default:
|
||||
|
@ -6371,39 +6448,27 @@ TOOLBAR_Notify (HWND hwnd, WPARAM wParam, LPARAM lParam)
|
|||
}
|
||||
|
||||
|
||||
static LRESULT
|
||||
TOOLBAR_NotifyFormatFake(HWND hwnd, WPARAM wParam, LPARAM lParam)
|
||||
{
|
||||
/* remove this routine when Toolbar is improved to pass infoPtr
|
||||
* around instead of hwnd.
|
||||
*/
|
||||
TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr(hwnd);
|
||||
return TOOLBAR_NotifyFormat(infoPtr, wParam, lParam);
|
||||
}
|
||||
|
||||
|
||||
static LRESULT
|
||||
TOOLBAR_NotifyFormat(TOOLBAR_INFO *infoPtr, WPARAM wParam, LPARAM lParam)
|
||||
{
|
||||
INT i;
|
||||
LRESULT format;
|
||||
|
||||
TRACE("wParam = 0x%x, lParam = 0x%08lx\n", wParam, lParam);
|
||||
|
||||
if ((lParam == NF_QUERY) && ((HWND)wParam == infoPtr->hwndToolTip))
|
||||
if (lParam == NF_QUERY)
|
||||
return NFR_UNICODE;
|
||||
|
||||
if (lParam == NF_REQUERY) {
|
||||
i = SendMessageW(infoPtr->hwndNotify,
|
||||
format = SendMessageW(infoPtr->hwndNotify,
|
||||
WM_NOTIFYFORMAT, (WPARAM)infoPtr->hwndSelf, NF_QUERY);
|
||||
if ((i < NFR_ANSI) || (i > NFR_UNICODE)) {
|
||||
ERR("wrong response to WM_NOTIFYFORMAT (%d), assuming ANSI\n",
|
||||
i);
|
||||
i = NFR_ANSI;
|
||||
if ((format != NFR_ANSI) && (format != NFR_UNICODE)) {
|
||||
ERR("wrong response to WM_NOTIFYFORMAT (%ld), assuming ANSI\n",
|
||||
format);
|
||||
format = NFR_ANSI;
|
||||
}
|
||||
infoPtr->bNtfUnicode = (i == NFR_UNICODE) ? 1 : 0;
|
||||
return (LRESULT)i;
|
||||
return format;
|
||||
}
|
||||
return (LRESULT)((infoPtr->bUnicode) ? NFR_UNICODE : NFR_ANSI);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
|
@ -6541,7 +6606,7 @@ TOOLBAR_Size (HWND hwnd, WPARAM wParam, LPARAM lParam)
|
|||
{
|
||||
x = y = 1;
|
||||
cy += GetSystemMetrics(SM_CYEDGE);
|
||||
cx += GetSystemMetrics(SM_CYEDGE);
|
||||
cx += GetSystemMetrics(SM_CXEDGE);
|
||||
}
|
||||
|
||||
if(infoPtr->dwExStyle & TBSTYLE_EX_HIDECLIPPEDBUTTONS)
|
||||
|
@ -6597,13 +6662,13 @@ TOOLBAR_StyleChanged (HWND hwnd, INT nType, LPSTYLESTRUCT lpStyle)
|
|||
{
|
||||
TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr (hwnd);
|
||||
|
||||
if (nType == GWL_STYLE) {
|
||||
if (lpStyle->styleNew & TBSTYLE_LIST) {
|
||||
if (nType == GWL_STYLE)
|
||||
{
|
||||
if (lpStyle->styleNew & TBSTYLE_LIST)
|
||||
infoPtr->dwDTFlags = DT_LEFT | DT_VCENTER | DT_SINGLELINE | DT_END_ELLIPSIS;
|
||||
}
|
||||
else {
|
||||
else
|
||||
infoPtr->dwDTFlags = DT_CENTER | DT_END_ELLIPSIS;
|
||||
}
|
||||
|
||||
infoPtr->bBtnTranspnt = (lpStyle->styleNew &
|
||||
(TBSTYLE_FLAT | TBSTYLE_LIST));
|
||||
TOOLBAR_CheckStyle (hwnd, lpStyle->styleNew);
|
||||
|
@ -6611,13 +6676,15 @@ TOOLBAR_StyleChanged (HWND hwnd, INT nType, LPSTYLESTRUCT lpStyle)
|
|||
TRACE("new style 0x%08lx\n", lpStyle->styleNew);
|
||||
|
||||
infoPtr->dwStyle = lpStyle->styleNew;
|
||||
}
|
||||
|
||||
TOOLBAR_CalcToolbar(hwnd);
|
||||
|
||||
/* only resize if one of the CCS_* styles was changed */
|
||||
if ((infoPtr->dwStyle ^ lpStyle->styleNew) & COMMON_STYLES)
|
||||
{
|
||||
TOOLBAR_AutoSize (hwnd);
|
||||
|
||||
InvalidateRect(hwnd, NULL, TRUE);
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -6641,7 +6708,7 @@ ToolbarWindowProc (HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
|||
TRACE("hwnd=%p msg=%x wparam=%x lparam=%lx\n",
|
||||
hwnd, uMsg, /* SPY_GetMsgName(uMsg), */ wParam, lParam);
|
||||
|
||||
if (!TOOLBAR_GetInfoPtr(hwnd) && (uMsg != WM_NCCREATE))
|
||||
if (!infoPtr && (uMsg != WM_NCCREATE))
|
||||
return DefWindowProcW( hwnd, uMsg, wParam, lParam );
|
||||
|
||||
switch (uMsg)
|
||||
|
@ -6829,10 +6896,10 @@ ToolbarWindowProc (HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
|||
return TOOLBAR_ReplaceBitmap (hwnd, wParam, lParam);
|
||||
|
||||
case TB_SAVERESTOREA:
|
||||
return TOOLBAR_SaveRestoreA (hwnd, wParam, lParam);
|
||||
return TOOLBAR_SaveRestoreA (hwnd, wParam, (LPTBSAVEPARAMSA)lParam);
|
||||
|
||||
case TB_SAVERESTOREW:
|
||||
return TOOLBAR_SaveRestoreW (hwnd, wParam, lParam);
|
||||
return TOOLBAR_SaveRestoreW (hwnd, wParam, (LPTBSAVEPARAMSW)lParam);
|
||||
|
||||
case TB_SETANCHORHIGHLIGHT:
|
||||
return TOOLBAR_SetAnchorHighlight (hwnd, wParam);
|
||||
|
@ -6998,7 +7065,7 @@ ToolbarWindowProc (HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
|||
return TOOLBAR_Notify (hwnd, wParam, lParam);
|
||||
|
||||
case WM_NOTIFYFORMAT:
|
||||
return TOOLBAR_NotifyFormatFake (hwnd, wParam, lParam);
|
||||
return TOOLBAR_NotifyFormat (infoPtr, wParam, lParam);
|
||||
|
||||
case WM_PAINT:
|
||||
return TOOLBAR_Paint (hwnd, wParam);
|
||||
|
@ -7145,7 +7212,7 @@ static HIMAGELIST TOOLBAR_GetImageList(PIMLENTRY *pies, INT cies, INT id)
|
|||
static BOOL TOOLBAR_GetButtonInfo(TOOLBAR_INFO *infoPtr, NMTOOLBARW *nmtb)
|
||||
{
|
||||
if (infoPtr->bUnicode)
|
||||
return TOOLBAR_SendNotify ((NMHDR *) nmtb, infoPtr, TBN_GETBUTTONINFOW);
|
||||
return TOOLBAR_SendNotify(&nmtb->hdr, infoPtr, TBN_GETBUTTONINFOW);
|
||||
else
|
||||
{
|
||||
CHAR Buffer[256];
|
||||
|
@ -7157,7 +7224,7 @@ static BOOL TOOLBAR_GetButtonInfo(TOOLBAR_INFO *infoPtr, NMTOOLBARW *nmtb)
|
|||
nmtba.cchText = 256;
|
||||
ZeroMemory(nmtba.pszText, nmtba.cchText);
|
||||
|
||||
if (TOOLBAR_SendNotify ((NMHDR *) &nmtba, infoPtr, TBN_GETBUTTONINFOA))
|
||||
if (TOOLBAR_SendNotify(&nmtba.hdr, infoPtr, TBN_GETBUTTONINFOA))
|
||||
{
|
||||
int ccht = strlen(nmtba.pszText);
|
||||
if (ccht)
|
||||
|
|
|
@ -1927,16 +1927,25 @@ TOOLTIPS_SetTitleA (HWND hwnd, WPARAM wParam, LPARAM lParam)
|
|||
{
|
||||
TOOLTIPS_INFO *infoPtr = TOOLTIPS_GetInfoPtr (hwnd);
|
||||
LPCSTR pszTitle = (LPCSTR)lParam;
|
||||
UINT uTitleIcon = (UINT)wParam;
|
||||
UINT_PTR uTitleIcon = (UINT_PTR)wParam;
|
||||
UINT size;
|
||||
|
||||
TRACE("hwnd = %p, title = %s, icon = %p\n", hwnd, pszTitle, (void*)uTitleIcon);
|
||||
TRACE("hwnd = %p, title = %s, icon = %p\n", hwnd, debugstr_a(pszTitle),
|
||||
(void*)uTitleIcon);
|
||||
|
||||
Free(infoPtr->pszTitle);
|
||||
|
||||
if (pszTitle)
|
||||
{
|
||||
size = sizeof(WCHAR)*MultiByteToWideChar(CP_ACP, 0, pszTitle, -1, NULL, 0);
|
||||
infoPtr->pszTitle = Alloc(size);
|
||||
if (!infoPtr->pszTitle)
|
||||
return FALSE;
|
||||
MultiByteToWideChar(CP_ACP, 0, pszTitle, -1, infoPtr->pszTitle, size/sizeof(WCHAR));
|
||||
}
|
||||
else
|
||||
infoPtr->pszTitle = NULL;
|
||||
|
||||
if (uTitleIcon <= TTI_ERROR)
|
||||
infoPtr->hTitleIcon = hTooltipIcons[uTitleIcon];
|
||||
else
|
||||
|
@ -1951,16 +1960,25 @@ TOOLTIPS_SetTitleW (HWND hwnd, WPARAM wParam, LPARAM lParam)
|
|||
{
|
||||
TOOLTIPS_INFO *infoPtr = TOOLTIPS_GetInfoPtr (hwnd);
|
||||
LPCWSTR pszTitle = (LPCWSTR)lParam;
|
||||
UINT uTitleIcon = (UINT)wParam;
|
||||
UINT_PTR uTitleIcon = (UINT_PTR)wParam;
|
||||
UINT size;
|
||||
|
||||
TRACE("hwnd = %p, title = %s, icon = %p\n", hwnd, debugstr_w(pszTitle), (void*)uTitleIcon);
|
||||
TRACE("hwnd = %p, title = %s, icon = %p\n", hwnd, debugstr_w(pszTitle),
|
||||
(void*)uTitleIcon);
|
||||
|
||||
Free(infoPtr->pszTitle);
|
||||
|
||||
if (pszTitle)
|
||||
{
|
||||
size = (strlenW(pszTitle)+1)*sizeof(WCHAR);
|
||||
infoPtr->pszTitle = Alloc(size);
|
||||
if (!infoPtr->pszTitle)
|
||||
return FALSE;
|
||||
memcpy(infoPtr->pszTitle, pszTitle, size);
|
||||
}
|
||||
else
|
||||
infoPtr->pszTitle = NULL;
|
||||
|
||||
if (uTitleIcon <= TTI_ERROR)
|
||||
infoPtr->hTitleIcon = hTooltipIcons[uTitleIcon];
|
||||
else
|
||||
|
|
|
@ -1418,9 +1418,12 @@ TRACKBAR_KillFocus (TRACKBAR_INFO *infoPtr, HWND hwndGetFocus)
|
|||
}
|
||||
|
||||
static LRESULT
|
||||
TRACKBAR_LButtonDown (TRACKBAR_INFO *infoPtr, DWORD fwKeys, POINTS pts)
|
||||
TRACKBAR_LButtonDown (TRACKBAR_INFO *infoPtr, DWORD fwKeys, INT x, INT y)
|
||||
{
|
||||
POINT clickPoint = { pts.x, pts.y };
|
||||
POINT clickPoint;
|
||||
|
||||
clickPoint.x = x;
|
||||
clickPoint.y = y;
|
||||
|
||||
SetFocus(infoPtr->hwndSelf);
|
||||
|
||||
|
@ -1444,7 +1447,7 @@ TRACKBAR_LButtonDown (TRACKBAR_INFO *infoPtr, DWORD fwKeys, POINTS pts)
|
|||
|
||||
|
||||
static LRESULT
|
||||
TRACKBAR_LButtonUp (TRACKBAR_INFO *infoPtr, DWORD fwKeys, POINTS pts)
|
||||
TRACKBAR_LButtonUp (TRACKBAR_INFO *infoPtr, DWORD fwKeys, INT x, INT y)
|
||||
{
|
||||
if (infoPtr->flags & TB_DRAG_MODE) {
|
||||
notify_with_scroll (infoPtr, TB_THUMBPOSITION | (infoPtr->lPos<<16));
|
||||
|
@ -1526,17 +1529,18 @@ TRACKBAR_Timer (TRACKBAR_INFO *infoPtr, INT wTimerID, TIMERPROC *tmrpc)
|
|||
|
||||
|
||||
static LRESULT
|
||||
TRACKBAR_MouseMove (TRACKBAR_INFO *infoPtr, DWORD fwKeys, POINTS pts)
|
||||
TRACKBAR_MouseMove (TRACKBAR_INFO *infoPtr, DWORD fwKeys, INT x, INT y)
|
||||
{
|
||||
DWORD dwStyle = GetWindowLongW (infoPtr->hwndSelf, GWL_STYLE);
|
||||
INT clickPlace = (dwStyle & TBS_VERT) ? pts.y : pts.x;
|
||||
INT clickPlace = (dwStyle & TBS_VERT) ? y : x;
|
||||
LONG dragPos, oldPos = infoPtr->lPos;
|
||||
|
||||
TRACE("(x=%d. y=%d)\n", pts.x, pts.y);
|
||||
TRACE("(x=%d. y=%d)\n", x, y);
|
||||
|
||||
if (infoPtr->flags & TB_AUTO_PAGE) {
|
||||
POINT pt;
|
||||
POINTSTOPOINT(pt, pts);
|
||||
pt.x = x;
|
||||
pt.y = y;
|
||||
TRACKBAR_AutoPage (infoPtr, pt);
|
||||
return TRUE;
|
||||
}
|
||||
|
@ -1778,13 +1782,13 @@ TRACKBAR_WindowProc (HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
|||
return TRACKBAR_KillFocus (infoPtr, (HWND)wParam);
|
||||
|
||||
case WM_LBUTTONDOWN:
|
||||
return TRACKBAR_LButtonDown (infoPtr, wParam, MAKEPOINTS(lParam));
|
||||
return TRACKBAR_LButtonDown (infoPtr, wParam, (SHORT)LOWORD(lParam), (SHORT)HIWORD(lParam));
|
||||
|
||||
case WM_LBUTTONUP:
|
||||
return TRACKBAR_LButtonUp (infoPtr, wParam, MAKEPOINTS(lParam));
|
||||
return TRACKBAR_LButtonUp (infoPtr, wParam, (SHORT)LOWORD(lParam), (SHORT)HIWORD(lParam));
|
||||
|
||||
case WM_MOUSEMOVE:
|
||||
return TRACKBAR_MouseMove (infoPtr, wParam, MAKEPOINTS(lParam));
|
||||
return TRACKBAR_MouseMove (infoPtr, wParam, (SHORT)LOWORD(lParam), (SHORT)HIWORD(lParam));
|
||||
|
||||
case WM_PAINT:
|
||||
return TRACKBAR_Paint (infoPtr, (HDC)wParam);
|
||||
|
|
|
@ -130,6 +130,7 @@ typedef struct tagTREEVIEW_INFO
|
|||
COLORREF clrLine;
|
||||
COLORREF clrInsertMark;
|
||||
HFONT hFont;
|
||||
HFONT hDefaultFont;
|
||||
HFONT hBoldFont;
|
||||
HWND hwndToolTip;
|
||||
|
||||
|
@ -255,11 +256,11 @@ TREEVIEW_ValidItem(TREEVIEW_INFO *infoPtr, HTREEITEM handle)
|
|||
static HFONT
|
||||
TREEVIEW_CreateBoldFont(HFONT hOrigFont)
|
||||
{
|
||||
LOGFONTA font;
|
||||
LOGFONTW font;
|
||||
|
||||
GetObjectA(hOrigFont, sizeof(font), &font);
|
||||
GetObjectW(hOrigFont, sizeof(font), &font);
|
||||
font.lfWeight = FW_BOLD;
|
||||
return CreateFontIndirectA(&font);
|
||||
return CreateFontIndirectW(&font);
|
||||
}
|
||||
|
||||
static inline HFONT
|
||||
|
@ -1809,7 +1810,7 @@ TREEVIEW_SetFont(TREEVIEW_INFO *infoPtr, HFONT hFont, BOOL bRedraw)
|
|||
|
||||
TRACE("%p %i\n", hFont, bRedraw);
|
||||
|
||||
infoPtr->hFont = hFont ? hFont : GetStockObject(SYSTEM_FONT);
|
||||
infoPtr->hFont = hFont ? hFont : infoPtr->hDefaultFont;
|
||||
|
||||
DeleteObject(infoPtr->hBoldFont);
|
||||
infoPtr->hBoldFont = TREEVIEW_CreateBoldFont(infoPtr->hFont);
|
||||
|
@ -2328,7 +2329,7 @@ TREEVIEW_DrawItemLines(TREEVIEW_INFO *infoPtr, HDC hdc, TREEVIEW_ITEM *item)
|
|||
SelectObject(hdc, hOldPen);
|
||||
DeleteObject(hNewPen);
|
||||
|
||||
if (height < 32 || width < 32)
|
||||
if (height < 18 || width < 18)
|
||||
{
|
||||
MoveToEx(hdc, centerx - plussize + 1, centery, NULL);
|
||||
LineTo(hdc, centerx + plussize, centery);
|
||||
|
@ -4684,6 +4685,7 @@ TREEVIEW_Create(HWND hwnd, const CREATESTRUCTW *lpcs)
|
|||
static const WCHAR szDisplayW[] = { 'D','I','S','P','L','A','Y','\0' };
|
||||
RECT rcClient;
|
||||
TREEVIEW_INFO *infoPtr;
|
||||
LOGFONTW lf;
|
||||
|
||||
TRACE("wnd %p, style %lx\n", hwnd, GetWindowLongW(hwnd, GWL_STYLE));
|
||||
|
||||
|
@ -4749,7 +4751,8 @@ TREEVIEW_Create(HWND hwnd, const CREATESTRUCTW *lpcs)
|
|||
|
||||
infoPtr->items = DPA_Create(16);
|
||||
|
||||
infoPtr->hFont = GetStockObject(DEFAULT_GUI_FONT);
|
||||
SystemParametersInfoW(SPI_GETICONTITLELOGFONT, sizeof(lf), &lf, 0);
|
||||
infoPtr->hFont = infoPtr->hDefaultFont = CreateFontIndirectW(&lf);
|
||||
infoPtr->hBoldFont = TREEVIEW_CreateBoldFont(infoPtr->hFont);
|
||||
|
||||
infoPtr->uItemHeight = TREEVIEW_NaturalHeight(infoPtr);
|
||||
|
@ -4839,6 +4842,7 @@ TREEVIEW_Destroy(TREEVIEW_INFO *infoPtr)
|
|||
/* Deassociate treeview from the window before doing anything drastic. */
|
||||
SetWindowLongPtrW(infoPtr->hwnd, 0, (DWORD_PTR)NULL);
|
||||
|
||||
DeleteObject(infoPtr->hDefaultFont);
|
||||
DeleteObject(infoPtr->hBoldFont);
|
||||
Free(infoPtr);
|
||||
|
||||
|
@ -5399,7 +5403,7 @@ TREEVIEW_Register(void)
|
|||
|
||||
ZeroMemory(&wndClass, sizeof(WNDCLASSA));
|
||||
wndClass.style = CS_GLOBALCLASS | CS_DBLCLKS;
|
||||
wndClass.lpfnWndProc = (WNDPROC)TREEVIEW_WindowProc;
|
||||
wndClass.lpfnWndProc = TREEVIEW_WindowProc;
|
||||
wndClass.cbClsExtra = 0;
|
||||
wndClass.cbWndExtra = sizeof(TREEVIEW_INFO *);
|
||||
|
||||
|
|
|
@ -92,12 +92,12 @@ typedef struct
|
|||
#define TIMER_ACCEL 2
|
||||
#define TIMER_AUTOPRESS 3
|
||||
|
||||
#define BUDDY_UPDOWN_HWND "buddyUpDownHWND"
|
||||
#define BUDDY_SUPERCLASS_WNDPROC "buddySupperClassWndProc"
|
||||
|
||||
#define UPDOWN_GetInfoPtr(hwnd) ((UPDOWN_INFO *)GetWindowLongPtrW (hwnd,0))
|
||||
#define COUNT_OF(a) (sizeof(a)/sizeof(a[0]))
|
||||
|
||||
static const WCHAR BUDDY_UPDOWN_HWND[] = { 'b', 'u', 'd', 'd', 'y', 'U', 'p', 'D', 'o', 'w', 'n', 'H', 'W', 'N', 'D', 0 };
|
||||
static const WCHAR BUDDY_SUPERCLASS_WNDPROC[] = { 'b', 'u', 'd', 'd', 'y', 'S', 'u', 'p', 'p', 'e', 'r',
|
||||
'C', 'l', 'a', 's', 's', 'W', 'n', 'd', 'P', 'r', 'o', 'c', 0 };
|
||||
static void UPDOWN_DoAction (UPDOWN_INFO *infoPtr, int delta, int action);
|
||||
|
||||
/***********************************************************************
|
||||
|
@ -427,12 +427,13 @@ static LRESULT UPDOWN_KeyPressed(UPDOWN_INFO *infoPtr, int key)
|
|||
static LRESULT CALLBACK
|
||||
UPDOWN_Buddy_SubclassProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
||||
{
|
||||
WNDPROC superClassWndProc = (WNDPROC)GetPropA(hwnd, BUDDY_SUPERCLASS_WNDPROC);
|
||||
TRACE("hwnd=%p, wndProc=%d, uMsg=%04x, wParam=%d, lParam=%d\n",
|
||||
hwnd, (INT)superClassWndProc, uMsg, wParam, (UINT)lParam);
|
||||
WNDPROC superClassWndProc = (WNDPROC)GetPropW(hwnd, BUDDY_SUPERCLASS_WNDPROC);
|
||||
|
||||
TRACE("hwnd=%p, wndProc=%p, uMsg=%04x, wParam=%08x, lParam=%08lx\n",
|
||||
hwnd, superClassWndProc, uMsg, wParam, lParam);
|
||||
|
||||
if (uMsg == WM_KEYDOWN) {
|
||||
HWND upDownHwnd = GetPropA(hwnd, BUDDY_UPDOWN_HWND);
|
||||
HWND upDownHwnd = GetPropW(hwnd, BUDDY_UPDOWN_HWND);
|
||||
|
||||
UPDOWN_KeyPressed(UPDOWN_GetInfoPtr(upDownHwnd), (int)wParam);
|
||||
}
|
||||
|
@ -452,11 +453,13 @@ UPDOWN_Buddy_SubclassProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
|||
*/
|
||||
static HWND UPDOWN_SetBuddy (UPDOWN_INFO* infoPtr, HWND bud)
|
||||
{
|
||||
static const WCHAR editW[] = { 'E', 'd', 'i', 't', 0 };
|
||||
static const WCHAR listboxW[] = { 'L', 'i', 's', 't', 'b', 'o', 'x', 0 };
|
||||
DWORD dwStyle = GetWindowLongW (infoPtr->Self, GWL_STYLE);
|
||||
RECT budRect; /* new coord for the buddy */
|
||||
int x, width; /* new x position and width for the up-down */
|
||||
WNDPROC baseWndProc;
|
||||
CHAR buddyClass[40];
|
||||
WCHAR buddyClass[40];
|
||||
HWND ret;
|
||||
|
||||
TRACE("(hwnd=%p, bud=%p)\n", infoPtr->Self, bud);
|
||||
|
@ -464,7 +467,7 @@ static HWND UPDOWN_SetBuddy (UPDOWN_INFO* infoPtr, HWND bud)
|
|||
ret = infoPtr->Buddy;
|
||||
|
||||
/* there is already a body assigned */
|
||||
if (infoPtr->Buddy) RemovePropA(infoPtr->Buddy, BUDDY_UPDOWN_HWND);
|
||||
if (infoPtr->Buddy) RemovePropW(infoPtr->Buddy, BUDDY_UPDOWN_HWND);
|
||||
|
||||
if(!IsWindow(bud))
|
||||
bud = 0;
|
||||
|
@ -475,14 +478,14 @@ static HWND UPDOWN_SetBuddy (UPDOWN_INFO* infoPtr, HWND bud)
|
|||
if(bud) {
|
||||
|
||||
/* keep upDown ctrl hwnd in a buddy property */
|
||||
SetPropA( bud, BUDDY_UPDOWN_HWND, infoPtr->Self);
|
||||
SetPropW( bud, BUDDY_UPDOWN_HWND, infoPtr->Self);
|
||||
|
||||
/* Store buddy window class type */
|
||||
infoPtr->BuddyType = BUDDY_TYPE_UNKNOWN;
|
||||
if (GetClassNameA(bud, buddyClass, COUNT_OF(buddyClass))) {
|
||||
if (lstrcmpiA(buddyClass, "Edit") == 0)
|
||||
if (GetClassNameW(bud, buddyClass, COUNT_OF(buddyClass))) {
|
||||
if (lstrcmpiW(buddyClass, editW) == 0)
|
||||
infoPtr->BuddyType = BUDDY_TYPE_EDIT;
|
||||
else if (lstrcmpiA(buddyClass, "Listbox") == 0)
|
||||
else if (lstrcmpiW(buddyClass, listboxW) == 0)
|
||||
infoPtr->BuddyType = BUDDY_TYPE_LISTBOX;
|
||||
}
|
||||
|
||||
|
@ -490,9 +493,9 @@ static HWND UPDOWN_SetBuddy (UPDOWN_INFO* infoPtr, HWND bud)
|
|||
/* Note that I don't clear the BUDDY_SUPERCLASS_WNDPROC property
|
||||
when we reset the upDown ctrl buddy to another buddy because it is not
|
||||
good to break the window proc chain. */
|
||||
if (!GetPropA(bud, BUDDY_SUPERCLASS_WNDPROC)) {
|
||||
if (!GetPropW(bud, BUDDY_SUPERCLASS_WNDPROC)) {
|
||||
baseWndProc = (WNDPROC)SetWindowLongPtrW(bud, GWLP_WNDPROC, (LPARAM)UPDOWN_Buddy_SubclassProc);
|
||||
SetPropA(bud, BUDDY_SUPERCLASS_WNDPROC, (HANDLE)baseWndProc);
|
||||
SetPropW(bud, BUDDY_SUPERCLASS_WNDPROC, (HANDLE)baseWndProc);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -508,7 +511,8 @@ static HWND UPDOWN_SetBuddy (UPDOWN_INFO* infoPtr, HWND bud)
|
|||
budRect.right -= DEFAULT_WIDTH + DEFAULT_XSEP;
|
||||
x = budRect.right+DEFAULT_XSEP;
|
||||
} else {
|
||||
x = budRect.right+DEFAULT_XSEP;
|
||||
/* nothing to do */
|
||||
return ret;
|
||||
}
|
||||
|
||||
/* first adjust the buddy to accommodate the up/down */
|
||||
|
@ -533,7 +537,7 @@ static HWND UPDOWN_SetBuddy (UPDOWN_INFO* infoPtr, HWND bud)
|
|||
x -= DEFAULT_BUDDYBORDER;
|
||||
}
|
||||
|
||||
SetWindowPos(infoPtr->Self, infoPtr->Buddy, x,
|
||||
SetWindowPos(infoPtr->Self, 0, x,
|
||||
budRect.top - DEFAULT_ADDTOP, width,
|
||||
budRect.bottom - budRect.top + DEFAULT_ADDTOP + DEFAULT_ADDBOT,
|
||||
SWP_NOACTIVATE|SWP_FRAMECHANGED|SWP_NOZORDER);
|
||||
|
@ -568,6 +572,8 @@ static void UPDOWN_DoAction (UPDOWN_INFO *infoPtr, int delta, int action)
|
|||
delta *= (action & FLAG_INCR ? 1 : -1) * (infoPtr->MaxVal < infoPtr->MinVal ? -1 : 1);
|
||||
if ( (action & FLAG_INCR) && (action & FLAG_DECR) ) delta = 0;
|
||||
|
||||
TRACE("current %d, delta: %d\n", infoPtr->CurVal, delta);
|
||||
|
||||
/* We must notify parent now to obtain permission */
|
||||
ni.iPos = infoPtr->CurVal;
|
||||
ni.iDelta = delta;
|
||||
|
@ -579,6 +585,8 @@ static void UPDOWN_DoAction (UPDOWN_INFO *infoPtr, int delta, int action)
|
|||
|
||||
/* Now adjust value with (maybe new) delta */
|
||||
if (UPDOWN_OffsetVal (infoPtr, ni.iDelta)) {
|
||||
TRACE("new %d, delta: %d\n", infoPtr->CurVal, ni.iDelta);
|
||||
|
||||
/* Now take care about our buddy */
|
||||
if (dwStyle & UDS_SETBUDDYINT) UPDOWN_SetBuddyInt (infoPtr);
|
||||
}
|
||||
|
@ -597,7 +605,7 @@ static void UPDOWN_DoAction (UPDOWN_INFO *infoPtr, int delta, int action)
|
|||
*/
|
||||
static BOOL UPDOWN_IsEnabled (UPDOWN_INFO *infoPtr)
|
||||
{
|
||||
if(GetWindowLongW (infoPtr->Self, GWL_STYLE) & WS_DISABLED)
|
||||
if (!IsWindowEnabled(infoPtr->Self))
|
||||
return FALSE;
|
||||
if(infoPtr->Buddy)
|
||||
return IsWindowEnabled(infoPtr->Buddy);
|
||||
|
@ -642,23 +650,32 @@ static BOOL UPDOWN_CancelMode (UPDOWN_INFO *infoPtr)
|
|||
* 'pt' is the location of the mouse event in client or
|
||||
* windows coordinates.
|
||||
*/
|
||||
static void UPDOWN_HandleMouseEvent (UPDOWN_INFO *infoPtr, UINT msg, POINTS pts)
|
||||
static void UPDOWN_HandleMouseEvent (UPDOWN_INFO *infoPtr, UINT msg, INT x, INT y)
|
||||
{
|
||||
DWORD dwStyle = GetWindowLongW (infoPtr->Self, GWL_STYLE);
|
||||
POINT pt = { pts.x, pts.y };
|
||||
POINT pt = { x, y };
|
||||
RECT rect;
|
||||
int temp, arrow;
|
||||
|
||||
TRACE("msg %04x point %s\n", msg, wine_dbgstr_point(&pt));
|
||||
|
||||
switch(msg)
|
||||
{
|
||||
case WM_LBUTTONDOWN: /* Initialise mouse tracking */
|
||||
/* If we are inside an arrow, then nothing to do */
|
||||
if(!(infoPtr->Flags & FLAG_MOUSEIN)) return;
|
||||
|
||||
/* If the buddy is an edit, will set focus to it */
|
||||
if (UPDOWN_IsBuddyEdit(infoPtr)) SetFocus(infoPtr->Buddy);
|
||||
|
||||
/* Now see which one is the 'active' arrow */
|
||||
arrow = UPDOWN_GetArrowFromPoint (infoPtr, &rect, pt);
|
||||
|
||||
/* Update the flags if we are in/out */
|
||||
infoPtr->Flags &= ~(FLAG_MOUSEIN | FLAG_ARROW);
|
||||
if (arrow)
|
||||
infoPtr->Flags |= FLAG_MOUSEIN | arrow;
|
||||
else
|
||||
if (infoPtr->AccelIndex != -1) infoPtr->AccelIndex = 0;
|
||||
|
||||
if (infoPtr->Flags & FLAG_ARROW) {
|
||||
|
||||
/* Update the CurVal if necessary */
|
||||
|
@ -671,7 +688,8 @@ static void UPDOWN_HandleMouseEvent (UPDOWN_INFO *infoPtr, UINT msg, POINTS pts)
|
|||
InvalidateRect (infoPtr->Self, NULL, FALSE);
|
||||
|
||||
/* process the click */
|
||||
UPDOWN_DoAction (infoPtr, 1, infoPtr->Flags & FLAG_ARROW);
|
||||
temp = (infoPtr->AccelCount && infoPtr->AccelVect) ? infoPtr->AccelVect[0].nInc : 1;
|
||||
UPDOWN_DoAction (infoPtr, temp, infoPtr->Flags & FLAG_ARROW);
|
||||
|
||||
/* now capture all mouse messages */
|
||||
SetCapture (infoPtr->Self);
|
||||
|
@ -710,13 +728,14 @@ static void UPDOWN_HandleMouseEvent (UPDOWN_INFO *infoPtr, UINT msg, POINTS pts)
|
|||
/***********************************************************************
|
||||
* UpDownWndProc
|
||||
*/
|
||||
static LRESULT WINAPI UpDownWindowProc(HWND hwnd, UINT message, WPARAM wParam,
|
||||
LPARAM lParam)
|
||||
static LRESULT WINAPI UpDownWindowProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
|
||||
{
|
||||
UPDOWN_INFO *infoPtr = UPDOWN_GetInfoPtr (hwnd);
|
||||
DWORD dwStyle = GetWindowLongW (hwnd, GWL_STYLE);
|
||||
int temp;
|
||||
|
||||
TRACE("hwnd=%p msg=%04x wparam=%08x lparam=%08lx\n", hwnd, message, wParam, lParam);
|
||||
|
||||
if (!infoPtr && (message != WM_CREATE))
|
||||
return DefWindowProcW (hwnd, message, wParam, lParam);
|
||||
|
||||
|
@ -750,7 +769,7 @@ static LRESULT WINAPI UpDownWindowProc(HWND hwnd, UINT message, WPARAM wParam,
|
|||
case WM_DESTROY:
|
||||
if(infoPtr->AccelVect) Free (infoPtr->AccelVect);
|
||||
|
||||
if(infoPtr->Buddy) RemovePropA(infoPtr->Buddy, BUDDY_UPDOWN_HWND);
|
||||
if(infoPtr->Buddy) RemovePropW(infoPtr->Buddy, BUDDY_UPDOWN_HWND);
|
||||
|
||||
Free (infoPtr);
|
||||
SetWindowLongPtrW (hwnd, 0, 0);
|
||||
|
@ -821,7 +840,7 @@ static LRESULT WINAPI UpDownWindowProc(HWND hwnd, UINT message, WPARAM wParam,
|
|||
case WM_LBUTTONDOWN:
|
||||
case WM_MOUSEMOVE:
|
||||
if(UPDOWN_IsEnabled(infoPtr))
|
||||
UPDOWN_HandleMouseEvent (infoPtr, message, MAKEPOINTS(lParam));
|
||||
UPDOWN_HandleMouseEvent (infoPtr, message, (SHORT)LOWORD(lParam), (SHORT)HIWORD(lParam));
|
||||
break;
|
||||
|
||||
case WM_KEYDOWN:
|
||||
|
@ -842,7 +861,8 @@ static LRESULT WINAPI UpDownWindowProc(HWND hwnd, UINT message, WPARAM wParam,
|
|||
return 0;
|
||||
|
||||
case UDM_SETACCEL:
|
||||
TRACE("UpDown Ctrl new accel info, hwnd=%p\n", hwnd);
|
||||
TRACE("UDM_SETACCEL\n");
|
||||
|
||||
if(infoPtr->AccelVect) {
|
||||
Free (infoPtr->AccelVect);
|
||||
infoPtr->AccelCount = 0;
|
||||
|
@ -852,6 +872,11 @@ static LRESULT WINAPI UpDownWindowProc(HWND hwnd, UINT message, WPARAM wParam,
|
|||
infoPtr->AccelVect = Alloc (wParam*sizeof(UDACCEL));
|
||||
if(infoPtr->AccelVect == 0) return FALSE;
|
||||
memcpy(infoPtr->AccelVect, (void*)lParam, wParam*sizeof(UDACCEL));
|
||||
infoPtr->AccelCount = wParam;
|
||||
|
||||
for (temp = 0; temp < wParam; temp++)
|
||||
TRACE("%d: nSec %u nInc %u\n", temp, infoPtr->AccelVect[temp].nSec, infoPtr->AccelVect[temp].nInc);
|
||||
|
||||
return TRUE;
|
||||
|
||||
case UDM_GETBASE:
|
||||
|
|
|
@ -4,7 +4,7 @@ RCS file: /home/wine/wine/dlls/comctl32/comctl32.spec,v
|
|||
retrieving revision 1.46
|
||||
diff -u -r1.46 comctl32.spec
|
||||
--- comctl32.spec 19 Oct 2004 22:59:59 -0000 1.46
|
||||
+++ comctl32.spec 21 Oct 2004 08:50:24 -0000
|
||||
+++ comctl32.spec 5 Dec 2004 22:48:09 -0000
|
||||
@@ -106,13 +106,13 @@
|
||||
412 stdcall RemoveWindowSubclass(long ptr long)
|
||||
413 stdcall DefSubclassProc(long long long long)
|
||||
|
@ -26,13 +26,49 @@ diff -u -r1.46 comctl32.spec
|
|||
|
||||
# Functions imported by name
|
||||
|
||||
Index: commctrl.c
|
||||
===================================================================
|
||||
RCS file: /home/wine/wine/dlls/comctl32/commctrl.c,v
|
||||
retrieving revision 1.88
|
||||
diff -u -r1.88 commctrl.c
|
||||
--- commctrl.c 19 Oct 2004 22:59:59 -0000 1.88
|
||||
+++ commctrl.c 5 Dec 2004 22:48:09 -0000
|
||||
@@ -482,7 +482,7 @@
|
||||
r.left += 3;
|
||||
if (style & SBT_RTLREADING)
|
||||
FIXME("Unsupported RTL style!\n");
|
||||
- DrawTextW (hdc, text, -1, &r, align|DT_VCENTER|DT_SINGLELINE);
|
||||
+ DrawTextW (hdc, text, -1, &r, align|DT_VCENTER|DT_SINGLELINE|DT_NOPREFIX);
|
||||
SetBkMode(hdc, oldbkmode);
|
||||
}
|
||||
}
|
||||
Index: datetime.c
|
||||
===================================================================
|
||||
RCS file: /home/wine/wine/dlls/comctl32/datetime.c,v
|
||||
retrieving revision 1.49
|
||||
diff -u -r1.49 datetime.c
|
||||
--- datetime.c 24 Nov 2004 18:28:31 -0000 1.49
|
||||
+++ datetime.c 5 Dec 2004 22:48:10 -0000
|
||||
@@ -814,10 +814,10 @@
|
||||
|
||||
TRACE("Height=%ld, Width=%ld\n", infoPtr->rcClient.bottom, infoPtr->rcClient.right);
|
||||
|
||||
- /* use DrawEdge to adjust the size of rcEdge to get rcDraw */
|
||||
memcpy((&infoPtr->rcDraw), (&infoPtr->rcClient), sizeof(infoPtr->rcDraw));
|
||||
|
||||
- DrawEdge(NULL, &(infoPtr->rcDraw), EDGE_SUNKEN, BF_RECT | BF_ADJUST);
|
||||
+ /* subract the size of the edge drawn by DrawEdge */
|
||||
+ InflateRect(&infoPtr->rcDraw, -2, -2);
|
||||
|
||||
/* set the size of the button that drops the calendar down */
|
||||
/* FIXME: account for style that allows button on left side */
|
||||
Index: listview.c
|
||||
===================================================================
|
||||
RCS file: /home/wine/wine/dlls/comctl32/listview.c,v
|
||||
retrieving revision 1.394
|
||||
diff -u -r1.394 listview.c
|
||||
--- listview.c 2 Sep 2004 23:00:53 -0000 1.394
|
||||
+++ listview.c 21 Oct 2004 08:50:32 -0000
|
||||
retrieving revision 1.398
|
||||
diff -u -r1.398 listview.c
|
||||
--- listview.c 24 Nov 2004 18:28:31 -0000 1.398
|
||||
+++ listview.c 5 Dec 2004 22:48:13 -0000
|
||||
@@ -146,6 +146,7 @@
|
||||
#include <assert.h>
|
||||
#include <ctype.h>
|
||||
|
@ -41,7 +77,7 @@ diff -u -r1.394 listview.c
|
|||
#include <stdlib.h>
|
||||
#include <stdarg.h>
|
||||
#include <stdio.h>
|
||||
@@ -2022,7 +2023,8 @@
|
||||
@@ -2033,7 +2034,8 @@
|
||||
infoPtr->iconSize.cy + ICON_BOTTOM_PADDING;
|
||||
Label.right = Label.left + labelSize.cx;
|
||||
Label.bottom = Label.top + infoPtr->nItemHeight;
|
||||
|
@ -51,7 +87,7 @@ diff -u -r1.394 listview.c
|
|||
{
|
||||
labelSize.cy = min(Box.bottom - Label.top, labelSize.cy);
|
||||
labelSize.cy /= infoPtr->ntmHeight;
|
||||
@@ -9511,7 +9513,8 @@
|
||||
@@ -9522,7 +9524,8 @@
|
||||
hOldFont = SelectObject(hdc, infoPtr->hFont);
|
||||
|
||||
/*Get String Length in pixels */
|
||||
|
@ -61,13 +97,35 @@ diff -u -r1.394 listview.c
|
|||
|
||||
/*Add Extra spacing for the next character */
|
||||
GetTextMetricsW(hdc, &textMetric);
|
||||
Index: rebar.c
|
||||
===================================================================
|
||||
RCS file: /home/wine/wine/dlls/comctl32/rebar.c,v
|
||||
retrieving revision 1.100
|
||||
diff -u -r1.100 rebar.c
|
||||
--- rebar.c 24 Nov 2004 18:28:31 -0000 1.100
|
||||
+++ rebar.c 5 Dec 2004 22:48:14 -0000
|
||||
@@ -3786,10 +3786,10 @@
|
||||
infoPtr->bands = NULL;
|
||||
}
|
||||
|
||||
- DeleteObject (infoPtr->hcurArrow);
|
||||
- DeleteObject (infoPtr->hcurHorz);
|
||||
- DeleteObject (infoPtr->hcurVert);
|
||||
- DeleteObject (infoPtr->hcurDrag);
|
||||
+ DestroyCursor (infoPtr->hcurArrow);
|
||||
+ DestroyCursor (infoPtr->hcurHorz);
|
||||
+ DestroyCursor (infoPtr->hcurVert);
|
||||
+ DestroyCursor (infoPtr->hcurDrag);
|
||||
if(infoPtr->hDefaultFont) DeleteObject (infoPtr->hDefaultFont);
|
||||
SetWindowLongPtrW (infoPtr->hwndSelf, 0, 0);
|
||||
|
||||
Index: string.c
|
||||
===================================================================
|
||||
RCS file: /home/wine/wine/dlls/comctl32/string.c,v
|
||||
retrieving revision 1.5
|
||||
diff -u -r1.5 string.c
|
||||
--- string.c 22 Sep 2004 19:10:27 -0000 1.5
|
||||
+++ string.c 21 Oct 2004 08:50:38 -0000
|
||||
+++ string.c 5 Dec 2004 22:48:15 -0000
|
||||
@@ -264,7 +264,7 @@
|
||||
{
|
||||
TRACE("(%s,%s)\n", debugstr_w(lpszStr), debugstr_w(lpszSearch));
|
||||
|
@ -86,19 +144,36 @@ diff -u -r1.5 string.c
|
|||
}
|
||||
|
||||
/*************************************************************************
|
||||
Index: tooltips.c
|
||||
===================================================================
|
||||
RCS file: /home/wine/wine/dlls/comctl32/tooltips.c,v
|
||||
retrieving revision 1.74
|
||||
diff -u -r1.74 tooltips.c
|
||||
--- tooltips.c 25 Oct 2004 21:44:50 -0000 1.74
|
||||
+++ tooltips.c 5 Dec 2004 22:48:16 -0000
|
||||
@@ -2836,7 +2836,7 @@
|
||||
TOOLTIPS_Unregister (void)
|
||||
{
|
||||
int i;
|
||||
- for (i = 0; i < TTI_ERROR+1; i++)
|
||||
- DeleteObject(hTooltipIcons[i]);
|
||||
+ for (i = TTI_INFO; i <= TTI_ERROR; i++)
|
||||
+ DestroyIcon(hTooltipIcons[i]);
|
||||
UnregisterClassW (TOOLTIPS_CLASSW, NULL);
|
||||
}
|
||||
Index: treeview.c
|
||||
===================================================================
|
||||
RCS file: /home/wine/wine/dlls/comctl32/treeview.c,v
|
||||
retrieving revision 1.156
|
||||
diff -u -r1.156 treeview.c
|
||||
--- treeview.c 7 Oct 2004 17:34:31 -0000 1.156
|
||||
+++ treeview.c 21 Oct 2004 08:50:45 -0000
|
||||
@@ -2328,7 +2328,7 @@
|
||||
retrieving revision 1.158
|
||||
diff -u -r1.158 treeview.c
|
||||
--- treeview.c 21 Nov 2004 15:41:08 -0000 1.158
|
||||
+++ treeview.c 5 Dec 2004 22:48:18 -0000
|
||||
@@ -2329,7 +2329,7 @@
|
||||
SelectObject(hdc, hOldPen);
|
||||
DeleteObject(hNewPen);
|
||||
|
||||
- if (height < 16 || width < 16)
|
||||
+ if (height < 32 || width < 32)
|
||||
+ if (height < 18 || width < 18)
|
||||
{
|
||||
MoveToEx(hdc, centerx - plussize + 1, centery, NULL);
|
||||
LineTo(hdc, centerx + plussize, centery);
|
||||
|
|
|
@ -1992,6 +1992,17 @@ typedef struct _TBBUTTON {
|
|||
int iString;
|
||||
} TBBUTTON,*PTBBUTTON,*LPTBBUTTON;
|
||||
typedef const TBBUTTON *LPCTBBUTTON;
|
||||
typedef struct tagNMTBRESTORE
|
||||
{
|
||||
NMHDR hdr;
|
||||
DWORD* pData;
|
||||
DWORD* pCurrent;
|
||||
UINT cbData;
|
||||
int iItem;
|
||||
int cButtons;
|
||||
int cbBytesPerRecord;
|
||||
TBBUTTON tbButton;
|
||||
} NMTBRESTORE, *LPNMTBRESTORE;
|
||||
#if _WIN32_IE >= 0x400
|
||||
typedef struct {
|
||||
UINT cbSize;
|
||||
|
@ -2045,11 +2056,6 @@ typedef struct {
|
|||
int cchText;
|
||||
LPTSTR pszText;
|
||||
} TBNOTIFY,*LPTBNOTIFY;
|
||||
typedef struct {
|
||||
HKEY hkr;
|
||||
LPCTSTR pszSubKey;
|
||||
LPCTSTR pszValueName;
|
||||
} TBSAVEPARAMS;
|
||||
typedef struct _IMAGEINFO {
|
||||
HBITMAP hbmImage;
|
||||
HBITMAP hbmMask;
|
||||
|
@ -2246,12 +2252,12 @@ typedef struct tagTBSAVEPARAMSA {
|
|||
HKEY hkr;
|
||||
LPCSTR pszSubKey;
|
||||
LPCSTR pszValueName;
|
||||
} TBSAVEPARAMSA;
|
||||
} TBSAVEPARAMSA, *LPTBSAVEPARAMSA;
|
||||
typedef struct tagTBSAVEPARAMSW {
|
||||
HKEY hkr;
|
||||
LPCWSTR pszSubKey;
|
||||
LPCWSTR pszValueName;
|
||||
} TBSAVEPARAMSW;
|
||||
} TBSAVEPARAMSW, *LPTBSAVEPARAMSW, *LPTBSAVEPARAMW;
|
||||
typedef struct {
|
||||
HINSTANCE hInstOld;
|
||||
UINT nIDOld;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue