summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlexandre Bury <alexandre.bury@gmail.com>2022-01-12 14:42:43 -0500
committerAlexandre Bury <alexandre.bury@gmail.com>2022-01-12 14:42:43 -0500
commitf501dd5d0c1cdf6dfcf9c0850ac7f05dec3d46f8 (patch)
treeb1619555a80e61dca3ff9ab981307b0101ab4511
parent9770693e180ce3393507b0defd474fc96e123905 (diff)
Update to cursive 0.17
-rw-r--r--Cargo.lock185
-rw-r--r--Cargo.toml2
-rw-r--r--src/tui/views.rs24
3 files changed, 96 insertions, 115 deletions
diff --git a/Cargo.lock b/Cargo.lock
index 97e0be6..307c93c 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -1,5 +1,7 @@
# This file is automatically @generated by Cargo.
# It is not intended for manual editing.
+version = 3
+
[[package]]
name = "adler"
version = "1.0.2"
@@ -8,9 +10,9 @@ checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe"
[[package]]
name = "ahash"
-version = "0.6.3"
+version = "0.7.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "796540673305a66d127804eef19ad696f1f204b8c1025aaca4958c17eab32877"
+checksum = "fcb51a0695d8f838b1ee009b3fbf66bda078cd64590202a864a8f3e8c4315c47"
dependencies = [
"getrandom 0.2.3",
"once_cell",
@@ -27,12 +29,6 @@ dependencies = [
]
[[package]]
-name = "array-macro"
-version = "1.0.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "06e97b4e522f9e55523001238ac59d13a8603af57f69980de5d8de4bbbe8ada6"
-
-[[package]]
name = "async-compression"
version = "0.3.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -70,9 +66,9 @@ checksum = "904dfeac50f3cdaba28fc6f57fdcddb75f49ed61346676a78c4ffe55877802fd"
[[package]]
name = "bitflags"
-version = "1.2.1"
+version = "1.3.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cf1de2fe8c75bc145a2f577add951f8134889b4795d47466a54a5c846d691693"
+checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
[[package]]
name = "bstr"
@@ -132,19 +128,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
[[package]]
-name = "chrono"
-version = "0.4.19"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "670ad68c9088c2a963aaa298cb369688cf3f9465ce5e2d4ca10e6e0098a1ce73"
-dependencies = [
- "libc",
- "num-integer",
- "num-traits",
- "time",
- "winapi",
-]
-
-[[package]]
name = "clap"
version = "2.33.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -296,51 +279,51 @@ dependencies = [
[[package]]
name = "crossterm"
-version = "0.19.0"
+version = "0.20.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7c36c10130df424b2f3552fcc2ddcd9b28a27b1e54b358b45874f88d1ca6888c"
+checksum = "c0ebde6a9dd5e331cd6c6f48253254d117642c31653baa475e394657c59c1f7d"
dependencies = [
"bitflags",
- "crossterm_winapi 0.7.0",
- "lazy_static",
+ "crossterm_winapi 0.8.0",
+ "futures-core",
"libc",
"mio",
"parking_lot",
- "signal-hook 0.1.17",
+ "signal-hook",
+ "signal-hook-mio",
"winapi",
]
[[package]]
name = "crossterm"
-version = "0.20.0"
+version = "0.22.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c0ebde6a9dd5e331cd6c6f48253254d117642c31653baa475e394657c59c1f7d"
+checksum = "c85525306c4291d1b73ce93c8acf9c339f9b213aef6c1d85c3830cbf1c16325c"
dependencies = [
"bitflags",
- "crossterm_winapi 0.8.0",
- "futures-core",
+ "crossterm_winapi 0.9.0",
"libc",
"mio",
"parking_lot",
- "signal-hook 0.3.9",
+ "signal-hook",
"signal-hook-mio",
"winapi",
]
[[package]]
name = "crossterm_winapi"
-version = "0.7.0"
+version = "0.8.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0da8964ace4d3e4a044fd027919b2237000b24315a37c916f61809f1ff2140b9"
+checksum = "3a6966607622438301997d3dac0d2f6e9a90c68bb6bc1785ea98456ab93c0507"
dependencies = [
"winapi",
]
[[package]]
name = "crossterm_winapi"
-version = "0.8.0"
+version = "0.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3a6966607622438301997d3dac0d2f6e9a90c68bb6bc1785ea98456ab93c0507"
+checksum = "2ae1b35a484aa10e07fe0638d02301c5ad24de82d310ccbd2f3693da5f09bf1c"
dependencies = [
"winapi",
]
@@ -396,14 +379,14 @@ dependencies = [
[[package]]
name = "cursive"
-version = "0.16.3"
+version = "0.17.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6593c3409eb794bf22090bec60dda1e19d1def284478bec7e5a92da3cf977c52"
+checksum = "ca536d245342f6c005e7547ab640e444a3dc2fc0319a92124c8c1cbff025e775"
dependencies = [
"ahash",
"cfg-if 1.0.0",
"crossbeam-channel",
- "crossterm 0.19.0",
+ "crossterm 0.22.1",
"cursive_core",
"lazy_static",
"libc",
@@ -411,42 +394,39 @@ dependencies = [
"maplit",
"ncurses",
"pancurses",
- "signal-hook 0.3.9",
+ "signal-hook",
"term_size",
"termion",
"unicode-segmentation",
"unicode-width",
- "wasmer_enumset",
]
[[package]]
name = "cursive_core"
-version = "0.2.2"
+version = "0.3.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "025ac0bcd21ced752d27b70e6aa2285a3513d07b5a0c7f89e71121d20ca1429d"
+checksum = "e27fbda42833e46148ff28db338f6189a4407e4a38ba1f4105e2f623089e66a0"
dependencies = [
"ahash",
- "chrono",
"crossbeam-channel",
"enum-map",
+ "enumset",
"lazy_static",
- "libc",
"log",
"num",
"owning_ref",
- "syn",
+ "time",
"toml",
"unicode-segmentation",
"unicode-width",
- "wasmer_enumset",
"xi-unicode",
]
[[package]]
name = "darling"
-version = "0.10.2"
+version = "0.12.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0d706e75d87e35569db781a9b5e2416cff1236a47ed380831f959382ccd5f858"
+checksum = "5f2c43f534ea4b0b049015d00269734195e6d3f0f6635cb692251aca6f9f8b3c"
dependencies = [
"darling_core",
"darling_macro",
@@ -454,23 +434,23 @@ dependencies = [
[[package]]
name = "darling_core"
-version = "0.10.2"
+version = "0.12.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f0c960ae2da4de88a91b2d920c2a7233b400bc33cb28453a2987822d8392519b"
+checksum = "8e91455b86830a1c21799d94524df0845183fa55bafd9aa137b01c7d1065fa36"
dependencies = [
"fnv",
"ident_case",
"proc-macro2",
"quote",
- "strsim 0.9.3",
+ "strsim 0.10.0",
"syn",
]
[[package]]
name = "darling_macro"
-version = "0.10.2"
+version = "0.12.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d9b5a2f4ac4969822c62224815d069952656cadc7084fdca9751e6d959189b72"
+checksum = "29b5acf0dea37a7f66f7b25d2c5e93fd46f8f6968b1a5d7a3e02e97768afc95a"
dependencies = [
"darling_core",
"quote",
@@ -548,20 +528,40 @@ dependencies = [
[[package]]
name = "enum-map"
-version = "0.6.4"
+version = "2.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4187999839f4ae8be35cf185d1381aa8dc32d2f5951349cc37ae49ebc4781855"
+checksum = "9ec3484df47a85c121b9d8fbf265ca7eedc26a5c4c341db7cf800876201c766f"
dependencies = [
- "array-macro",
"enum-map-derive",
]
[[package]]
name = "enum-map-derive"
-version = "0.4.6"
+version = "0.7.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8182c0d26a908f001a23adc388fcef7fde884fbaf668874126cd5a3c13ca299e"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "enumset"
+version = "1.0.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fbd795df6708a599abf1ee10eacc72efd052b7a5f70fdf0715e4d5151a6db9c3"
+dependencies = [
+ "enumset_derive",
+]
+
+[[package]]
+name = "enumset_derive"
+version = "0.5.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e5c450cf304c9e18d45db562025a14fb1ca0f5c769b6f609309f81d4c31de455"
+checksum = "e19c52f9ec503c8a68dc04daf71a04b07e690c32ab1a8b68e33897f255269d47"
dependencies = [
+ "darling",
"proc-macro2",
"quote",
"syn",
@@ -962,9 +962,9 @@ checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
[[package]]
name = "libc"
-version = "0.2.97"
+version = "0.2.112"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "12b8adadd720df158f4d70dfe7ccc6adb0472d7c55ca83445f6a5ab3e36f8fb6"
+checksum = "1b03d17f364a3a042d5e5d46b053bbbf82c92c9430c592dd4c064dc6ee997125"
[[package]]
name = "linked-hash-map"
@@ -1136,9 +1136,9 @@ dependencies = [
[[package]]
name = "num"
-version = "0.3.1"
+version = "0.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8b7a8e9be5e039e2ff869df49155f1c06bd01ade2117ec783e56ab0932b67a8f"
+checksum = "43db66d1170d347f9a065114077f7dccb00c1b9478c89384490a3425279a4606"
dependencies = [
"num-complex",
"num-integer",
@@ -1149,9 +1149,9 @@ dependencies = [
[[package]]
name = "num-complex"
-version = "0.3.1"
+version = "0.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "747d632c0c558b87dbabbe6a82f3b4ae03720d0646ac5b7b4dae89394be5f2c5"
+checksum = "26873667bbbb7c5182d4a37c1add32cdf09f841af72da53318fdb81543c15085"
dependencies = [
"num-traits",
]
@@ -1179,9 +1179,9 @@ dependencies = [
[[package]]
name = "num-rational"
-version = "0.3.2"
+version = "0.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "12ac428b1cb17fce6f731001d307d351ec70a6d202fc2e60f7d4c5e42d8f4f07"
+checksum = "d41702bd167c2df5520b384281bc111a4b5efcf7fbc4c9c222c815b07e0a6a6a"
dependencies = [
"autocfg",
"num-integer",
@@ -1269,9 +1269,9 @@ dependencies = [
[[package]]
name = "pancurses"
-version = "0.16.1"
+version = "0.17.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d3058bc37c433096b2ac7afef1c5cdfae49ede0a4ffec3dfc1df1df0959d0ff0"
+checksum = "0352975c36cbacb9ee99bfb709b9db818bed43af57751797f8633649759d13db"
dependencies = [
"libc",
"log",
@@ -1888,17 +1888,6 @@ dependencies = [
[[package]]
name = "signal-hook"
-version = "0.1.17"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7e31d442c16f047a671b5a71e2161d6e68814012b7f5379d269ebd915fac2729"
-dependencies = [
- "libc",
- "mio",
- "signal-hook-registry",
-]
-
-[[package]]
-name = "signal-hook"
version = "0.3.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "470c5a6397076fae0094aaf06a08e6ba6f37acb77d3b1b91ea92b4d6c8650c39"
@@ -1915,7 +1904,7 @@ checksum = "29fd5867f1c4f2c5be079aee7a2adf1152ebb04a4bc4d341f504b7dece607ed4"
dependencies = [
"libc",
"mio",
- "signal-hook 0.3.9",
+ "signal-hook",
]
[[package]]
@@ -2020,9 +2009,9 @@ checksum = "8ea5119cdb4c55b55d432abb513a0429384878c15dde60cc77b1c99de1a95a6a"
[[package]]
name = "strsim"
-version = "0.9.3"
+version = "0.10.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6446ced80d6c486436db5c078dde11a9f73d42b57fb273121e160b84f63d894c"
+checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623"
[[package]]
name = "syn"
@@ -2132,12 +2121,12 @@ dependencies = [
[[package]]
name = "time"
-version = "0.1.43"
+version = "0.3.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ca8a50ef2360fbd1eeb0ecd46795a87a19024eb4b53c5dc916ca1fd95fe62438"
+checksum = "41effe7cfa8af36f439fac33861b66b049edc6f9a32331e2312660529c1c24ad"
dependencies = [
+ "itoa",
"libc",
- "winapi",
]
[[package]]
@@ -2450,28 +2439,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b7148f4696fb4960a346eaa60bbfb42a1ac4ebba21f750f75fc1375b098d5ffa"
[[package]]
-name = "wasmer_enumset"
-version = "1.0.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cf088cc1f7d247fd96dff0df46fb1bbb747d8a69ae1ecd71aed55c55e354b2d8"
-dependencies = [
- "num-traits",
- "wasmer_enumset_derive",
-]
-
-[[package]]
-name = "wasmer_enumset_derive"
-version = "0.5.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a8d1b32d98e11194200baf6d3f85eb2d6cfe56f6d9af0dd617f90ca48f958a88"
-dependencies = [
- "darling",
- "proc-macro2",
- "quote",
- "syn",
-]
-
-[[package]]
name = "web-sys"
version = "0.3.49"
source = "registry+https://github.com/rust-lang/crates.io-index"
diff --git a/Cargo.toml b/Cargo.toml
index 1094159..38b5655 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -56,7 +56,7 @@ pulldown-cmark = { version = "0.8", default-features = false }
syn = "=1.0.57"
[dependencies.cursive]
-version = "0.16"
+version = "0.17"
default-features = false
features = ["toml"]
diff --git a/src/tui/views.rs b/src/tui/views.rs
index 62b8af1..5341630 100644
--- a/src/tui/views.rs
+++ b/src/tui/views.rs
@@ -1,7 +1,7 @@
use cursive::event::{Callback, Event, EventResult, Key};
use cursive::traits::{Finder, Nameable, Resizable, Scrollable};
use cursive::utils::markup::StyledString;
-use cursive::view::{Margins, SizeConstraint, View, ViewWrapper};
+use cursive::view::{CannotFocus, Margins, SizeConstraint, View, ViewWrapper};
use cursive::views::{
HideableView, LinearLayout, NamedView, PaddedView, Panel, ResizedView, ScrollView, SelectView,
TextView,
@@ -82,8 +82,15 @@ impl<T: View> ViewWrapper for ListViewT<T> {
cursive::wrap_impl!(self.view: T);
// In full screen mode we always take focus, even though currently hidden
- fn wrap_take_focus(&mut self, source: cursive::direction::Direction) -> bool {
- self.force_take_focus || self.view.take_focus(source)
+ fn wrap_take_focus(
+ &mut self,
+ source: cursive::direction::Direction,
+ ) -> Result<EventResult, CannotFocus> {
+ self.view.take_focus(source).or_else(|_| {
+ self.force_take_focus
+ .then(EventResult::consumed)
+ .ok_or(CannotFocus)
+ })
}
// Always take arrow keys, its jarring to have them move pane focus
@@ -204,8 +211,15 @@ pub struct MdViewT<T: View> {
impl<T: View> ViewWrapper for MdViewT<T> {
cursive::wrap_impl!(self.view: T);
- fn wrap_take_focus(&mut self, source: cursive::direction::Direction) -> bool {
- self.force_take_focus || self.view.take_focus(source)
+ fn wrap_take_focus(
+ &mut self,
+ source: cursive::direction::Direction,
+ ) -> Result<EventResult, CannotFocus> {
+ self.view.take_focus(source).or_else(|_| {
+ self.force_take_focus
+ .then(EventResult::consumed)
+ .ok_or(CannotFocus)
+ })
}
// Always take arrow keys, its jarring to have them move pane focus