fix: exclude scroll area padding from pane sizing
This commit is contained in:
@@ -4,7 +4,7 @@ use gpui::{
|
||||
VisualTestContext, Window, div, point, px,
|
||||
};
|
||||
use gpui_native_layout::resizable::{Resizable, ResizablePane, ResizableState};
|
||||
use gpui_native_theme::{ActiveTheme as _, Size, Theme};
|
||||
use gpui_native_theme::Theme;
|
||||
|
||||
const GROUP_WIDTH: f32 = 200.0;
|
||||
const GROUP_HEIGHT: f32 = 300.0;
|
||||
@@ -84,20 +84,18 @@ fn a_drag_moves_the_pane_and_its_rendered_height() {
|
||||
#[test]
|
||||
fn a_drag_stops_where_the_remainder_keeps_its_floor() {
|
||||
let (mut cx, state, mut visual) = split_window([px(100.)]);
|
||||
let thickness = cx.update(|cx| cx.theme().sizes.resolve(Size::default()).dense_padding_x);
|
||||
let floor = ResizablePane::DEFAULT_MIN;
|
||||
|
||||
drag_divider(&mut visual, px(1000.));
|
||||
|
||||
state.update(&mut cx, |state, _| {
|
||||
assert_eq!(state.sizes(), &[px(GROUP_HEIGHT) - thickness - floor]);
|
||||
assert_eq!(state.sizes(), &[px(GROUP_HEIGHT) - floor]);
|
||||
});
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn a_double_click_resets_the_pane_to_the_equal_split() {
|
||||
let (mut cx, state, mut visual) = split_window([px(240.)]);
|
||||
let thickness = cx.update(|cx| cx.theme().sizes.resolve(Size::default()).dense_padding_x);
|
||||
let start = divider_center(&mut visual);
|
||||
|
||||
visual.simulate_event(MouseDownEvent {
|
||||
@@ -109,10 +107,7 @@ fn a_double_click_resets_the_pane_to_the_equal_split() {
|
||||
});
|
||||
|
||||
state.update(&mut cx, |state, _| {
|
||||
assert_eq!(
|
||||
state.sizes(),
|
||||
&[px((GROUP_HEIGHT - thickness.as_f32()) / 2.)]
|
||||
);
|
||||
assert_eq!(state.sizes(), &[px(GROUP_HEIGHT / 2.)]);
|
||||
});
|
||||
}
|
||||
|
||||
@@ -154,12 +149,8 @@ fn the_panes_and_the_divider_fill_the_group_exactly() {
|
||||
let divider = visual
|
||||
.debug_bounds("resize-handle")
|
||||
.expect("divider rendered");
|
||||
assert_eq!(
|
||||
first.size.height + divider.size.height + second.size.height,
|
||||
px(GROUP_HEIGHT)
|
||||
);
|
||||
assert_eq!(
|
||||
second.size.height,
|
||||
px(GROUP_HEIGHT) - first.size.height - divider.size.height
|
||||
);
|
||||
// The flex split may round the panes' shared edges by a hair.
|
||||
assert!((first.size.height + second.size.height - px(GROUP_HEIGHT)).abs() <= px(1.));
|
||||
// The divider owns no layout space: it straddles the seam between the panes.
|
||||
assert!((divider.center().y - first.bottom()).abs() <= px(1.));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user