Focus locking and popups
This commit is contained in:
parent
96b293d1b5
commit
c7496c7b42
13 changed files with 296 additions and 145 deletions
|
|
@ -7,11 +7,14 @@ void FloatingWidget::process(const EventHandler& events) {
|
|||
|
||||
if (getRelativeAreaT().isInside(pointer) && events.isPressed(InputID::MOUSE1)) {
|
||||
layout()->startAction(pointer);
|
||||
|
||||
bringToFront();
|
||||
lockFocus();
|
||||
}
|
||||
|
||||
if (layout()->isFloating() && events.isReleased(InputID::MOUSE1)) {
|
||||
layout()->endAction();
|
||||
freeFocus();
|
||||
}
|
||||
|
||||
layout()->updateAction(pointer);
|
||||
|
|
@ -22,6 +25,10 @@ void FloatingWidget::draw(Canvas& canvas) {
|
|||
canvas.rect(getRelativeArea(), RGBA(0.5f), 10);
|
||||
}
|
||||
|
||||
bool FloatingWidget::processesEvents() const {
|
||||
return true;
|
||||
}
|
||||
|
||||
bool FloatingWidget::propagateEventsToChildren() const {
|
||||
return !layout()->isFloating();
|
||||
}
|
||||
|
|
@ -39,3 +46,4 @@ FloatingLayout* FloatingWidget::layout() { return dynamic_cast<FloatingLayout*>(
|
|||
const FloatingLayout* FloatingWidget::layout() const {
|
||||
return dynamic_cast<const FloatingLayout*>(Widget::getLayout());
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue