bug: fix CPU 'all' label missing on small sizes (#953)
Fixes the "All" label being missing on small windows.
This commit is contained in:
parent
0093a45be9
commit
8f9097b90c
|
@ -10,6 +10,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
||||||
## Bug Fixes
|
## Bug Fixes
|
||||||
|
|
||||||
- [#952](https://github.com/ClementTsang/bottom/pull/952): Partially fix battery text getting cut off in small windows.
|
- [#952](https://github.com/ClementTsang/bottom/pull/952): Partially fix battery text getting cut off in small windows.
|
||||||
|
- [#953](https://github.com/ClementTsang/bottom/pull/953): Fix CPU widget's 'all' label being missing on small sizes.
|
||||||
|
|
||||||
## Changes
|
## Changes
|
||||||
|
|
||||||
|
|
|
@ -221,11 +221,7 @@ where
|
||||||
.iter()
|
.iter()
|
||||||
.zip(&self.state.calculated_widths)
|
.zip(&self.state.calculated_widths)
|
||||||
.filter_map(|(column, &width)| {
|
.filter_map(|(column, &width)| {
|
||||||
if width > 0 {
|
data_row.to_cell(column.inner(), width)
|
||||||
data_row.to_cell(column.inner(), width)
|
|
||||||
} else {
|
|
||||||
None
|
|
||||||
}
|
|
||||||
}),
|
}),
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
|
@ -77,7 +77,7 @@ impl CpuWidgetTableData {
|
||||||
|
|
||||||
impl DataToCell<CpuWidgetColumn> for CpuWidgetTableData {
|
impl DataToCell<CpuWidgetColumn> for CpuWidgetTableData {
|
||||||
fn to_cell<'a>(&'a self, column: &CpuWidgetColumn, calculated_width: u16) -> Option<Text<'a>> {
|
fn to_cell<'a>(&'a self, column: &CpuWidgetColumn, calculated_width: u16) -> Option<Text<'a>> {
|
||||||
const CPU_HIDE_BREAKPOINT: u16 = 5;
|
const CPU_TRUNCATE_BREAKPOINT: u16 = 5;
|
||||||
|
|
||||||
// This is a bit of a hack, but apparently we can avoid having to do any fancy checks
|
// This is a bit of a hack, but apparently we can avoid having to do any fancy checks
|
||||||
// of showing the "All" on a specific column if the other is hidden by just always
|
// of showing the "All" on a specific column if the other is hidden by just always
|
||||||
|
@ -88,22 +88,22 @@ impl DataToCell<CpuWidgetColumn> for CpuWidgetTableData {
|
||||||
// it is too small.
|
// it is too small.
|
||||||
match &self {
|
match &self {
|
||||||
CpuWidgetTableData::All => match column {
|
CpuWidgetTableData::All => match column {
|
||||||
CpuWidgetColumn::CPU => Some(truncate_to_text("All", calculated_width)),
|
CpuWidgetColumn::CPU => Some("All".into()),
|
||||||
CpuWidgetColumn::Use => None,
|
CpuWidgetColumn::Use => None,
|
||||||
},
|
},
|
||||||
CpuWidgetTableData::Entry {
|
CpuWidgetTableData::Entry {
|
||||||
data_type,
|
data_type,
|
||||||
last_entry,
|
last_entry,
|
||||||
} => match column {
|
} => {
|
||||||
CpuWidgetColumn::CPU => {
|
if calculated_width == 0 {
|
||||||
if calculated_width == 0 {
|
None
|
||||||
None
|
} else {
|
||||||
} else {
|
match column {
|
||||||
match data_type {
|
CpuWidgetColumn::CPU => match data_type {
|
||||||
CpuDataType::Avg => Some(truncate_to_text("AVG", calculated_width)),
|
CpuDataType::Avg => Some(truncate_to_text("AVG", calculated_width)),
|
||||||
CpuDataType::Cpu(index) => {
|
CpuDataType::Cpu(index) => {
|
||||||
let index_str = index.to_string();
|
let index_str = index.to_string();
|
||||||
let text = if calculated_width < CPU_HIDE_BREAKPOINT {
|
let text = if calculated_width < CPU_TRUNCATE_BREAKPOINT {
|
||||||
truncate_to_text(&index_str, calculated_width)
|
truncate_to_text(&index_str, calculated_width)
|
||||||
} else {
|
} else {
|
||||||
truncate_to_text(
|
truncate_to_text(
|
||||||
|
@ -114,14 +114,14 @@ impl DataToCell<CpuWidgetColumn> for CpuWidgetTableData {
|
||||||
|
|
||||||
Some(text)
|
Some(text)
|
||||||
}
|
}
|
||||||
}
|
},
|
||||||
|
CpuWidgetColumn::Use => Some(truncate_to_text(
|
||||||
|
&format!("{:.0}%", last_entry.round()),
|
||||||
|
calculated_width,
|
||||||
|
)),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
CpuWidgetColumn::Use => Some(truncate_to_text(
|
}
|
||||||
&format!("{:.0}%", last_entry.round()),
|
|
||||||
calculated_width,
|
|
||||||
)),
|
|
||||||
},
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -123,6 +123,10 @@ impl ColumnHeader for DiskWidgetColumn {
|
||||||
|
|
||||||
impl DataToCell<DiskWidgetColumn> for DiskWidgetData {
|
impl DataToCell<DiskWidgetColumn> for DiskWidgetData {
|
||||||
fn to_cell<'a>(&'a self, column: &DiskWidgetColumn, calculated_width: u16) -> Option<Text<'a>> {
|
fn to_cell<'a>(&'a self, column: &DiskWidgetColumn, calculated_width: u16) -> Option<Text<'a>> {
|
||||||
|
if calculated_width == 0 {
|
||||||
|
return None;
|
||||||
|
}
|
||||||
|
|
||||||
let text = match column {
|
let text = match column {
|
||||||
DiskWidgetColumn::Disk => truncate_to_text(&self.name, calculated_width),
|
DiskWidgetColumn::Disk => truncate_to_text(&self.name, calculated_width),
|
||||||
DiskWidgetColumn::Mount => truncate_to_text(&self.mount_point, calculated_width),
|
DiskWidgetColumn::Mount => truncate_to_text(&self.mount_point, calculated_width),
|
||||||
|
|
|
@ -221,6 +221,10 @@ impl ProcWidgetData {
|
||||||
|
|
||||||
impl DataToCell<ProcColumn> for ProcWidgetData {
|
impl DataToCell<ProcColumn> for ProcWidgetData {
|
||||||
fn to_cell<'a>(&'a self, column: &ProcColumn, calculated_width: u16) -> Option<Text<'a>> {
|
fn to_cell<'a>(&'a self, column: &ProcColumn, calculated_width: u16) -> Option<Text<'a>> {
|
||||||
|
if calculated_width == 0 {
|
||||||
|
return None;
|
||||||
|
}
|
||||||
|
|
||||||
// TODO: Optimize the string allocations here...
|
// TODO: Optimize the string allocations here...
|
||||||
// TODO: Also maybe just pull in the to_string call but add a variable for the differences.
|
// TODO: Also maybe just pull in the to_string call but add a variable for the differences.
|
||||||
Some(truncate_to_text(
|
Some(truncate_to_text(
|
||||||
|
|
|
@ -17,6 +17,10 @@ impl ColumnHeader for SortTableColumn {
|
||||||
|
|
||||||
impl DataToCell<SortTableColumn> for &'static str {
|
impl DataToCell<SortTableColumn> for &'static str {
|
||||||
fn to_cell<'a>(&'a self, _column: &SortTableColumn, calculated_width: u16) -> Option<Text<'a>> {
|
fn to_cell<'a>(&'a self, _column: &SortTableColumn, calculated_width: u16) -> Option<Text<'a>> {
|
||||||
|
if calculated_width == 0 {
|
||||||
|
return None;
|
||||||
|
}
|
||||||
|
|
||||||
Some(truncate_to_text(self, calculated_width))
|
Some(truncate_to_text(self, calculated_width))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -30,6 +34,10 @@ impl DataToCell<SortTableColumn> for &'static str {
|
||||||
|
|
||||||
impl DataToCell<SortTableColumn> for Cow<'static, str> {
|
impl DataToCell<SortTableColumn> for Cow<'static, str> {
|
||||||
fn to_cell<'a>(&'a self, _column: &SortTableColumn, calculated_width: u16) -> Option<Text<'a>> {
|
fn to_cell<'a>(&'a self, _column: &SortTableColumn, calculated_width: u16) -> Option<Text<'a>> {
|
||||||
|
if calculated_width == 0 {
|
||||||
|
return None;
|
||||||
|
}
|
||||||
|
|
||||||
Some(truncate_to_text(self, calculated_width))
|
Some(truncate_to_text(self, calculated_width))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -49,6 +49,10 @@ impl TempWidgetData {
|
||||||
|
|
||||||
impl DataToCell<TempWidgetColumn> for TempWidgetData {
|
impl DataToCell<TempWidgetColumn> for TempWidgetData {
|
||||||
fn to_cell<'a>(&'a self, column: &TempWidgetColumn, calculated_width: u16) -> Option<Text<'a>> {
|
fn to_cell<'a>(&'a self, column: &TempWidgetColumn, calculated_width: u16) -> Option<Text<'a>> {
|
||||||
|
if calculated_width == 0 {
|
||||||
|
return None;
|
||||||
|
}
|
||||||
|
|
||||||
Some(match column {
|
Some(match column {
|
||||||
TempWidgetColumn::Sensor => truncate_to_text(&self.sensor, calculated_width),
|
TempWidgetColumn::Sensor => truncate_to_text(&self.sensor, calculated_width),
|
||||||
TempWidgetColumn::Temp => truncate_to_text(&self.temperature(), calculated_width),
|
TempWidgetColumn::Temp => truncate_to_text(&self.temperature(), calculated_width),
|
||||||
|
|
Loading…
Reference in New Issue