mirror of
https://github.com/wez/wezterm.git
synced 2024-12-24 05:42:03 +03:00
make alpha work on macos
This commit is contained in:
parent
0503abc63a
commit
e81fb6e721
@ -1,6 +1,7 @@
|
|||||||
use ::window::*;
|
use ::window::*;
|
||||||
use anyhow::Context;
|
use anyhow::Context;
|
||||||
use promise::spawn::spawn;
|
use promise::spawn::spawn;
|
||||||
|
use raw_window_handle::{HasRawWindowHandle, RawWindowHandle};
|
||||||
|
|
||||||
pub struct GpuContext {
|
pub struct GpuContext {
|
||||||
pub swap_chain: wgpu::SwapChain,
|
pub swap_chain: wgpu::SwapChain,
|
||||||
@ -227,6 +228,18 @@ async fn spawn_window() -> anyhow::Result<()> {
|
|||||||
is_full_screen: _,
|
is_full_screen: _,
|
||||||
} => {
|
} => {
|
||||||
state.resize(dimensions);
|
state.resize(dimensions);
|
||||||
|
#[cfg(target_os = "macos")]
|
||||||
|
if let RawWindowHandle::MacOS(h) = win.raw_window_handle() {
|
||||||
|
use cocoa::base::{id, NO};
|
||||||
|
use objc::*;
|
||||||
|
unsafe {
|
||||||
|
// Allow transparency, as the default for Metal is opaque
|
||||||
|
let layer: id = msg_send![h.ns_view as id, layer];
|
||||||
|
let () = msg_send![layer, setOpaque: NO];
|
||||||
|
}
|
||||||
|
|
||||||
|
state.paint()?;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
WindowEvent::MouseEvent(event) => {
|
WindowEvent::MouseEvent(event) => {
|
||||||
state.cursor_pos = event.coords;
|
state.cursor_pos = event.coords;
|
||||||
|
@ -17,8 +17,9 @@ use cocoa::appkit::{
|
|||||||
NSWindowStyleMask,
|
NSWindowStyleMask,
|
||||||
};
|
};
|
||||||
use cocoa::base::*;
|
use cocoa::base::*;
|
||||||
use cocoa::foundation::NSAutoreleasePool;
|
use cocoa::foundation::{
|
||||||
use cocoa::foundation::{NSArray, NSNotFound, NSPoint, NSRect, NSSize, NSUInteger};
|
NSArray, NSAutoreleasePool, NSInteger, NSNotFound, NSPoint, NSRect, NSSize, NSUInteger,
|
||||||
|
};
|
||||||
use config::ConfigHandle;
|
use config::ConfigHandle;
|
||||||
use core_foundation::base::{CFTypeID, TCFType};
|
use core_foundation::base::{CFTypeID, TCFType};
|
||||||
use core_foundation::bundle::{CFBundleGetBundleWithIdentifier, CFBundleGetFunctionPointerForName};
|
use core_foundation::bundle::{CFBundleGetBundleWithIdentifier, CFBundleGetFunctionPointerForName};
|
||||||
@ -39,6 +40,9 @@ use std::rc::Rc;
|
|||||||
use std::str::FromStr;
|
use std::str::FromStr;
|
||||||
use std::time::Instant;
|
use std::time::Instant;
|
||||||
|
|
||||||
|
#[allow(non_upper_case_globals)]
|
||||||
|
const NSViewLayerContentsPlacementTopLeft: NSInteger = 11;
|
||||||
|
|
||||||
fn round_away_from_zerof(value: f64) -> f64 {
|
fn round_away_from_zerof(value: f64) -> f64 {
|
||||||
if value > 0. {
|
if value > 0. {
|
||||||
value.max(1.).round()
|
value.max(1.).round()
|
||||||
@ -189,17 +193,6 @@ impl GlContextPair {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
#[allow(non_upper_case_globals)]
|
|
||||||
unsafe {
|
|
||||||
use cocoa::foundation::NSInteger;
|
|
||||||
const NSViewLayerContentsPlacementTopLeft: NSInteger = 11;
|
|
||||||
|
|
||||||
let () = msg_send![
|
|
||||||
view,
|
|
||||||
setLayerContentsPlacement: NSViewLayerContentsPlacementTopLeft
|
|
||||||
];
|
|
||||||
}
|
|
||||||
|
|
||||||
Ok(Self { context, backend })
|
Ok(Self { context, backend })
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -455,6 +448,11 @@ impl Window {
|
|||||||
view.initWithFrame_(rect);
|
view.initWithFrame_(rect);
|
||||||
view.setAutoresizingMask_(NSViewHeightSizable | NSViewWidthSizable);
|
view.setAutoresizingMask_(NSViewHeightSizable | NSViewWidthSizable);
|
||||||
|
|
||||||
|
let () = msg_send![
|
||||||
|
*view,
|
||||||
|
setLayerContentsPlacement: NSViewLayerContentsPlacementTopLeft
|
||||||
|
];
|
||||||
|
|
||||||
window.setContentView_(*view);
|
window.setContentView_(*view);
|
||||||
window.setDelegate_(*view);
|
window.setDelegate_(*view);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user