Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-winehq
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wine
wine-winehq
Commits
7624da76
Commit
7624da76
authored
May 29, 2013
by
Alexandre Julliard
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
comctl32: Remove comments about native behavior, that's not a valid source of information.
parent
735e69f9
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
1 addition
and
248 deletions
+1
-248
comboex.c
dlls/comctl32/comboex.c
+0
-146
listview.c
dlls/comctl32/listview.c
+0
-18
rebar.c
dlls/comctl32/rebar.c
+0
-40
toolbar.c
dlls/comctl32/toolbar.c
+1
-44
No files found.
dlls/comctl32/comboex.c
View file @
7624da76
...
...
@@ -1003,24 +1003,14 @@ static LRESULT COMBOEX_Create (HWND hwnd, CREATESTRUCTA const *cs)
/* (allow space for the icons). */
infoPtr
->
hwndCombo
=
CreateWindowW
(
WC_COMBOBOXW
,
NIL
,
/* following line added to match native */
WS_CLIPSIBLINGS
|
WS_CLIPCHILDREN
|
WS_VSCROLL
|
CBS_NOINTEGRALHEIGHT
|
CBS_DROPDOWNLIST
|
/* was base and is necessary */
WS_CHILD
|
WS_VISIBLE
|
CBS_OWNERDRAWFIXED
|
GetWindowLongW
(
hwnd
,
GWL_STYLE
),
cs
->
y
,
cs
->
x
,
cs
->
cx
,
cs
->
cy
,
hwnd
,
(
HMENU
)
GetWindowLongPtrW
(
hwnd
,
GWLP_ID
),
(
HINSTANCE
)
GetWindowLongPtrW
(
hwnd
,
GWLP_HINSTANCE
),
NULL
);
/*
* native does the following at this point according to trace:
* GetWindowThreadProcessId(hwndCombo,0)
* GetCurrentThreadId()
* GetWindowThreadProcessId(hwndCombo, &???)
* GetCurrentProcessId()
*/
SetWindowSubclass
(
infoPtr
->
hwndCombo
,
COMBOEX_ComboWndProc
,
COMBO_SUBCLASSID
,
(
DWORD_PTR
)
hwnd
);
infoPtr
->
font
=
(
HFONT
)
SendMessageW
(
infoPtr
->
hwndCombo
,
WM_GETFONT
,
0
,
0
);
...
...
@@ -1037,12 +1027,6 @@ static LRESULT COMBOEX_Create (HWND hwnd, CREATESTRUCTA const *cs)
(
HMENU
)
GetWindowLongPtrW
(
hwnd
,
GWLP_ID
),
(
HINSTANCE
)
GetWindowLongPtrW
(
hwnd
,
GWLP_HINSTANCE
),
NULL
);
/* native does the following at this point according to trace:
* GetWindowThreadProcessId(hwndEdit,0)
* GetCurrentThreadId()
* GetWindowThreadProcessId(hwndEdit, &???)
* GetCurrentProcessId()
*/
SetWindowSubclass
(
infoPtr
->
hwndEdit
,
COMBOEX_EditWndProc
,
EDIT_SUBCLASSID
,
(
DWORD_PTR
)
hwnd
);
...
...
@@ -1117,19 +1101,6 @@ static LRESULT COMBOEX_Command (COMBOEX_INFO *infoPtr, WPARAM wParam)
return
SendMessageW
(
parent
,
WM_COMMAND
,
wParam
,
(
LPARAM
)
infoPtr
->
hwndSelf
);
case
CBN_CLOSEUP
:
SendMessageW
(
parent
,
WM_COMMAND
,
wParam
,
(
LPARAM
)
infoPtr
->
hwndSelf
);
/*
* from native trace of first dropdown after typing in URL in IE4
* CB_GETCURSEL(Combo)
* GetWindowText(Edit)
* CB_GETCURSEL(Combo)
* CB_GETCOUNT(Combo)
* CB_GETITEMDATA(Combo, n)
* WM_NOTIFY(parent, CBEN_ENDEDITA|W)
* CB_GETCURSEL(Combo)
* CB_SETCURSEL(COMBOEX, n)
* SetFocus(Combo)
* the rest is supposition
*/
ShowWindow
(
infoPtr
->
hwndEdit
,
SW_SHOW
);
InvalidateRect
(
infoPtr
->
hwndCombo
,
0
,
TRUE
);
if
(
infoPtr
->
hwndEdit
)
InvalidateRect
(
infoPtr
->
hwndEdit
,
0
,
TRUE
);
...
...
@@ -1215,17 +1186,6 @@ static LRESULT COMBOEX_Command (COMBOEX_INFO *infoPtr, WPARAM wParam)
return
SendMessageW
(
parent
,
WM_COMMAND
,
wParam
,
(
LPARAM
)
infoPtr
->
hwndSelf
);
case
CBN_KILLFOCUS
:
/*
* from native trace:
*
* pass to parent
* WM_GETTEXT(Edit, 104)
* CB_GETCURSEL(Combo) rets -1
* WM_NOTIFY(CBEN_ENDEDITA) with CBENF_KILLFOCUS
* CB_GETCURSEL(Combo)
* InvalidateRect(Combo, 0, 0)
* return 0
*/
SendMessageW
(
parent
,
WM_COMMAND
,
wParam
,
(
LPARAM
)
infoPtr
->
hwndSelf
);
if
(
infoPtr
->
flags
&
WCBE_ACTEDIT
)
{
GetWindowTextW
(
infoPtr
->
hwndEdit
,
wintext
,
260
);
...
...
@@ -1724,9 +1684,6 @@ COMBOEX_EditWndProc (HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam,
return
DefSubclassProc
(
hwnd
,
uMsg
,
wParam
,
lParam
);
case
WM_ERASEBKGND
:
/*
* The following was determined by traces of the native
*/
hDC
=
(
HDC
)
wParam
;
obkc
=
SetBkColor
(
hDC
,
comctl32_color
.
clrWindow
);
GetClientRect
(
hwnd
,
&
rect
);
...
...
@@ -1742,23 +1699,6 @@ COMBOEX_EditWndProc (HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam,
switch
((
INT
)
wParam
)
{
case
VK_ESCAPE
:
/* native version seems to do following for COMBOEX */
/*
* GetWindowTextW(Edit,&?, 0x104) x
* CB_GETCURSEL to Combo rets -1 x
* WM_NOTIFY to COMBOEX parent (rebar) x
* (CBEN_ENDEDIT{A|W}
* fChanged = FALSE x
* inewSelection = -1 x
* txt="www.hoho" x
* iWhy = 3 x
* CB_GETCURSEL to Combo rets -1 x
* InvalidateRect(Combo, 0) x
* WM_SETTEXT to Edit x
* EM_SETSEL to Edit (0,0) x
* EM_SETSEL to Edit (0,-1) x
* RedrawWindow(Combo, 0, 0, 5) x
*/
TRACE
(
"special code for VK_ESCAPE
\n
"
);
GetWindowTextW
(
infoPtr
->
hwndEdit
,
edit_text
,
260
);
...
...
@@ -1783,27 +1723,6 @@ COMBOEX_EditWndProc (HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam,
break
;
case
VK_RETURN
:
/* native version seems to do following for COMBOEX */
/*
* GetWindowTextW(Edit,&?, 0x104) x
* CB_GETCURSEL to Combo rets -1 x
* CB_GETCOUNT to Combo rets 0
* if >0 loop
* CB_GETITEMDATA to match
* *** above 3 lines simulated by FindItem x
* WM_NOTIFY to COMBOEX parent (rebar) x
* (CBEN_ENDEDIT{A|W} x
* fChanged = TRUE (-1) x
* iNewSelection = -1 or selected x
* txt= x
* iWhy = 2 (CBENF_RETURN) x
* CB_GETCURSEL to Combo rets -1 x
* if -1 send CB_SETCURSEL to Combo -1 x
* InvalidateRect(Combo, 0, 0) x
* SetFocus(Edit) x
* CallWindowProc(406615a8, Edit, 0x100, 0xd, 0x1c0001)
*/
TRACE
(
"special code for VK_RETURN
\n
"
);
GetWindowTextW
(
infoPtr
->
hwndEdit
,
edit_text
,
260
);
...
...
@@ -1923,9 +1842,6 @@ COMBOEX_ComboWndProc (HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam,
return
DefSubclassProc
(
hwnd
,
uMsg
,
wParam
,
lParam
);
case
WM_ERASEBKGND
:
/*
* The following was determined by traces of the native
*/
hDC
=
(
HDC
)
wParam
;
obkc
=
SetBkColor
(
hDC
,
comctl32_color
.
clrWindow
);
GetClientRect
(
hwnd
,
&
rect
);
...
...
@@ -1994,18 +1910,6 @@ COMBOEX_ComboWndProc (HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam,
return
0
;
case
EN_KILLFOCUS
:
/*
* Native does:
*
* GetFocus() retns AA
* GetWindowTextW(Edit)
* CB_GETCURSEL(Combo) (got -1)
* WM_NOTIFY(CBEN_ENDEDITA) with CBENF_KILLFOCUS
* CB_GETCURSEL(Combo) (got -1)
* InvalidateRect(Combo, 0, 0)
* WM_KILLFOCUS(Combo, AA)
* return 0;
*/
focusedhwnd
=
GetFocus
();
if
(
infoPtr
->
flags
&
WCBE_ACTEDIT
)
{
GetWindowTextW
(
infoPtr
->
hwndEdit
,
edit_text
,
260
);
...
...
@@ -2025,21 +1929,6 @@ COMBOEX_ComboWndProc (HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam,
return
0
;
case
EN_SETFOCUS
:
{
/*
* For EN_SETFOCUS this issues the same calls and messages
* as the native seems to do.
*
* for some cases however native does the following:
* (noticed after SetFocus during LBUTTONDOWN on
* on dropdown arrow)
* WM_GETTEXTLENGTH (Edit);
* WM_GETTEXT (Edit, len+1, str);
* EM_SETSEL (Edit, 0, 0);
* WM_GETTEXTLENGTH (Edit);
* WM_GETTEXT (Edit, len+1, str);
* EM_SETSEL (Edit, 0, len);
* WM_NOTIFY (parent, CBEN_BEGINEDIT)
*/
NMHDR
hdr
;
SendMessageW
(
infoPtr
->
hwndEdit
,
EM_SETSEL
,
0
,
0
);
...
...
@@ -2051,10 +1940,6 @@ COMBOEX_ComboWndProc (HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam,
}
case
EN_CHANGE
:
{
/*
* For EN_CHANGE this issues the same calls and messages
* as the native seems to do.
*/
LPCWSTR
lastwrk
;
cmp_func_t
cmptext
=
get_cmp_func
(
infoPtr
);
...
...
@@ -2090,37 +1975,6 @@ COMBOEX_ComboWndProc (HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam,
}
case
LBN_SELCHANGE
:
/*
* Therefore from traces there is no additional code here
*/
/*
* Using native COMCTL32 gets the following:
* 1 == SHDOCVW.DLL issues call/message
* 2 == COMCTL32.DLL issues call/message
* 3 == WINE issues call/message
*
*
* for LBN_SELCHANGE:
* 1 CB_GETCURSEL(ComboEx)
* 1 CB_GETDROPPEDSTATE(ComboEx)
* 1 CallWindowProc( *2* for WM_COMMAND(LBN_SELCHANGE)
* 2 CallWindowProc( *3* for WM_COMMAND(LBN_SELCHANGE)
** call CBRollUp( xxx, TRUE for LBN_SELCHANGE, TRUE)
* 3 WM_COMMAND(ComboEx, CBN_SELENDOK)
* WM_USER+49(ComboLB, 1,0) <=============!!!!!!!!!!!
* 3 ShowWindow(ComboLB, SW_HIDE)
* 3 RedrawWindow(Combo, RDW_UPDATENOW)
* 3 WM_COMMAND(ComboEX, CBN_CLOSEUP)
** end of CBRollUp
* 3 WM_COMMAND(ComboEx, CBN_SELCHANGE) (echo to parent)
* ? LB_GETCURSEL <==|
* ? LB_GETTEXTLEN |
* ? LB_GETTEXT | Needs to be added to
* ? WM_CTLCOLOREDIT(ComboEx) | Combo processing
* ? LB_GETITEMDATA |
* ? WM_DRAWITEM(ComboEx) <==|
*/
default:
break
;
}
/* fall through */
...
...
dlls/comctl32/listview.c
View file @
7624da76
...
...
@@ -132,13 +132,6 @@
*
* Functions:
* -- LVGroupComparE
*
* Known differences in message stream from native control (not known if
* these differences cause problems):
* LVM_INSERTITEM issues LVM_SETITEMSTATE and LVM_SETITEM in certain cases.
* LVM_SETITEM does not always issue LVN_ITEMCHANGING/LVN_ITEMCHANGED.
* WM_CREATE does not issue WM_QUERYUISTATE and associated registry
* processing for "USEDOUBLECLICKTIME".
*/
#include "config.h"
...
...
@@ -7905,17 +7898,6 @@ static BOOL LISTVIEW_RedrawItems(const LISTVIEW_INFO *infoPtr, INT nFirst, INT n
* nearest number of pixels that are a whole line. Ex: if line height
* is 16 and an 8 is passed, the list will be scrolled by 16. If a 7
* is passed, then the scroll will be 0. (per MSDN 7/2002)
*
* For: (per experimentation with native control and CSpy ListView)
* LV_VIEW_ICON scrolling in any direction is allowed
* LV_VIEW_SMALLICON scrolling in any direction is allowed
* LV_VIEW_LIST dx=1 = 1 column (horizontal only)
* but will only scroll 1 column per message
* no matter what the value.
* dy must be 0 or FALSE returned.
* LV_VIEW_DETAILS dx=1 = 1 pixel
* dy= see above
*
*/
static
BOOL
LISTVIEW_Scroll
(
LISTVIEW_INFO
*
infoPtr
,
INT
dx
,
INT
dy
)
{
...
...
dlls/comctl32/rebar.c
View file @
7624da76
...
...
@@ -1052,14 +1052,6 @@ REBAR_MoveChildWindows (const REBAR_INFO *infoPtr, UINT start, UINT endplus)
lpBand
->
rcChild
=
rbcz
.
rcChild
;
/* *** ??? */
}
/* native (IE4 in "Favorites" frame **1) does:
* SetRect (&rc, -1, -1, -1, -1)
* EqualRect (&rc,band->rc???)
* if ret==0
* CopyRect (band->rc????, &rc)
* set flag outside of loop
*/
GetClassNameW
(
lpBand
->
hwndChild
,
szClassName
,
sizeof
(
szClassName
)
/
sizeof
(
szClassName
[
0
]));
if
(
!
lstrcmpW
(
szClassName
,
strComboBox
)
||
!
lstrcmpW
(
szClassName
,
WC_COMBOBOXEXW
))
{
...
...
@@ -1111,15 +1103,6 @@ REBAR_MoveChildWindows (const REBAR_INFO *infoPtr, UINT start, UINT endplus)
if
(
infoPtr
->
DoRedraw
)
UpdateWindow
(
infoPtr
->
hwndSelf
);
/* native (from **1 above) does:
* UpdateWindow(rebar)
* REBAR_ForceResize
* RBN_HEIGHTCHANGE if necessary
* if ret from any EqualRect was 0
* Goto "BeginDeferWindowPos"
*/
}
/* Returns the next visible band (the first visible band in [i+1; infoPtr->uNumBands) )
...
...
@@ -3314,29 +3297,6 @@ REBAR_NCCreate (HWND hwnd, const CREATESTRUCTW *cs)
infoPtr
->
hFont
=
infoPtr
->
hDefaultFont
=
tfont
;
}
/* native does:
GetSysColor (numerous);
GetSysColorBrush (numerous) (see WM_SYSCOLORCHANGE);
*GetStockObject (SYSTEM_FONT);
*SetWindowLong (hwnd, 0, info ptr);
*WM_NOTIFYFORMAT;
*SetWindowLong (hwnd, GWL_STYLE, style+0x10000001);
WS_VISIBLE = 0x10000000;
CCS_TOP = 0x00000001;
*SystemParametersInfo (SPI_GETNONCLIENTMETRICS...);
*CreateFontIndirect (lfCaptionFont from above);
GetDC ();
SelectObject (hdc, fontabove);
GetTextMetrics (hdc, ); guessing is tmHeight
SelectObject (hdc, oldfont);
ReleaseDC ();
GetWindowRect ();
MapWindowPoints (0, parent, rectabove, 2);
GetWindowRect ();
GetClientRect ();
ClientToScreen (clientrect);
SetWindowPos (hwnd, 0, 0, 0, 0, 0, SWP_NOZORDER);
*/
return
TRUE
;
}
...
...
dlls/comctl32/toolbar.c
View file @
7624da76
...
...
@@ -945,11 +945,6 @@ TOOLBAR_DrawButton (const TOOLBAR_INFO *infoPtr, TBUTTON_INFO *btnPtr, HDC hdc,
tbcd
.
clrHighlightHotTrack
=
0
;
tbcd
.
nStringBkMode
=
TRANSPARENT
;
tbcd
.
nHLStringBkMode
=
OPAQUE
;
/* MSDN says that this is the text rectangle.
* But (why always a but) tracing of v5.7 of native shows
* that this is really a *relative* rectangle based on the
* the nmcd.rc. Also the left and top are always 0 ignoring
* any bitmap that might be present. */
tbcd
.
rcText
.
left
=
0
;
tbcd
.
rcText
.
top
=
0
;
tbcd
.
rcText
.
right
=
rcText
.
right
-
rc
.
left
;
...
...
@@ -5118,7 +5113,6 @@ TOOLBAR_GetIdealSize (const TOOLBAR_INFO *infoPtr, WPARAM wParam, LPARAM lParam)
switch
(
wParam
)
{
case
0
:
if
(
lpsize
->
cx
==
-
1
)
{
/* **** this is wrong, native measures each button and sets it */
lpsize
->
cx
=
infoPtr
->
rcBound
.
right
-
infoPtr
->
rcBound
.
left
;
}
else
if
(
HIWORD
(
lpsize
->
cx
))
{
...
...
@@ -5481,8 +5475,7 @@ TOOLBAR_LButtonDown (TOOLBAR_INFO *infoPtr, WPARAM wParam, LPARAM lParam)
btnPtr
->
bDropDownPressed
=
FALSE
;
InvalidateRect
(
infoPtr
->
hwndSelf
,
&
btnPtr
->
rect
,
TRUE
);
/* find and set hot item
* NOTE: native doesn't do this, but that is a bug */
/* find and set hot item */
GetCursorPos
(
&
pt
);
ScreenToClient
(
infoPtr
->
hwndSelf
,
&
pt
);
nHit
=
TOOLBAR_InternalHitTest
(
infoPtr
,
&
pt
,
&
button
);
...
...
@@ -5663,9 +5656,6 @@ TOOLBAR_LButtonUp (TOOLBAR_INFO *infoPtr, WPARAM wParam, LPARAM lParam)
TOOLBAR_SendNotify
(
&
hdr
,
infoPtr
,
NM_RELEASEDCAPTURE
);
/* native issues TBN_ENDDRAG here, if _LBUTTONDOWN issued the
* TBN_BEGINDRAG
*/
memset
(
&
nmtb
,
0
,
sizeof
(
nmtb
));
nmtb
.
iItem
=
btnPtr
->
idCommand
;
TOOLBAR_SendNotify
((
NMHDR
*
)
&
nmtb
,
infoPtr
,
...
...
@@ -5957,39 +5947,6 @@ TOOLBAR_NCCreate (HWND hwnd, WPARAM wParam, const CREATESTRUCTW *lpcs)
SetWindowLongPtrW
(
hwnd
,
GWLP_HINSTANCE
,
(
LONG_PTR
)
hInst
);
}
/* native control does:
* Get a lot of colors and brushes
* WM_NOTIFYFORMAT
* SystemParametersInfoW(0x1f, 0x3c, adr1, 0)
* CreateFontIndirectW(adr1)
* CreateBitmap(0x27, 0x24, 1, 1, 0)
* hdc = GetDC(toolbar)
* GetSystemMetrics(0x48)
* fnt2=CreateFontW(0xe, 0, 0, 0, 0x190, 0, 0, 0, 0, 2,
* 0, 0, 0, 0, "MARLETT")
* oldfnt = SelectObject(hdc, fnt2)
* GetCharWidthW(hdc, 0x36, 0x36, adr2)
* GetTextMetricsW(hdc, adr3)
* SelectObject(hdc, oldfnt)
* DeleteObject(fnt2)
* ReleaseDC(hdc)
* InvalidateRect(toolbar, 0, 1)
* SetWindowLongW(toolbar, 0, addr)
* SetWindowLongW(toolbar, -16, xxx) **sometimes**
* WM_STYLECHANGING
* CallWinEx old new
* ie 1 0x56000a4c 0x46000a4c 0x56008a4d
* ie 2 0x4600094c 0x4600094c 0x4600894d
* ie 3 0x56000b4c 0x46000b4c 0x56008b4d
* rebar 0x50008844 0x40008844 0x50008845
* pager 0x50000844 0x40000844 0x50008845
* IC35mgr 0x5400084e **nochange**
* on entry to _NCCREATE 0x5400084e
* rowlist 0x5400004e **nochange**
* on entry to _NCCREATE 0x5400004e
*
*/
/* I think the code below is a bug, but it is the way that the native
* controls seem to work. The effect is that if the user of TBSTYLE_FLAT
* forgets to specify TBSTYLE_TRANSPARENT but does specify either
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment