-
Notifications
You must be signed in to change notification settings - Fork 7
InputPanel
Refaltor77 edited this page Mar 29, 2026
·
1 revision
Input handling element with focus navigation, button mappings, and modal support.
use refaltor\ui\elements\InputPanel;
$input = InputPanel::create("my_input_panel");$input->setModal(true); // Blocks input to elements behind
$input->setInlineModal(true); // Inline modal behavior$input->setAlwaysListenToInput(true); // Always capture input
$input->setGestureTrackingButton(true); // Track touch/drag gestures
$input->setAlwaysHandlePointer(true); // Always handle pointer$input->setFocusEnabled(true);
$input->setFocusIdentifier("my_focus");
$input->setDefaultFocusPrecedence(true);
$input->setUseLastFocus(true);
// Navigation targets
$input->setFocusChangeUp("element_above");
$input->setFocusChangeDown("element_below");
$input->setFocusChangeLeft("element_left");
$input->setFocusChangeRight("element_right");Map gamepad/keyboard buttons to actions:
$input->addButtonMapping(
"button.menu_cancel", // From button
"button.menu_exit", // To button
"pressed", // Mapping type
"not_gaze" // Input mode condition
);
$input->addButtonMapping("button.menu_select", "button.menu_ok", "pressed");$dialog = InputPanel::create("modal_dialog")
->setModal(true)
->setAlwaysListenToInput(true)
->setFocusEnabled(true)
->setFocusIdentifier("dialog_focus")
->addButtonMapping("button.menu_cancel", "button.menu_exit", "pressed")
->addButtonMapping("button.menu_select", "button.menu_ok", "pressed")
->setSize(250, 180)
->setAnchorFrom(Element::ANCHOR_CENTER)
->setAnchorTo(Element::ANCHOR_CENTER);
$dialog->addChild(
Label::create("dialog_text", "Are you sure?")
->setShadow()
->setAnchorFrom(Element::ANCHOR_CENTER)
->setAnchorTo(Element::ANCHOR_CENTER)
);$gesture = InputPanel::create("drag_area")
->setModal(false)
->setGestureTrackingButton(true)
->setAlwaysHandlePointer(true)
->setSize(200, 200);