use crate::control_backend::types::ControlRoutePreference;
use crate::widget::WidgetKind;
pub fn route_preference_for_widget_kind(_kind: WidgetKind) -> ControlRoutePreference {
ControlRoutePreference::CustomRequired
}
#[cfg(all(test, widgets_unstripped))]
mod tests {
use super::*;
use crate::widget::WidgetKind;
#[allow(clippy::match_same_arms)]
fn route_is_library_painted(kind: WidgetKind) -> ControlRoutePreference {
match kind {
WidgetKind::Window
| WidgetKind::Dialog
| WidgetKind::MessageBox
| WidgetKind::FileDialog
| WidgetKind::ColorDialog
| WidgetKind::FontDialog
| WidgetKind::InputDialog
| WidgetKind::ProgressDialog
| WidgetKind::PopupWindow
| WidgetKind::Button
| WidgetKind::CheckBox
| WidgetKind::RadioButton
| WidgetKind::Label
| WidgetKind::LineEdit
| WidgetKind::TextEdit
| WidgetKind::RichEdit
| WidgetKind::ComboBox
| WidgetKind::SpinBox
| WidgetKind::ListBox
| WidgetKind::ListView
| WidgetKind::TreeView
| WidgetKind::ProgressBar
| WidgetKind::Slider
| WidgetKind::ScrollBar
| WidgetKind::ScrollArea
| WidgetKind::Panel
| WidgetKind::Frame
| WidgetKind::DockPanel
| WidgetKind::GroupBox
| WidgetKind::TabWidget
| WidgetKind::Splitter
| WidgetKind::MdiArea
| WidgetKind::MenuBar
| WidgetKind::Menu
| WidgetKind::MenuItem
| WidgetKind::ContextMenu
| WidgetKind::ToolBar
| WidgetKind::StatusBar
| WidgetKind::Canvas
| WidgetKind::Table
| WidgetKind::Grid
| WidgetKind::Chart
| WidgetKind::RadarChart
| WidgetKind::Heatmap
| WidgetKind::KanbanBoard
| WidgetKind::Cascader
| WidgetKind::QueryBuilder
| WidgetKind::EmojiPicker
| WidgetKind::Mention
| WidgetKind::ToggleButton
| WidgetKind::CheckListBox
| WidgetKind::DoubleSpinBox
| WidgetKind::Dial
| WidgetKind::Wizard
| WidgetKind::DatePicker
| WidgetKind::TimePicker
| WidgetKind::DateTimePicker
| WidgetKind::DirectoryDialog
| WidgetKind::DataView
| WidgetKind::PropertyGrid
| WidgetKind::Toolbox
| WidgetKind::StackedWidget
| WidgetKind::CollapsiblePane
| WidgetKind::DockWidget
| WidgetKind::ActivityIndicator
| WidgetKind::Calendar
| WidgetKind::ColumnView
| WidgetKind::UndoView
| WidgetKind::CommandLink
| WidgetKind::LCDNumber
| WidgetKind::FontComboBox
| WidgetKind::WebEngineView
| WidgetKind::Action
| WidgetKind::ToolButton
| WidgetKind::FreeformShape
| WidgetKind::TabBar
| WidgetKind::PieMenu
| WidgetKind::RibbonBar
| WidgetKind::Arc
| WidgetKind::Spinner
| WidgetKind::Roller
| WidgetKind::Dropdown
| WidgetKind::TextArea
| WidgetKind::Keyboard
| WidgetKind::Switch
| WidgetKind::SearchBox
| WidgetKind::Chip
| WidgetKind::Badge
| WidgetKind::SkeletonLoader
| WidgetKind::FAB
| WidgetKind::BottomSheet
| WidgetKind::BottomNavigationBar
| WidgetKind::NavigationDrawer
| WidgetKind::AppBar
| WidgetKind::MobileDatePicker
| WidgetKind::Divider
| WidgetKind::Stepper
| WidgetKind::Rating
| WidgetKind::Avatar
| WidgetKind::EmptyState
| WidgetKind::Carousel
| WidgetKind::ColorHistory
| WidgetKind::ColorWell
| WidgetKind::TagInput
| WidgetKind::ImePreedit
| WidgetKind::InplaceEditor
| WidgetKind::QRCode
| WidgetKind::MasonryLayout
| WidgetKind::CupertinoSwitch
| WidgetKind::MaterialSnackbar
| WidgetKind::AdaptiveScaffold
| WidgetKind::WizardDialog
| WidgetKind::SafeArea
| WidgetKind::CupertinoAlertDialog
| WidgetKind::CupertinoSlider
| WidgetKind::MaterialNavigationRail
| WidgetKind::Tooltip
| WidgetKind::SegmentedButton
| WidgetKind::NavigationStack
| WidgetKind::ProgressCircle
| WidgetKind::Icon
| WidgetKind::DropdownMenu
| WidgetKind::MaskedEdit
| WidgetKind::MenuButton
| WidgetKind::Popover
| WidgetKind::AutoCompleteEdit
| WidgetKind::MultiSelectComboBox
| WidgetKind::RangeSlider
| WidgetKind::FloatingLabel
| WidgetKind::FontPreview
| WidgetKind::CupertinoNavigationBar
| WidgetKind::CupertinoSegmentedControl
| WidgetKind::SwipeToDismiss
| WidgetKind::TabView
| WidgetKind::SearchBar
| WidgetKind::ShortcutEditor
| WidgetKind::RefreshControl
| WidgetKind::ModalBottomSheet
| WidgetKind::LineChart
| WidgetKind::Sparkline
| WidgetKind::BarChart
| WidgetKind::FindReplaceDialog
| WidgetKind::PropertiesPanel
| WidgetKind::PieChart
| WidgetKind::CupertinoDatePicker
| WidgetKind::EditableComboBox
| WidgetKind::DateRangePicker
| WidgetKind::Line
| WidgetKind::Meter
| WidgetKind::MiniChart
| WidgetKind::ImageView
| WidgetKind::MiniCanvas => ControlRoutePreference::CustomRequired,
WidgetKind::AnimatedImage
| WidgetKind::HeroAnimation
| WidgetKind::BezierCurveEditor
| WidgetKind::LottieWidget
| WidgetKind::RiveWidget
| WidgetKind::VideoPlayer
| WidgetKind::ImageGallery
| WidgetKind::AudioVisualizer
| WidgetKind::CameraPreview
| WidgetKind::BarcodeScanner => ControlRoutePreference::CustomRequired,
WidgetKind::GridTable => ControlRoutePreference::CustomRequired,
WidgetKind::NumberPicker
| WidgetKind::OtpInput
| WidgetKind::Pagination
| WidgetKind::Banner => ControlRoutePreference::CustomRequired,
WidgetKind::ColorPicker
| WidgetKind::Toast
| WidgetKind::SplashScreen
| WidgetKind::CandlestickChart
| WidgetKind::VolumeChart
| WidgetKind::DepthChart
| WidgetKind::OrderBook
| WidgetKind::QuoteBoard
| WidgetKind::IndicatorChart => ControlRoutePreference::CustomRequired,
WidgetKind::TreeTable
| WidgetKind::Breadcrumb
| WidgetKind::SignaturePad
| WidgetKind::DropZone => ControlRoutePreference::CustomRequired,
}
}
#[test]
fn all_widget_kinds_are_routed() {
assert_eq!(
route_is_library_painted(WidgetKind::Window),
ControlRoutePreference::CustomRequired,
"the routing policy must stay library-painted for every kind"
);
assert_eq!(
route_preference_for_widget_kind(WidgetKind::Window),
ControlRoutePreference::CustomRequired,
);
}
#[cfg(not(alloc_frugal))]
#[test]
fn route_preference_is_single_valued_for_every_kind() {
for kind in [WidgetKind::Button, WidgetKind::Canvas, WidgetKind::Window] {
assert_eq!(
route_preference_for_widget_kind(kind),
ControlRoutePreference::CustomRequired,
"WidgetKind::{kind:?} must be painted by the library",
);
}
}
}