Skip to content

Commit 60cec7c

Browse files
authored
Merge pull request #57 from devmobasa/refactor
Refactor code
2 parents 9d2ce86 + 0244168 commit 60cec7c

File tree

17 files changed

+3084
-2435
lines changed

17 files changed

+3084
-2435
lines changed

src/backend/wayland/backend.rs

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ use wayland_client::{Connection, backend::WaylandError, globals::registry_queue_
4040
use wayland_protocols::wp::tablet::zv2::client::zwp_tablet_manager_v2::ZwpTabletManagerV2;
4141
use wayland_protocols_wlr::screencopy::v1::client::zwlr_screencopy_manager_v1::ZwlrScreencopyManagerV1;
4242

43-
use super::state::{OverlaySuppression, WaylandState};
43+
use super::state::{OverlaySuppression, WaylandGlobals, WaylandState, WaylandStateInit};
4444
use crate::{
4545
RESUME_SESSION_ENV,
4646
capture::{CaptureManager, CaptureOutcome},
@@ -495,7 +495,7 @@ impl WaylandBackend {
495495
};
496496

497497
// Create application state
498-
let mut state = WaylandState::new(
498+
let globals = WaylandGlobals {
499499
registry_state,
500500
compositor_state,
501501
layer_shell,
@@ -506,19 +506,22 @@ impl WaylandBackend {
506506
relative_pointer_state,
507507
output_state,
508508
seat_state,
509+
};
510+
let mut state = WaylandState::new(WaylandStateInit {
511+
globals,
509512
config,
510513
input_state,
511514
capture_manager,
512515
session_options,
513516
tokio_handle,
514-
frozen_supported,
517+
frozen_enabled: frozen_supported,
515518
preferred_output_identity,
516519
xdg_fullscreen,
517-
freeze_on_start,
520+
pending_freeze_on_start: freeze_on_start,
518521
screencopy_manager,
519522
#[cfg(tablet)]
520523
tablet_manager,
521-
);
524+
});
522525

523526
// Ensure pinned toolbars are created immediately if visible on startup.
524527
state.sync_toolbar_visibility(&qh);

src/backend/wayland/handlers/keyboard.rs

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -109,8 +109,27 @@ impl KeyboardHandler for WaylandState {
109109
}
110110
}
111111
debug!("Key pressed: {:?}", key);
112+
let prefs_before = (
113+
self.input_state.current_color,
114+
self.input_state.current_thickness,
115+
self.input_state.eraser_mode,
116+
self.input_state.marker_opacity,
117+
self.input_state.current_font_size,
118+
self.input_state.font_descriptor.clone(),
119+
self.input_state.fill_enabled,
120+
);
112121
self.input_state.on_key_press(key);
113122
self.input_state.needs_redraw = true;
123+
let prefs_changed = prefs_before.0 != self.input_state.current_color
124+
|| (prefs_before.1 - self.input_state.current_thickness).abs() > f64::EPSILON
125+
|| prefs_before.2 != self.input_state.eraser_mode
126+
|| (prefs_before.3 - self.input_state.marker_opacity).abs() > f64::EPSILON
127+
|| (prefs_before.4 - self.input_state.current_font_size).abs() > f64::EPSILON
128+
|| prefs_before.5 != self.input_state.font_descriptor
129+
|| prefs_before.6 != self.input_state.fill_enabled;
130+
if prefs_changed {
131+
self.save_drawing_preferences();
132+
}
114133

115134
#[cfg(tablet)]
116135
if (self.input_state.current_thickness - prev_thickness).abs() > f64::EPSILON {
@@ -208,8 +227,27 @@ impl KeyboardHandler for WaylandState {
208227
}
209228
}
210229
debug!("Key repeated: {:?}", key);
230+
let prefs_before = (
231+
self.input_state.current_color,
232+
self.input_state.current_thickness,
233+
self.input_state.eraser_mode,
234+
self.input_state.marker_opacity,
235+
self.input_state.current_font_size,
236+
self.input_state.font_descriptor.clone(),
237+
self.input_state.fill_enabled,
238+
);
211239
self.input_state.on_key_press(key);
212240
self.input_state.needs_redraw = true;
241+
let prefs_changed = prefs_before.0 != self.input_state.current_color
242+
|| (prefs_before.1 - self.input_state.current_thickness).abs() > f64::EPSILON
243+
|| prefs_before.2 != self.input_state.eraser_mode
244+
|| (prefs_before.3 - self.input_state.marker_opacity).abs() > f64::EPSILON
245+
|| (prefs_before.4 - self.input_state.current_font_size).abs() > f64::EPSILON
246+
|| prefs_before.5 != self.input_state.font_descriptor
247+
|| prefs_before.6 != self.input_state.fill_enabled;
248+
if prefs_changed {
249+
self.save_drawing_preferences();
250+
}
213251

214252
#[cfg(tablet)]
215253
if (self.input_state.current_thickness - prev_thickness).abs() > f64::EPSILON {

src/backend/wayland/handlers/pointer.rs

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -362,18 +362,30 @@ impl PointerHandler for WaylandState {
362362

363363
match scroll_direction.cmp(&0) {
364364
std::cmp::Ordering::Greater if self.input_state.modifiers.shift => {
365+
let prev_font_size = self.input_state.current_font_size;
365366
self.input_state.adjust_font_size(-2.0);
366367
debug!(
367368
"Font size decreased: {:.1}px",
368369
self.input_state.current_font_size
369370
);
371+
if (self.input_state.current_font_size - prev_font_size).abs()
372+
> f64::EPSILON
373+
{
374+
self.save_drawing_preferences();
375+
}
370376
}
371377
std::cmp::Ordering::Less if self.input_state.modifiers.shift => {
378+
let prev_font_size = self.input_state.current_font_size;
372379
self.input_state.adjust_font_size(2.0);
373380
debug!(
374381
"Font size increased: {:.1}px",
375382
self.input_state.current_font_size
376383
);
384+
if (self.input_state.current_font_size - prev_font_size).abs()
385+
> f64::EPSILON
386+
{
387+
self.save_drawing_preferences();
388+
}
377389
}
378390
std::cmp::Ordering::Greater | std::cmp::Ordering::Less => {
379391
let delta = if scroll_direction > 0 { -1.0 } else { 1.0 };
@@ -394,6 +406,9 @@ impl PointerHandler for WaylandState {
394406
);
395407
}
396408
self.input_state.needs_redraw = true;
409+
if !eraser_active {
410+
self.save_drawing_preferences();
411+
}
397412
}
398413
#[cfg(tablet)]
399414
if !eraser_active

0 commit comments

Comments
 (0)