Compare commits

...

6 commits

Author SHA1 Message Date
Emil Ernerfeldt
7215fdfb7c Release eframe 0.21.3 - fix web input of the the letter P 2023-02-15 08:26:45 +01:00
Emil Ernerfeldt
e2778d9d6a
eframe: Fix inputting of the letter P on web (#2740)
* eframe: Fix inputting of the letter P on web

* Update changelog

* silence clippy
2023-02-15 08:24:52 +01:00
Emil Ernerfeldt
38849fe381 Release eframe 0.21.2 - support --no-default-features 2023-02-12 19:34:37 +01:00
Emil Ernerfeldt
df7e5bd57a
Allow compiling eframe with --no-default-features (#2728)
* Check that we can compile eframe with --no-default-features

* Allow compiling eframe with `--no-default-features`

This is useful for libraries that depend on `eframe::Frame`
but don't care what renderer eframe is using.
2023-02-12 19:29:42 +01:00
Emil Ernerfeldt
e3e781ced8 fix puffin_profiler example 2023-02-12 19:27:10 +01:00
Emil Ernerfeldt
97756bc246 Add badges to all crates' README.md 2023-02-12 18:08:13 +01:00
14 changed files with 89 additions and 20 deletions

View file

@ -47,24 +47,30 @@ jobs:
with: with:
crate: cargo-cranky crate: cargo-cranky
- name: Check all features - name: check --all-features
uses: actions-rs/cargo@v1 uses: actions-rs/cargo@v1
with: with:
command: check command: check
args: --locked --all-features --all-targets args: --locked --all-features --all-targets
- name: Check default features - name: check default features
uses: actions-rs/cargo@v1 uses: actions-rs/cargo@v1
with: with:
command: check command: check
args: --locked --all-targets args: --locked --all-targets
- name: Check no default features - name: check --no-default-features
uses: actions-rs/cargo@v1 uses: actions-rs/cargo@v1
with: with:
command: check command: check
args: --locked --no-default-features --lib --all-targets args: --locked --no-default-features --lib --all-targets
- name: check eframe --no-default-features
uses: actions-rs/cargo@v1
with:
command: check
args: --locked --no-default-features --lib --all-targets -p eframe
- name: Test doc-tests - name: Test doc-tests
uses: actions-rs/cargo@v1 uses: actions-rs/cargo@v1
with: with:

2
Cargo.lock generated
View file

@ -1218,7 +1218,7 @@ dependencies = [
[[package]] [[package]]
name = "eframe" name = "eframe"
version = "0.21.1" version = "0.21.3"
dependencies = [ dependencies = [
"bytemuck", "bytemuck",
"dark-light", "dark-light",

View file

@ -1,5 +1,11 @@
# ecolor - egui color library # ecolor - egui color library
[![Latest version](https://img.shields.io/crates/v/ecolor.svg)](https://crates.io/crates/ecolor)
[![Documentation](https://docs.rs/ecolor/badge.svg)](https://docs.rs/ecolor)
[![unsafe forbidden](https://img.shields.io/badge/unsafe-forbidden-success.svg)](https://github.com/rust-secure-code/safety-dance/)
![MIT](https://img.shields.io/badge/license-MIT-blue.svg)
![Apache](https://img.shields.io/badge/license-Apache-blue.svg)
A simple color storage and conversion library. A simple color storage and conversion library.
Made for [`egui`](https://github.com/emilk/egui/). Made for [`egui`](https://github.com/emilk/egui/).

View file

@ -7,6 +7,14 @@ NOTE: [`egui-winit`](../egui-winit/CHANGELOG.md), [`egui_glium`](../egui_glium/C
## Unreleased ## Unreleased
## 0.21.3 - 2023-02-15
* Fix typing the letter 'P' on web ([#2740](https://github.com/emilk/egui/pull/2740)).
## 0.21.2 - 2023-02-12
* Allow compiling `eframe` with `--no-default-features` ([#2728](https://github.com/emilk/egui/pull/2728)).
## 0.21.1 - 2023-02-12 ## 0.21.1 - 2023-02-12
* Fixed crash when native window position is in an invalid state, which could happen e.g. due to changes in monitor size or DPI ([#2722](https://github.com/emilk/egui/issues/2722)). * Fixed crash when native window position is in an invalid state, which could happen e.g. due to changes in monitor size or DPI ([#2722](https://github.com/emilk/egui/issues/2722)).

View file

@ -1,6 +1,6 @@
[package] [package]
name = "eframe" name = "eframe"
version = "0.21.1" version = "0.21.3"
authors = ["Emil Ernerfeldt <emil.ernerfeldt@gmail.com>"] authors = ["Emil Ernerfeldt <emil.ernerfeldt@gmail.com>"]
description = "egui framework - write GUI apps that compiles to web and/or natively" description = "egui framework - write GUI apps that compiles to web and/or natively"
edition = "2021" edition = "2021"

View file

@ -10,9 +10,11 @@
use std::any::Any; use std::any::Any;
#[cfg(not(target_arch = "wasm32"))] #[cfg(not(target_arch = "wasm32"))]
#[cfg(any(feature = "glow", feature = "wgpu"))]
pub use crate::native::run::UserEvent; pub use crate::native::run::UserEvent;
#[cfg(not(target_arch = "wasm32"))] #[cfg(not(target_arch = "wasm32"))]
#[cfg(any(feature = "glow", feature = "wgpu"))]
pub use winit::event_loop::EventLoopBuilder; pub use winit::event_loop::EventLoopBuilder;
/// Hook into the building of an event loop before it is run /// Hook into the building of an event loop before it is run
@ -20,6 +22,7 @@ pub use winit::event_loop::EventLoopBuilder;
/// You can configure any platform specific details required on top of the default configuration /// You can configure any platform specific details required on top of the default configuration
/// done by `EFrame`. /// done by `EFrame`.
#[cfg(not(target_arch = "wasm32"))] #[cfg(not(target_arch = "wasm32"))]
#[cfg(any(feature = "glow", feature = "wgpu"))]
pub type EventLoopBuilderHook = Box<dyn FnOnce(&mut EventLoopBuilder<UserEvent>)>; pub type EventLoopBuilderHook = Box<dyn FnOnce(&mut EventLoopBuilder<UserEvent>)>;
/// This is how your app is created. /// This is how your app is created.
@ -317,6 +320,7 @@ pub struct NativeOptions {
pub hardware_acceleration: HardwareAcceleration, pub hardware_acceleration: HardwareAcceleration,
/// What rendering backend to use. /// What rendering backend to use.
#[cfg(any(feature = "glow", feature = "wgpu"))]
pub renderer: Renderer, pub renderer: Renderer,
/// Only used if the `dark-light` feature is enabled: /// Only used if the `dark-light` feature is enabled:
@ -355,6 +359,7 @@ pub struct NativeOptions {
/// event loop before it is run. /// event loop before it is run.
/// ///
/// Note: A [`NativeOptions`] clone will not include any `event_loop_builder` hook. /// Note: A [`NativeOptions`] clone will not include any `event_loop_builder` hook.
#[cfg(any(feature = "glow", feature = "wgpu"))]
pub event_loop_builder: Option<EventLoopBuilderHook>, pub event_loop_builder: Option<EventLoopBuilderHook>,
#[cfg(feature = "glow")] #[cfg(feature = "glow")]
@ -381,9 +386,13 @@ impl Clone for NativeOptions {
fn clone(&self) -> Self { fn clone(&self) -> Self {
Self { Self {
icon_data: self.icon_data.clone(), icon_data: self.icon_data.clone(),
#[cfg(any(feature = "glow", feature = "wgpu"))]
event_loop_builder: None, // Skip any builder callbacks if cloning event_loop_builder: None, // Skip any builder callbacks if cloning
#[cfg(feature = "wgpu")] #[cfg(feature = "wgpu")]
wgpu_options: self.wgpu_options.clone(), wgpu_options: self.wgpu_options.clone(),
..*self ..*self
} }
} }
@ -397,8 +406,10 @@ impl Default for NativeOptions {
maximized: false, maximized: false,
decorated: true, decorated: true,
fullscreen: false, fullscreen: false,
#[cfg(target_os = "macos")] #[cfg(target_os = "macos")]
fullsize_content: false, fullsize_content: false,
drag_and_drop_support: true, drag_and_drop_support: true,
icon_data: None, icon_data: None,
initial_window_pos: None, initial_window_pos: None,
@ -413,14 +424,22 @@ impl Default for NativeOptions {
depth_buffer: 0, depth_buffer: 0,
stencil_buffer: 0, stencil_buffer: 0,
hardware_acceleration: HardwareAcceleration::Preferred, hardware_acceleration: HardwareAcceleration::Preferred,
#[cfg(any(feature = "glow", feature = "wgpu"))]
renderer: Renderer::default(), renderer: Renderer::default(),
follow_system_theme: cfg!(target_os = "macos") || cfg!(target_os = "windows"), follow_system_theme: cfg!(target_os = "macos") || cfg!(target_os = "windows"),
default_theme: Theme::Dark, default_theme: Theme::Dark,
run_and_return: true, run_and_return: true,
#[cfg(any(feature = "glow", feature = "wgpu"))]
event_loop_builder: None, event_loop_builder: None,
#[cfg(feature = "glow")] #[cfg(feature = "glow")]
shader_version: None, shader_version: None,
centered: false, centered: false,
#[cfg(feature = "wgpu")] #[cfg(feature = "wgpu")]
wgpu_options: egui_wgpu::WgpuConfiguration::default(), wgpu_options: egui_wgpu::WgpuConfiguration::default(),
} }
@ -559,6 +578,7 @@ pub enum WebGlContextOption {
/// What rendering backend to use. /// What rendering backend to use.
/// ///
/// You need to enable the "glow" and "wgpu" features to have a choice. /// You need to enable the "glow" and "wgpu" features to have a choice.
#[cfg(any(feature = "glow", feature = "wgpu"))]
#[derive(Clone, Copy, Debug, PartialEq, Eq)] #[derive(Clone, Copy, Debug, PartialEq, Eq)]
#[cfg_attr(feature = "serde", derive(serde::Deserialize, serde::Serialize))] #[cfg_attr(feature = "serde", derive(serde::Deserialize, serde::Serialize))]
#[cfg_attr(feature = "serde", serde(rename_all = "snake_case"))] #[cfg_attr(feature = "serde", serde(rename_all = "snake_case"))]
@ -572,6 +592,7 @@ pub enum Renderer {
Wgpu, Wgpu,
} }
#[cfg(any(feature = "glow", feature = "wgpu"))]
impl Default for Renderer { impl Default for Renderer {
fn default() -> Self { fn default() -> Self {
#[cfg(feature = "glow")] #[cfg(feature = "glow")]
@ -587,6 +608,7 @@ impl Default for Renderer {
} }
} }
#[cfg(any(feature = "glow", feature = "wgpu"))]
impl std::fmt::Display for Renderer { impl std::fmt::Display for Renderer {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
match self { match self {
@ -599,6 +621,7 @@ impl std::fmt::Display for Renderer {
} }
} }
#[cfg(any(feature = "glow", feature = "wgpu"))]
impl std::str::FromStr for Renderer { impl std::str::FromStr for Renderer {
type Err = String; type Err = String;
@ -811,6 +834,7 @@ impl Frame {
} }
/// for integrations only: call once per frame /// for integrations only: call once per frame
#[cfg(any(feature = "glow", feature = "wgpu"))]
pub(crate) fn take_app_output(&mut self) -> backend::AppOutput { pub(crate) fn take_app_output(&mut self) -> backend::AppOutput {
std::mem::take(&mut self.output) std::mem::take(&mut self.output)
} }

View file

@ -137,6 +137,7 @@ pub async fn start_web(
// When compiling natively // When compiling natively
#[cfg(not(target_arch = "wasm32"))] #[cfg(not(target_arch = "wasm32"))]
#[cfg(any(feature = "glow", feature = "wgpu"))]
mod native; mod native;
/// This is how you start a native (desktop) app. /// This is how you start a native (desktop) app.
@ -179,6 +180,7 @@ mod native;
/// This function can fail if we fail to set up a graphics context. /// This function can fail if we fail to set up a graphics context.
#[cfg(not(target_arch = "wasm32"))] #[cfg(not(target_arch = "wasm32"))]
#[allow(clippy::needless_pass_by_value)] #[allow(clippy::needless_pass_by_value)]
#[cfg(any(feature = "glow", feature = "wgpu"))]
pub fn run_native( pub fn run_native(
app_name: &str, app_name: &str,
native_options: NativeOptions, native_options: NativeOptions,
@ -233,24 +235,28 @@ pub type Result<T> = std::result::Result<T, Error>;
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
/// Profiling macro for feature "puffin"
#[cfg(not(target_arch = "wasm32"))] #[cfg(not(target_arch = "wasm32"))]
#[cfg(any(feature = "glow", feature = "wgpu"))]
mod profiling_scopes {
/// Profiling macro for feature "puffin"
macro_rules! profile_function { macro_rules! profile_function {
($($arg: tt)*) => { ($($arg: tt)*) => {
#[cfg(feature = "puffin")] #[cfg(feature = "puffin")]
puffin::profile_function!($($arg)*); puffin::profile_function!($($arg)*);
}; };
} }
#[cfg(not(target_arch = "wasm32"))]
pub(crate) use profile_function; pub(crate) use profile_function;
/// Profiling macro for feature "puffin" /// Profiling macro for feature "puffin"
#[cfg(not(target_arch = "wasm32"))]
macro_rules! profile_scope { macro_rules! profile_scope {
($($arg: tt)*) => { ($($arg: tt)*) => {
#[cfg(feature = "puffin")] #[cfg(feature = "puffin")]
puffin::profile_scope!($($arg)*); puffin::profile_scope!($($arg)*);
}; };
} }
#[cfg(not(target_arch = "wasm32"))]
pub(crate) use profile_scope; pub(crate) use profile_scope;
}
#[cfg(not(target_arch = "wasm32"))]
#[cfg(any(feature = "glow", feature = "wgpu"))]
pub(crate) use profiling_scopes::*;

View file

@ -94,7 +94,12 @@ pub fn install_document_events(runner_container: &mut AppRunnerContainer) -> Res
// egui wants to use tab to move to the next text field. // egui wants to use tab to move to the next text field.
true true
} else if egui_key == Some(Key::P) { } else if egui_key == Some(Key::P) {
#[allow(clippy::needless_bool)]
if modifiers.ctrl || modifiers.command || modifiers.mac_cmd {
true // Prevent ctrl-P opening the print dialog. Users may want to use it for a command palette. true // Prevent ctrl-P opening the print dialog. Users may want to use it for a command palette.
} else {
false // let normal P:s through
}
} else if egui_wants_keyboard { } else if egui_wants_keyboard {
matches!( matches!(
event.key().as_str(), event.key().as_str(),

View file

@ -2,6 +2,7 @@
[![Latest version](https://img.shields.io/crates/v/egui_extras.svg)](https://crates.io/crates/egui_extras) [![Latest version](https://img.shields.io/crates/v/egui_extras.svg)](https://crates.io/crates/egui_extras)
[![Documentation](https://docs.rs/egui_extras/badge.svg)](https://docs.rs/egui_extras) [![Documentation](https://docs.rs/egui_extras/badge.svg)](https://docs.rs/egui_extras)
[![unsafe forbidden](https://img.shields.io/badge/unsafe-forbidden-success.svg)](https://github.com/rust-secure-code/safety-dance/)
![MIT](https://img.shields.io/badge/license-MIT-blue.svg) ![MIT](https://img.shields.io/badge/license-MIT-blue.svg)
![Apache](https://img.shields.io/badge/license-Apache-blue.svg) ![Apache](https://img.shields.io/badge/license-Apache-blue.svg)

View file

@ -1,5 +1,11 @@
# emath - egui math library # emath - egui math library
[![Latest version](https://img.shields.io/crates/v/emath.svg)](https://crates.io/crates/emath)
[![Documentation](https://docs.rs/emath/badge.svg)](https://docs.rs/emath)
[![unsafe forbidden](https://img.shields.io/badge/unsafe-forbidden-success.svg)](https://github.com/rust-secure-code/safety-dance/)
![MIT](https://img.shields.io/badge/license-MIT-blue.svg)
![Apache](https://img.shields.io/badge/license-Apache-blue.svg)
A bare-bones 2D math library with types and functions useful for GUI building. A bare-bones 2D math library with types and functions useful for GUI building.
Made for [`egui`](https://github.com/emilk/egui/). Made for [`egui`](https://github.com/emilk/egui/).

View file

@ -1,5 +1,11 @@
# epaint - egui paint library # epaint - egui paint library
[![Latest version](https://img.shields.io/crates/v/epaint.svg)](https://crates.io/crates/epaint)
[![Documentation](https://docs.rs/epaint/badge.svg)](https://docs.rs/epaint)
[![unsafe forbidden](https://img.shields.io/badge/unsafe-forbidden-success.svg)](https://github.com/rust-secure-code/safety-dance/)
![MIT](https://img.shields.io/badge/license-MIT-blue.svg)
![Apache](https://img.shields.io/badge/license-Apache-blue.svg)
A bare-bones 2D graphics library for turning simple 2D shapes and text into textured triangles. A bare-bones 2D graphics library for turning simple 2D shapes and text into textured triangles.
Made for [`egui`](https://github.com/emilk/egui/). Made for [`egui`](https://github.com/emilk/egui/).

View file

@ -224,7 +224,7 @@ function makeMutClosure(arg0, arg1, dtor, f) {
function __wbg_adapter_28(arg0, arg1) { function __wbg_adapter_28(arg0, arg1) {
try { try {
const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
wasm._dyn_core__ops__function__FnMut_____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__he2ead792e86f6629(retptr, arg0, arg1); wasm._dyn_core__ops__function__FnMut_____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h19340d09680f5ee3(retptr, arg0, arg1);
var r0 = getInt32Memory0()[retptr / 4 + 0]; var r0 = getInt32Memory0()[retptr / 4 + 0];
var r1 = getInt32Memory0()[retptr / 4 + 1]; var r1 = getInt32Memory0()[retptr / 4 + 1];
if (r1) { if (r1) {
@ -236,7 +236,7 @@ function __wbg_adapter_28(arg0, arg1) {
} }
function __wbg_adapter_31(arg0, arg1, arg2) { function __wbg_adapter_31(arg0, arg1, arg2) {
wasm._dyn_core__ops__function__FnMut__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h37098c33fc6abd40(arg0, arg1, addHeapObject(arg2)); wasm._dyn_core__ops__function__FnMut__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h9fbcfb319cb46254(arg0, arg1, addHeapObject(arg2));
} }
function makeClosure(arg0, arg1, dtor, f) { function makeClosure(arg0, arg1, dtor, f) {
@ -393,10 +393,6 @@ async function load(module, imports) {
function getImports() { function getImports() {
const imports = {}; const imports = {};
imports.wbg = {}; imports.wbg = {};
imports.wbg.__wbg_webhandle_new = function(arg0) {
const ret = WebHandle.__wrap(arg0);
return addHeapObject(ret);
};
imports.wbg.__wbindgen_object_drop_ref = function(arg0) { imports.wbg.__wbindgen_object_drop_ref = function(arg0) {
takeObject(arg0); takeObject(arg0);
}; };
@ -404,6 +400,10 @@ function getImports() {
const ret = getStringFromWasm0(arg0, arg1); const ret = getStringFromWasm0(arg0, arg1);
return addHeapObject(ret); return addHeapObject(ret);
}; };
imports.wbg.__wbg_webhandle_new = function(arg0) {
const ret = WebHandle.__wrap(arg0);
return addHeapObject(ret);
};
imports.wbg.__wbindgen_cb_drop = function(arg0) { imports.wbg.__wbindgen_cb_drop = function(arg0) {
const obj = takeObject(arg0).original; const obj = takeObject(arg0).original;
if (obj.cnt-- == 1) { if (obj.cnt-- == 1) {

Binary file not shown.

View file

@ -10,6 +10,7 @@ publish = false
[dependencies] [dependencies]
eframe = { path = "../../crates/eframe", features = [ eframe = { path = "../../crates/eframe", features = [
"puffin",
"__screenshot", # __screenshot is so we can dump a screenshot using EFRAME_SCREENSHOT_TO "__screenshot", # __screenshot is so we can dump a screenshot using EFRAME_SCREENSHOT_TO
] } ] }
puffin = "0.14" puffin = "0.14"