1
0
Fork 0
mirror of https://github.com/Zedfrigg/ironbar.git synced 2025-04-19 19:34:24 +02:00

refactor(dynamic string): use vec instead of indexmap

This commit is contained in:
Jake Stanger 2023-03-01 23:09:01 +00:00
parent 0125ce5916
commit 7212bbcf61
No known key found for this signature in database
GPG key ID: C51FC8F9CB0BEA61

View file

@ -1,7 +1,6 @@
use crate::script::{OutputStream, Script};
use crate::{lock, send};
use gtk::prelude::*;
use indexmap::IndexMap;
use std::sync::{Arc, Mutex};
use tokio::spawn;
@ -60,13 +59,13 @@ impl DynamicString {
chars.drain(..skip);
}
let label_parts = Arc::new(Mutex::new(IndexMap::new()));
let label_parts = Arc::new(Mutex::new(Vec::new()));
let (tx, rx) = glib::MainContext::channel(glib::PRIORITY_DEFAULT);
for (i, segment) in segments.into_iter().enumerate() {
match segment {
DynamicStringSegment::Static(str) => {
lock!(label_parts).insert(i, str);
lock!(label_parts).push(str);
}
DynamicStringSegment::Dynamic(script) => {
let tx = tx.clone();
@ -78,13 +77,9 @@ impl DynamicString {
if let OutputStream::Stdout(out) = out {
let mut label_parts = lock!(label_parts);
label_parts.insert(i, out);
let string = label_parts
.iter()
.map(|(_, part)| part.as_str())
.collect::<String>();
let _ = std::mem::replace(&mut label_parts[i], out);
let string = label_parts.join("");
send!(tx, string);
}
})
@ -96,11 +91,7 @@ impl DynamicString {
// initialize
{
let label_parts = lock!(label_parts)
.iter()
.map(|(_, part)| part.as_str())
.collect::<String>();
let label_parts = lock!(label_parts).join("");
send!(tx, label_parts);
}