Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 11 additions & 0 deletions src/core/app.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2937,6 +2937,12 @@ impl App {
description: "Force search bar to take full width".to_string(),
value: SettingValue::Bool(self.user_config.behavior.enforce_wide_search_bar),
},
SettingItem {
id: "behavior.disable_mouse_inputs".to_string(),
name: "Disable Mouse Inputs".to_string(),
description: "Disable mouse inputs for keyboard-only navigation".to_string(),
value: SettingValue::Bool(self.user_config.behavior.disable_mouse_inputs),
},
SettingItem {
id: "behavior.set_window_title".to_string(),
name: "Set Window Title".to_string(),
Expand Down Expand Up @@ -3352,6 +3358,11 @@ impl App {
self.user_config.behavior.enforce_wide_search_bar = *v;
}
}
"behavior.disable_mouse_inputs" => {
if let SettingValue::Bool(v) = &setting.value {
self.user_config.behavior.disable_mouse_inputs = *v;
}
}
"behavior.set_window_title" => {
if let SettingValue::Bool(v) = &setting.value {
self.user_config.behavior.set_window_title = *v;
Expand Down
8 changes: 8 additions & 0 deletions src/core/user_config.rs
Original file line number Diff line number Diff line change
Expand Up @@ -638,6 +638,7 @@ pub struct BehaviorConfigString {
pub show_loading_indicator: Option<bool>,
pub enforce_wide_search_bar: Option<bool>,
pub enable_global_song_count: Option<bool>,
pub disable_mouse_inputs: Option<bool>,
pub enable_discord_rpc: Option<bool>,
pub discord_rpc_client_id: Option<String>,
pub enable_announcements: Option<bool>,
Expand Down Expand Up @@ -677,6 +678,7 @@ pub struct BehaviorConfig {
pub show_loading_indicator: bool,
pub enforce_wide_search_bar: bool,
pub enable_global_song_count: bool,
pub disable_mouse_inputs: bool,
pub enable_discord_rpc: bool,
pub discord_rpc_client_id: Option<String>,
pub enable_announcements: bool,
Expand Down Expand Up @@ -786,6 +788,7 @@ impl UserConfig {
show_loading_indicator: true,
enforce_wide_search_bar: false,
enable_global_song_count: true,
disable_mouse_inputs: false,
enable_discord_rpc: true,
discord_rpc_client_id: None,
enable_announcements: true,
Expand Down Expand Up @@ -989,6 +992,10 @@ impl UserConfig {
self.behavior.enable_global_song_count = enable_global_song_count;
}

if let Some(disable_mouse_inputs) = behavior_config.disable_mouse_inputs {
self.behavior.disable_mouse_inputs = disable_mouse_inputs;
}

if let Some(enable_discord_rpc) = behavior_config.enable_discord_rpc {
self.behavior.enable_discord_rpc = enable_discord_rpc;
}
Expand Down Expand Up @@ -1133,6 +1140,7 @@ impl UserConfig {
show_loading_indicator: Some(self.behavior.show_loading_indicator),
enforce_wide_search_bar: Some(self.behavior.enforce_wide_search_bar),
enable_global_song_count: Some(self.behavior.enable_global_song_count),
disable_mouse_inputs: Some(self.behavior.disable_mouse_inputs),
enable_discord_rpc: Some(self.behavior.enable_discord_rpc),
discord_rpc_client_id: self.behavior.discord_rpc_client_id.clone(),
enable_announcements: Some(self.behavior.enable_announcements),
Expand Down
8 changes: 6 additions & 2 deletions src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2649,7 +2649,9 @@ async fn start_ui(
}
event::Event::Mouse(mouse) => {
let mut app = app.lock().await;
handlers::mouse_handler(mouse, &mut app);
if !app.user_config.behavior.disable_mouse_inputs {
handlers::mouse_handler(mouse, &mut app);
}
}
event::Event::Tick => {
let mut app = app.lock().await;
Expand Down Expand Up @@ -2955,7 +2957,9 @@ async fn start_ui(
}
event::Event::Mouse(mouse) => {
let mut app = app.lock().await;
handlers::mouse_handler(mouse, &mut app);
if !app.user_config.behavior.disable_mouse_inputs {
handlers::mouse_handler(mouse, &mut app);
}
}
event::Event::Tick => {
// Tick the main run loop so macOS delivers media key events.
Expand Down
47 changes: 23 additions & 24 deletions src/tui/ui/search.rs
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,8 @@ use super::util::{
};

const COMPACT_TOP_ROW_THRESHOLD: u16 = 60;
const COMPACT_HELP_WIDTH: u16 = 8;
const COMPACT_SETTINGS_WIDTH: u16 = 12;
const COMPACT_HELP_WIDTH: u16 = 6;
const COMPACT_SETTINGS_WIDTH: u16 = 10;

pub fn draw_input_and_help_box(f: &mut Frame<'_>, app: &App, layout_chunk: Rect) {
let compact_top_row = layout_chunk.width < COMPACT_TOP_ROW_THRESHOLD;
Expand All @@ -40,8 +40,8 @@ pub fn draw_input_and_help_box(f: &mut Frame<'_>, app: &App, layout_chunk: Rect)
} else {
[
Constraint::Percentage(80),
Constraint::Percentage(10),
Constraint::Percentage(10),
Constraint::Percentage(8),
Constraint::Percentage(12),
]
};

Expand Down Expand Up @@ -88,53 +88,52 @@ pub fn draw_input_and_help_box(f: &mut Frame<'_>, app: &App, layout_chunk: Rect)
f.render_widget(input, input_area);

let help_content = if show_loading {
(app.user_config.theme.hint, "Help", "...")
(app.user_config.theme.hint, "...")
} else if compact_top_row {
(app.user_config.theme.inactive, "Help", "?")
(app.user_config.theme.inactive, "?")
} else {
(app.user_config.theme.inactive, "Help", "Type ?")
(app.user_config.theme.inactive, "Type ?")
};

let block = Block::default()
.title(Span::styled(
help_content.1,
Style::default().fg(help_content.0),
))
.title(Span::styled("Help", Style::default().fg(help_content.0)))
.borders(Borders::ALL)
.border_type(BorderType::Rounded)
.border_style(Style::default().fg(help_content.0));

let lines = Text::from(help_content.2);
let lines = Text::from(help_content.1);
let help = Paragraph::new(lines).block(block).style(
Style::default()
.fg(help_content.0)
.bg(app.user_config.theme.background),
);
f.render_widget(help, help_area);

let settings_content = if compact_top_row {
("Settings", "Open")
let settings_keybind_string = app
.effective_open_settings_key()
.to_string()
.trim_matches(|c| c == '<' || c == '>')
.to_string();
let settings_hint = if compact_top_row {
settings_keybind_string
} else {
("Settings", "Click")
format!("Type {}", settings_keybind_string)
};

let settings_color = app.user_config.theme.inactive;
let settings_block = Block::default()
.title(Span::styled(
settings_content.0,
"Settings",
Style::default().fg(settings_color),
))
.borders(Borders::ALL)
.border_type(BorderType::Rounded)
.border_style(Style::default().fg(settings_color));

let settings = Paragraph::new(settings_content.1)
.block(settings_block)
.style(
Style::default()
.fg(settings_color)
.bg(app.user_config.theme.background),
);
let settings = Paragraph::new(settings_hint).block(settings_block).style(
Style::default()
.fg(settings_color)
.bg(app.user_config.theme.background),
);
f.render_widget(settings, settings_area);
}

Expand Down
Loading