Skip to content

Commit 254d5ed

Browse files
committed
ff-qtah: Keep current item after update
1 parent 29d8cdc commit 254d5ed

1 file changed

Lines changed: 6 additions & 3 deletions

File tree

ff-qtah/FF/Qt/TaskListWidget.hs

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ module FF.Qt.TaskListWidget (
1515
upsertTask,
1616
) where
1717

18-
import Control.Monad (void, when)
18+
import Control.Monad (when)
1919
import Data.Foldable (for_)
2020
import Data.IORef (IORef, modifyIORef, newIORef, readIORef)
2121
import Data.Map.Strict (Map, (!))
@@ -90,6 +90,7 @@ new :: IO TaskListWidget
9090
new = 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

117118
upsertTask :: TaskListWidget -> EntityView Note -> IO ()
118119
upsertTask 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

Comments
 (0)