(widget: &DropdownButton<T>)
| 53 | |
| 54 | impl DropdownButtonElement { |
| 55 | pub fn new<T: Default>(widget: &DropdownButton<T>) -> Self { |
| 56 | let id = widget.key.id(); |
| 57 | let node = LayoutSystem::new_node(style::Style { ..default() }, vec![]).unwrap(); |
| 58 | |
| 59 | //create the base control |
| 60 | let component = WidgetComponent::get(widget.key.id()); |
| 61 | |
| 62 | let height: f32 = 110.0; |
| 63 | |
| 64 | let list = ListElement::new(&ListProperties { |
| 65 | parent: Some(id), |
| 66 | x: 0.0, |
| 67 | // y: widget.h + 1.0, |
| 68 | // w: component.w - 1.0, |
| 69 | h: height, |
| 70 | // options: options.options.list, |
| 71 | // internal_visible: widget.visible, |
| 72 | ..Default::default() |
| 73 | }); |
| 74 | |
| 75 | // list.onselect.listen(onselected); |
| 76 | // list.component.onmousedown.listen(ondeselect); |
| 77 | |
| 78 | let label = LabelElement::new(&LabelProperties { |
| 79 | parent: Some(id), |
| 80 | x: 5.0, |
| 81 | y: 0.0, |
| 82 | // w: component.w - 10.0, |
| 83 | // h: component.h, |
| 84 | // options: options.options.label, |
| 85 | // internal_visible: widget.visible, |
| 86 | // text: widget.text.clone(), |
| 87 | // text_size: widget.text_size, |
| 88 | // align: widget.align, |
| 89 | // align_vertical: widget.align_vertical, |
| 90 | ..Default::default() |
| 91 | }); |
| 92 | |
| 93 | list.set_visible(false); |
| 94 | |
| 95 | Self { |
| 96 | height: 110.0, |
| 97 | component, |
| 98 | label, |
| 99 | list, |
| 100 | onselect: Signal::new(), |
| 101 | state: Default::default(), |
| 102 | renderer: WidgetRenderFactory::global().get::<Self>(), |
| 103 | node, |
| 104 | } |
| 105 | } |
| 106 | |
| 107 | fn ondeselect(&self, e: &MouseEvent, c: &dyn Element) { |
| 108 | if !self.list.contains(e.x as f32, e.y as f32) { |
nothing calls this directly
no test coverage detected