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
f9364286
Commit
f9364286
authored
Jan 21, 2005
by
Alexandre Julliard
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Make WIN_SetStyle more thread-safe by specifying the bits to change
instead of the new value.
parent
49a6c097
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
45 additions
and
93 deletions
+45
-93
wnd.c
dlls/ttydrv/wnd.c
+2
-2
scroll.c
dlls/user/scroll.c
+12
-34
user32.spec
dlls/user/user32.spec
+1
-1
window.c
dlls/x11drv/window.c
+1
-1
winpos.c
dlls/x11drv/winpos.c
+7
-7
win.h
include/win.h
+1
-1
defwnd.c
windows/defwnd.c
+6
-29
win.c
windows/win.c
+15
-18
No files found.
dlls/ttydrv/wnd.c
View file @
f9364286
...
...
@@ -418,9 +418,9 @@ BOOL TTYDRV_SetWindowPos( WINDOWPOS *winpos )
&
newWindowRect
,
&
newClientRect
,
winpos
->
flags
,
wvrFlags
);
if
(
winpos
->
flags
&
SWP_SHOWWINDOW
)
WIN_SetStyle
(
winpos
->
hwnd
,
wndPtr
->
dwStyle
|
WS_VISIBLE
);
WIN_SetStyle
(
winpos
->
hwnd
,
WS_VISIBLE
,
0
);
else
if
(
winpos
->
flags
&
SWP_HIDEWINDOW
)
WIN_SetStyle
(
winpos
->
hwnd
,
wndPtr
->
dwStyle
&
~
WS_VISIBLE
);
WIN_SetStyle
(
winpos
->
hwnd
,
0
,
WS_VISIBLE
);
/* ------------------------------------------------------------------------ FINAL */
...
...
dlls/user/scroll.c
View file @
f9364286
...
...
@@ -1793,10 +1793,9 @@ BOOL WINAPI GetScrollRange(HWND hwnd, INT nBar, LPINT lpMin, LPINT lpMax)
*
* Back-end for ShowScrollBar(). Returns FALSE if no action was taken.
*/
BOOL
SCROLL_ShowScrollBar
(
HWND
hwnd
,
INT
nBar
,
BOOL
fShowH
,
BOOL
fShowV
)
static
BOOL
SCROLL_ShowScrollBar
(
HWND
hwnd
,
INT
nBar
,
BOOL
fShowH
,
BOOL
fShowV
)
{
LONG
style
=
GetWindowLongW
(
hwnd
,
GWL_STYLE
)
;
ULONG
old_style
,
set_bits
=
0
,
clear_bits
=
0
;
TRACE
(
"hwnd=%p bar=%d horz=%d, vert=%d
\n
"
,
hwnd
,
nBar
,
fShowH
,
fShowV
);
...
...
@@ -1808,45 +1807,24 @@ BOOL SCROLL_ShowScrollBar( HWND hwnd, INT nBar,
case
SB_BOTH
:
case
SB_HORZ
:
if
(
fShowH
)
{
fShowH
=
!
(
style
&
WS_HSCROLL
);
style
|=
WS_HSCROLL
;
}
else
/* hide it */
{
fShowH
=
(
style
&
WS_HSCROLL
);
style
&=
~
WS_HSCROLL
;
}
if
(
nBar
==
SB_HORZ
)
{
fShowV
=
FALSE
;
break
;
}
/* fall through */
if
(
fShowH
)
set_bits
|=
WS_HSCROLL
;
else
clear_bits
|=
WS_HSCROLL
;
if
(
nBar
==
SB_HORZ
)
break
;
/* fall through */
case
SB_VERT
:
if
(
fShowV
)
{
fShowV
=
!
(
style
&
WS_VSCROLL
);
style
|=
WS_VSCROLL
;
}
else
/* hide it */
{
fShowV
=
(
style
&
WS_VSCROLL
);
style
&=
~
WS_VSCROLL
;
}
if
(
nBar
==
SB_VERT
)
fShowH
=
FALSE
;
if
(
fShowV
)
set_bits
|=
WS_VSCROLL
;
else
clear_bits
|=
WS_VSCROLL
;
break
;
default:
return
FALSE
;
/* Nothing to do! */
}
if
(
fShowH
||
fShowV
)
/* frame has been changed, let the window redraw itself */
old_style
=
WIN_SetStyle
(
hwnd
,
set_bits
,
clear_bits
);
if
((
old_style
&
clear_bits
)
!=
0
||
(
old_style
&
set_bits
)
!=
set_bits
)
{
WIN_SetStyle
(
hwnd
,
style
);
SetWindowPos
(
hwnd
,
0
,
0
,
0
,
0
,
0
,
SWP_NOSIZE
|
SWP_NOMOVE
/* frame has been changed, let the window redraw itself */
SetWindowPos
(
hwnd
,
0
,
0
,
0
,
0
,
0
,
SWP_NOSIZE
|
SWP_NOMOVE
|
SWP_NOACTIVATE
|
SWP_NOZORDER
|
SWP_FRAMECHANGED
);
return
TRUE
;
}
...
...
dlls/user/user32.spec
View file @
f9364286
...
...
@@ -738,5 +738,5 @@
@ cdecl WIN_ListParents(long)
@ cdecl WIN_ReleaseWndPtr(ptr)
@ cdecl WIN_SetExStyle(long long)
@ cdecl WIN_SetStyle(long long)
@ cdecl WIN_SetStyle(long long
long
)
@ cdecl WIN_UnlinkWindow(long)
dlls/x11drv/window.c
View file @
f9364286
...
...
@@ -1155,7 +1155,7 @@ BOOL X11DRV_CreateWindow( HWND hwnd, CREATESTRUCTA *cs, BOOL unicode )
RECT
newPos
;
UINT
swFlag
=
(
style
&
WS_MINIMIZE
)
?
SW_MINIMIZE
:
SW_MAXIMIZE
;
WIN_SetStyle
(
hwnd
,
style
&
~
(
WS_MAXIMIZE
|
WS_MINIMIZE
)
);
WIN_SetStyle
(
hwnd
,
0
,
WS_MAXIMIZE
|
WS_MINIMIZE
);
WINPOS_MinMaximize
(
hwnd
,
swFlag
,
&
newPos
);
swFlag
=
((
style
&
WS_CHILD
)
||
GetActiveWindow
())
?
SWP_NOACTIVATE
|
SWP_NOZORDER
|
SWP_FRAMECHANGED
...
...
dlls/x11drv/winpos.c
View file @
f9364286
...
...
@@ -995,7 +995,7 @@ UINT WINPOS_MinMaximize( HWND hwnd, UINT cmd, LPRECT rect )
if
(
wndPtr
->
dwStyle
&
WS_MAXIMIZE
)
wndPtr
->
flags
|=
WIN_RESTORE_MAX
;
else
wndPtr
->
flags
&=
~
WIN_RESTORE_MAX
;
WIN_SetStyle
(
hwnd
,
(
wndPtr
->
dwStyle
&
~
WS_MAXIMIZE
)
|
WS_MIN
IMIZE
);
WIN_SetStyle
(
hwnd
,
WS_MINIMIZE
,
WS_MAX
IMIZE
);
X11DRV_set_iconic_state
(
hwnd
);
...
...
@@ -1009,7 +1009,7 @@ UINT WINPOS_MinMaximize( HWND hwnd, UINT cmd, LPRECT rect )
case
SW_MAXIMIZE
:
WINPOS_GetMinMaxInfo
(
hwnd
,
&
size
,
&
wpl
.
ptMaxPosition
,
NULL
,
NULL
);
old_style
=
WIN_SetStyle
(
hwnd
,
(
wndPtr
->
dwStyle
&
~
WS_MINIMIZE
)
|
WS_MAX
IMIZE
);
old_style
=
WIN_SetStyle
(
hwnd
,
WS_MAXIMIZE
,
WS_MIN
IMIZE
);
if
(
old_style
&
WS_MINIMIZE
)
{
WINPOS_ShowIconTitle
(
hwnd
,
FALSE
);
...
...
@@ -1019,7 +1019,7 @@ UINT WINPOS_MinMaximize( HWND hwnd, UINT cmd, LPRECT rect )
break
;
case
SW_RESTORE
:
old_style
=
WIN_SetStyle
(
hwnd
,
wndPtr
->
dwStyle
&
~
(
WS_MINIMIZE
|
WS_MAXIMIZE
)
);
old_style
=
WIN_SetStyle
(
hwnd
,
0
,
WS_MINIMIZE
|
WS_MAXIMIZE
);
if
(
old_style
&
WS_MINIMIZE
)
{
WINPOS_ShowIconTitle
(
hwnd
,
FALSE
);
...
...
@@ -1029,7 +1029,7 @@ UINT WINPOS_MinMaximize( HWND hwnd, UINT cmd, LPRECT rect )
{
/* Restore to maximized position */
WINPOS_GetMinMaxInfo
(
hwnd
,
&
size
,
&
wpl
.
ptMaxPosition
,
NULL
,
NULL
);
WIN_SetStyle
(
hwnd
,
wndPtr
->
dwStyle
|
WS_MAXIMIZE
);
WIN_SetStyle
(
hwnd
,
WS_MAXIMIZE
,
0
);
SetRect
(
rect
,
wpl
.
ptMaxPosition
.
x
,
wpl
.
ptMaxPosition
.
y
,
size
.
x
,
size
.
y
);
break
;
}
...
...
@@ -1198,7 +1198,7 @@ void X11DRV_MapNotify( HWND hwnd, XMapEvent *event )
unsigned
int
width
,
height
,
border
,
depth
;
Window
root
,
top
;
RECT
rect
;
LONG
style
=
(
win
->
dwStyle
&
~
(
WS_MINIMIZE
|
WS_MAXIMIZE
))
|
WS_VISIBLE
;
LONG
style
=
WS_VISIBLE
;
/* FIXME: hack */
wine_tsx11_lock
();
...
...
@@ -1215,7 +1215,7 @@ void X11DRV_MapNotify( HWND hwnd, XMapEvent *event )
DCE_InvalidateDCE
(
hwnd
,
&
win
->
rectWindow
);
if
(
win
->
flags
&
WIN_RESTORE_MAX
)
style
|=
WS_MAXIMIZE
;
WIN_SetStyle
(
hwnd
,
style
);
WIN_SetStyle
(
hwnd
,
style
,
WS_MINIMIZE
);
WIN_ReleasePtr
(
win
);
SendMessageA
(
hwnd
,
WM_SHOWWINDOW
,
SW_RESTORE
,
0
);
...
...
@@ -1244,7 +1244,7 @@ void X11DRV_UnmapNotify( HWND hwnd, XUnmapEvent *event )
else
win
->
flags
&=
~
WIN_RESTORE_MAX
;
WIN_SetStyle
(
hwnd
,
(
win
->
dwStyle
&
~
WS_MAXIMIZE
)
|
WS_MIN
IMIZE
);
WIN_SetStyle
(
hwnd
,
WS_MINIMIZE
,
WS_MAX
IMIZE
);
WIN_ReleasePtr
(
win
);
EndMenu
();
...
...
include/win.h
View file @
f9364286
...
...
@@ -87,7 +87,7 @@ extern HWND WIN_IsCurrentThread( HWND hwnd );
extern
void
WIN_LinkWindow
(
HWND
hwnd
,
HWND
parent
,
HWND
hwndInsertAfter
);
extern
void
WIN_UnlinkWindow
(
HWND
hwnd
);
extern
HWND
WIN_SetOwner
(
HWND
hwnd
,
HWND
owner
);
extern
LONG
WIN_SetStyle
(
HWND
hwnd
,
LONG
style
);
extern
ULONG
WIN_SetStyle
(
HWND
hwnd
,
ULONG
set_bits
,
ULONG
clear_bits
);
extern
LONG
WIN_SetExStyle
(
HWND
hwnd
,
LONG
style
);
extern
BOOL
WIN_GetRectangles
(
HWND
hwnd
,
RECT
*
rectWindow
,
RECT
*
rectClient
);
extern
LRESULT
WIN_DestroyWindow
(
HWND
hwnd
);
...
...
windows/defwnd.c
View file @
f9364286
...
...
@@ -185,34 +185,6 @@ HBRUSH DEFWND_ControlColor( HDC hDC, UINT ctlType )
/***********************************************************************
* DEFWND_SetRedraw
*/
static
void
DEFWND_SetRedraw
(
HWND
hwnd
,
WPARAM
wParam
)
{
WND
*
wndPtr
=
WIN_FindWndPtr
(
hwnd
);
BOOL
bVisible
=
wndPtr
->
dwStyle
&
WS_VISIBLE
;
TRACE
(
"%p %i
\n
"
,
hwnd
,
(
wParam
!=
0
)
);
if
(
wParam
)
{
if
(
!
bVisible
)
{
WIN_SetStyle
(
hwnd
,
wndPtr
->
dwStyle
|
WS_VISIBLE
);
}
}
else
if
(
bVisible
)
{
if
(
wndPtr
->
dwStyle
&
WS_MINIMIZE
)
wParam
=
RDW_VALIDATE
;
else
wParam
=
RDW_ALLCHILDREN
|
RDW_VALIDATE
;
RedrawWindow
(
hwnd
,
NULL
,
0
,
wParam
);
WIN_SetStyle
(
hwnd
,
wndPtr
->
dwStyle
&
~
WS_VISIBLE
);
}
WIN_ReleaseWndPtr
(
wndPtr
);
}
/***********************************************************************
* DEFWND_Print
*
* This method handles the default behavior for the WM_PRINT message.
...
...
@@ -463,7 +435,12 @@ static LRESULT DEFWND_DefWinProc( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lPa
return
0
;
case
WM_SETREDRAW
:
DEFWND_SetRedraw
(
hwnd
,
wParam
);
if
(
wParam
)
WIN_SetStyle
(
hwnd
,
WS_VISIBLE
,
0
);
else
{
RedrawWindow
(
hwnd
,
NULL
,
0
,
RDW_ALLCHILDREN
|
RDW_VALIDATE
);
WIN_SetStyle
(
hwnd
,
0
,
WS_VISIBLE
);
}
return
0
;
case
WM_CLOSE
:
...
...
windows/win.c
View file @
f9364286
...
...
@@ -462,40 +462,42 @@ HWND WIN_SetOwner( HWND hwnd, HWND owner )
*
* Change the style of a window.
*/
LONG
WIN_SetStyle
(
HWND
hwnd
,
LONG
style
)
ULONG
WIN_SetStyle
(
HWND
hwnd
,
ULONG
set_bits
,
ULONG
clear_bits
)
{
BOOL
ok
;
LONG
ret
=
0
;
ULONG
new_style
,
old_style
=
0
;
WND
*
win
=
WIN_GetPtr
(
hwnd
);
if
(
!
win
)
return
0
;
if
(
win
==
WND_OTHER_PROCESS
)
{
if
(
IsWindow
(
hwnd
))
ERR
(
"cannot set style %lx on other process window %p
\n
"
,
style
,
hwnd
);
ERR
(
"cannot set style %lx/%lx on other process window %p
\n
"
,
set_bits
,
clear_bits
,
hwnd
);
return
0
;
}
if
(
style
==
win
->
dwStyle
)
new_style
=
(
win
->
dwStyle
|
set_bits
)
&
~
clear_bits
;
if
(
new_style
==
win
->
dwStyle
)
{
WIN_ReleasePtr
(
win
);
return
style
;
return
new_
style
;
}
SERVER_START_REQ
(
set_window_info
)
{
req
->
handle
=
hwnd
;
req
->
flags
=
SET_WIN_STYLE
;
req
->
style
=
style
;
req
->
style
=
new_
style
;
req
->
extra_offset
=
-
1
;
if
((
ok
=
!
wine_server_call
(
req
)))
{
ret
=
reply
->
old_style
;
win
->
dwStyle
=
style
;
old_style
=
reply
->
old_style
;
win
->
dwStyle
=
new_
style
;
}
}
SERVER_END_REQ
;
WIN_ReleasePtr
(
win
);
if
(
ok
&&
USER_Driver
.
pSetWindowStyle
)
USER_Driver
.
pSetWindowStyle
(
hwnd
,
ret
);
return
ret
;
if
(
ok
&&
USER_Driver
.
pSetWindowStyle
)
USER_Driver
.
pSetWindowStyle
(
hwnd
,
old_style
);
return
old_style
;
}
...
...
@@ -1685,9 +1687,7 @@ HWND WINAPI GetDesktopWindow(void)
*/
BOOL
WINAPI
EnableWindow
(
HWND
hwnd
,
BOOL
enable
)
{
WND
*
wndPtr
;
BOOL
retvalue
;
LONG
style
;
HWND
full_handle
;
if
(
is_broadcast
(
hwnd
))
...
...
@@ -1703,14 +1703,11 @@ BOOL WINAPI EnableWindow( HWND hwnd, BOOL enable )
TRACE
(
"( %p, %d )
\n
"
,
hwnd
,
enable
);
if
(
!
(
wndPtr
=
WIN_GetPtr
(
hwnd
)))
return
FALSE
;
style
=
wndPtr
->
dwStyle
;
retvalue
=
((
style
&
WS_DISABLED
)
!=
0
);
WIN_ReleasePtr
(
wndPtr
);
retvalue
=
!
IsWindowEnabled
(
hwnd
);
if
(
enable
&&
retvalue
)
{
WIN_SetStyle
(
hwnd
,
style
&
~
WS_DISABLED
);
WIN_SetStyle
(
hwnd
,
0
,
WS_DISABLED
);
SendMessageA
(
hwnd
,
WM_ENABLE
,
TRUE
,
0
);
}
else
if
(
!
enable
&&
!
retvalue
)
...
...
@@ -1719,7 +1716,7 @@ BOOL WINAPI EnableWindow( HWND hwnd, BOOL enable )
SendMessageA
(
hwnd
,
WM_CANCELMODE
,
0
,
0
);
WIN_SetStyle
(
hwnd
,
style
|
WS_DISABLED
);
WIN_SetStyle
(
hwnd
,
WS_DISABLED
,
0
);
if
(
hwnd
==
GetFocus
())
SetFocus
(
0
);
/* A disabled window can't have the focus */
...
...
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