Comments (6)
I'm sure the maintainers are way ahead of me on this, but posting my findings anyway in case it helps...
The ScrollBar
does already release the mouse on a Hide
event, but perhaps related is #3460 where what Hide
means exactly needs some clarification.
textual/src/textual/scrollbar.py
Lines 291 to 294 in c7370f3
But more importantly this issue isn't only with scrollbars, but any widget which captures the mouse. For example, if you start a mouse selection with the TextArea
which is then hidden, you'll see the same behaviour.
from textual.
Digging deeper, what is interesting is the other contents do get a Hide
message, which further suggests that the issue here isn't that Hide
isn't getting posted, it's that a scrollbar isn't taken into account when sending such messages. For example, the problem documented here is fixed with:
diff --git a/src/textual/screen.py b/src/textual/screen.py
index f9674a47..1cee5b11 100644
--- a/src/textual/screen.py
+++ b/src/textual/screen.py
@@ -793,6 +793,8 @@ class Screen(Generic[ScreenResultType], Widget):
for widget in hidden:
widget.post_message(Hide())
+ if widget.vertical_scrollbar is not None:
+ widget.vertical_scrollbar.post_message(Hide())
# We want to send a resize event to widgets that were just added or change since last layout
send_resize = shown | resized
while likely not the actual fix to go with, I think it does suggest that it isn't down to a specific event not being posted, it's just that it isn't being posted as widely as it should.
from textual.
At a guess, I suspect it is the mouse capture system not "releasing" the mouse, if the scrollbar is made invisible.
Feels like an easy fix.
from textual.
Just to confirm things: I think @TomJGooding has perfectly summed up the issue here. The situation presented with the MRE above won't result in a Hide
event being posted, which does feed back into #3460.
from textual.
Related Issues (20)
- `Tabs.Cleared` documentation a little ambiguous HOT 3
- Disabled widgets prevent mouse scrolling HOT 4
- Discord invite link not working HOT 6
- Malformed @click links crash Textual application HOT 2
- How to link from docs to videos? HOT 2
- Loading Indicator page could use docs about `loading` attribute HOT 1
- Ability to replace text while keeping TextArea history HOT 4
- NoMatches error occurring when changing screens quickly in version 0.49+ HOT 14
- Hidden ListItem in ListView is selected when navigating with keyboard
- `Switch.action_toggle` name clash HOT 1
- Input and TextArea have cursor blinking even though terminal window is not focused HOT 8
- Intermittently failing test (`test_pilot.py::test_pilot_target_on_widget_that_is_not_visible_errors`)
- Add indicators for the TabbedContent widget HOT 6
- TextArea CTRL-k behavior request HOT 7
- Try/except on all app
- Exception not being raised in tests HOT 4
- `DataTable` scrolling issues with `max-height: 100vh` HOT 4
- Include default CSS in docs? HOT 1
- Hiding a `TextArea` while mouse-based selection is happening can trap the cursor HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from textual.