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