Move func "settings_(get|set)_max_clients_in_master" to Rust

This commit is contained in:
Alex Kotov 2022-09-08 16:24:53 +04:00
parent 290a278919
commit 4fdc0d90e4
Signed by: kotovalexarian
GPG key ID: 553C0EBBEB5D5F08
5 changed files with 29 additions and 20 deletions

View file

@ -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)

View file

@ -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)
});
}

View file

@ -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

View file

@ -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;

View file

@ -11,6 +11,7 @@ pub struct Settings {
enable_swallowing: bool,
focus_on_wheel: bool,
gap_size: c_int,
max_clients_in_master: Option<c_int>,
}
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<c_int> {
self.max_clients_in_master
}
// TODO: notify WM to rearrange clients
pub fn max_clients_in_master_set(&mut self, value: Option<c_int>) {
self.max_clients_in_master =
value.map(|value| constraints::max_clients_in_master(value));
}
}