Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-cw
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-cw
Commits
796c4dec
Commit
796c4dec
authored
Feb 07, 2010
by
Erich Hoover
Committed by
Alexandre Julliard
Feb 08, 2010
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
hhctrl.ocx: Add widgets for the Search tab.
parent
6ab98124
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
126 additions
and
6 deletions
+126
-6
help.c
dlls/hhctrl.ocx/help.c
+119
-6
hhctrl.h
dlls/hhctrl.ocx/hhctrl.h
+7
-0
No files found.
dlls/hhctrl.ocx/help.c
View file @
796c4dec
...
...
@@ -44,6 +44,7 @@ static LRESULT Help_OnSize(HWND hWnd);
#define TAB_TOP_PADDING 8
#define TAB_RIGHT_PADDING 4
#define TAB_MARGIN 8
#define EDIT_HEIGHT 20
static
const
WCHAR
szEmpty
[]
=
{
0
};
...
...
@@ -341,9 +342,6 @@ static void ResizeTabChild(HHInfo *info, int tab)
SetWindowPos
(
hwnd
,
NULL
,
rect
.
left
,
rect
.
top
,
width
,
height
,
SWP_NOZORDER
|
SWP_NOACTIVATE
);
/* Resize the tab widget column to perfectly fit the tab window and
* leave sufficient space for the scroll widget.
*/
switch
(
tab
)
{
case
TAB_INDEX
:
{
...
...
@@ -351,11 +349,33 @@ static void ResizeTabChild(HHInfo *info, int tab)
int
border_width
=
GetSystemMetrics
(
SM_CXBORDER
);
int
edge_width
=
GetSystemMetrics
(
SM_CXEDGE
);
/* Resize the tab widget column to perfectly fit the tab window and
* leave sufficient space for the scroll widget.
*/
SendMessageW
(
info
->
tabs
[
TAB_INDEX
].
hwnd
,
LVM_SETCOLUMNWIDTH
,
0
,
width
-
scroll_width
-
2
*
border_width
-
2
*
edge_width
);
break
;
}
case
TAB_SEARCH
:
{
int
scroll_width
=
GetSystemMetrics
(
SM_CXVSCROLL
);
int
border_width
=
GetSystemMetrics
(
SM_CXBORDER
);
int
edge_width
=
GetSystemMetrics
(
SM_CXEDGE
);
int
top_pos
=
0
;
SetWindowPos
(
info
->
search
.
hwndEdit
,
NULL
,
0
,
top_pos
,
width
,
EDIT_HEIGHT
,
SWP_NOZORDER
|
SWP_NOACTIVATE
);
top_pos
+=
EDIT_HEIGHT
+
TAB_MARGIN
;
SetWindowPos
(
info
->
search
.
hwndList
,
NULL
,
0
,
top_pos
,
width
,
height
-
top_pos
,
SWP_NOZORDER
|
SWP_NOACTIVATE
);
/* Resize the tab widget column to perfectly fit the tab window and
* leave sufficient space for the scroll widget.
*/
SendMessageW
(
info
->
search
.
hwndList
,
LVM_SETCOLUMNWIDTH
,
0
,
width
-
scroll_width
-
2
*
border_width
-
2
*
edge_width
);
break
;
}
}
}
...
...
@@ -469,6 +489,22 @@ static LRESULT OnTopicChange(HHInfo *info, void *user_data)
return
0
;
}
/* Capture the Enter/Return key and send it up to Child_WndProc as an NM_RETURN message */
static
LRESULT
CALLBACK
EditChild_WndProc
(
HWND
hWnd
,
UINT
message
,
WPARAM
wParam
,
LPARAM
lParam
)
{
WNDPROC
editWndProc
=
(
WNDPROC
)
GetWindowLongPtrW
(
hWnd
,
GWLP_USERDATA
);
if
(
message
==
WM_KEYUP
&&
wParam
==
VK_RETURN
)
{
NMHDR
nmhdr
;
nmhdr
.
hwndFrom
=
hWnd
;
nmhdr
.
code
=
NM_RETURN
;
SendMessageW
(
GetParent
(
GetParent
(
hWnd
)),
WM_NOTIFY
,
wParam
,
(
LPARAM
)
&
nmhdr
);
}
return
editWndProc
(
hWnd
,
message
,
wParam
,
lParam
);
}
static
LRESULT
CALLBACK
Child_WndProc
(
HWND
hWnd
,
UINT
message
,
WPARAM
wParam
,
LPARAM
lParam
)
{
switch
(
message
)
...
...
@@ -490,8 +526,10 @@ static LRESULT CALLBACK Child_WndProc(HWND hWnd, UINT message, WPARAM wParam, LP
if
(
info
&&
info
->
current_tab
==
TAB_INDEX
)
return
OnTopicChange
(
info
,
(
void
*
)((
NMITEMACTIVATE
*
)
lParam
)
->
lParam
);
case
NM_RETURN
:
if
(
info
&&
info
->
current_tab
==
TAB_INDEX
)
{
if
(
!
info
)
return
0
;
switch
(
info
->
current_tab
)
{
case
TAB_INDEX
:
{
HWND
hwndList
=
info
->
tabs
[
TAB_INDEX
].
hwnd
;
LVITEMW
lvItem
;
...
...
@@ -499,8 +537,17 @@ static LRESULT CALLBACK Child_WndProc(HWND hWnd, UINT message, WPARAM wParam, LP
lvItem
.
mask
=
TVIF_PARAM
;
ListView_GetItemW
(
hwndList
,
&
lvItem
);
OnTopicChange
(
info
,
(
void
*
)
lvItem
.
lParam
);
return
0
;
}
return
0
;
case
TAB_SEARCH
:
{
WCHAR
needle
[
100
];
GetWindowTextW
(
info
->
search
.
hwndEdit
,
needle
,
sizeof
(
needle
)
/
sizeof
(
WCHAR
));
FIXME
(
"Search for text: %s
\n
"
,
debugstr_w
(
needle
));
return
0
;
}
}
break
;
}
break
;
}
...
...
@@ -862,6 +909,69 @@ static BOOL AddIndexTab(HHInfo *info)
return
TRUE
;
}
static
BOOL
AddSearchTab
(
HHInfo
*
info
)
{
HWND
hwndList
,
hwndEdit
,
hwndContainer
;
char
hidden_column
[]
=
"Column"
;
WNDPROC
editWndProc
;
LVCOLUMNA
lvc
;
if
(
info
->
tabs
[
TAB_SEARCH
].
id
==
-
1
)
return
TRUE
;
/* No "Search" tab */
hwndContainer
=
CreateWindowExW
(
WS_EX_CONTROLPARENT
,
szChildClass
,
szEmpty
,
WS_CHILD
,
0
,
0
,
0
,
0
,
info
->
WinType
.
hwndNavigation
,
NULL
,
hhctrl_hinstance
,
NULL
);
if
(
!
hwndContainer
)
{
ERR
(
"Could not create search window container control.
\n
"
);
return
FALSE
;
}
hwndEdit
=
CreateWindowExW
(
WS_EX_CLIENTEDGE
,
WC_EDITW
,
szEmpty
,
WS_CHILD
|
WS_VISIBLE
|
ES_LEFT
|
SS_NOTIFY
,
0
,
0
,
0
,
0
,
hwndContainer
,
NULL
,
hhctrl_hinstance
,
NULL
);
if
(
!
hwndEdit
)
{
ERR
(
"Could not create search ListView control.
\n
"
);
return
FALSE
;
}
if
(
SendMessageW
(
hwndEdit
,
WM_SETFONT
,
(
WPARAM
)
info
->
hFont
,
(
LPARAM
)
FALSE
)
==
-
1
)
{
ERR
(
"Could not set font for edit control.
\n
"
);
return
FALSE
;
}
editWndProc
=
(
WNDPROC
)
SetWindowLongPtrW
(
hwndEdit
,
GWLP_WNDPROC
,
(
LONG_PTR
)
EditChild_WndProc
);
if
(
!
editWndProc
)
{
ERR
(
"Could not redirect messages for edit control.
\n
"
);
return
FALSE
;
}
SetWindowLongPtrW
(
hwndEdit
,
GWLP_USERDATA
,
(
LONG_PTR
)
editWndProc
);
hwndList
=
CreateWindowExW
(
WS_EX_CLIENTEDGE
,
WC_LISTVIEWW
,
szEmpty
,
WS_CHILD
|
WS_VISIBLE
|
WS_BORDER
|
LVS_SINGLESEL
|
LVS_REPORT
|
LVS_NOCOLUMNHEADER
,
0
,
0
,
0
,
0
,
hwndContainer
,
NULL
,
hhctrl_hinstance
,
NULL
);
if
(
!
hwndList
)
{
ERR
(
"Could not create search ListView control.
\n
"
);
return
FALSE
;
}
memset
(
&
lvc
,
0
,
sizeof
(
lvc
));
lvc
.
mask
=
LVCF_TEXT
;
lvc
.
pszText
=
hidden_column
;
if
(
SendMessageW
(
hwndList
,
LVM_INSERTCOLUMNA
,
0
,
(
LPARAM
)
&
lvc
)
==
-
1
)
{
ERR
(
"Could not create ListView column
\n
"
);
return
FALSE
;
}
info
->
search
.
hwndEdit
=
hwndEdit
;
info
->
search
.
hwndList
=
hwndList
;
info
->
search
.
hwndContainer
=
hwndContainer
;
info
->
tabs
[
TAB_SEARCH
].
hwnd
=
hwndContainer
;
SetWindowLongPtrW
(
hwndContainer
,
GWLP_USERDATA
,
(
LONG_PTR
)
info
);
ResizeTabChild
(
info
,
TAB_SEARCH
);
return
TRUE
;
}
/* The Index tab's sub-topic popup */
static
void
ResizePopupChild
(
HHInfo
*
info
)
...
...
@@ -1232,6 +1342,9 @@ static BOOL CreateViewer(HHInfo *pHHInfo)
if
(
!
AddIndexPopup
(
pHHInfo
))
return
FALSE
;
if
(
!
AddSearchTab
(
pHHInfo
))
return
FALSE
;
InitContent
(
pHHInfo
);
InitIndex
(
pHHInfo
);
...
...
dlls/hhctrl.ocx/hhctrl.h
View file @
796c4dec
...
...
@@ -115,6 +115,12 @@ typedef struct {
}
IndexPopup
;
typedef
struct
{
HWND
hwndEdit
;
HWND
hwndList
;
HWND
hwndContainer
;
}
SearchTab
;
typedef
struct
{
IOleClientSite
*
client_site
;
IWebBrowser2
*
web_browser
;
IOleObject
*
wb_object
;
...
...
@@ -137,6 +143,7 @@ typedef struct {
ContentItem
*
content
;
IndexItem
*
index
;
IndexPopup
popup
;
SearchTab
search
;
HWND
hwndTabCtrl
;
HWND
hwndSizeBar
;
HFONT
hFont
;
...
...
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