Skip to content

Commit fc7c918

Browse files
author
dcz
committed
Bump MSRV to 1.91
Needed for UTF code point navigation in lapce#1028
1 parent b24341a commit fc7c918

29 files changed

Lines changed: 389 additions & 411 deletions

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ default-members = [
2727
license = "MIT"
2828
version = "0.2.0"
2929
edition = "2024"
30-
rust-version = "1.87"
30+
rust-version = "1.91"
3131
repository = "https://github.com/lapce/floem"
3232

3333
[package]

src/animate/mod.rs

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -222,10 +222,10 @@ impl PropCache {
222222
}
223223

224224
fn remove_prop(&mut self, prop: StylePropRef, idx: u16) {
225-
if let imbl::hashmap::Entry::Occupied(mut oe) = self.prop_map.entry(prop) {
226-
if let Ok(pos) = oe.get().binary_search(&PropFrameKind::Normal(idx)) {
227-
oe.get_mut().remove(pos);
228-
}
225+
if let imbl::hashmap::Entry::Occupied(mut oe) = self.prop_map.entry(prop)
226+
&& let Ok(pos) = oe.get().binary_search(&PropFrameKind::Normal(idx))
227+
{
228+
oe.get_mut().remove(pos);
229229
}
230230
}
231231

@@ -510,11 +510,11 @@ impl Animation {
510510
) -> Self {
511511
let frame = key_frame(KeyFrame::new(frame_id));
512512
let frame_style = frame.style.clone();
513-
if let Some(f) = self.key_frames.insert(frame_id, frame) {
514-
if let KeyFrameStyle::Style(style) = f.style {
515-
for prop in style.style_props() {
516-
self.cache.remove_prop(prop, frame_id);
517-
}
513+
if let Some(f) = self.key_frames.insert(frame_id, frame)
514+
&& let KeyFrameStyle::Style(style) = f.style
515+
{
516+
for prop in style.style_props() {
517+
self.cache.remove_prop(prop, frame_id);
518518
}
519519
}
520520
if let KeyFrameStyle::Style(style) = frame_style {

src/app/handle.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -229,10 +229,10 @@ impl ApplicationHandle {
229229
.reduce(window_handle.scale, &event)
230230
{
231231
Some(WindowEventTranslation::Keyboard(ke)) => {
232-
if let WindowEvent::KeyboardInput { is_synthetic, .. } = event {
233-
if !is_synthetic {
234-
window_handle.key_event(ke)
235-
}
232+
if let WindowEvent::KeyboardInput { is_synthetic, .. } = event
233+
&& !is_synthetic
234+
{
235+
window_handle.key_event(ke)
236236
}
237237
}
238238
Some(WindowEventTranslation::Pointer(pe)) => {

src/event/dispatch.rs

Lines changed: 76 additions & 90 deletions
Original file line numberDiff line numberDiff line change
@@ -389,15 +389,14 @@ impl EventCx<'_> {
389389
// IMPORTANT: This is set AFTER event dispatch, matching Chromium's timing.
390390
// This allows handlers during PointerDown to call releasePointerCapture()
391391
// to prevent implicit capture if desired.
392-
if let Event::Pointer(PointerEvent::Down(PointerButtonEvent { pointer, .. })) = event {
393-
if pointer.pointer_type == PointerType::Touch {
394-
if let Some(pointer_id) = pointer.pointer_id {
395-
// Only set implicit capture if no explicit capture was set during dispatch
396-
// and no explicit release was requested
397-
if !self.window_state.has_pending_capture(pointer_id) {
398-
self.window_state.set_pointer_capture(pointer_id, target);
399-
}
400-
}
392+
if let Event::Pointer(PointerEvent::Down(PointerButtonEvent { pointer, .. })) = event
393+
&& pointer.pointer_type == PointerType::Touch
394+
&& let Some(pointer_id) = pointer.pointer_id
395+
{
396+
// Only set implicit capture if no explicit capture was set during dispatch
397+
// and no explicit release was requested
398+
if !self.window_state.has_pending_capture(pointer_id) {
399+
self.window_state.set_pointer_capture(pointer_id, target);
401400
}
402401
}
403402

@@ -535,12 +534,10 @@ impl EventCx<'_> {
535534
processed |= self.dispatch_to_view(id, event, true).is_processed();
536535
}
537536

538-
if !processed {
539-
if let Some(listener) = event.listener() {
540-
processed |= main_view_id
541-
.apply_event(&listener, event)
542-
.is_some_and(|prop| prop.is_processed());
543-
}
537+
if !processed && let Some(listener) = event.listener() {
538+
processed |= main_view_id
539+
.apply_event(&listener, event)
540+
.is_some_and(|prop| prop.is_processed());
544541
}
545542

546543
if !processed {
@@ -557,16 +554,15 @@ impl EventCx<'_> {
557554
{
558555
let backwards = modifiers.contains(Modifiers::SHIFT);
559556
view_tab_navigation(root_id, self.window_state, backwards);
560-
} else if *modifiers == Modifiers::ALT {
561-
if let Key::Named(
557+
} else if *modifiers == Modifiers::ALT
558+
&& let Key::Named(
562559
name @ (NamedKey::ArrowUp
563560
| NamedKey::ArrowDown
564561
| NamedKey::ArrowLeft
565562
| NamedKey::ArrowRight),
566563
) = key
567-
{
568-
view_arrow_navigation(*name, self.window_state, root_id);
569-
}
564+
{
565+
view_arrow_navigation(*name, self.window_state, root_id);
570566
}
571567
}
572568

@@ -580,16 +576,14 @@ impl EventCx<'_> {
580576
..
581577
})
582578
);
583-
if keyboard_trigger_end {
584-
if let Some(id) = self.window_state.active {
585-
if self
586-
.window_state
587-
.has_style_for_sel(id, StyleSelector::Active)
588-
{
589-
id.request_style_for_selector_recursive(StyleSelector::Active);
590-
}
591-
self.window_state.active = None;
579+
if keyboard_trigger_end && let Some(id) = self.window_state.active {
580+
if self
581+
.window_state
582+
.has_style_for_sel(id, StyleSelector::Active)
583+
{
584+
id.request_style_for_selector_recursive(StyleSelector::Active);
592585
}
586+
self.window_state.active = None;
593587
}
594588
}
595589
}
@@ -674,20 +668,19 @@ impl EventCx<'_> {
674668
view_state: &std::cell::RefCell<crate::view::ViewState>,
675669
event: &Event,
676670
) {
677-
if let Event::Pointer(PointerEvent::Down(PointerButtonEvent { state, .. })) = event {
678-
if view_state.borrow().computed_style.get(Focusable) {
679-
let rect = view_id.get_size().unwrap_or_default().to_rect();
680-
if rect.contains(state.logical_point()) {
681-
self.window_state.update_focus(view_id, false);
682-
}
671+
if let Event::Pointer(PointerEvent::Down(PointerButtonEvent { state, .. })) = event
672+
&& view_state.borrow().computed_style.get(Focusable)
673+
{
674+
let rect = view_id.get_size().unwrap_or_default().to_rect();
675+
if rect.contains(state.logical_point()) {
676+
self.window_state.update_focus(view_id, false);
683677
}
684678
}
685-
if let Event::Pointer(PointerEvent::Move(_)) = event {
686-
if let Some(cursor) = view_state.borrow().combined_style.builtin().cursor() {
687-
if self.window_state.cursor.is_none() {
688-
self.window_state.cursor = Some(cursor);
689-
}
690-
}
679+
if let Event::Pointer(PointerEvent::Move(_)) = event
680+
&& let Some(cursor) = view_state.borrow().combined_style.builtin().cursor()
681+
&& self.window_state.cursor.is_none()
682+
{
683+
self.window_state.cursor = Some(cursor);
691684
}
692685
}
693686

@@ -857,46 +850,45 @@ impl EventCx<'_> {
857850
self.window_state.hovered.push(view_id);
858851
}
859852
let vs = view_state.borrow();
860-
if let Some(cursor) = vs.combined_style.builtin().cursor() {
861-
if self.window_state.cursor.is_none() {
862-
self.window_state.cursor = Some(cursor);
863-
}
853+
if let Some(cursor) = vs.combined_style.builtin().cursor()
854+
&& self.window_state.cursor.is_none()
855+
{
856+
self.window_state.cursor = Some(cursor);
864857
}
865858
}
866859
}
867860

868861
// Handle drag state updates
869-
if view_id.can_drag() {
870-
if let Some((_, drag_start)) = self
862+
if view_id.can_drag()
863+
&& let Some((_, drag_start)) = self
871864
.window_state
872865
.drag_start
873866
.as_ref()
874867
.filter(|(drag_id, _)| drag_id == &view_id)
875-
{
876-
let offset = point - *drag_start;
868+
{
869+
let offset = point - *drag_start;
877870

878-
if let Some(dragging) = self
879-
.window_state
880-
.dragging
881-
.as_mut()
882-
.filter(|d| d.id == view_id && d.released_at.is_none())
883-
{
884-
// Update position while dragging
885-
dragging.offset = drag_start.to_vec2();
886-
self.window_state.request_paint(view_id);
887-
} else if offset.x.abs() + offset.y.abs() > 1.0 {
888-
// Start dragging when moved > 1px
889-
self.window_state.active = None;
890-
self.window_state.dragging = Some(DragState {
891-
id: view_id,
892-
offset: drag_start.to_vec2(),
893-
released_at: None,
894-
release_location: None,
895-
});
896-
self.update_active(view_id);
897-
self.window_state.request_paint(view_id);
898-
view_id.apply_event(&EventListener::DragStart, event);
899-
}
871+
if let Some(dragging) = self
872+
.window_state
873+
.dragging
874+
.as_mut()
875+
.filter(|d| d.id == view_id && d.released_at.is_none())
876+
{
877+
// Update position while dragging
878+
dragging.offset = drag_start.to_vec2();
879+
self.window_state.request_paint(view_id);
880+
} else if offset.x.abs() + offset.y.abs() > 1.0 {
881+
// Start dragging when moved > 1px
882+
self.window_state.active = None;
883+
self.window_state.dragging = Some(DragState {
884+
id: view_id,
885+
offset: drag_start.to_vec2(),
886+
released_at: None,
887+
release_location: None,
888+
});
889+
self.update_active(view_id);
890+
self.window_state.request_paint(view_id);
891+
view_id.apply_event(&EventListener::DragStart, event);
900892
}
901893
}
902894

@@ -928,25 +920,21 @@ impl EventCx<'_> {
928920
if pointer.is_primary_pointer() && button.is_none_or(|b| b == PointerButton::Primary) {
929921
// Show popout menu on non-macOS (pointer up)
930922
#[cfg(not(target_os = "macos"))]
931-
if on_view {
932-
if let Some(result) = self.try_show_popout_menu(view_id) {
933-
return Some(result);
934-
}
923+
if on_view && let Some(result) = self.try_show_popout_menu(view_id) {
924+
return Some(result);
935925
}
936926

937927
// Handle drag drop
938928
if !directed {
939-
if on_view {
940-
if let Some(dragging) = self.window_state.dragging.as_mut() {
941-
let dragging_id = dragging.id;
942-
if view_id
943-
.apply_event(&EventListener::Drop, event)
944-
.is_some_and(|prop| prop.is_processed())
945-
{
946-
self.window_state.dragging = None;
947-
self.window_state.request_paint(view_id);
948-
dragging_id.apply_event(&EventListener::DragEnd, event);
949-
}
929+
if on_view && let Some(dragging) = self.window_state.dragging.as_mut() {
930+
let dragging_id = dragging.id;
931+
if view_id
932+
.apply_event(&EventListener::Drop, event)
933+
.is_some_and(|prop| prop.is_processed())
934+
{
935+
self.window_state.dragging = None;
936+
self.window_state.request_paint(view_id);
937+
dragging_id.apply_event(&EventListener::DragEnd, event);
950938
}
951939
}
952940
} else if let Some(dragging) = self
@@ -1008,10 +996,8 @@ impl EventCx<'_> {
1008996
return Some(result);
1009997
}
1010998

1011-
if on_view {
1012-
if let Some(result) = self.try_show_context_menu(view_id, state) {
1013-
return Some(result);
1014-
}
999+
if on_view && let Some(result) = self.try_show_context_menu(view_id, state) {
1000+
return Some(result);
10151001
}
10161002
}
10171003

0 commit comments

Comments
 (0)