mirror of
https://github.com/Insality/druid
synced 2025-06-27 10:27:48 +02:00
51 lines
1.6 KiB
Markdown
51 lines
1.6 KiB
Markdown
# 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.
|