mirror of
https://github.com/fjvallarino/monomer.git
synced 2024-09-20 16:27:49 +03:00
Send Focus event when requesting focus. Set focus before sending event
This commit is contained in:
parent
a08fa9f531
commit
47f28ab3cb
@ -159,7 +159,7 @@ buildUI model = trace "Creating UI" widgetTree where
|
|||||||
-- listView textField1 items id,
|
-- listView textField1 items id,
|
||||||
-- button IncButton "Click!"
|
-- button IncButton "Click!"
|
||||||
-- ] `key` "Main"
|
-- ] `key` "Main"
|
||||||
widgetTree = traceShow model $ vstack [
|
widgetTree = vstack [
|
||||||
hstack [
|
hstack [
|
||||||
radioV (model ^. fruit) RadioSt Apple,
|
radioV (model ^. fruit) RadioSt Apple,
|
||||||
radioV (model ^. fruit) RadioSt Orange,
|
radioV (model ^. fruit) RadioSt Orange,
|
||||||
|
@ -143,19 +143,17 @@ handleFocusChange
|
|||||||
handleFocusChange systemEvent stopProcessing (wenv, events, widgetRoot)
|
handleFocusChange systemEvent stopProcessing (wenv, events, widgetRoot)
|
||||||
| focusChangeRequested = do
|
| focusChangeRequested = do
|
||||||
oldFocus <- use pathFocus
|
oldFocus <- use pathFocus
|
||||||
(newWenv1, newEvents1, newRoot1)
|
(wenv1, events1, root1) <- handleSystemEvent wenv Blur oldFocus widgetRoot
|
||||||
<- handleSystemEvent wenv Blur oldFocus widgetRoot
|
|
||||||
|
|
||||||
let newFocus = findNextFocus newWenv1 oldFocus newRoot1
|
let newFocus = findNextFocus wenv1 oldFocus root1
|
||||||
let tempWenv = newWenv1 {
|
let tempWenv = wenv1 {
|
||||||
_weFocusedPath = newFocus
|
_weFocusedPath = newFocus
|
||||||
}
|
}
|
||||||
(newWenv2, newEvents2, newRoot2)
|
|
||||||
<- handleSystemEvent tempWenv Focus newFocus newRoot1
|
|
||||||
|
|
||||||
pathFocus .= newFocus
|
pathFocus .= newFocus
|
||||||
|
(wenv2, events2, root2) <- handleSystemEvent tempWenv Focus newFocus root1
|
||||||
|
|
||||||
return (newWenv2, events >< newEvents1 >< newEvents2, newRoot2)
|
return (wenv2, events >< events1 >< events2, root2)
|
||||||
| otherwise = return (wenv, events, widgetRoot)
|
| otherwise = return (wenv, events, widgetRoot)
|
||||||
where
|
where
|
||||||
focusChangeRequested = not stopProcessing && isKeyPressed systemEvent keyTab
|
focusChangeRequested = not stopProcessing && isKeyPressed systemEvent keyTab
|
||||||
@ -165,12 +163,13 @@ handleFocusSet
|
|||||||
=> Seq (WidgetRequest s)
|
=> Seq (WidgetRequest s)
|
||||||
-> HandlerStep s e
|
-> HandlerStep s e
|
||||||
-> m (HandlerStep s e)
|
-> m (HandlerStep s e)
|
||||||
handleFocusSet reqs previousStep =
|
handleFocusSet reqs previousStep@(wenv, events, root) =
|
||||||
case Seq.filter isSetFocus reqs of
|
case Seq.filter isSetFocus reqs of
|
||||||
SetFocus newFocus :<| _ -> do
|
SetFocus newFocus :<| _ -> do
|
||||||
pathFocus .= newFocus
|
pathFocus .= newFocus
|
||||||
|
(wenv2, events2, root2) <- handleSystemEvent wenv Focus newFocus root
|
||||||
|
|
||||||
return previousStep
|
return (wenv2, events >< events2, root2)
|
||||||
_ -> return previousStep
|
_ -> return previousStep
|
||||||
|
|
||||||
handleResize
|
handleResize
|
||||||
|
4
tasks.md
4
tasks.md
@ -177,11 +177,11 @@
|
|||||||
- Think widget config in a similar way to style config (combinator functions)
|
- Think widget config in a similar way to style config (combinator functions)
|
||||||
- textField should support textFieldV and validInputV
|
- textField should support textFieldV and validInputV
|
||||||
- Add mandatory event parameter for V constructors
|
- Add mandatory event parameter for V constructors
|
||||||
|
- Why does the model update when trying to input a char in FloatingInput?
|
||||||
|
|
||||||
- Pending
|
- Pending
|
||||||
- Why does the model update when trying to input a char in FloatingInput?
|
|
||||||
- Focus event not received after clicking and gaining focus
|
- Focus event not received after clicking and gaining focus
|
||||||
- Rethink focus handling. Maybe return list of all focusable elements? Currently shift-tab is not possible
|
- Rethink focus handling. Maybe return a list of all focusable elements? Currently shift-tab is not possible
|
||||||
- http://hackage.haskell.org/package/data-clist-0.1.2.3
|
- http://hackage.haskell.org/package/data-clist-0.1.2.3
|
||||||
- Think about argument position for widgets, in particular listview/radio
|
- Think about argument position for widgets, in particular listview/radio
|
||||||
- Should value come before items/option?
|
- Should value come before items/option?
|
||||||
|
Loading…
Reference in New Issue
Block a user