You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: CHANGELOG.md
+13-2
Original file line number
Diff line number
Diff line change
@@ -7,9 +7,19 @@ and this project adheres to [Semantic Versioning](http://semver.org/).
7
7
8
8
## Unreleased
9
9
10
+
### Fixed
11
+
12
+
- Fixed `Pilot.click` not working with `times` parameter https://github.com/Textualize/textual/pull/5398
13
+
10
14
### Added
11
15
12
-
- Added `Select.type_to_search` which allows you to type to move the cursor to a matching option https://github.com/Textualize/textual/pull/5403
16
+
- Added `from_app_focus` to `Focus` event to indicate if a widget is being focused because the app itself has regained focus or not https://github.com/Textualize/textual/pull/5379
17
+
-- Added `Select.type_to_search` which allows you to type to move the cursor to a matching option https://github.com/Textualize/textual/pull/5403
18
+
19
+
### Changed
20
+
21
+
- The content of an `Input` will now only be automatically selected when the widget is focused by the user, not when the app itself has regained focus (similar to web browsers). https://github.com/Textualize/textual/pull/5379
22
+
- Updated `TextArea` and `Input` behavior when there is a selection and the user presses left or right https://github.com/Textualize/textual/pull/5400
13
23
14
24
15
25
## [1.0.0] - 2024-12-12
@@ -21,7 +31,8 @@ and this project adheres to [Semantic Versioning](http://semver.org/).
21
31
- Added `system` boolean to Binding, which hides the binding from the help panel https://github.com/Textualize/textual/pull/5352
22
32
- Added support for double/triple/etc clicks via `chain` attribute on `Click` events https://github.com/Textualize/textual/pull/5369
23
33
- Added `times` parameter to `Pilot.click` method, for simulating rapid clicks https://github.com/Textualize/textual/pull/5369
24
-
34
+
- Text can now be select using mouse or keyboard in the Input widget https://github.com/Textualize/textual/pull/5340
35
+
25
36
### Changed
26
37
27
38
- Breaking change: Change default quit key to `ctrl+q`https://github.com/Textualize/textual/pull/5352
Copy file name to clipboardExpand all lines: docs/guide/queries.md
+11-2
Original file line number
Diff line number
Diff line change
@@ -1,6 +1,6 @@
1
1
# DOM Queries
2
2
3
-
In the previous chapter we introduced the [DOM](../guide/CSS.md#the-dom) which is how Textual apps keep track of widgets. We saw how you can apply styles to the DOM with CSS [selectors](./CSS.md#selectors).
3
+
In the [CSS chapter](./CSS.md) we introduced the [DOM](../guide/CSS.md#the-dom) which is how Textual apps keep track of widgets. We saw how you can apply styles to the DOM with CSS [selectors](./CSS.md#selectors).
4
4
5
5
Selectors are a very useful idea and can do more than apply styles. We can also find widgets in Python code with selectors, and make updates to widgets in a simple expressive way. Let's look at how!
6
6
@@ -19,7 +19,7 @@ We could do this with the following line of code:
19
19
send_button =self.query_one("#send")
20
20
```
21
21
22
-
This will retrieve a widget with an ID of `send`, if there is exactly one.
22
+
This will retrieve the first widget discovered with an ID of `send`.
23
23
If there are no matching widgets, Textual will raise a [NoMatches][textual.css.query.NoMatches] exception.
24
24
25
25
You can also add a second parameter for the expected type, which will ensure that you get the type you are expecting.
@@ -41,6 +41,15 @@ For instance, the following would return a `Button` instance (assuming there is
41
41
my_button =self.query_one(Button)
42
42
```
43
43
44
+
`query_one` searches the DOM *below* the widget it is called on, so if you call `query_one` on a widget, it will only find widgets that are descendants of that widget.
45
+
46
+
If you wish to search the entire DOM, you should call `query_one` on the `App` or `Screen` instance.
47
+
48
+
```python
49
+
# Search the entire Screen for a widget with an ID of "send-email"
50
+
self.screen.query_one("#send-email")
51
+
```
52
+
44
53
## Making queries
45
54
46
55
Apps and widgets also have a [query][textual.dom.DOMNode.query] method which finds (or queries) widgets. This method returns a [DOMQuery][textual.css.query.DOMQuery] object which is a list-like container of widgets.
0 commit comments