Skip to content

Commit 31d3135

Browse files
authored
Make sure native_pixels_per_point is set during app creation (#7683)
Useful for things like analytics
1 parent 706ce10 commit 31d3135

3 files changed

Lines changed: 40 additions & 7 deletions

File tree

crates/eframe/src/native/glow_integration.rs

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1041,11 +1041,23 @@ impl GlutinWindowContext {
10411041

10421042
let mut viewport_from_window = HashMap::default();
10431043
let mut window_from_viewport = OrderedViewportIdMap::default();
1044-
let mut info = ViewportInfo::default();
1044+
let mut viewport_info = ViewportInfo::default();
10451045
if let Some(window) = &window {
10461046
viewport_from_window.insert(window.id(), ViewportId::ROOT);
10471047
window_from_viewport.insert(ViewportId::ROOT, window.id());
1048-
egui_winit::update_viewport_info(&mut info, egui_ctx, window, true);
1048+
egui_winit::update_viewport_info(&mut viewport_info, egui_ctx, window, true);
1049+
1050+
// Tell egui right away about native_pixels_per_point etc,
1051+
// so that the app knows about it during app creation:
1052+
let pixels_per_point = egui_winit::pixels_per_point(egui_ctx, window);
1053+
1054+
egui_ctx.input_mut(|i| {
1055+
i.raw
1056+
.viewports
1057+
.insert(ViewportId::ROOT, viewport_info.clone());
1058+
1059+
i.pixels_per_point = pixels_per_point;
1060+
});
10491061
}
10501062

10511063
let mut viewports = OrderedViewportIdMap::default();
@@ -1056,7 +1068,7 @@ impl GlutinWindowContext {
10561068
class: ViewportClass::Root,
10571069
builder: viewport_builder,
10581070
deferred_commands: vec![],
1059-
info,
1071+
info: viewport_info,
10601072
actions_requested: Default::default(),
10611073
viewport_ui_cb: None,
10621074
gl_surface: None,

crates/eframe/src/native/wgpu_integration.rs

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -199,6 +199,22 @@ impl<'app> WgpuWinitApp<'app> {
199199
},
200200
));
201201

202+
let mut viewport_info = ViewportInfo::default();
203+
egui_winit::update_viewport_info(&mut viewport_info, &egui_ctx, &window, true);
204+
205+
{
206+
// Tell egui right away about native_pixels_per_point etc,
207+
// so that the app knows about it during app creation:
208+
let pixels_per_point = egui_winit::pixels_per_point(&egui_ctx, &window);
209+
210+
egui_ctx.input_mut(|i| {
211+
i.raw
212+
.viewports
213+
.insert(ViewportId::ROOT, viewport_info.clone());
214+
i.pixels_per_point = pixels_per_point;
215+
});
216+
}
217+
202218
let window = Arc::new(window);
203219

204220
{
@@ -278,9 +294,6 @@ impl<'app> WgpuWinitApp<'app> {
278294
let mut viewport_from_window = HashMap::default();
279295
viewport_from_window.insert(window.id(), ViewportId::ROOT);
280296

281-
let mut info = ViewportInfo::default();
282-
egui_winit::update_viewport_info(&mut info, &egui_ctx, &window, true);
283-
284297
let mut viewports = Viewports::default();
285298
viewports.insert(
286299
ViewportId::ROOT,
@@ -289,7 +302,7 @@ impl<'app> WgpuWinitApp<'app> {
289302
class: ViewportClass::Root,
290303
builder,
291304
deferred_commands: vec![],
292-
info,
305+
info: viewport_info,
293306
actions_requested: Default::default(),
294307
viewport_ui_cb: None,
295308
window: Some(window),

crates/eframe/src/web/app_runner.rs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,14 @@ impl AppRunner {
6565
o.zoom_factor = 1.0;
6666
});
6767

68+
// Tell egui right away about native_pixels_per_point
69+
// so that the app knows about it during app creation:
70+
egui_ctx.input_mut(|i| {
71+
let viewport_info = i.raw.viewports.entry(egui::ViewportId::ROOT).or_default();
72+
viewport_info.native_pixels_per_point = Some(super::native_pixels_per_point());
73+
i.pixels_per_point = super::native_pixels_per_point();
74+
});
75+
6876
let cc = epi::CreationContext {
6977
egui_ctx: egui_ctx.clone(),
7078
integration_info: info.clone(),

0 commit comments

Comments
 (0)