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
d7726c3a
Commit
d7726c3a
authored
Feb 01, 2005
by
Alexandre Julliard
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Store the "managed" flag as a window property instead of the
Wine-specific WS_EX_MANAGED style bit.
parent
6a367dbf
Show whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
55 additions
and
57 deletions
+55
-57
status.c
dlls/comctl32/status.c
+2
-2
focus.c
dlls/user/focus.c
+1
-1
menu.c
dlls/user/menu.c
+1
-1
window.c
dlls/x11drv/window.c
+31
-36
winpos.c
dlls/x11drv/winpos.c
+16
-13
x11drv.h
dlls/x11drv/x11drv.h
+3
-2
winuser.h
include/winuser.h
+0
-1
winpos.c
windows/winpos.c
+1
-1
No files found.
dlls/comctl32/status.c
View file @
d7726c3a
...
@@ -890,8 +890,8 @@ STATUSBAR_WMCreate (HWND hwnd, LPCREATESTRUCTA lpCreate)
...
@@ -890,8 +890,8 @@ STATUSBAR_WMCreate (HWND hwnd, LPCREATESTRUCTA lpCreate)
dwStyle
=
GetWindowLongW
(
hwnd
,
GWL_STYLE
);
dwStyle
=
GetWindowLongW
(
hwnd
,
GWL_STYLE
);
/* statusbars on managed windows should not have SIZEGRIP style */
/* statusbars on managed windows should not have SIZEGRIP style */
if
((
dwStyle
&
SBARS_SIZEGRIP
)
&&
lpCreate
->
hwndParent
)
if
((
dwStyle
&
SBARS_SIZEGRIP
)
&&
lpCreate
->
hwndParent
&&
if
(
GetWindowLongW
(
lpCreate
->
hwndParent
,
GWL_EXSTYLE
)
&
WS_EX_MANAGED
)
GetPropA
(
lpCreate
->
hwndParent
,
"__wine_x11_managed"
)
)
SetWindowLongW
(
hwnd
,
GWL_STYLE
,
dwStyle
&
~
SBARS_SIZEGRIP
);
SetWindowLongW
(
hwnd
,
GWL_STYLE
,
dwStyle
&
~
SBARS_SIZEGRIP
);
if
((
hdc
=
GetDC
(
hwnd
)))
{
if
((
hdc
=
GetDC
(
hwnd
)))
{
...
...
dlls/user/focus.c
View file @
d7726c3a
...
@@ -115,7 +115,7 @@ static BOOL set_active_window( HWND hwnd, HWND *prev, BOOL mouse, BOOL focus )
...
@@ -115,7 +115,7 @@ static BOOL set_active_window( HWND hwnd, HWND *prev, BOOL mouse, BOOL focus )
SendMessageTimeoutW
(
HWND_BROADCAST
,
WM_PALETTEISCHANGING
,
(
WPARAM
)
hwnd
,
0
,
SendMessageTimeoutW
(
HWND_BROADCAST
,
WM_PALETTEISCHANGING
,
(
WPARAM
)
hwnd
,
0
,
SMTO_ABORTIFHUNG
,
2000
,
NULL
);
SMTO_ABORTIFHUNG
,
2000
,
NULL
);
if
(
!
(
GetWindowLongW
(
hwnd
,
GWL_EXSTYLE
)
&
WS_EX_MANAGED
))
if
(
!
GetPropA
(
hwnd
,
"__wine_x11_managed"
))
SetWindowPos
(
hwnd
,
HWND_TOP
,
0
,
0
,
0
,
0
,
SWP_NOSIZE
|
SWP_NOMOVE
|
SWP_NOACTIVATE
);
SetWindowPos
(
hwnd
,
HWND_TOP
,
0
,
0
,
0
,
0
,
SWP_NOSIZE
|
SWP_NOMOVE
|
SWP_NOACTIVATE
);
if
(
!
IsWindow
(
hwnd
))
return
FALSE
;
if
(
!
IsWindow
(
hwnd
))
return
FALSE
;
...
...
dlls/user/menu.c
View file @
d7726c3a
...
@@ -2948,7 +2948,7 @@ void MENU_TrackKbdMenuBar( HWND hwnd, UINT wParam, WCHAR wChar)
...
@@ -2948,7 +2948,7 @@ void MENU_TrackKbdMenuBar( HWND hwnd, UINT wParam, WCHAR wChar)
if
(
wParam
&
HTSYSMENU
)
if
(
wParam
&
HTSYSMENU
)
{
{
/* prevent sysmenu activation for managed windows on Alt down/up */
/* prevent sysmenu activation for managed windows on Alt down/up */
if
(
Get
WindowLongW
(
hwnd
,
GWL_EXSTYLE
)
&
WS_EX_MANAGED
)
if
(
Get
PropA
(
hwnd
,
"__wine_x11_managed"
)
)
wFlags
|=
TF_ENDMENU
;
/* schedule end of menu tracking */
wFlags
|=
TF_ENDMENU
;
/* schedule end of menu tracking */
}
}
else
else
...
...
dlls/x11drv/window.c
View file @
d7726c3a
...
@@ -107,6 +107,7 @@ static const char * const atom_names[NB_XATOMS - FIRST_XATOM] =
...
@@ -107,6 +107,7 @@ static const char * const atom_names[NB_XATOMS - FIRST_XATOM] =
static
LPCSTR
whole_window_atom
;
static
LPCSTR
whole_window_atom
;
static
LPCSTR
icon_window_atom
;
static
LPCSTR
icon_window_atom
;
static
LPCSTR
client_offset_atom
;
static
LPCSTR
client_offset_atom
;
static
LPCSTR
managed_atom
;
/***********************************************************************
/***********************************************************************
* is_window_managed
* is_window_managed
...
@@ -170,13 +171,12 @@ BOOL X11DRV_is_window_rect_mapped( const RECT *rect )
...
@@ -170,13 +171,12 @@ BOOL X11DRV_is_window_rect_mapped( const RECT *rect )
*/
*/
static
int
get_window_attributes
(
struct
x11drv_win_data
*
data
,
XSetWindowAttributes
*
attr
)
static
int
get_window_attributes
(
struct
x11drv_win_data
*
data
,
XSetWindowAttributes
*
attr
)
{
{
BOOL
managed
=
!
using_wine_desktop
&&
is_window_managed
(
data
->
hwnd
);
if
(
!
data
->
managed
&&
!
using_wine_desktop
&&
is_window_managed
(
data
->
hwnd
))
DWORD
ex_style
=
GetWindowLongW
(
data
->
hwnd
,
GWL_EXSTYLE
);
{
data
->
managed
=
TRUE
;
if
(
managed
)
WIN_SetExStyle
(
data
->
hwnd
,
ex_style
|
WS_EX_MANAGED
);
SetPropA
(
data
->
hwnd
,
managed_atom
,
(
HANDLE
)
1
);
else
WIN_SetExStyle
(
data
->
hwnd
,
ex_style
&
~
WS_EX_MANAGED
);
}
attr
->
override_redirect
=
!
data
->
managed
;
attr
->
override_redirect
=
!
managed
;
attr
->
colormap
=
X11DRV_PALETTE_PaletteXColormap
;
attr
->
colormap
=
X11DRV_PALETTE_PaletteXColormap
;
attr
->
save_under
=
((
GetClassLongW
(
data
->
hwnd
,
GCL_STYLE
)
&
CS_SAVEBITS
)
!=
0
);
attr
->
save_under
=
((
GetClassLongW
(
data
->
hwnd
,
GCL_STYLE
)
&
CS_SAVEBITS
)
!=
0
);
attr
->
cursor
=
x11drv_thread_data
()
->
cursor
;
attr
->
cursor
=
x11drv_thread_data
()
->
cursor
;
...
@@ -291,14 +291,14 @@ static void destroy_icon_window( Display *display, struct x11drv_win_data *data
...
@@ -291,14 +291,14 @@ static void destroy_icon_window( Display *display, struct x11drv_win_data *data
* Set the icon wm hints
* Set the icon wm hints
*/
*/
static
void
set_icon_hints
(
Display
*
display
,
struct
x11drv_win_data
*
data
,
static
void
set_icon_hints
(
Display
*
display
,
struct
x11drv_win_data
*
data
,
XWMHints
*
hints
,
HICON
hIcon
,
DWORD
ex_style
)
XWMHints
*
hints
,
HICON
hIcon
)
{
{
if
(
data
->
hWMIconBitmap
)
DeleteObject
(
data
->
hWMIconBitmap
);
if
(
data
->
hWMIconBitmap
)
DeleteObject
(
data
->
hWMIconBitmap
);
if
(
data
->
hWMIconMask
)
DeleteObject
(
data
->
hWMIconMask
);
if
(
data
->
hWMIconMask
)
DeleteObject
(
data
->
hWMIconMask
);
data
->
hWMIconBitmap
=
0
;
data
->
hWMIconBitmap
=
0
;
data
->
hWMIconMask
=
0
;
data
->
hWMIconMask
=
0
;
if
(
!
(
ex_style
&
WS_EX_MANAGED
)
)
if
(
!
data
->
managed
)
{
{
destroy_icon_window
(
display
,
data
);
destroy_icon_window
(
display
,
data
);
hints
->
flags
&=
~
(
IconPixmapHint
|
IconMaskHint
|
IconWindowHint
);
hints
->
flags
&=
~
(
IconPixmapHint
|
IconMaskHint
|
IconWindowHint
);
...
@@ -484,7 +484,7 @@ void X11DRV_set_wm_hints( Display *display, struct x11drv_win_data *data )
...
@@ -484,7 +484,7 @@ void X11DRV_set_wm_hints( Display *display, struct x11drv_win_data *data )
wm_hints
->
input
=
!
(
style
&
WS_DISABLED
);
wm_hints
->
input
=
!
(
style
&
WS_DISABLED
);
set_icon_hints
(
display
,
data
,
wm_hints
,
set_icon_hints
(
display
,
data
,
wm_hints
,
(
HICON
)
GetClassLongW
(
data
->
hwnd
,
GCL_HICON
)
,
ex_style
);
(
HICON
)
GetClassLongW
(
data
->
hwnd
,
GCL_HICON
)
);
wm_hints
->
initial_state
=
(
style
&
WS_MINIMIZE
)
?
IconicState
:
NormalState
;
wm_hints
->
initial_state
=
(
style
&
WS_MINIMIZE
)
?
IconicState
:
NormalState
;
wm_hints
->
window_group
=
group_leader
;
wm_hints
->
window_group
=
group_leader
;
...
@@ -544,18 +544,17 @@ void X11DRV_set_iconic_state( HWND hwnd )
...
@@ -544,18 +544,17 @@ void X11DRV_set_iconic_state( HWND hwnd )
*
*
* Convert a rect from client to X window coordinates
* Convert a rect from client to X window coordinates
*/
*/
void
X11DRV_window_to_X_rect
(
HWND
hwnd
,
RECT
*
rect
)
void
X11DRV_window_to_X_rect
(
struct
x11drv_win_data
*
data
,
RECT
*
rect
)
{
{
RECT
rc
;
RECT
rc
;
DWORD
ex_style
=
GetWindowLongW
(
hwnd
,
GWL_EXSTYLE
);
if
(
!
(
ex_style
&
WS_EX_MANAGED
)
)
return
;
if
(
!
data
->
managed
)
return
;
if
(
IsRectEmpty
(
rect
))
return
;
if
(
IsRectEmpty
(
rect
))
return
;
rc
.
top
=
rc
.
bottom
=
rc
.
left
=
rc
.
right
=
0
;
rc
.
top
=
rc
.
bottom
=
rc
.
left
=
rc
.
right
=
0
;
AdjustWindowRectEx
(
&
rc
,
GetWindowLongW
(
hwnd
,
GWL_STYLE
)
&
~
(
WS_HSCROLL
|
WS_VSCROLL
),
AdjustWindowRectEx
(
&
rc
,
GetWindowLongW
(
data
->
hwnd
,
GWL_STYLE
)
&
~
(
WS_HSCROLL
|
WS_VSCROLL
),
FALSE
,
ex_style
);
FALSE
,
GetWindowLongW
(
data
->
hwnd
,
GWL_EXSTYLE
)
);
rect
->
left
-=
rc
.
left
;
rect
->
left
-=
rc
.
left
;
rect
->
right
-=
rc
.
right
;
rect
->
right
-=
rc
.
right
;
...
@@ -571,15 +570,13 @@ void X11DRV_window_to_X_rect( HWND hwnd, RECT *rect )
...
@@ -571,15 +570,13 @@ void X11DRV_window_to_X_rect( HWND hwnd, RECT *rect )
*
*
* Opposite of X11DRV_window_to_X_rect
* Opposite of X11DRV_window_to_X_rect
*/
*/
void
X11DRV_X_to_window_rect
(
HWND
hwnd
,
RECT
*
rect
)
void
X11DRV_X_to_window_rect
(
struct
x11drv_win_data
*
data
,
RECT
*
rect
)
{
{
DWORD
ex_style
=
GetWindowLongW
(
hwnd
,
GWL_EXSTYLE
);
if
(
!
data
->
managed
)
return
;
if
(
!
(
ex_style
&
WS_EX_MANAGED
))
return
;
if
(
IsRectEmpty
(
rect
))
return
;
if
(
IsRectEmpty
(
rect
))
return
;
AdjustWindowRectEx
(
rect
,
GetWindowLongW
(
hwnd
,
GWL_STYLE
)
&
~
(
WS_HSCROLL
|
WS_VSCROLL
),
AdjustWindowRectEx
(
rect
,
GetWindowLongW
(
data
->
hwnd
,
GWL_STYLE
)
&
~
(
WS_HSCROLL
|
WS_VSCROLL
),
FALSE
,
ex_style
);
FALSE
,
GetWindowLongW
(
data
->
hwnd
,
GWL_EXSTYLE
)
);
if
(
rect
->
top
>=
rect
->
bottom
)
rect
->
bottom
=
rect
->
top
+
1
;
if
(
rect
->
top
>=
rect
->
bottom
)
rect
->
bottom
=
rect
->
top
+
1
;
if
(
rect
->
left
>=
rect
->
right
)
rect
->
right
=
rect
->
left
+
1
;
if
(
rect
->
left
>=
rect
->
right
)
rect
->
right
=
rect
->
left
+
1
;
...
@@ -600,7 +597,7 @@ void X11DRV_sync_window_position( Display *display, struct x11drv_win_data *data
...
@@ -600,7 +597,7 @@ void X11DRV_sync_window_position( Display *display, struct x11drv_win_data *data
old_whole_rect
=
data
->
whole_rect
;
old_whole_rect
=
data
->
whole_rect
;
data
->
whole_rect
=
data
->
window_rect
;
data
->
whole_rect
=
data
->
window_rect
;
X11DRV_window_to_X_rect
(
data
->
hwnd
,
&
data
->
whole_rect
);
X11DRV_window_to_X_rect
(
data
,
&
data
->
whole_rect
);
data
->
client_rect
=
*
new_client_rect
;
data
->
client_rect
=
*
new_client_rect
;
OffsetRect
(
&
data
->
client_rect
,
-
data
->
whole_rect
.
left
,
-
data
->
whole_rect
.
top
);
OffsetRect
(
&
data
->
client_rect
,
-
data
->
whole_rect
.
left
,
-
data
->
whole_rect
.
top
);
...
@@ -674,6 +671,7 @@ static void create_desktop( Display *display, struct x11drv_win_data *data )
...
@@ -674,6 +671,7 @@ static void create_desktop( Display *display, struct x11drv_win_data *data )
whole_window_atom
=
MAKEINTATOMA
(
GlobalAddAtomA
(
"__wine_x11_whole_window"
));
whole_window_atom
=
MAKEINTATOMA
(
GlobalAddAtomA
(
"__wine_x11_whole_window"
));
icon_window_atom
=
MAKEINTATOMA
(
GlobalAddAtomA
(
"__wine_x11_icon_window"
));
icon_window_atom
=
MAKEINTATOMA
(
GlobalAddAtomA
(
"__wine_x11_icon_window"
));
client_offset_atom
=
MAKEINTATOMA
(
GlobalAddAtomA
(
"__wine_x11_client_area_offset"
));
client_offset_atom
=
MAKEINTATOMA
(
GlobalAddAtomA
(
"__wine_x11_client_area_offset"
));
managed_atom
=
MAKEINTATOMA
(
GlobalAddAtomA
(
"__wine_x11_managed"
));
data
->
whole_window
=
root_window
;
data
->
whole_window
=
root_window
;
data
->
whole_rect
=
data
->
client_rect
=
data
->
window_rect
;
data
->
whole_rect
=
data
->
client_rect
=
data
->
window_rect
;
...
@@ -700,7 +698,7 @@ static Window create_whole_window( Display *display, struct x11drv_win_data *dat
...
@@ -700,7 +698,7 @@ static Window create_whole_window( Display *display, struct x11drv_win_data *dat
RECT
rect
;
RECT
rect
;
rect
=
data
->
window_rect
;
rect
=
data
->
window_rect
;
X11DRV_window_to_X_rect
(
data
->
hwnd
,
&
rect
);
X11DRV_window_to_X_rect
(
data
,
&
rect
);
if
(
!
(
cx
=
rect
.
right
-
rect
.
left
))
cx
=
1
;
if
(
!
(
cx
=
rect
.
right
-
rect
.
left
))
cx
=
1
;
if
(
!
(
cy
=
rect
.
bottom
-
rect
.
top
))
cy
=
1
;
if
(
!
(
cy
=
rect
.
bottom
-
rect
.
top
))
cy
=
1
;
...
@@ -900,6 +898,7 @@ BOOL X11DRV_CreateWindow( HWND hwnd, CREATESTRUCTA *cs, BOOL unicode )
...
@@ -900,6 +898,7 @@ BOOL X11DRV_CreateWindow( HWND hwnd, CREATESTRUCTA *cs, BOOL unicode )
data
->
whole_window
=
0
;
data
->
whole_window
=
0
;
data
->
icon_window
=
0
;
data
->
icon_window
=
0
;
data
->
xic
=
0
;
data
->
xic
=
0
;
data
->
managed
=
FALSE
;
data
->
hWMIconBitmap
=
0
;
data
->
hWMIconBitmap
=
0
;
data
->
hWMIconMask
=
0
;
data
->
hWMIconMask
=
0
;
...
@@ -1181,8 +1180,8 @@ HWND X11DRV_SetParent( HWND hwnd, HWND parent )
...
@@ -1181,8 +1180,8 @@ HWND X11DRV_SetParent( HWND hwnd, HWND parent )
void
X11DRV_SetFocus
(
HWND
hwnd
)
void
X11DRV_SetFocus
(
HWND
hwnd
)
{
{
Display
*
display
=
thread_display
();
Display
*
display
=
thread_display
();
struct
x11drv_win_data
*
data
;
XWindowAttributes
win_attr
;
XWindowAttributes
win_attr
;
Window
win
;
/* Only mess with the X focus if there's */
/* Only mess with the X focus if there's */
/* no desktop window and if the window is not managed by the WM. */
/* no desktop window and if the window is not managed by the WM. */
...
@@ -1198,19 +1197,20 @@ void X11DRV_SetFocus( HWND hwnd )
...
@@ -1198,19 +1197,20 @@ void X11DRV_SetFocus( HWND hwnd )
}
}
hwnd
=
GetAncestor
(
hwnd
,
GA_ROOT
);
hwnd
=
GetAncestor
(
hwnd
,
GA_ROOT
);
if
(
GetWindowLongW
(
hwnd
,
GWL_EXSTYLE
)
&
WS_EX_MANAGED
)
return
;
if
(
!
(
win
=
X11DRV_get_whole_window
(
hwnd
)))
return
;
if
(
!
(
data
=
X11DRV_get_win_data
(
hwnd
)))
return
;
if
(
!
data
->
managed
||
!
data
->
whole_window
)
return
;
/* Set X focus and install colormap */
/* Set X focus and install colormap */
wine_tsx11_lock
();
wine_tsx11_lock
();
if
(
XGetWindowAttributes
(
display
,
win
,
&
win_attr
)
&&
if
(
XGetWindowAttributes
(
display
,
data
->
whole_window
,
&
win_attr
)
&&
(
win_attr
.
map_state
==
IsViewable
))
(
win_attr
.
map_state
==
IsViewable
))
{
{
/* If window is not viewable, don't change anything */
/* If window is not viewable, don't change anything */
/* we must not use CurrentTime (ICCCM), so try to use last message time instead */
/* we must not use CurrentTime (ICCCM), so try to use last message time instead */
/* FIXME: this is not entirely correct */
/* FIXME: this is not entirely correct */
XSetInputFocus
(
display
,
win
,
RevertToParent
,
XSetInputFocus
(
display
,
data
->
whole_window
,
RevertToParent
,
/* CurrentTime */
/* CurrentTime */
GetMessageTime
()
-
EVENT_x11_time_to_win32_time
(
0
));
GetMessageTime
()
-
EVENT_x11_time_to_win32_time
(
0
));
if
(
X11DRV_PALETTE_PaletteFlags
&
X11DRV_PALETTE_PRIVATE
)
if
(
X11DRV_PALETTE_PaletteFlags
&
X11DRV_PALETTE_PRIVATE
)
...
@@ -1234,28 +1234,23 @@ void X11DRV_SetWindowIcon( HWND hwnd, UINT type, HICON icon )
...
@@ -1234,28 +1234,23 @@ void X11DRV_SetWindowIcon( HWND hwnd, UINT type, HICON icon )
{
{
Display
*
display
=
thread_display
();
Display
*
display
=
thread_display
();
struct
x11drv_win_data
*
data
;
struct
x11drv_win_data
*
data
;
DWORD
ex_style
;
XWMHints
*
wm_hints
;
if
(
type
!=
ICON_BIG
)
return
;
/* nothing to do here */
if
(
type
!=
ICON_BIG
)
return
;
/* nothing to do here */
if
(
!
(
data
=
X11DRV_get_win_data
(
hwnd
)))
return
;
if
(
!
(
data
=
X11DRV_get_win_data
(
hwnd
)))
return
;
if
(
!
data
->
whole_window
)
return
;
if
(
!
data
->
whole_window
)
return
;
if
(
!
data
->
managed
)
return
;
ex_style
=
GetWindowLongW
(
hwnd
,
GWL_EXSTYLE
);
if
(
ex_style
&
WS_EX_MANAGED
)
{
XWMHints
*
wm_hints
;
wine_tsx11_lock
();
wine_tsx11_lock
();
if
(
!
(
wm_hints
=
XGetWMHints
(
display
,
data
->
whole_window
)))
wm_hints
=
XAllocWMHints
();
if
(
!
(
wm_hints
=
XGetWMHints
(
display
,
data
->
whole_window
)))
wm_hints
=
XAllocWMHints
();
wine_tsx11_unlock
();
wine_tsx11_unlock
();
if
(
wm_hints
)
if
(
wm_hints
)
{
{
set_icon_hints
(
display
,
data
,
wm_hints
,
icon
,
ex_style
);
set_icon_hints
(
display
,
data
,
wm_hints
,
icon
);
wine_tsx11_lock
();
wine_tsx11_lock
();
XSetWMHints
(
display
,
data
->
whole_window
,
wm_hints
);
XSetWMHints
(
display
,
data
->
whole_window
,
wm_hints
);
XFree
(
wm_hints
);
XFree
(
wm_hints
);
wine_tsx11_unlock
();
wine_tsx11_unlock
();
}
}
}
}
}
dlls/x11drv/winpos.c
View file @
d7726c3a
...
@@ -58,7 +58,7 @@ WINE_DEFAULT_DEBUG_CHANNEL(x11drv);
...
@@ -58,7 +58,7 @@ WINE_DEFAULT_DEBUG_CHANNEL(x11drv);
#define SWP_EX_PAINTSELF 0x0002
#define SWP_EX_PAINTSELF 0x0002
#define SWP_EX_NONCLIENT 0x0004
#define SWP_EX_NONCLIENT 0x0004
#define HAS_THICKFRAME(style
,exStyle
) \
#define HAS_THICKFRAME(style) \
(((style) & WS_THICKFRAME) && \
(((style) & WS_THICKFRAME) && \
!(((style) & (WS_DLGFRAME|WS_BORDER)) == WS_DLGFRAME))
!(((style) & (WS_DLGFRAME|WS_BORDER)) == WS_DLGFRAME))
...
@@ -582,7 +582,7 @@ void X11DRV_SetWindowStyle( HWND hwnd, DWORD old_style )
...
@@ -582,7 +582,7 @@ void X11DRV_SetWindowStyle( HWND hwnd, DWORD old_style )
if
(
changed
&
WS_DISABLED
)
if
(
changed
&
WS_DISABLED
)
{
{
if
(
data
->
whole_window
&&
(
GetWindowLongW
(
hwnd
,
GWL_EXSTYLE
)
&
WS_EX_MANAGED
)
)
if
(
data
->
whole_window
&&
data
->
managed
)
{
{
XWMHints
*
wm_hints
;
XWMHints
*
wm_hints
;
wine_tsx11_lock
();
wine_tsx11_lock
();
...
@@ -1115,9 +1115,7 @@ void X11DRV_MapNotify( HWND hwnd, XMapEvent *event )
...
@@ -1115,9 +1115,7 @@ void X11DRV_MapNotify( HWND hwnd, XMapEvent *event )
if
(
!
(
win
=
WIN_GetPtr
(
hwnd
)))
return
;
if
(
!
(
win
=
WIN_GetPtr
(
hwnd
)))
return
;
if
((
win
->
dwStyle
&
WS_VISIBLE
)
&&
if
(
data
->
managed
&&
(
win
->
dwStyle
&
WS_VISIBLE
)
&&
(
win
->
dwStyle
&
WS_MINIMIZE
))
(
win
->
dwStyle
&
WS_MINIMIZE
)
&&
(
win
->
dwExStyle
&
WS_EX_MANAGED
))
{
{
int
x
,
y
;
int
x
,
y
;
unsigned
int
width
,
height
,
border
,
depth
;
unsigned
int
width
,
height
,
border
,
depth
;
...
@@ -1135,7 +1133,7 @@ void X11DRV_MapNotify( HWND hwnd, XMapEvent *event )
...
@@ -1135,7 +1133,7 @@ void X11DRV_MapNotify( HWND hwnd, XMapEvent *event )
rect
.
top
=
y
;
rect
.
top
=
y
;
rect
.
right
=
x
+
width
;
rect
.
right
=
x
+
width
;
rect
.
bottom
=
y
+
height
;
rect
.
bottom
=
y
+
height
;
X11DRV_X_to_window_rect
(
hwnd
,
&
rect
);
X11DRV_X_to_window_rect
(
data
,
&
rect
);
DCE_InvalidateDCE
(
hwnd
,
&
data
->
window_rect
);
DCE_InvalidateDCE
(
hwnd
,
&
data
->
window_rect
);
...
@@ -1157,11 +1155,14 @@ void X11DRV_MapNotify( HWND hwnd, XMapEvent *event )
...
@@ -1157,11 +1155,14 @@ void X11DRV_MapNotify( HWND hwnd, XMapEvent *event )
*/
*/
void
X11DRV_UnmapNotify
(
HWND
hwnd
,
XUnmapEvent
*
event
)
void
X11DRV_UnmapNotify
(
HWND
hwnd
,
XUnmapEvent
*
event
)
{
{
struct
x11drv_win_data
*
data
;
WND
*
win
;
WND
*
win
;
if
(
!
(
data
=
X11DRV_get_win_data
(
hwnd
)))
return
;
if
(
!
(
win
=
WIN_GetPtr
(
hwnd
)))
return
;
if
(
!
(
win
=
WIN_GetPtr
(
hwnd
)))
return
;
if
((
win
->
dwStyle
&
WS_VISIBLE
)
&&
(
win
->
dwExStyle
&
WS_EX_MANAGED
)
&&
if
((
win
->
dwStyle
&
WS_VISIBLE
)
&&
data
->
managed
&&
X11DRV_is_window_rect_mapped
(
&
win
->
rectWindow
))
X11DRV_is_window_rect_mapped
(
&
win
->
rectWindow
))
{
{
if
(
win
->
dwStyle
&
WS_MAXIMIZE
)
if
(
win
->
dwStyle
&
WS_MAXIMIZE
)
...
@@ -1250,8 +1251,8 @@ static HWND query_zorder( Display *display, HWND hWndCheck)
...
@@ -1250,8 +1251,8 @@ static HWND query_zorder( Display *display, HWND hWndCheck)
if
(
!
list
)
return
0
;
if
(
!
list
)
return
0
;
for
(
i
=
0
;
list
[
i
];
i
++
)
for
(
i
=
0
;
list
[
i
];
i
++
)
{
{
if
(
!
(
GetWindowLongW
(
list
[
i
],
GWL_EXSTYLE
)
&
WS_EX_MANAGED
))
continue
;
if
(
!
(
GetWindowLongW
(
list
[
i
],
GWL_STYLE
)
&
WS_VISIBLE
))
continue
;
if
(
!
(
GetWindowLongW
(
list
[
i
],
GWL_STYLE
)
&
WS_VISIBLE
))
continue
;
if
(
!
GetPropA
(
list
[
i
],
"__wine_x11_managed"
))
continue
;
if
(
!
hwndA
)
hwndA
=
list
[
i
];
if
(
!
hwndA
)
hwndA
=
list
[
i
];
else
else
{
{
...
@@ -1279,7 +1280,7 @@ static HWND query_zorder( Display *display, HWND hWndCheck)
...
@@ -1279,7 +1280,7 @@ static HWND query_zorder( Display *display, HWND hWndCheck)
for
(
i
=
0
;
list
[
i
];
i
++
)
for
(
i
=
0
;
list
[
i
];
i
++
)
{
{
if
(
list
[
i
]
==
hWndCheck
)
continue
;
if
(
list
[
i
]
==
hWndCheck
)
continue
;
if
(
!
(
GetWindowLongW
(
list
[
i
],
GWL_EXSTYLE
)
&
WS_EX_MANAGED
))
continue
;
if
(
!
GetPropA
(
list
[
i
],
"__wine_x11_managed"
))
continue
;
if
(
!
(
w
=
__get_top_decoration
(
display
,
X11DRV_get_whole_window
(
list
[
i
]),
if
(
!
(
w
=
__get_top_decoration
(
display
,
X11DRV_get_whole_window
(
list
[
i
]),
parent
)))
continue
;
parent
)))
continue
;
pos
=
__td_lookup
(
w
,
children
,
total
);
pos
=
__td_lookup
(
w
,
children
,
total
);
...
@@ -1351,7 +1352,7 @@ void X11DRV_ConfigureNotify( HWND hwnd, XConfigureEvent *event )
...
@@ -1351,7 +1352,7 @@ void X11DRV_ConfigureNotify( HWND hwnd, XConfigureEvent *event )
TRACE
(
"win %p new X rect %ld,%ld,%ldx%ld (event %d,%d,%dx%d)
\n
"
,
TRACE
(
"win %p new X rect %ld,%ld,%ldx%ld (event %d,%d,%dx%d)
\n
"
,
hwnd
,
rect
.
left
,
rect
.
top
,
rect
.
right
-
rect
.
left
,
rect
.
bottom
-
rect
.
top
,
hwnd
,
rect
.
left
,
rect
.
top
,
rect
.
right
-
rect
.
left
,
rect
.
bottom
-
rect
.
top
,
event
->
x
,
event
->
y
,
event
->
width
,
event
->
height
);
event
->
x
,
event
->
y
,
event
->
width
,
event
->
height
);
X11DRV_X_to_window_rect
(
hwnd
,
&
rect
);
X11DRV_X_to_window_rect
(
data
,
&
rect
);
winpos
.
hwnd
=
hwnd
;
winpos
.
hwnd
=
hwnd
;
winpos
.
x
=
rect
.
left
;
winpos
.
x
=
rect
.
left
;
...
@@ -1650,8 +1651,7 @@ void X11DRV_SysCommandSizeMove( HWND hwnd, WPARAM wParam )
...
@@ -1650,8 +1651,7 @@ void X11DRV_SysCommandSizeMove( HWND hwnd, WPARAM wParam )
POINT
minTrack
,
maxTrack
;
POINT
minTrack
,
maxTrack
;
POINT
capturePoint
,
pt
;
POINT
capturePoint
,
pt
;
LONG
style
=
GetWindowLongA
(
hwnd
,
GWL_STYLE
);
LONG
style
=
GetWindowLongA
(
hwnd
,
GWL_STYLE
);
LONG
exstyle
=
GetWindowLongA
(
hwnd
,
GWL_EXSTYLE
);
BOOL
thickframe
=
HAS_THICKFRAME
(
style
);
BOOL
thickframe
=
HAS_THICKFRAME
(
style
,
exstyle
);
BOOL
iconic
=
style
&
WS_MINIMIZE
;
BOOL
iconic
=
style
&
WS_MINIMIZE
;
BOOL
moved
=
FALSE
;
BOOL
moved
=
FALSE
;
DWORD
dwPoint
=
GetMessagePos
();
DWORD
dwPoint
=
GetMessagePos
();
...
@@ -1660,6 +1660,7 @@ void X11DRV_SysCommandSizeMove( HWND hwnd, WPARAM wParam )
...
@@ -1660,6 +1660,7 @@ void X11DRV_SysCommandSizeMove( HWND hwnd, WPARAM wParam )
Window
parent_win
,
whole_win
;
Window
parent_win
,
whole_win
;
Display
*
old_gdi_display
=
NULL
;
Display
*
old_gdi_display
=
NULL
;
Display
*
display
=
thread_display
();
Display
*
display
=
thread_display
();
struct
x11drv_win_data
*
data
;
pt
.
x
=
(
short
)
LOWORD
(
dwPoint
);
pt
.
x
=
(
short
)
LOWORD
(
dwPoint
);
pt
.
y
=
(
short
)
HIWORD
(
dwPoint
);
pt
.
y
=
(
short
)
HIWORD
(
dwPoint
);
...
@@ -1667,8 +1668,10 @@ void X11DRV_SysCommandSizeMove( HWND hwnd, WPARAM wParam )
...
@@ -1667,8 +1668,10 @@ void X11DRV_SysCommandSizeMove( HWND hwnd, WPARAM wParam )
if
(
IsZoomed
(
hwnd
)
||
!
IsWindowVisible
(
hwnd
))
return
;
if
(
IsZoomed
(
hwnd
)
||
!
IsWindowVisible
(
hwnd
))
return
;
if
(
!
(
data
=
X11DRV_get_win_data
(
hwnd
)))
return
;
/* if we are managed then we let the WM do all the work */
/* if we are managed then we let the WM do all the work */
if
(
exstyle
&
WS_EX_MANAGED
)
if
(
data
->
managed
)
{
{
int
dir
;
int
dir
;
if
(
syscommand
==
SC_MOVE
)
if
(
syscommand
==
SC_MOVE
)
...
...
dlls/x11drv/x11drv.h
View file @
d7726c3a
...
@@ -536,6 +536,7 @@ struct x11drv_win_data
...
@@ -536,6 +536,7 @@ struct x11drv_win_data
RECT
whole_rect
;
/* X window rectangle for the whole window relative to parent */
RECT
whole_rect
;
/* X window rectangle for the whole window relative to parent */
RECT
client_rect
;
/* client area relative to whole window */
RECT
client_rect
;
/* client area relative to whole window */
XIC
xic
;
/* X input context */
XIC
xic
;
/* X input context */
BOOL
managed
;
/* is window managed? */
HBITMAP
hWMIconBitmap
;
HBITMAP
hWMIconBitmap
;
HBITMAP
hWMIconMask
;
HBITMAP
hWMIconMask
;
};
};
...
@@ -558,8 +559,8 @@ typedef int (*x11drv_error_callback)( Display *display, XErrorEvent *event, void
...
@@ -558,8 +559,8 @@ typedef int (*x11drv_error_callback)( Display *display, XErrorEvent *event, void
extern
void
X11DRV_expect_error
(
Display
*
display
,
x11drv_error_callback
callback
,
void
*
arg
);
extern
void
X11DRV_expect_error
(
Display
*
display
,
x11drv_error_callback
callback
,
void
*
arg
);
extern
int
X11DRV_check_error
(
void
);
extern
int
X11DRV_check_error
(
void
);
extern
void
X11DRV_set_iconic_state
(
HWND
hwnd
);
extern
void
X11DRV_set_iconic_state
(
HWND
hwnd
);
extern
void
X11DRV_window_to_X_rect
(
HWND
hwnd
,
RECT
*
rect
);
extern
void
X11DRV_window_to_X_rect
(
struct
x11drv_win_data
*
data
,
RECT
*
rect
);
extern
void
X11DRV_X_to_window_rect
(
HWND
hwnd
,
RECT
*
rect
);
extern
void
X11DRV_X_to_window_rect
(
struct
x11drv_win_data
*
data
,
RECT
*
rect
);
extern
void
X11DRV_create_desktop_thread
(
void
);
extern
void
X11DRV_create_desktop_thread
(
void
);
extern
Window
X11DRV_create_desktop
(
XVisualInfo
*
desktop_vi
,
const
char
*
geometry
);
extern
Window
X11DRV_create_desktop
(
XVisualInfo
*
desktop_vi
,
const
char
*
geometry
);
extern
void
X11DRV_sync_window_style
(
Display
*
display
,
struct
x11drv_win_data
*
data
);
extern
void
X11DRV_sync_window_style
(
Display
*
display
,
struct
x11drv_win_data
*
data
);
...
...
include/winuser.h
View file @
d7726c3a
...
@@ -2923,7 +2923,6 @@ typedef struct tagMINIMIZEDMETRICS {
...
@@ -2923,7 +2923,6 @@ typedef struct tagMINIMIZEDMETRICS {
/* WINE internal... */
/* WINE internal... */
#define WS_EX_TRAYWINDOW 0x80000000L
#define WS_EX_TRAYWINDOW 0x80000000L
#define WS_EX_MANAGED 0x40000000L
/* Window managed by the window system */
/* Window scrolling */
/* Window scrolling */
#define SW_SCROLLCHILDREN 0x0001
#define SW_SCROLLCHILDREN 0x0001
...
...
windows/winpos.c
View file @
d7726c3a
...
@@ -696,7 +696,7 @@ BOOL WINPOS_ShowIconTitle( HWND hwnd, BOOL bShow )
...
@@ -696,7 +696,7 @@ BOOL WINPOS_ShowIconTitle( HWND hwnd, BOOL bShow )
{
{
LPINTERNALPOS
lpPos
=
(
LPINTERNALPOS
)
GetPropA
(
hwnd
,
atomInternalPos
);
LPINTERNALPOS
lpPos
=
(
LPINTERNALPOS
)
GetPropA
(
hwnd
,
atomInternalPos
);
if
(
lpPos
&&
!
(
GetWindowLongA
(
hwnd
,
GWL_EXSTYLE
)
&
WS_EX_MANAGED
))
if
(
lpPos
&&
!
GetPropA
(
hwnd
,
"__wine_x11_managed"
))
{
{
HWND
title
=
lpPos
->
hwndIconTitle
;
HWND
title
=
lpPos
->
hwndIconTitle
;
...
...
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