mirror of
https://github.com/Textualize/textual.git
synced 2025-10-17 02:38:12 +03:00
changelog
This commit is contained in:
@@ -5,6 +5,12 @@ All notable changes to this project will be documented in this file.
|
||||
The format is based on [Keep a Changelog](http://keepachangelog.com/)
|
||||
and this project adheres to [Semantic Versioning](http://semver.org/).
|
||||
|
||||
## [0.79.1] - 2024-08-31
|
||||
|
||||
### Fixed
|
||||
|
||||
- Fixed broken updates when non active screen changes
|
||||
|
||||
## [0.79.0] - 2024-08-30
|
||||
|
||||
### Added
|
||||
|
||||
@@ -31,6 +31,12 @@ Here's what the finished app will look like:
|
||||
```{.textual path="docs/examples/tutorial/stopwatch.py" title="stopwatch.py" press="tab,enter,tab,enter,tab,enter,tab,enter"}
|
||||
```
|
||||
|
||||
!!! info
|
||||
|
||||
Did you notice the `^p palette` at the bottom right hand corner?
|
||||
This is the [Command Palette](./guide/command_palette.md).
|
||||
You can think of it as a dedicated command prompt for your app.
|
||||
|
||||
### Try it out!
|
||||
|
||||
The following is *not* a screenshot, but a fully interactive Textual app running in your browser.
|
||||
|
||||
@@ -18,7 +18,7 @@ class DictionaryApp(App):
|
||||
CSS_PATH = "dictionary.tcss"
|
||||
|
||||
def compose(self) -> ComposeResult:
|
||||
yield Input(placeholder="Search for a word")
|
||||
yield Input(placeholder="Search for a word", id="dictionary-search")
|
||||
with VerticalScroll(id="results-container"):
|
||||
yield Markdown(id="results")
|
||||
|
||||
|
||||
@@ -2,7 +2,7 @@ Screen {
|
||||
background: $panel;
|
||||
}
|
||||
|
||||
Input {
|
||||
Input#dictionary-search {
|
||||
dock: top;
|
||||
margin: 1 0;
|
||||
}
|
||||
|
||||
@@ -935,8 +935,9 @@ class Screen(Generic[ScreenResultType], Widget):
|
||||
elif (
|
||||
self in self.app._background_screens and self._compositor._dirty_regions
|
||||
):
|
||||
# Background screen
|
||||
self._set_dirty(*self._compositor._dirty_regions)
|
||||
app.screen.refresh(*self._compositor._dirty_regions)
|
||||
self._repaint_required = True
|
||||
self._compositor._dirty_regions.clear()
|
||||
self._dirty_widgets.clear()
|
||||
app._update_mouse_over(self)
|
||||
@@ -1097,6 +1098,7 @@ class Screen(Generic[ScreenResultType], Widget):
|
||||
message.prevent_default()
|
||||
widget = message.widget
|
||||
assert isinstance(widget, Widget)
|
||||
|
||||
self._dirty_widgets.add(widget)
|
||||
self.check_idle()
|
||||
|
||||
|
||||
@@ -1460,10 +1460,14 @@ def test_system_commands(snap_compare):
|
||||
|
||||
class SimpleApp(App):
|
||||
def compose(self) -> ComposeResult:
|
||||
yield Input()
|
||||
input = Input()
|
||||
input.cursor_blink = False
|
||||
yield input
|
||||
|
||||
app = SimpleApp()
|
||||
app.animation_level = "none"
|
||||
assert snap_compare(
|
||||
SimpleApp(),
|
||||
app,
|
||||
terminal_size=(100, 30),
|
||||
press=["ctrl+p"],
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user