1
0
mirror of https://github.com/emilk/egui.git synced 2026-08-31 13:50:04 -04:00

Optimize debug builds

This commit is contained in:
Emil Ernerfeldt
2021-10-20 21:58:35 +02:00
parent d97a369c44
commit dd50cba9a7
3 changed files with 45 additions and 21 deletions

View File

@@ -199,22 +199,24 @@ impl CtxRef {
changed: false, // must be set by the widget itself
};
let mut memory = self.memory();
if !enabled || !sense.focusable || !layer_id.allow_interaction() {
// Not interested or allowed input:
self.memory().surrender_focus(id);
memory.surrender_focus(id);
return response;
}
// We only want to focus labels if the screen reader is on.
let interested_in_focus =
sense.interactive() || sense.focusable && self.memory().options.screen_reader;
sense.interactive() || sense.focusable && memory.options.screen_reader;
if interested_in_focus {
self.memory().interested_in_focus(id);
memory.interested_in_focus(id);
}
if sense.click
&& response.has_focus()
&& memory.has_focus(response.id)
&& (self.input().key_pressed(Key::Space) || self.input().key_pressed(Key::Enter))
{
// Space/enter works like a primary click for e.g. selected buttons
@@ -224,8 +226,6 @@ impl CtxRef {
self.register_interaction_id(id, rect);
if sense.click || sense.drag {
let mut memory = self.memory();
memory.interaction.click_interest |= hovered && sense.click;
memory.interaction.drag_interest |= hovered && sense.drag;
@@ -287,8 +287,8 @@ impl CtxRef {
response.hovered &= response.is_pointer_button_down_on; // we don't hover widgets while interacting with *other* widgets
}
if response.has_focus() && response.clicked_elsewhere() {
self.memory().surrender_focus(id);
if memory.has_focus(response.id) && response.clicked_elsewhere() {
memory.surrender_focus(id);
}
response

View File

@@ -88,9 +88,12 @@ impl std::hash::Hasher for IdHasher {
fn write_u32(&mut self, _n: u32) {
unreachable!("Invalid use of IdHasher");
}
#[inline(always)]
fn write_u64(&mut self, n: u64) {
self.0 = n;
}
fn write_usize(&mut self, _n: usize) {
unreachable!("Invalid use of IdHasher");
}
@@ -111,6 +114,7 @@ impl std::hash::Hasher for IdHasher {
unreachable!("Invalid use of IdHasher");
}
#[inline(always)]
fn finish(&self) -> u64 {
self.0
}
@@ -122,6 +126,8 @@ pub struct BuilIdHasher {}
impl std::hash::BuildHasher for BuilIdHasher {
type Hasher = IdHasher;
#[inline(always)]
fn build_hasher(&self) -> IdHasher {
IdHasher::default()
}