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
86bfa4cb
Commit
86bfa4cb
authored
Jun 28, 2001
by
Bill Medland
Committed by
Alexandre Julliard
Jun 28, 2001
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Improved handling of styles in the edit control, including detecting
changes of style and correcting handling of inconsistant styles.
parent
93e936f9
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
93 additions
and
6 deletions
+93
-6
edit.c
controls/edit.c
+93
-6
No files found.
controls/edit.c
View file @
86bfa4cb
...
...
@@ -260,6 +260,7 @@ static void EDIT_WM_SetFocus(WND *wnd, EDITSTATE *es);
static
void
EDIT_WM_SetFont
(
WND
*
wnd
,
EDITSTATE
*
es
,
HFONT
font
,
BOOL
redraw
);
static
void
EDIT_WM_SetText
(
WND
*
wnd
,
EDITSTATE
*
es
,
LPARAM
lParam
,
BOOL
unicode
);
static
void
EDIT_WM_Size
(
WND
*
wnd
,
EDITSTATE
*
es
,
UINT
action
,
INT
width
,
INT
height
);
static
LRESULT
EDIT_WM_StyleChanged
(
WND
*
wnd
,
EDITSTATE
*
es
,
WPARAM
which
,
const
STYLESTRUCT
*
style
);
static
LRESULT
EDIT_WM_SysKeyDown
(
WND
*
wnd
,
EDITSTATE
*
es
,
INT
key
,
DWORD
key_data
);
static
void
EDIT_WM_Timer
(
WND
*
wnd
,
EDITSTATE
*
es
);
static
LRESULT
EDIT_WM_VScroll
(
WND
*
wnd
,
EDITSTATE
*
es
,
INT
action
,
INT
pos
);
...
...
@@ -378,7 +379,7 @@ static DWORD get_app_version(void)
*
* The messages are in the order of the actual integer values
* (which can be found in include/windows.h)
* Where
e
ver possible the 16 bit versions are converted to
* Wherever possible the 16 bit versions are converted to
* the 32 bit ones, so that we can 'fall through' to the
* helper functions. These are mostly 32 bit (with a few
* exceptions, clearly indicated by a '16' extension to their
...
...
@@ -848,6 +849,10 @@ static LRESULT WINAPI EditWndProc_locked( WND *wnd, UINT msg,
result
=
EDIT_EM_CharFromPos
(
wnd
,
es
,
SLOWORD
(
lParam
),
SHIWORD
(
lParam
));
break
;
/* End of the EM_ messages which were in numerical order; what order
* are these in? vaguely alphabetical?
*/
case
WM_GETDLGCODE
:
DPRINTF_EDIT_MSG32
(
"WM_GETDLGCODE"
);
result
=
DLGC_HASSETSEL
|
DLGC_WANTCHARS
|
DLGC_WANTARROWS
;
...
...
@@ -1051,6 +1056,16 @@ static LRESULT WINAPI EditWndProc_locked( WND *wnd, UINT msg,
EDIT_WM_Size
(
wnd
,
es
,
(
UINT
)
wParam
,
LOWORD
(
lParam
),
HIWORD
(
lParam
));
break
;
case
WM_STYLECHANGED
:
DPRINTF_EDIT_MSG32
(
"WM_STYLECHANGED"
);
result
=
EDIT_WM_StyleChanged
(
wnd
,
es
,
wParam
,
(
const
STYLESTRUCT
*
)
lParam
);
break
;
case
WM_STYLECHANGING
:
DPRINTF_EDIT_MSG32
(
"WM_STYLECHANGING"
);
result
=
0
;
/* See EDIT_WM_StyleChanged */
break
;
case
WM_SYSKEYDOWN
:
DPRINTF_EDIT_MSG32
(
"WM_SYSKEYDOWN"
);
result
=
EDIT_WM_SysKeyDown
(
wnd
,
es
,
(
INT
)
wParam
,
(
DWORD
)
lParam
);
...
...
@@ -4386,6 +4401,7 @@ static LRESULT EDIT_WM_MouseMove(WND *wnd, EDITSTATE *es, INT x, INT y)
*
* WM_NCCREATE
*
* See also EDIT_WM_StyleChanged
*/
static
LRESULT
EDIT_WM_NCCreate
(
WND
*
wnd
,
DWORD
style
,
HWND
hwndParent
,
BOOL
unicode
)
{
...
...
@@ -4436,6 +4452,15 @@ static LRESULT EDIT_WM_NCCreate(WND *wnd, DWORD style, HWND hwndParent, BOOL uni
if
(
es
->
style
&
ES_COMBO
)
es
->
hwndListBox
=
GetDlgItem
(
hwndParent
,
ID_CB_LISTBOX
);
/* Number overrides lowercase overrides uppercase (at least it
* does in Win95). However I'll bet that ES_NUMBER would be
* invalid under Win 3.1.
*/
if
(
es
->
style
&
ES_NUMBER
)
{
;
/* do not override the ES_NUMBER */
}
else
if
(
es
->
style
&
ES_LOWERCASE
)
{
es
->
style
&=
~
ES_UPPERCASE
;
}
if
(
es
->
style
&
ES_MULTILINE
)
{
es
->
buffer_limit
=
BUFLIMIT_MULTI
;
if
(
es
->
style
&
WS_VSCROLL
)
...
...
@@ -4444,6 +4469,7 @@ static LRESULT EDIT_WM_NCCreate(WND *wnd, DWORD style, HWND hwndParent, BOOL uni
es
->
style
|=
ES_AUTOHSCROLL
;
es
->
style
&=
~
ES_PASSWORD
;
if
((
es
->
style
&
ES_CENTER
)
||
(
es
->
style
&
ES_RIGHT
))
{
/* Confirmed - RIGHT overrides CENTER */
if
(
es
->
style
&
ES_RIGHT
)
es
->
style
&=
~
ES_CENTER
;
es
->
style
&=
~
WS_HSCROLL
;
...
...
@@ -4454,17 +4480,18 @@ static LRESULT EDIT_WM_NCCreate(WND *wnd, DWORD style, HWND hwndParent, BOOL uni
es
->
style
|=
ES_AUTOVSCROLL
;
}
else
{
es
->
buffer_limit
=
BUFLIMIT_SINGLE
;
if
(
WIN31_LOOK
==
TWEAK_WineLook
||
WIN95_LOOK
==
TWEAK_WineLook
)
{
es
->
style
&=
~
ES_CENTER
;
es
->
style
&=
~
ES_RIGHT
;
}
else
{
if
(
es
->
style
&
ES_RIGHT
)
es
->
style
&=
~
ES_CENTER
;
}
es
->
style
&=
~
WS_HSCROLL
;
es
->
style
&=
~
WS_VSCROLL
;
es
->
style
&=
~
ES_AUTOVSCROLL
;
es
->
style
&=
~
ES_WANTRETURN
;
if
(
es
->
style
&
ES_UPPERCASE
)
{
es
->
style
&=
~
ES_LOWERCASE
;
es
->
style
&=
~
ES_NUMBER
;
}
else
if
(
es
->
style
&
ES_LOWERCASE
)
es
->
style
&=
~
ES_NUMBER
;
if
(
es
->
style
&
ES_PASSWORD
)
es
->
password_char
=
'*'
;
...
...
@@ -4719,6 +4746,66 @@ static void EDIT_WM_Size(WND *wnd, EDITSTATE *es, UINT action, INT width, INT he
/*********************************************************************
*
* WM_STYLECHANGED
*
* This message is sent by SetWindowLong on having changed either the Style
* or the extended style.
*
* We ensure that the window's version of the styles and the EDITSTATE's agree.
*
* See also EDIT_WM_NCCreate
*
* It appears that the Windows version of the edit control allows the style
* (as retrieved by GetWindowLong) to be any value and maintains an internal
* style variable which will generally be different. In this function we
* update the internal style based on what changed in the externally visible
* style.
*
* Much of this content as based upon the MSDN, especially:
* Platform SDK Documentation -> User Interface Services ->
* Windows User Interface -> Edit Controls -> Edit Control Reference ->
* Edit Control Styles
*/
static
LRESULT
EDIT_WM_StyleChanged
(
WND
*
wnd
,
EDITSTATE
*
es
,
WPARAM
which
,
const
STYLESTRUCT
*
style
)
{
if
(
GWL_STYLE
==
which
)
{
DWORD
style_change_mask
;
DWORD
new_style
;
/* Only a subset of changes can be applied after the control
* has been created.
*/
style_change_mask
=
ES_UPPERCASE
|
ES_LOWERCASE
|
ES_NUMBER
;
if
(
es
->
style
&
ES_MULTILINE
)
style_change_mask
|=
ES_WANTRETURN
;
new_style
=
style
->
styleNew
&
style_change_mask
;
/* Number overrides lowercase overrides uppercase (at least it
* does in Win95). However I'll bet that ES_NUMBER would be
* invalid under Win 3.1.
*/
if
(
new_style
&
ES_NUMBER
)
{
;
/* do not override the ES_NUMBER */
}
else
if
(
new_style
&
ES_LOWERCASE
)
{
new_style
&=
~
ES_UPPERCASE
;
}
es
->
style
=
(
es
->
style
&
~
style_change_mask
)
|
new_style
;
}
else
if
(
GWL_EXSTYLE
==
which
)
{
;
/* FIXME - what is needed here */
}
else
{
WARN
(
"Invalid style change %d
\n
"
,
which
);
}
return
0
;
}
/*********************************************************************
*
* WM_SYSKEYDOWN
*
*/
...
...
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