Radish alpha
r
Radicle terminal user interface
Radicle
Git (anonymous pull)
Log in to clone via SSH
patch: Improve widget state conversions
Erik Kundt committed 2 years ago
commit dc850f63cb8646c9f76950538a7993a0151fcb4c
parent f327d8670e04e2a7819904422876ab80ebb86764
1 file changed +10 -10
modified bin/commands/patch/select/ui.rs
@@ -23,9 +23,9 @@ use tui::ui::widget::container::{
};
use tui::ui::widget::input::{TextField, TextFieldProps, TextFieldState};
use tui::ui::widget::text::{Paragraph, ParagraphProps, ParagraphState};
-
use tui::ui::widget::TableUtils;
use tui::ui::widget::{self, BaseView};
use tui::ui::widget::{Column, Properties, Shortcuts, ShortcutsProps, Table, TableProps, Widget};
+
use tui::ui::widget::{TableUtils, WidgetState};
use tui::Selection;

use crate::tui_patch::common::Mode;
@@ -155,11 +155,11 @@ impl<'a: 'static> Widget for BrowsePage<'a> {
                )
                .content(Box::<Table<State, Action, PatchItem>>::new(
                    Table::new(state, action_tx.clone())
-
                        .on_event(|state, action_tx| {
-
                            state.downcast_ref::<TableState>().and_then(|state| {
+
                        .on_event(|table, action_tx| {
+
                            TableState::from_boxed_any(table).and_then(|table| {
                                action_tx
                                    .send(Action::Select {
-
                                        selected: state.selected(),
+
                                        selected: table.selected(),
                                    })
                                    .ok()
                            });
@@ -357,11 +357,11 @@ impl Widget for Search {
        Self: Sized,
    {
        let input = TextField::new(state, action_tx.clone())
-
            .on_event(|state, action_tx| {
-
                state.downcast_ref::<TextFieldState>().and_then(|state| {
+
            .on_event(|field, action_tx| {
+
                TextFieldState::from_boxed_any(field).and_then(|field| {
                    action_tx
                        .send(Action::UpdateSearch {
-
                            value: state.text.clone().unwrap_or_default(),
+
                            value: field.text.clone().unwrap_or_default(),
                        })
                        .ok()
                });
@@ -487,11 +487,11 @@ impl<'a: 'static> Widget for HelpPage<'a> {
                                .focus(props.focus)
                                .to_boxed()
                        })
-
                        .on_event(|state, action_tx| {
-
                            state.downcast_ref::<ParagraphState>().and_then(|state| {
+
                        .on_event(|paragraph, action_tx| {
+
                            ParagraphState::from_boxed_any(paragraph).and_then(|paragraph| {
                                action_tx
                                    .send(Action::ScrollHelp {
-
                                        progress: state.progress,
+
                                        progress: paragraph.progress,
                                    })
                                    .ok()
                            });