@@ -15,7 +15,7 @@ module FF.Qt.TaskListWidget (
1515 upsertTask ,
1616) where
1717
18- import Control.Monad (void , when )
18+ import Control.Monad (when )
1919import Data.Foldable (for_ )
2020import Data.IORef (IORef , modifyIORef , newIORef , readIORef )
2121import Data.Map.Strict (Map , (!) )
@@ -90,6 +90,7 @@ new :: IO TaskListWidget
9090new = do
9191 parent <- QTreeWidget. new
9292 QAbstractItemView. setAlternatingRowColors parent True
93+ QAbstractItemView. setSelectionMode parent QAbstractItemView. SingleSelection
9394 QTreeWidget. setHeaderLabels parent $
9495 fieldsToStrings \ case
9596 TitleField -> " Title"
@@ -116,7 +117,7 @@ setDebugInfoVisible this v = do
116117
117118upsertTask :: TaskListWidget -> EntityView Note -> IO ()
118119upsertTask this entity = do
119- today <- utctDay <$> getCurrentTime
120+ today <- utctDay <$> getCurrentTime -- TODO get local day
120121 let mode = taskMode today note
121122 mExisting <- Map. lookup noteId <$> readIORef this. taskItems
122123 case mExisting of
@@ -127,11 +128,13 @@ upsertTask this entity = do
127128 Just (oldMode, item) -> do
128129 updateTaskItem item entity
129130 when (oldMode /= mode) do
131+ wasSelected <- QTreeWidgetItem. isSelected item
130132 oldModeItem <- (! oldMode) <$> readIORef this. modeItems
131133 idx <- QTreeWidgetItem. indexOfChild oldModeItem item
132- void $ QTreeWidgetItem. takeChild oldModeItem idx
134+ _ <- QTreeWidgetItem. takeChild oldModeItem idx
133135 newModeItem <- getOrCreateModeItem this mode
134136 QTreeWidgetItem. addChild newModeItem item
137+ when wasSelected $ QTreeWidget. setCurrentItem this. parent item
135138 modifyIORef this. taskItems $ Map. insert noteId (mode, item)
136139 where
137140 Entity {entityId = DocId noteId, entityVal = NoteView {note}} = entity
0 commit comments