Skip to content

Commit 4fddb12

Browse files
committed
save lock state, and connect the buttons in the settings to the canvas
1 parent ebf77f1 commit 4fddb12

File tree

4 files changed

+43
-3
lines changed

4 files changed

+43
-3
lines changed

crates/rnote-engine/src/pens/penmode.rs

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,9 @@ pub struct PenModeState {
2929
penmode_eraser_style: PenStyle,
3030

3131
//lock styles
32+
#[serde(rename = "lock_pen")]
3233
penmode_pen_lock: bool,
34+
#[serde(rename = "lock_eraser")]
3335
penmode_eraser_lock: bool,
3436

3537
#[serde(skip)]
@@ -45,7 +47,7 @@ impl Default for PenModeState {
4547
penmode_pen_style: PenStyle::Brush,
4648
penmode_eraser_style: PenStyle::Eraser,
4749

48-
penmode_pen_lock: true,
50+
penmode_pen_lock: false,
4951
penmode_eraser_lock: true,
5052

5153
penmode_pen_style_override: None,
@@ -60,6 +62,8 @@ impl CloneConfig for PenModeState {
6062
pen_mode: self.pen_mode,
6163
penmode_pen_style: self.penmode_pen_style,
6264
penmode_eraser_style: self.penmode_eraser_style,
65+
penmode_pen_lock: self.penmode_pen_lock,
66+
penmode_eraser_lock: self.penmode_eraser_lock,
6367
..Default::default()
6468
}
6569
}
@@ -80,6 +84,13 @@ impl PenModeState {
8084
}
8185
}
8286

87+
pub fn set_lock(&mut self, pen_mode: PenMode, state: bool) {
88+
match pen_mode {
89+
PenMode::Pen => self.penmode_pen_lock = state,
90+
PenMode::Eraser => self.penmode_eraser_lock = state,
91+
}
92+
}
93+
8394
pub fn current_style_w_override(&self) -> PenStyle {
8495
match self.pen_mode {
8596
PenMode::Pen => self

crates/rnote-ui/src/appwindow/actions.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -341,8 +341,9 @@ impl RnAppWindow {
341341
appwindow.overlays().dispatch_toast_w_button_singleton(
342342
&gettext("Tool Locked"),
343343
&gettext("Unlock"), //padlock symbol ?
344-
clone!(@weak canvas => move |_reload_toast | {
344+
clone!(@weak canvas, @weak appwindow => move |_reload_toast | {
345345
canvas.engine_mut().penholder.pen_mode_state_mut().unlock_pen(active_pen);
346+
appwindow.sidebar().settings_panel().lock_pen_switch().set_state(false);
346347
}
347348
)
348349
, 2,

crates/rnote-ui/src/appwindow/imp.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -162,7 +162,7 @@ impl ObjectImpl for RnAppWindow {
162162
"touch-drawing" => self.touch_drawing.get().to_value(),
163163
"focus-mode" => self.focus_mode.get().to_value(),
164164
"lock-pen" => self.lock_pen.get().to_value(),
165-
"eraser-pen" => self.lock_eraser.get().to_value(),
165+
"lock-eraser" => self.lock_eraser.get().to_value(),
166166
_ => unimplemented!(),
167167
}
168168
}

crates/rnote-ui/src/settingspanel/mod.rs

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -351,6 +351,10 @@ impl RnSettingsPanel {
351351
self.imp().general_inertial_scrolling_row.clone()
352352
}
353353

354+
pub(crate) fn lock_pen_switch(&self) -> gtk4::Switch {
355+
self.imp().lock_pen_mode.imp().mode.clone()
356+
}
357+
354358
pub(crate) fn document_layout(&self) -> Layout {
355359
Layout::try_from(self.imp().doc_document_layout_row.get().selected()).unwrap()
356360
}
@@ -592,6 +596,18 @@ impl RnSettingsPanel {
592596
.bidirectional()
593597
.build();
594598

599+
imp.lock_pen_mode.imp().mode.connect_active_notify(
600+
clone!(@weak appwindow => move |switch| {
601+
appwindow
602+
.active_tab_wrapper()
603+
.canvas()
604+
.engine_mut()
605+
.penholder
606+
.pen_mode_state_mut()
607+
.set_lock(rnote_engine::pens::PenMode::Pen,switch.is_active());
608+
}),
609+
);
610+
595611
// lock eraser
596612
imp.lock_eraser_mode
597613
.imp()
@@ -600,6 +616,18 @@ impl RnSettingsPanel {
600616
.sync_create()
601617
.bidirectional()
602618
.build();
619+
620+
imp.lock_eraser_mode.imp().mode.connect_active_notify(
621+
clone!(@weak appwindow => move |switch| {
622+
appwindow
623+
.active_tab_wrapper()
624+
.canvas()
625+
.engine_mut()
626+
.penholder
627+
.pen_mode_state_mut()
628+
.set_lock(rnote_engine::pens::PenMode::Pen,switch.is_active());
629+
}),
630+
);
603631
}
604632

605633
fn setup_format(&self, appwindow: &RnAppWindow) {

0 commit comments

Comments
 (0)