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;
const EXPECTED_WIDGET_KIND_COUNT: usize = 167;
#[test]
fn all_widget_kinds_are_routed() {
let all = [
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::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::WebEnginePage,
WidgetKind::WebEngineSettings,
WidgetKind::WebEngineDownloadItem,
WidgetKind::WebEngineCookieStore,
WidgetKind::WebEngineWebChannel,
WidgetKind::WebEngineFindTextResult,
WidgetKind::WebEngineNotification,
WidgetKind::WebEngineScriptDialog,
WidgetKind::WebEngineContextMenuRequest,
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::PagerPageView,
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::TileView,
WidgetKind::Line,
WidgetKind::Meter,
WidgetKind::MiniChart,
WidgetKind::ImageView,
WidgetKind::MiniCanvas,
WidgetKind::AnimatedImage,
WidgetKind::HeroAnimation,
WidgetKind::BezierCurveEditor,
WidgetKind::LottieWidget,
WidgetKind::RiveWidget,
WidgetKind::VideoPlayer,
WidgetKind::ImageGallery,
WidgetKind::AudioVisualizer,
WidgetKind::CameraPreview,
WidgetKind::BarcodeScanner,
WidgetKind::GridTable,
];
assert_eq!(
all.len(),
EXPECTED_WIDGET_KIND_COUNT,
"the routing table must cover every WidgetKind"
);
for kind in &all {
assert_eq!(
route_preference_for_widget_kind(*kind),
ControlRoutePreference::CustomRequired,
"WidgetKind::{kind:?} must be painted by the library; a NativePreferred route would mean a second, platform-held mechanism came back",
);
}
}
#[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",
);
}
}
}