From b7e49d330b30e85334d4c73d809a5751c0e8cf85 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?D=C3=A1niel=20Buga?= Date: Mon, 21 Mar 2022 22:01:42 +0100 Subject: [PATCH] Fix rebase mistake --- lapce-ui/src/settings.rs | 191 ++++++++++++++++----------------------- 1 file changed, 79 insertions(+), 112 deletions(-) diff --git a/lapce-ui/src/settings.rs b/lapce-ui/src/settings.rs index 0fd3d38e..681a9cfe 100644 --- a/lapce-ui/src/settings.rs +++ b/lapce-ui/src/settings.rs @@ -727,12 +727,6 @@ pub fn value( fn get_key(&self) -> String { format!("{}.{}", self.kind, self.name.to_kebab_case()) } - - fn update_value(&mut self, ctx: &mut EventCtx, value: serde_json::Value) { - self.value = value; - self.value_changed = true; - self.last_idle_timer = ctx.request_timer(Duration::from_millis(300)); - } } impl KeyPressFocus for LapceSettingsItemKeypress { @@ -793,110 +787,86 @@ fn event( ) { if let Some(input) = self.input_widget.as_mut() { match event { - Event::KeyDown(key_event) => { - let mut f = LapceSettingsItemKeypress { - input: self.input.clone(), // Clone so we can check for change - cursor: self.cursor, - }; - let mut_keypress = Arc::make_mut(&mut data.keypress); - mut_keypress.key_down(ctx, key_event, &mut f, env); - self.cursor = f.cursor; - if f.input != self.input { - self.input = f.input; - let new_value = match &self.value { - serde_json::Value::Number(_n) => { - if let Ok(new_n) = self.input.parse::() { - serde_json::json!(new_n) - } else { - return; - } - } - serde_json::Value::String(_s) => { - serde_json::json!(self.input) - } - _ => return, - }; - self.update_value(ctx, new_value); - } - } - Event::Wheel(_) => {} - - Event::MouseDown(mouse_event) => { - // ctx.request_focus(); - let input = self.input.clone(); - if let Some(_text) = self.value(ctx.text(), data) { - let text = ctx - .text() - .new_text_layout(input) - .font(FontFamily::SYSTEM_UI, 13.0) - .text_color( - data.config - .get_color_unchecked( - LapceTheme::EDITOR_FOREGROUND, - ) - .clone(), - ) - .build() - .unwrap(); - let mut height = self.name(ctx.text(), data).size().height; - height += self.desc(ctx.text(), data).size().height; - height += self.padding * 2.0 * 2.0 + self.padding; - - let rect = Size::new( - ctx.size().width.min(self.input_max_width), - text.size().height, - ) - .to_rect() - .with_origin(Point::new(0.0, height)) - .inflate(0.0, 8.0); - if rect.contains(mouse_event.pos) { - let pos = mouse_event.pos - (8.0, 0.0); - let hit = text.hit_test_point(pos); - self.cursor = hit.idx; - } - } else if let serde_json::Value::Bool(checked) = self.value { - let rect = - Size::new(self.checkbox_width, self.checkbox_width) - .to_rect() - .with_origin(Point::new( - 0.0, - self.name(ctx.text(), data).size().height - + self.padding * 3.0, - )); - if rect.contains(mouse_event.pos) { - self.update_value(ctx, serde_json::json!(!checked)); - } - } - } - Event::MouseMove(mouse_event) => { - ctx.set_handled(); - if self.input_rect.contains(mouse_event.pos) { - ctx.set_cursor(&druid::Cursor::IBeam); - ctx.request_paint(); - } else { - ctx.clear_cursor(); - ctx.request_paint(); - } - } - Event::Timer(token) - if self.value_changed && *token == self.last_idle_timer => - { - self.value_changed = false; - ctx.submit_command(Command::new( - LAPCE_UI_COMMAND, - LapceUICommand::UpdateSettingsFile( - self.get_key(), - self.value.clone(), - ), - Target::Widget(data.id), - )); - } _ => { input.event(ctx, event, data, env); } } } + match event { + Event::MouseDown(mouse_event) => { + // ctx.request_focus(); + let input = self.input.clone(); + if let Some(_text) = self.value(ctx.text(), data) { + let text = ctx + .text() + .new_text_layout(input) + .font(FontFamily::SYSTEM_UI, 13.0) + .text_color( + data.config + .get_color_unchecked(LapceTheme::EDITOR_FOREGROUND) + .clone(), + ) + .build() + .unwrap(); + let mut height = self.name(ctx.text(), data).size().height; + height += self.desc(ctx.text(), data).size().height; + height += self.padding * 2.0 * 2.0 + self.padding; + + let rect = Size::new( + ctx.size().width.min(self.input_max_width), + text.size().height, + ) + .to_rect() + .with_origin(Point::new(0.0, height)) + .inflate(0.0, 8.0); + if rect.contains(mouse_event.pos) { + let pos = mouse_event.pos - (8.0, 0.0); + let hit = text.hit_test_point(pos); + self.cursor = hit.idx; + } + } else if let serde_json::Value::Bool(checked) = self.value { + let rect = Size::new(self.checkbox_width, self.checkbox_width) + .to_rect() + .with_origin(Point::new( + 0.0, + self.name(ctx.text(), data).size().height + + self.padding * 3.0, + )); + if rect.contains(mouse_event.pos) { + self.value = serde_json::json!(!checked); + self.value_changed = true; + self.last_idle_timer = + ctx.request_timer(Duration::from_millis(300)); + } + } + } + Event::MouseMove(mouse_event) => { + ctx.set_handled(); + if self.input_rect.contains(mouse_event.pos) { + ctx.set_cursor(&druid::Cursor::IBeam); + ctx.request_paint(); + } else { + ctx.clear_cursor(); + ctx.request_paint(); + } + } + Event::Timer(token) + if self.value_changed && *token == self.last_idle_timer => + { + self.value_changed = false; + ctx.submit_command(Command::new( + LAPCE_UI_COMMAND, + LapceUICommand::UpdateSettingsFile( + self.get_key(), + self.value.clone(), + ), + Target::Widget(data.id), + )); + } + + _ => {} + } } fn lifecycle( @@ -958,14 +928,11 @@ fn update( } _ => return, }; - ctx.submit_command(Command::new( - LAPCE_UI_COMMAND, - LapceUICommand::UpdateSettingsFile( - self.get_key(), - new_value, - ), - Target::Widget(data.id), - )); + + self.value = new_value; + self.value_changed = true; + self.last_idle_timer = + ctx.request_timer(Duration::from_millis(300)); } } }