summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Cargo.lock127
-rw-r--r--Cargo.toml4
-rw-r--r--src/bin/main.rs2
-rw-r--r--src/lib.rs45
-rw-r--r--src/utils/error.rs6
5 files changed, 122 insertions, 62 deletions
diff --git a/Cargo.lock b/Cargo.lock
index 9c529c17..c6fd534e 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -134,7 +134,7 @@ dependencies = [
"futures-lite",
"libc",
"once_cell",
- "signal-hook 0.3.13",
+ "signal-hook",
"winapi",
]
@@ -436,25 +436,25 @@ dependencies = [
[[package]]
name = "crossterm"
-version = "0.18.2"
+version = "0.25.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4e86d73f2a0b407b5768d10a8c720cf5d2df49a9efc10ca09176d201ead4b7fb"
+checksum = "e64e6c0fbe2c17357405f7c758c1ef960fce08bdfb2c03d88d2a18d7e09c4b67"
dependencies = [
"bitflags",
"crossterm_winapi",
- "lazy_static",
"libc",
"mio",
"parking_lot",
- "signal-hook 0.1.17",
+ "signal-hook",
+ "signal-hook-mio",
"winapi",
]
[[package]]
name = "crossterm_winapi"
-version = "0.6.2"
+version = "0.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c2265c3f8e080075d9b6417aa72293fc71662f34b4af2612d8d1b074d29510db"
+checksum = "2ae1b35a484aa10e07fe0638d02301c5ad24de82d310ccbd2f3693da5f09bf1c"
dependencies = [
"winapi",
]
@@ -708,7 +708,7 @@ checksum = "9be70c98951c83b8d2f8f60d7065fa6d5146873094452a1008da8c2f1e4205ad"
dependencies = [
"cfg-if",
"libc",
- "wasi",
+ "wasi 0.10.2+wasi-snapshot-preview1",
]
[[package]]
@@ -1013,24 +1013,14 @@ dependencies = [
[[package]]
name = "mio"
-version = "0.7.14"
+version = "0.8.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8067b404fe97c70829f082dec8bcf4f71225d7eaea1d8645349cb76fa06205cc"
+checksum = "e5d732bc30207a6423068df043e3d02e0735b155ad7ce1a6f76fe2baa5b158de"
dependencies = [
"libc",
"log",
- "miow",
- "ntapi 0.3.7",
- "winapi",
-]
-
-[[package]]
-name = "miow"
-version = "0.3.7"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b9f1c5b025cda876f66ef43a113f91ebc9f4ccef34843000e0adf6ebbab84e21"
-dependencies = [
- "winapi",
+ "wasi 0.11.0+wasi-snapshot-preview1",
+ "windows-sys",
]
[[package]]
@@ -1194,27 +1184,25 @@ checksum = "427c3892f9e783d91cc128285287e70a59e206ca452770ece88a76f7a3eddd72"
[[package]]
name = "parking_lot"
-version = "0.11.2"
+version = "0.12.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7d17b78036a60663b797adeaee46f5c9dfebb86948d1255007a1d6be0271ff99"
+checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f"
dependencies = [
- "instant",
"lock_api",
"parking_lot_core",
]
[[package]]
name = "parking_lot_core"
-version = "0.8.5"
+version = "0.9.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d76e8e1493bcac0d2766c42737f34458f1c8c50c0d23bcb24ea953affb273216"
+checksum = "4dc9e0dc2adc1c69d09143aff38d3d30c5c3f0df0dad82e6d25547af174ebec0"
dependencies = [
"cfg-if",
- "instant",
"libc",
"redox_syscall",
"smallvec",
- "winapi",
+ "windows-sys",
]
[[package]]
@@ -1436,23 +1424,23 @@ dependencies = [
[[package]]
name = "signal-hook"
-version = "0.1.17"
+version = "0.3.13"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7e31d442c16f047a671b5a71e2161d6e68814012b7f5379d269ebd915fac2729"
+checksum = "647c97df271007dcea485bb74ffdb57f2e683f1306c854f468a0c244badabf2d"
dependencies = [
"libc",
- "mio",
"signal-hook-registry",
]
[[package]]
-name = "signal-hook"
-version = "0.3.13"
+name = "signal-hook-mio"
+version = "0.2.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "647c97df271007dcea485bb74ffdb57f2e683f1306c854f468a0c244badabf2d"
+checksum = "29ad2e15f37ec9a6cc544097b78a1ec90001e9f71b81338ca39f430adaca99af"
dependencies = [
"libc",
- "signal-hook-registry",
+ "mio",
+ "signal-hook",
]
[[package]]
@@ -1661,9 +1649,9 @@ dependencies = [
[[package]]
name = "tui"
-version = "0.14.0"
+version = "0.19.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9ced152a8e9295a5b168adc254074525c17ac4a83c90b2716274cc38118bddc9"
+checksum = "ccdd26cbd674007e649a272da4475fb666d3aa0ad0531da7136db6fab0e5bad1"
dependencies = [
"bitflags",
"cassowary",
@@ -1751,6 +1739,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fd6fbd9a79829dd1ad0cc20627bf1ed606756a7f77edff7b66b7064f9cb327c6"
[[package]]
+name = "wasi"
+version = "0.11.0+wasi-snapshot-preview1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423"
+
+[[package]]
name = "wepoll-ffi"
version = "0.1.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1797,6 +1791,63 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
[[package]]
+name = "windows-sys"
+version = "0.42.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5a3e1820f08b8513f676f7ab6c1f99ff312fb97b553d30ff4dd86f9f15728aa7"
+dependencies = [
+ "windows_aarch64_gnullvm",
+ "windows_aarch64_msvc",
+ "windows_i686_gnu",
+ "windows_i686_msvc",
+ "windows_x86_64_gnu",
+ "windows_x86_64_gnullvm",
+ "windows_x86_64_msvc",
+]
+
+[[package]]
+name = "windows_aarch64_gnullvm"
+version = "0.42.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "41d2aa71f6f0cbe00ae5167d90ef3cfe66527d6f613ca78ac8024c3ccab9a19e"
+
+[[package]]
+name = "windows_aarch64_msvc"
+version = "0.42.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "dd0f252f5a35cac83d6311b2e795981f5ee6e67eb1f9a7f64eb4500fbc4dcdb4"
+
+[[package]]
+name = "windows_i686_gnu"
+version = "0.42.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fbeae19f6716841636c28d695375df17562ca208b2b7d0dc47635a50ae6c5de7"
+
+[[package]]
+name = "windows_i686_msvc"
+version = "0.42.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "84c12f65daa39dd2babe6e442988fc329d6243fdce47d7d2d155b8d874862246"
+
+[[package]]
+name = "windows_x86_64_gnu"
+version = "0.42.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bf7b1b21b5362cbc318f686150e5bcea75ecedc74dd157d874d754a2ca44b0ed"
+
+[[package]]
+name = "windows_x86_64_gnullvm"
+version = "0.42.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "09d525d2ba30eeb3297665bd434a54297e4170c7f1a44cad4ef58095b4cd2028"
+
+[[package]]
+name = "windows_x86_64_msvc"
+version = "0.42.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f40009d85759725a34da6d89a94e63d7bdc50a862acf0dbc7c8e488f1edcb6f5"
+
+[[package]]
name = "wrapcenum-derive"
version = "0.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
diff --git a/Cargo.toml b/Cargo.toml
index 6d0d7213..2fdcb891 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -65,7 +65,7 @@ backtrace = "0.3.65"
cfg-if = "1.0.0"
clap = { version = "3.1.12", features = ["default", "cargo", "wrap_help"] }
concat-string = "1.0.1"
-crossterm = "0.18.2"
+crossterm = "0.25.0"
ctrlc = { version = "3.1.9", features = ["termination"] }
dirs = "4.0.0"
fern = { version = "0.6.1", optional = true }
@@ -85,7 +85,7 @@ sysinfo = "0.26.7"
thiserror = "1.0.30"
time = { version = "0.3.9", features = ["formatting", "macros"] }
toml = "0.5.9"
-tui = { version = "0.14.0", features = ["crossterm"], default-features = false }
+tui = "0.19.0"
typed-builder = "0.10.0"
unicode-segmentation = "1.9.0"
unicode-width = "0.1.9"
diff --git a/src/bin/main.rs b/src/bin/main.rs
index 9c3e8f94..a6a8a1a5 100644
--- a/src/bin/main.rs
+++ b/src/bin/main.rs
@@ -14,7 +14,7 @@ use bottom::{
use std::{
boxed::Box,
- io::{stdout, Write},
+ io::stdout,
panic,
sync::{
atomic::{AtomicBool, Ordering},
diff --git a/src/lib.rs b/src/lib.rs
index 34096843..0ac83582 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -27,7 +27,10 @@ use std::{
};
use crossterm::{
- event::{poll, read, DisableMouseCapture, Event, KeyCode, KeyEvent, KeyModifiers, MouseEvent},
+ event::{
+ poll, read, DisableMouseCapture, Event, KeyCode, KeyEvent, KeyModifiers, MouseEvent,
+ MouseEventKind,
+ },
execute,
style::Print,
terminal::{disable_raw_mode, LeaveAlternateScreen},
@@ -81,10 +84,11 @@ pub enum ThreadControlEvent {
}
pub fn handle_mouse_event(event: MouseEvent, app: &mut App) {
- match event {
- MouseEvent::ScrollUp(_x, _y, _modifiers) => app.handle_scroll_up(),
- MouseEvent::ScrollDown(_x, _y, _modifiers) => app.handle_scroll_down(),
- MouseEvent::Down(button, x, y, _modifiers) => {
+ match event.kind {
+ MouseEventKind::ScrollUp => app.handle_scroll_up(),
+ MouseEventKind::ScrollDown => app.handle_scroll_down(),
+ MouseEventKind::Down(button) => {
+ let (x, y) = (event.column, event.row);
if !app.app_config_fields.disable_click {
match button {
crossterm::event::MouseButton::Left => {
@@ -419,20 +423,31 @@ pub fn create_input_thread(
if let Ok(poll) = poll(Duration::from_millis(20)) {
if poll {
if let Ok(event) = read() {
- if let Event::Key(key) = event {
- if Instant::now().duration_since(keyboard_timer).as_millis() >= 20 {
- if sender.send(BottomEvent::KeyInput(key)).is_err() {
- break;
+ // FIXME: Handle all other event cases.
+ match event {
+ Event::Key(key) => {
+ if Instant::now().duration_since(keyboard_timer).as_millis() >= 20 {
+ if sender.send(BottomEvent::KeyInput(key)).is_err() {
+ break;
+ }
+ keyboard_timer = Instant::now();
}
- keyboard_timer = Instant::now();
}
- } else if let Event::Mouse(mouse) = event {
- if Instant::now().duration_since(mouse_timer).as_millis() >= 20 {
- if sender.send(BottomEvent::MouseInput(mouse)).is_err() {
- break;
+ Event::Mouse(mouse) => {
+ if Instant::now().duration_since(mouse_timer).as_millis() >= 20 {
+ match mouse.kind {
+ MouseEventKind::Moved => {}
+ _ => {
+ if sender.send(BottomEvent::MouseInput(mouse)).is_err()
+ {
+ break;
+ }
+ mouse_timer = Instant::now();
+ }
+ }
}
- mouse_timer = Instant::now();
}
+ _ => (),
}
}
}
diff --git a/src/utils/error.rs b/src/utils/error.rs
index 6a7a2cfe..3c61d14b 100644
--- a/src/utils/error.rs
+++ b/src/utils/error.rs
@@ -56,12 +56,6 @@ impl From<heim::Error> for BottomError {
}
}
-impl From<crossterm::ErrorKind> for BottomError {
- fn from(err: crossterm::ErrorKind) -> Self {
- BottomError::CrosstermError(err.to_string())
- }
-}
-
impl From<std::num::ParseIntError> for BottomError {
fn from(err: std::num::ParseIntError) -> Self {
BottomError::ConfigError(err.to_string())