aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/config.rs9
-rw-r--r--src/display.rs17
2 files changed, 18 insertions, 8 deletions
diff --git a/src/config.rs b/src/config.rs
index b638ea43..ee30c085 100644
--- a/src/config.rs
+++ b/src/config.rs
@@ -376,6 +376,10 @@ pub struct WindowConfig {
/// Draw the window with title bar / borders
#[serde(default)]
decorations: Decorations,
+
+ /// Spread out additional padding evenly
+ #[serde(default, deserialize_with = "failure_default")]
+ dynamic_padding: bool,
}
fn default_padding() -> Delta<u8> {
@@ -398,6 +402,10 @@ impl WindowConfig {
pub fn decorations(&self) -> Decorations {
self.decorations
}
+
+ pub fn dynamic_padding(&self) -> bool {
+ self.dynamic_padding
+ }
}
impl Default for WindowConfig {
@@ -406,6 +414,7 @@ impl Default for WindowConfig {
dimensions: Default::default(),
padding: default_padding(),
decorations: Default::default(),
+ dynamic_padding: false,
}
}
}
diff --git a/src/display.rs b/src/display.rs
index a664b4a2..3fe5fbc4 100644
--- a/src/display.rs
+++ b/src/display.rs
@@ -152,22 +152,19 @@ impl Display {
let dimensions = options.dimensions()
.unwrap_or_else(|| config.dimensions());
- let mut padding_x = f64::from(config.padding().x) * dpr;
- let mut padding_y = f64::from(config.padding().y) * dpr;
+ let mut padding_x = (f64::from(config.padding().x) * dpr).floor();
+ let mut padding_y = (f64::from(config.padding().y) * dpr).floor();
if dimensions.columns_u32() > 0 && dimensions.lines_u32() > 0 {
// Calculate new size based on cols/lines specified in config
let width = cell_width as u32 * dimensions.columns_u32();
let height = cell_height as u32 * dimensions.lines_u32();
- padding_x = padding_x.floor();
- padding_y = padding_y.floor();
-
viewport_size = PhysicalSize::new(
f64::from(width) + 2. * padding_x,
f64::from(height) + 2. * padding_y,
);
- } else {
+ } else if config.window().dynamic_padding() {
// Make sure additional padding is spread evenly
let cw = f64::from(cell_width);
let ch = f64::from(cell_height);
@@ -331,8 +328,12 @@ impl Display {
let mut padding_x = f32::from(config.padding().x) * dpr as f32;
let mut padding_y = f32::from(config.padding().y) * dpr as f32;
- padding_x = (padding_x + ((width - 2. * padding_x) % cell_width) / 2.).floor();
- padding_y = (padding_y + ((height - 2. * padding_y) % cell_height) / 2.).floor();
+
+ if config.window().dynamic_padding() {
+ padding_x = (padding_x + ((width - 2. * padding_x) % cell_width) / 2.).floor();
+ padding_y = (padding_y + ((height - 2. * padding_y) % cell_height) / 2.).floor();
+ }
+
self.size_info.padding_x = padding_x;
self.size_info.padding_y = padding_y;