Skip to main content

orbtk/traits/
place.rs

1use widgets::{Widget, VerticalPlacement, HorizontalPlacement};
2
3pub trait Place: Sized + Widget {
4    fn position(&self, x: i32, y: i32) -> &Self {
5        let mut position = self.local_position().get();
6        let mut rect = self.rect().get();
7        position.x = x;
8        position.y = y;
9        rect.x = x;
10        rect.y = y;
11        self.local_position().set(position);
12        self.rect().set(rect);
13        self.arrange();
14        self
15    }
16
17    fn size(&self, width: u32, height: u32) -> &Self {
18        let mut rect = self.rect().get();
19        rect.width = width;
20        rect.height = height;
21        self.rect().set(rect);
22        self.arrange();
23        self
24    }
25
26     fn placement(&self, vertical_placement: VerticalPlacement, horizontal_placement: HorizontalPlacement) -> &Self {
27        self.vertical_placement().set(vertical_placement);
28        self.horizontal_placement().set(horizontal_placement);
29        self.arrange();
30        self
31    }
32}