From 290a278919485a7a62acc1953a10138dc7548142 Mon Sep 17 00:00:00 2001 From: Alex Kotov Date: Thu, 8 Sep 2022 16:17:41 +0400 Subject: [PATCH 1/2] Add TODO --- src/settings.rs | 1 + 1 file changed, 1 insertion(+) diff --git a/src/settings.rs b/src/settings.rs index 927d510..a62103f 100644 --- a/src/settings.rs +++ b/src/settings.rs @@ -83,6 +83,7 @@ impl Settings { self.gap_size } + // TODO: notify WM to rearrange clients pub fn gap_size_set(&mut self, value: c_int) { self.gap_size = constraints::gap_size(value); } From 4fdc0d90e4dfe3a4b69e074857a74286f6751145 Mon Sep 17 00:00:00 2001 From: Alex Kotov Date: Thu, 8 Sep 2022 16:24:53 +0400 Subject: [PATCH 2/2] Move func "settings_(get|set)_max_clients_in_master" to Rust --- src/api/constraints.rs | 7 ------- src/api/settings.rs | 17 +++++++++++++++++ src/constraints.h | 1 - src/settings.c | 12 ------------ src/settings.rs | 12 ++++++++++++ 5 files changed, 29 insertions(+), 20 deletions(-) diff --git a/src/api/constraints.rs b/src/api/constraints.rs index 228a2df..6ac9dc2 100644 --- a/src/api/constraints.rs +++ b/src/api/constraints.rs @@ -9,13 +9,6 @@ extern "C" fn constraints_master_area_factor( constraints::master_area_factor(master_area_factor) } -#[no_mangle] -extern "C" fn constraints_max_clients_in_master( - max_clients_in_master: c_int, -) -> c_int { - constraints::max_clients_in_master(max_clients_in_master) -} - #[no_mangle] extern "C" fn constraints_snap_distance(snap_distance: c_uint) -> c_uint { constraints::snap_distance(snap_distance) diff --git a/src/api/settings.rs b/src/api/settings.rs index f2e13d7..619190b 100644 --- a/src/api/settings.rs +++ b/src/api/settings.rs @@ -80,3 +80,20 @@ unsafe extern "C" fn settings_get_gap_size() -> c_int { unsafe extern "C" fn settings_set_gap_size(value: c_int) { SETTINGS.unwrap().gap_size_set(value); } + +#[no_mangle] +unsafe extern "C" fn settings_get_max_clients_in_master() -> c_int { + match SETTINGS.unwrap().max_clients_in_master() { + None => 0, + Some(value) => value, + } +} + +#[no_mangle] +unsafe extern "C" fn settings_set_max_clients_in_master(value: c_int) { + SETTINGS.unwrap().max_clients_in_master_set(if value == 0 { + None + } else { + Some(value) + }); +} diff --git a/src/constraints.h b/src/constraints.h index 6084c32..a10f5da 100644 --- a/src/constraints.h +++ b/src/constraints.h @@ -2,7 +2,6 @@ #define _CONSTRAINTS_H float constraints_master_area_factor(float master_area_factor); -int constraints_max_clients_in_master(int max_clients_in_master); unsigned int constraints_snap_distance(unsigned int snap_distance); #endif // _CONSTRAINTS_H diff --git a/src/settings.c b/src/settings.c index 1ac1cd9..ce87a12 100644 --- a/src/settings.c +++ b/src/settings.c @@ -5,7 +5,6 @@ static SettingsForSingleWindow border_for_single_window = SETTINGS_FOR_SINGLE_WINDOW_NOBODY_IS_FULLSCREEN; static SettingsForSingleWindow gap_for_single_window = SETTINGS_FOR_SINGLE_WINDOW_NOBODY_IS_FULLSCREEN; static UnitKind master_area_factor_per_unit = UNIT_MONITOR; -static int max_clients_in_master = 0; // 0 for no maximum static bool respect_resize_hints_in_floating_layout = false; static bool show_bar_by_default = true; static UnitKind show_bar_per_unit = UNIT_MONITOR; @@ -45,17 +44,6 @@ void settings_set_master_area_factor_per_unit(const UnitKind new_master_area_fac // TODO: notify WM to rearrange clients } -int settings_get_max_clients_in_master() -{ - return max_clients_in_master; -} - -void settings_set_max_clients_in_master(const int new_max_clients_in_master) -{ - max_clients_in_master = constraints_max_clients_in_master(new_max_clients_in_master); - // TODO: notify WM to rearrange clients -} - bool settings_get_respect_resize_hints_in_floating_layout() { return respect_resize_hints_in_floating_layout; diff --git a/src/settings.rs b/src/settings.rs index a62103f..d577848 100644 --- a/src/settings.rs +++ b/src/settings.rs @@ -11,6 +11,7 @@ pub struct Settings { enable_swallowing: bool, focus_on_wheel: bool, gap_size: c_int, + max_clients_in_master: Option, } impl Default for Settings { @@ -23,6 +24,7 @@ impl Default for Settings { enable_swallowing: true, focus_on_wheel: true, gap_size: 10, + max_clients_in_master: None, } } } @@ -87,4 +89,14 @@ impl Settings { pub fn gap_size_set(&mut self, value: c_int) { self.gap_size = constraints::gap_size(value); } + + pub fn max_clients_in_master(&self) -> Option { + self.max_clients_in_master + } + + // TODO: notify WM to rearrange clients + pub fn max_clients_in_master_set(&mut self, value: Option) { + self.max_clients_in_master = + value.map(|value| constraints::max_clients_in_master(value)); + } }