Skip to content

Commit 7e3619e

Browse files
committed
Allow selecting the demangler on the "Demangle" popup
1 parent 1941373 commit 7e3619e

File tree

2 files changed

+12
-6
lines changed

2 files changed

+12
-6
lines changed

objdiff-gui/src/app.rs

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -811,9 +811,7 @@ impl eframe::App for App {
811811

812812
project_window(ctx, state, show_project_config, config_state, appearance);
813813
appearance_window(ctx, show_appearance_config, appearance);
814-
let demangler =
815-
state.read().map(|state| state.config.diff_obj_config.demangler).unwrap_or_default();
816-
demangle_window(ctx, show_demangle, demangle_state, appearance, demangler);
814+
demangle_window(ctx, show_demangle, demangle_state, appearance);
817815
rlwinm_decode_window(ctx, show_rlwinm_decode, rlwinm_decode_state, appearance);
818816
arch_config_window(ctx, state, show_arch_config, appearance);
819817
debug_window(ctx, show_debug, frame_history, appearance);

objdiff-gui/src/views/demangle.rs

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,32 @@
11
use egui::TextStyle;
2-
use objdiff_core::diff::Demangler;
2+
use objdiff_core::diff::{ConfigEnum, Demangler};
33

44
use crate::views::appearance::Appearance;
55

66
#[derive(Default)]
77
pub struct DemangleViewState {
88
pub text: String,
9+
pub demangler: Demangler,
910
}
1011

1112
pub fn demangle_window(
1213
ctx: &egui::Context,
1314
show: &mut bool,
1415
state: &mut DemangleViewState,
1516
appearance: &Appearance,
16-
demangler: Demangler,
1717
) {
1818
egui::Window::new("Demangle").open(show).show(ctx, |ui| {
19+
egui::ComboBox::from_label("Demangler")
20+
.selected_text(state.demangler.name().to_string())
21+
.show_ui(ui, |ui| {
22+
for demangler in Demangler::variants() {
23+
ui.selectable_value(&mut state.demangler, *demangler, demangler.name());
24+
}
25+
});
26+
ui.separator();
1927
ui.text_edit_singleline(&mut state.text);
2028
ui.add_space(10.0);
21-
if let Some(demangled) = demangler.demangle(&state.text) {
29+
if let Some(demangled) = state.demangler.demangle(&state.text) {
2230
ui.scope(|ui| {
2331
ui.style_mut().override_text_style = Some(TextStyle::Monospace);
2432
ui.colored_label(appearance.replace_color, &demangled);

0 commit comments

Comments
 (0)