이 버그 발견하고 그자리에서 원인 찾아봤는데
시간이 없어서 제대로 확인해 보지는 못했지만
타일에 내용이 다 채워지기도 전에 save가 되는 것 같습니다.
insertTile() -> afterInserted() -> emit inserted() -> save() 로 연결되게 해놨는데
순서가 꼬인 것 같아요.
내일 작업할 때 원인 내용 바뀌면 다시 코멘트 올리겠습니다.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
위에 언급된 원인이 맞구요...
동작 방식을 크게 바꾸었습니다.
우선 각 타일들이, 자신들이 소유한 서브워크스페이스에서 발생하는 inserted, deleted 시그널을 전부 부모로 재전송 시키게 하였습니다.
따라서 최상위 워크스페이스는 소유한 모든 워크스페이스의 변경사항을 감지할 수 있겠죠.
이 상태에서, EDockTileTab은, 타일모음창에 있는 최상위 워크스페이스의 변경이 되면 바로 저장하는 게 아니라 "지연 쓰기/deferred write" 를 합니다.
워크스페이스에 변경이 가해졌다는 뜻으로 bIsDirty**** 의 변수가 true로 세팅이 되면 (더럽다고 표시되면), 타이머가 돌면서 이를 청소하는 방식입니다. 타이머 주기는 50ms 입니다.
따라서 50ms 안에, 워크스페이스의 내용이 바뀌면 자동으로 저장되게 됩니다.
확인해보시고 잘 되시는지 안되는지 확인해 주세요.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
이 버그 발견하고 그자리에서 원인 찾아봤는데
시간이 없어서 제대로 확인해 보지는 못했지만
타일에 내용이 다 채워지기도 전에 save가 되는 것 같습니다.
insertTile() -> afterInserted() -> emit inserted() -> save() 로 연결되게 해놨는데
순서가 꼬인 것 같아요.
내일 작업할 때 원인 내용 바뀌면 다시 코멘트 올리겠습니다.
위에 언급된 원인이 맞구요...
동작 방식을 크게 바꾸었습니다.
우선 각 타일들이, 자신들이 소유한 서브워크스페이스에서 발생하는 inserted, deleted 시그널을 전부 부모로 재전송 시키게 하였습니다.
따라서 최상위 워크스페이스는 소유한 모든 워크스페이스의 변경사항을 감지할 수 있겠죠.
이 상태에서, EDockTileTab은, 타일모음창에 있는 최상위 워크스페이스의 변경이 되면 바로 저장하는 게 아니라 "지연 쓰기/deferred write" 를 합니다.
워크스페이스에 변경이 가해졌다는 뜻으로 bIsDirty**** 의 변수가 true로 세팅이 되면 (더럽다고 표시되면), 타이머가 돌면서 이를 청소하는 방식입니다. 타이머 주기는 50ms 입니다.
따라서 50ms 안에, 워크스페이스의 내용이 바뀌면 자동으로 저장되게 됩니다.
확인해보시고 잘 되시는지 안되는지 확인해 주세요.
확장타일탭에 타일 저장이 잘됩니다.
근데 확장타일탭에 타일 등록후 프로그램을 재 실행하면 자동으로 등록된 타일도 로드가 되는군요. 사용자가 일부러 지워야 한다는... 큰 문제는 아니지만 뭔가 불편해 보입니다.
그래서 New Project를 할 때 확장타일 탭의 내용도 지우거나, 하는 방법이 필요해 보입니다.
-> 일단은 내비두고. ㅎㅎ