desktop: Fix gui scale on launch on wayland
This commit is contained in:
parent
eec5f9c313
commit
6f568d0a2d
|
@ -419,7 +419,15 @@ impl App {
|
||||||
self.window.scale_factor(),
|
self.window.scale_factor(),
|
||||||
);
|
);
|
||||||
|
|
||||||
let _ = self.window.request_inner_size(window_size);
|
let viewport_size = self.window.inner_size();
|
||||||
|
|
||||||
|
if let Some(new_viewport_size) = self.window.request_inner_size(window_size) {
|
||||||
|
if new_viewport_size != viewport_size {
|
||||||
|
self.gui.borrow_mut().resize(new_viewport_size);
|
||||||
|
} else {
|
||||||
|
tracing::warn!("Unable to resize window");
|
||||||
|
}
|
||||||
|
}
|
||||||
self.window.set_fullscreen(if self.start_fullscreen {
|
self.window.set_fullscreen(if self.start_fullscreen {
|
||||||
Some(Fullscreen::Borderless(None))
|
Some(Fullscreen::Borderless(None))
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -141,31 +141,35 @@ impl GuiController {
|
||||||
&self.descriptors
|
&self.descriptors
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn resize(&mut self, size: PhysicalSize<u32>) {
|
||||||
|
if size.width > 0 && size.height > 0 {
|
||||||
|
self.surface.configure(
|
||||||
|
&self.descriptors.device,
|
||||||
|
&wgpu::SurfaceConfiguration {
|
||||||
|
usage: wgpu::TextureUsages::RENDER_ATTACHMENT,
|
||||||
|
format: self.surface_format,
|
||||||
|
width: size.width,
|
||||||
|
height: size.height,
|
||||||
|
present_mode: Default::default(),
|
||||||
|
desired_maximum_frame_latency: 2,
|
||||||
|
alpha_mode: Default::default(),
|
||||||
|
view_formats: Default::default(),
|
||||||
|
},
|
||||||
|
);
|
||||||
|
self.movie_view_renderer.update_resolution(
|
||||||
|
&self.descriptors,
|
||||||
|
self.window.fullscreen().is_none() && !self.no_gui,
|
||||||
|
size.height,
|
||||||
|
self.window.scale_factor(),
|
||||||
|
);
|
||||||
|
self.size = size;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#[must_use]
|
#[must_use]
|
||||||
pub fn handle_event(&mut self, event: &WindowEvent) -> bool {
|
pub fn handle_event(&mut self, event: &WindowEvent) -> bool {
|
||||||
if let WindowEvent::Resized(size) = &event {
|
if let WindowEvent::Resized(size) = &event {
|
||||||
if size.width > 0 && size.height > 0 {
|
self.resize(*size);
|
||||||
self.surface.configure(
|
|
||||||
&self.descriptors.device,
|
|
||||||
&wgpu::SurfaceConfiguration {
|
|
||||||
usage: wgpu::TextureUsages::RENDER_ATTACHMENT,
|
|
||||||
format: self.surface_format,
|
|
||||||
width: size.width,
|
|
||||||
height: size.height,
|
|
||||||
present_mode: Default::default(),
|
|
||||||
desired_maximum_frame_latency: 2,
|
|
||||||
alpha_mode: Default::default(),
|
|
||||||
view_formats: Default::default(),
|
|
||||||
},
|
|
||||||
);
|
|
||||||
self.movie_view_renderer.update_resolution(
|
|
||||||
&self.descriptors,
|
|
||||||
self.window.fullscreen().is_none() && !self.no_gui,
|
|
||||||
size.height,
|
|
||||||
self.window.scale_factor(),
|
|
||||||
);
|
|
||||||
self.size = *size;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if let WindowEvent::ThemeChanged(theme) = &event {
|
if let WindowEvent::ThemeChanged(theme) = &event {
|
||||||
|
|
Loading…
Reference in New Issue