Allow drag in empty space
This commit is contained in:
parent
077a29e5ee
commit
5c8fcd4f2e
1 changed files with 35 additions and 10 deletions
45
src/tab.rs
45
src/tab.rs
|
|
@ -1120,19 +1120,22 @@ impl Tab {
|
||||||
icon_sizes,
|
icon_sizes,
|
||||||
} = self.config;
|
} = self.config;
|
||||||
|
|
||||||
let max_width = match self.size_opt {
|
let (width, height) = match self.size_opt {
|
||||||
Some(size) => {
|
Some(size) => {
|
||||||
// Hack to make room for scroll bar
|
(
|
||||||
(size.width.floor() as usize)
|
// Hack to make room for scroll bar
|
||||||
.checked_sub(space_xs as usize)
|
(size.width.floor() as usize)
|
||||||
.unwrap_or(0)
|
.checked_sub(space_xs as usize)
|
||||||
|
.unwrap_or(0)
|
||||||
|
.max(GRID_ITEM_WIDTH),
|
||||||
|
(size.height.floor() as usize).max(GRID_ITEM_HEIGHT),
|
||||||
|
)
|
||||||
}
|
}
|
||||||
None => 0,
|
None => (GRID_ITEM_WIDTH, GRID_ITEM_HEIGHT),
|
||||||
}
|
};
|
||||||
.max(GRID_ITEM_WIDTH);
|
|
||||||
|
|
||||||
let (cols, column_spacing) = {
|
let (cols, column_spacing) = {
|
||||||
let width_m1 = max_width.checked_sub(GRID_ITEM_WIDTH).unwrap_or(0);
|
let width_m1 = width.checked_sub(GRID_ITEM_WIDTH).unwrap_or(0);
|
||||||
let cols_m1 = width_m1 / (GRID_ITEM_WIDTH + space_xxs as usize);
|
let cols_m1 = width_m1 / (GRID_ITEM_WIDTH + space_xxs as usize);
|
||||||
let cols = cols_m1 + 1;
|
let cols = cols_m1 + 1;
|
||||||
let spacing = width_m1
|
let spacing = width_m1
|
||||||
|
|
@ -1213,8 +1216,30 @@ impl Tab {
|
||||||
if count == 0 {
|
if count == 0 {
|
||||||
return self.empty_view(hidden > 0, core);
|
return self.empty_view(hidden > 0, core);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//TODO: HACK If we don't reach the bottom of the view, go ahead and add a spacer to do that
|
||||||
|
{
|
||||||
|
let mut max_bottom = 0;
|
||||||
|
for item in items.iter() {
|
||||||
|
if let Some(rect) = item.rect_opt.get() {
|
||||||
|
let bottom = (rect.y + rect.height).ceil() as usize;
|
||||||
|
if bottom > max_bottom {
|
||||||
|
max_bottom = bottom;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
let spacer_height = height
|
||||||
|
.checked_sub(max_bottom + 2 * (space_xxs as usize))
|
||||||
|
.unwrap_or(0);
|
||||||
|
if spacer_height > 0 {
|
||||||
|
if col != 0 {
|
||||||
|
grid = grid.insert_row();
|
||||||
|
}
|
||||||
|
grid = grid.push(widget::vertical_space(Length::Fixed(spacer_height as f32)));
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
//TODO: allow drag in empty area
|
|
||||||
widget::scrollable(
|
widget::scrollable(
|
||||||
mouse_area::MouseArea::new(grid)
|
mouse_area::MouseArea::new(grid)
|
||||||
.on_drag(Message::Drag)
|
.on_drag(Message::Drag)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue