1
0
mirror of https://github.com/emilk/egui.git synced 2026-08-30 05:10:03 -04:00

This PR has a smaller scope, and this are some reverts

Will no longer change egui::Window!
This commit is contained in:
Konkitoman
2023-08-31 19:37:01 +03:00
parent c10a4cd79a
commit 78a0ae879e
14 changed files with 615 additions and 1261 deletions

View File

@@ -54,12 +54,10 @@ impl eframe::App for MyApp {
if ui.button("Yes!").clicked() {
self.allowed_to_close = true;
frame.close();
}
});
});
if self.allowed_to_close {
frame.close();
}
}
}
}

View File

@@ -34,12 +34,8 @@ impl eframe::App for MyApp {
&mut self,
ctx: &egui::Context,
_frame: &mut eframe::Frame,
render: Option<&ViewportRender>,
_: Option<&ViewportRender>,
) {
if let Some(render) = render {
render(ctx);
return;
}
egui::CentralPanel::default().show(ctx, |ui| {
ui.heading("My egui Application");
ui.horizontal(|ui| {

View File

@@ -13,6 +13,5 @@ eframe = { path = "../../crates/eframe", default-features = false, features = [
# accesskit struggles with threading
"default_fonts",
"wgpu",
"x11"
] }
env_logger = "0.10"

View File

@@ -2,7 +2,8 @@
#![cfg_attr(not(debug_assertions), windows_subsystem = "windows")] // hide console window on Windows in release
use std::{sync::mpsc, thread::JoinHandle};
use std::sync::mpsc;
use std::thread::JoinHandle;
use eframe::egui::{self, ViewportRender};
@@ -39,20 +40,20 @@ impl ThreadState {
}
fn show(&mut self, ctx: &egui::Context) {
let thread_nr = self.thread_nr;
let pos = egui::pos2(16.0, 128.0 * (thread_nr as f32 + 1.0));
let title = self.title.clone();
egui::Window::new(title).default_pos(pos).show(ctx, |ui| {
ui.horizontal(|ui| {
ui.label("Your name: ");
ui.text_edit_singleline(&mut self.name);
let pos = egui::pos2(16.0, 128.0 * (self.thread_nr as f32 + 1.0));
egui::Window::new(&self.title)
.default_pos(pos)
.show(ctx, |ui| {
ui.horizontal(|ui| {
ui.label("Your name: ");
ui.text_edit_singleline(&mut self.name);
});
ui.add(egui::Slider::new(&mut self.age, 0..=120).text("age"));
if ui.button("Click each year").clicked() {
self.age += 1;
}
ui.label(format!("Hello '{}', age {}", self.name, self.age));
});
ui.add(egui::Slider::new(&mut self.age, 0..=120).text("age"));
if ui.button("Click each year").clicked() {
self.age += 1;
}
ui.label(format!("Hello '{}', age {}", self.name, self.age));
});
}
}
@@ -96,9 +97,7 @@ impl MyApp {
slf
}
}
impl MyApp {
fn spawn_thread(&mut self) {
let thread_nr = self.threads.len();
self.threads
@@ -120,22 +119,19 @@ impl eframe::App for MyApp {
&mut self,
ctx: &egui::Context,
_frame: &mut eframe::Frame,
render: Option<&ViewportRender>,
_: Option<&ViewportRender>,
) {
if let Some(render) = render {
render(ctx);
return;
}
egui::Window::new("Main thread").show(ctx, |ui| {
if ui.button("Spawn another thread").clicked() {
self.spawn_thread();
ui.ctx()
.request_repaint_viewport(ui.ctx().get_parent_viewport_id());
}
});
for (_handle, show_tx) in &self.threads {
let _ = show_tx.send(ctx.clone());
}
for _ in 0..self.threads.len() {
let _ = self.on_done_rc.recv();
}
}

View File

@@ -15,13 +15,9 @@ const RENDERER: eframe::Renderer = eframe::Renderer::Glow;
pub struct App {
show_async_viewport: bool,
show_sync_viewport: bool,
show_async_window: bool,
show_sync_window: bool,
async_viewport_state: Arc<RwLock<usize>>,
sync_viewport_state: usize,
async_window_state: Arc<RwLock<usize>>,
sync_window_state: usize,
show_async_viewport2: Arc<RwLock<bool>>,
show_sync_viewport2: Arc<RwLock<bool>>,
@@ -61,8 +57,6 @@ impl eframe::App for App {
}
ui.checkbox(&mut self.show_async_viewport, "Show Async Viewport");
ui.checkbox(&mut self.show_sync_viewport, "Show Sync Viewport");
ui.checkbox(&mut self.show_async_window, "Show Async Window");
ui.checkbox(&mut self.show_sync_window, "Show Sync Window");
let ctx = ui.ctx();
// Showing Async Viewport
@@ -343,49 +337,6 @@ impl eframe::App for App {
},
);
}
// Showing Async Window
if self.show_async_window {
let state = self.async_window_state.clone();
egui::Window::new("Async Window")
.default_embedded(false)
.show_async(ctx, move |ui| {
let ctx = ui.ctx().clone();
let mut state = state.write().unwrap();
ui.label(format!("Frame: {}", ctx.frame_nr()));
ui.label(format!("Current Viewport Id: {}", ctx.get_viewport_id()));
ui.label(format!(
"Current Parent Viewport Id: {}",
ctx.get_viewport_id()
));
ui.label(format!("Pos: {:?}", ctx.viewport_outer_pos()));
ui.label(format!("Size: {:?}", ctx.viewport_inner_size()));
ui.label(format!("Count: {state}"));
if ui.button("Add").clicked() {
*state += 1;
}
});
}
// Showing Sync Window
if self.show_sync_window {
egui::Window::new("Sync Window")
.default_embedded(false)
.show(ctx, |ui| {
ui.label(format!("Frame: {}", ctx.frame_nr()));
ui.label(format!("Current Viewport Id: {}", ctx.get_viewport_id()));
ui.label(format!(
"Current Parent Viewport Id: {}",
ctx.get_viewport_id()
));
ui.label(format!("Pos: {:?}", ctx.viewport_outer_pos()));
ui.label(format!("Size: {:?}", ctx.viewport_inner_size()));
ui.label(format!("Count: {}", self.sync_window_state));
if ui.button("Add").clicked() {
self.sync_window_state += 1;
}
});
}
});
}
}