mirror of
https://github.com/Insality/druid.git
synced 2025-09-28 18:42:19 +02:00
Update
This commit is contained in:
@@ -0,0 +1,50 @@
|
||||
# Druid Blocker Component
|
||||
|
||||
## Description
|
||||
|
||||
The Blocker component is designed to consume input in a specific zone defined by a GUI node. It's useful for creating unclickable zones within buttons or for creating panels of buttons on top of another button.
|
||||
|
||||
## Features
|
||||
|
||||
- Blocks input in a specific zone
|
||||
- Can be enabled or disabled programmatically
|
||||
- Useful for creating safe zones in UI
|
||||
|
||||
## Basic Usage
|
||||
|
||||
```lua
|
||||
local blocker = self.druid:new_blocker("blocker_node")
|
||||
```
|
||||
|
||||
### Parameters
|
||||
|
||||
- **node**: The node or node_id of the blocker node
|
||||
|
||||
## Methods
|
||||
|
||||
```lua
|
||||
-- Enable or disable the blocker
|
||||
blocker:set_enabled(true) -- Enable
|
||||
blocker:set_enabled(false) -- Disable
|
||||
|
||||
-- Check if blocker is enabled
|
||||
local is_enabled = blocker:is_enabled()
|
||||
```
|
||||
|
||||
## Notes
|
||||
|
||||
- The Blocker component consumes input if `gui.pick_node` works on it
|
||||
- The Blocker node should be enabled to capture input
|
||||
- The initial enabled state is determined by `gui.is_enabled(node, true)`
|
||||
- Blocker is useful for creating "safe zones" in your UI, where you have large buttons with specific clickable areas
|
||||
- A common use case is to place a blocker with window content behind a close button, so clicking outside the close button (but still on the window) doesn't trigger actions from elements behind the window
|
||||
|
||||
### Example Use Case
|
||||
|
||||

|
||||
|
||||
In this example:
|
||||
- Blue zone is a **button** with close_window callback
|
||||
- Yellow zone is a blocker with window content
|
||||
|
||||
This setup creates a safe zone where the user can interact with the window content without accidentally triggering actions from elements behind the window.
|
||||
|
Reference in New Issue
Block a user