Skip to content

Commit

Permalink
MacOS: Support fullsize content
Browse files Browse the repository at this point in the history
  • Loading branch information
paulrouget committed Sep 16, 2022
1 parent 0605bcf commit 13bdbe5
Show file tree
Hide file tree
Showing 3 changed files with 22 additions and 0 deletions.
1 change: 1 addition & 0 deletions crates/eframe/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ NOTE: [`egui-winit`](../egui-winit/CHANGELOG.md), [`egui_glium`](../egui_glium/C


## Unreleased
* Added `NativeOptions::fullsize_content` option on Mac to build titlebar-less windows with floating window controls.
* Added `NativeOptions::event_loop_builder` hook for apps to change platform specific event loop options ([#1952](https://github.com/emilk/egui/pull/1952)).
* Enabled deferred render state initialization to support Android ([#1952](https://github.com/emilk/egui/pull/1952)).
* Allow empty textures with the glow renderer.
Expand Down
8 changes: 8 additions & 0 deletions crates/eframe/src/epi.rs
Original file line number Diff line number Diff line change
Expand Up @@ -223,6 +223,13 @@ pub struct NativeOptions {
/// Default: `false`.
pub fullscreen: bool,

/// On Mac: the window doesn't have a titlebar, but floating window buttons.
///
/// See [winit's documentation][with_fullsize_content_view] for information on Mac-specific options.
///
/// [with_fullsize_content_view]: https://docs.rs/winit/latest/x86_64-apple-darwin/winit/platform/macos/trait.WindowBuilderExtMacOS.html#tymethod.with_fullsize_content_view
pub fullsize_content: bool,

/// On Windows: enable drag and drop support. Drag and drop can
/// not be disabled on other platforms.
///
Expand Down Expand Up @@ -361,6 +368,7 @@ impl Default for NativeOptions {
maximized: false,
decorated: true,
fullscreen: false,
fullsize_content: false,
drag_and_drop_support: true,
icon_data: None,
initial_window_pos: None,
Expand Down
13 changes: 13 additions & 0 deletions crates/eframe/src/native/epi_integration.rs
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
use winit::event_loop::EventLoopWindowTarget;

#[cfg(target_os = "macos")]
use winit::platform::macos::WindowBuilderExtMacOS;

use egui_winit::{native_pixels_per_point, EventResponse, WindowSettings};

use crate::{epi, Theme, WindowInfo};
Expand Down Expand Up @@ -41,6 +44,8 @@ pub fn window_builder(
maximized,
decorated,
fullscreen,
#[cfg(target_os = "macos")]
fullsize_content,
drag_and_drop_support,
icon_data,
initial_window_pos,
Expand All @@ -63,6 +68,14 @@ pub fn window_builder(
.with_transparent(*transparent)
.with_window_icon(window_icon);

#[cfg(target_os = "macos")]
if *fullsize_content {
window_builder = window_builder
.with_title_hidden(true)
.with_titlebar_transparent(true)
.with_fullsize_content_view(true);
}

if let Some(min_size) = *min_window_size {
window_builder = window_builder.with_min_inner_size(points_to_size(min_size));
}
Expand Down

0 comments on commit 13bdbe5

Please sign in to comment.