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
064186e7
Commit
064186e7
authored
Jan 11, 2013
by
Ken Thomases
Committed by
Alexandre Julliard
Jan 11, 2013
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
winemac: Implement support for WS_DISABLED windows.
parent
bd08cecb
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
81 additions
and
2 deletions
+81
-2
cocoa_window.h
dlls/winemac.drv/cocoa_window.h
+5
-0
cocoa_window.m
dlls/winemac.drv/cocoa_window.m
+54
-2
macdrv_cocoa.h
dlls/winemac.drv/macdrv_cocoa.h
+6
-0
window.c
dlls/winemac.drv/window.c
+16
-0
No files found.
dlls/winemac.drv/cocoa_window.h
View file @
064186e7
...
...
@@ -22,4 +22,9 @@
@interface
WineWindow
:
NSPanel
<
NSWindowDelegate
>
{
NSUInteger
normalStyleMask
;
BOOL
disabled
;
}
@end
dlls/winemac.drv/cocoa_window.m
View file @
064186e7
...
...
@@ -60,6 +60,8 @@ static BOOL frame_intersects_screens(NSRect frame, NSArray* screens)
@interface
WineWindow
()
@property
(
nonatomic
)
BOOL
disabled
;
+
(
void
)
flipRect
:(
NSRect
*
)
rect
;
@end
...
...
@@ -77,6 +79,8 @@ static BOOL frame_intersects_screens(NSRect frame, NSArray* screens)
@implementation
WineWindow
@synthesize
disabled
;
+
(
WineWindow
*
)
createWindowWithFeatures
:(
const
struct
macdrv_window_features
*
)
wf
windowFrame
:(
NSRect
)
window_frame
{
...
...
@@ -90,6 +94,9 @@ static BOOL frame_intersects_screens(NSRect frame, NSArray* screens)
backing
:
NSBackingStoreBuffered
defer
:
YES
]
autorelease
];
if
(
!
window
)
return
nil
;
window
->
normalStyleMask
=
[
window
styleMask
];
/* Standardize windows to eliminate differences between titled and
borderless windows and between NSWindow and NSPanel. */
[
window
setHidesOnDeactivate
:
NO
];
...
...
@@ -115,12 +122,33 @@ static BOOL frame_intersects_screens(NSRect frame, NSArray* screens)
rect
->
origin
.
y
=
NSMaxY
([[[
NSScreen
screens
]
objectAtIndex
:
0
]
frame
])
-
NSMaxY
(
*
rect
);
}
-
(
void
)
adjustFeaturesForState
{
NSUInteger
style
=
normalStyleMask
;
if
(
self
.
disabled
)
style
&=
~
NSResizableWindowMask
;
if
(
style
!=
[
self
styleMask
])
[
self
setStyleMask
:
style
];
if
(
style
&
NSClosableWindowMask
)
[[
self
standardWindowButton
:
NSWindowCloseButton
]
setEnabled
:
!
self
.
disabled
];
if
(
style
&
NSMiniaturizableWindowMask
)
[[
self
standardWindowButton
:
NSWindowMiniaturizeButton
]
setEnabled
:
!
self
.
disabled
];
}
-
(
void
)
setWindowFeatures
:
(
const
struct
macdrv_window_features
*
)
wf
{
[
self
setStyleMask
:
style_mask_for_features
(
wf
)];
normalStyleMask
=
style_mask_for_features
(
wf
);
[
self
adjustFeaturesForState
];
[
self
setHasShadow
:
wf
->
shadow
];
}
-
(
void
)
setMacDrvState
:
(
const
struct
macdrv_window_state
*
)
state
{
self
.
disabled
=
state
->
disabled
;
}
/* Returns whether or not the window was ordered in, which depends on if
its frame intersects any screen. */
-
(
BOOL
)
orderBelow
:
(
WineWindow
*
)
prev
orAbove
:
(
WineWindow
*
)
next
...
...
@@ -171,13 +199,22 @@ static BOOL frame_intersects_screens(NSRect frame, NSArray* screens)
return
on_screen
;
}
-
(
void
)
setDisabled
:
(
BOOL
)
newValue
{
if
(
disabled
!=
newValue
)
{
disabled
=
newValue
;
[
self
adjustFeaturesForState
];
}
}
/*
* ---------- NSWindow method overrides ----------
*/
-
(
BOOL
)
canBecomeKeyWindow
{
return
YES
;
return
!
self
.
disabled
;
}
-
(
BOOL
)
canBecomeMainWindow
...
...
@@ -248,6 +285,21 @@ void macdrv_set_cocoa_window_features(macdrv_window w,
}
/***********************************************************************
* macdrv_set_cocoa_window_state
*
* Update a Cocoa window's state.
*/
void
macdrv_set_cocoa_window_state
(
macdrv_window
w
,
const
struct
macdrv_window_state
*
state
)
{
WineWindow
*
window
=
(
WineWindow
*
)
w
;
OnMainThread
(
^
{
[
window
setMacDrvState
:
state
];
});
}
/***********************************************************************
* macdrv_set_cocoa_window_title
*
* Set a Cocoa window's title.
...
...
dlls/winemac.drv/macdrv_cocoa.h
View file @
064186e7
...
...
@@ -125,11 +125,17 @@ struct macdrv_window_features {
unsigned
int
shadow
:
1
;
};
struct
macdrv_window_state
{
unsigned
int
disabled
:
1
;
};
extern
macdrv_window
macdrv_create_cocoa_window
(
const
struct
macdrv_window_features
*
wf
,
CGRect
frame
)
DECLSPEC_HIDDEN
;
extern
void
macdrv_destroy_cocoa_window
(
macdrv_window
w
)
DECLSPEC_HIDDEN
;
extern
void
macdrv_set_cocoa_window_features
(
macdrv_window
w
,
const
struct
macdrv_window_features
*
wf
)
DECLSPEC_HIDDEN
;
extern
void
macdrv_set_cocoa_window_state
(
macdrv_window
w
,
const
struct
macdrv_window_state
*
state
)
DECLSPEC_HIDDEN
;
extern
void
macdrv_set_cocoa_window_title
(
macdrv_window
w
,
const
UniChar
*
title
,
size_t
length
)
DECLSPEC_HIDDEN
;
extern
int
macdrv_order_cocoa_window
(
macdrv_window
w
,
macdrv_window
prev
,
...
...
dlls/winemac.drv/window.c
View file @
064186e7
...
...
@@ -74,6 +74,18 @@ static void get_cocoa_window_features(struct macdrv_win_data *data,
/***********************************************************************
* get_cocoa_window_state
*/
static
void
get_cocoa_window_state
(
struct
macdrv_win_data
*
data
,
DWORD
style
,
DWORD
ex_style
,
struct
macdrv_window_state
*
state
)
{
memset
(
state
,
0
,
sizeof
(
*
state
));
state
->
disabled
=
(
style
&
WS_DISABLED
)
!=
0
;
}
/***********************************************************************
* get_mac_rect_offset
*
* Helper for macdrv_window_to_mac_rect and macdrv_mac_to_window_rect.
...
...
@@ -268,12 +280,16 @@ static void set_cocoa_window_properties(struct macdrv_win_data *data)
{
DWORD
style
,
ex_style
;
struct
macdrv_window_features
wf
;
struct
macdrv_window_state
state
;
style
=
GetWindowLongW
(
data
->
hwnd
,
GWL_STYLE
);
ex_style
=
GetWindowLongW
(
data
->
hwnd
,
GWL_EXSTYLE
);
get_cocoa_window_features
(
data
,
style
,
ex_style
,
&
wf
);
macdrv_set_cocoa_window_features
(
data
->
cocoa_window
,
&
wf
);
get_cocoa_window_state
(
data
,
style
,
ex_style
,
&
state
);
macdrv_set_cocoa_window_state
(
data
->
cocoa_window
,
&
state
);
}
...
...
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