winemac: Translate presence in Windows task bar to participation in Exposé and window cycling.
This commit is contained in:
parent
b6544d19dd
commit
15d4b2ab51
@ -156,6 +156,7 @@ static BOOL frame_intersects_screens(NSRect frame, NSArray* screens)
|
|||||||
- (void) setMacDrvState:(const struct macdrv_window_state*)state
|
- (void) setMacDrvState:(const struct macdrv_window_state*)state
|
||||||
{
|
{
|
||||||
NSInteger level;
|
NSInteger level;
|
||||||
|
NSWindowCollectionBehavior behavior;
|
||||||
|
|
||||||
self.disabled = state->disabled;
|
self.disabled = state->disabled;
|
||||||
self.noActivate = state->no_activate;
|
self.noActivate = state->no_activate;
|
||||||
@ -164,6 +165,17 @@ static BOOL frame_intersects_screens(NSRect frame, NSArray* screens)
|
|||||||
level = state->floating ? NSFloatingWindowLevel : NSNormalWindowLevel;
|
level = state->floating ? NSFloatingWindowLevel : NSNormalWindowLevel;
|
||||||
if (level != [self level])
|
if (level != [self level])
|
||||||
[self setLevel:level];
|
[self setLevel:level];
|
||||||
|
|
||||||
|
behavior = NSWindowCollectionBehaviorDefault;
|
||||||
|
if (state->excluded_by_expose)
|
||||||
|
behavior |= NSWindowCollectionBehaviorTransient;
|
||||||
|
else
|
||||||
|
behavior |= NSWindowCollectionBehaviorManaged;
|
||||||
|
if (state->excluded_by_cycle)
|
||||||
|
behavior |= NSWindowCollectionBehaviorIgnoresCycle;
|
||||||
|
else
|
||||||
|
behavior |= NSWindowCollectionBehaviorParticipatesInCycle;
|
||||||
|
[self setCollectionBehavior:behavior];
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Returns whether or not the window was ordered in, which depends on if
|
/* Returns whether or not the window was ordered in, which depends on if
|
||||||
|
@ -129,6 +129,8 @@ struct macdrv_window_state {
|
|||||||
unsigned int disabled:1;
|
unsigned int disabled:1;
|
||||||
unsigned int no_activate:1;
|
unsigned int no_activate:1;
|
||||||
unsigned int floating:1;
|
unsigned int floating:1;
|
||||||
|
unsigned int excluded_by_expose:1;
|
||||||
|
unsigned int excluded_by_cycle:1;
|
||||||
};
|
};
|
||||||
|
|
||||||
extern macdrv_window macdrv_create_cocoa_window(const struct macdrv_window_features* wf,
|
extern macdrv_window macdrv_create_cocoa_window(const struct macdrv_window_features* wf,
|
||||||
|
@ -104,6 +104,9 @@ static void get_cocoa_window_state(struct macdrv_win_data *data,
|
|||||||
state->disabled = (style & WS_DISABLED) != 0;
|
state->disabled = (style & WS_DISABLED) != 0;
|
||||||
state->no_activate = !can_activate_window(data->hwnd);
|
state->no_activate = !can_activate_window(data->hwnd);
|
||||||
state->floating = (ex_style & WS_EX_TOPMOST) != 0;
|
state->floating = (ex_style & WS_EX_TOPMOST) != 0;
|
||||||
|
state->excluded_by_expose = state->excluded_by_cycle =
|
||||||
|
!(ex_style & WS_EX_APPWINDOW) &&
|
||||||
|
(GetWindow(data->hwnd, GW_OWNER) || (ex_style & (WS_EX_TOOLWINDOW | WS_EX_NOACTIVATE)));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user