diff -r c1f778c85ec1 -r b14874ad8460 DirectoryContentsBrowser.st --- a/DirectoryContentsBrowser.st Mon Feb 02 17:10:58 2004 +0100 +++ b/DirectoryContentsBrowser.st Mon Feb 02 17:29:14 2004 +0100 @@ -13,25 +13,25 @@ "{ Package: 'stx:libtool' }" AbstractDirectoryBrowser subclass:#DirectoryContentsBrowser - instanceVariableNames:'modificationTime directory columnDescriptors iconIndex - fileDescriptionIndex iconExtent tableColumns previewIndex - draggedItem viewBrowserMenu updateContentsSelection - selectionInFileList browserItemList matchBlock updateTask - directoryChangeFlag directoryContentsChangeFlag filterChangeFlag - sortBlockChangeFlag isBusy changeSema filteredItems allItems - diskUsageInfo diskUsageUpdateProcess' - classVariableNames:'' - poolDictionaries:'' - category:'Interface-Tools-File' + instanceVariableNames:'modificationTime directory columnDescriptors iconIndex + fileDescriptionIndex iconExtent tableColumns previewIndex + draggedItem viewBrowserMenu updateContentsSelection + selectionInFileList browserItemList matchBlock updateTask + directoryChangeFlag directoryContentsChangeFlag filterChangeFlag + sortBlockChangeFlag isBusy changeSema filteredItems allItems + diskUsageInfo diskUsageUpdateProcess' + classVariableNames:'' + poolDictionaries:'' + category:'Interface-Tools-File' ! Object subclass:#DirectoryContentsItem - instanceVariableNames:'fileName fileInfo icon fileType - contentsBrowserChangeModificationTime suffix preview group owner - timeAndDate mimeType iconKey mimeTypeForContents' - classVariableNames:'LastUIDToUserNameMapping LastGIDToGroupNameMapping' - poolDictionaries:'' - privateIn:DirectoryContentsBrowser + instanceVariableNames:'fileName fileInfo icon fileType + contentsBrowserChangeModificationTime suffix preview group owner + timeAndDate mimeType iconKey mimeTypeForContents' + classVariableNames:'LastUIDToUserNameMapping LastGIDToGroupNameMapping' + poolDictionaries:'' + privateIn:DirectoryContentsBrowser ! !DirectoryContentsBrowser class methodsFor:'documentation'! @@ -117,7 +117,6 @@ !DirectoryContentsBrowser class methodsFor:'constant'! debug - ^ false ! @@ -2014,11 +2013,6 @@ ^ icon ! -updateChangesFor:anItem - - anItem resetItemForChanges. -! - updateColumnsCycle " update items in the foolowing order - update item if item properties are changed @@ -2038,14 +2032,12 @@ browserItemList notEmpty ifTrue:[ "/ update item if item properties are changed - desc := self findNextVisibleItemFor:[:n| n hasBeenModified ]. - - desc notNil ifTrue:[ - self updateChangesFor:desc. - browser invalidateVisibleRow:desc. - self debugMessage:'item properties are changed', desc baseName. - ^ true. - ]. +"/ desc := self findNextVisibleItemFor:[:n| n accessFirstTime ]. +"/ desc notNil ifTrue:[ +"/ browser invalidateVisibleRow:desc. +"/ self debugMessage:'item properties are changed ', desc baseName. +"/ ^ true. +"/ ]. "/ update icon for visible items by suffix desc := self findNextVisibleItemFor:[:n| n icon isNil ]. desc notNil ifTrue:[ @@ -2054,7 +2046,7 @@ (icon notNil and:[iconIndex ~~ 0]) ifTrue:[ browser invalidateVisibleRow:desc colAt:iconIndex ]. - self debugMessage:'icon for visible items by suffix', desc baseName. + self debugMessage:'icon for visible items ', desc baseName. ^ true ]. "/ update icon for visible items by contents @@ -2077,7 +2069,7 @@ desc notNil ifTrue:[ type := self getFileInfoFor:desc. type notNil ifTrue:[browser invalidateVisibleRow:desc colAt:fileDescriptionIndex]. - self debugMessage:'file info for visible items if file info column is shown', desc baseName. + self debugMessage:'file info for visible items if file info column is shown ', desc baseName. ^ true ] ]. @@ -2089,7 +2081,7 @@ preview notNil ifTrue:[ browser invalidateVisibleRow:desc colAt:previewIndex ]. - self debugMessage:'preview for visible items if preview column is shown', desc baseName. + self debugMessage:'preview for visible items if preview column is shown ', desc baseName. ^ true ] ]. @@ -2102,7 +2094,7 @@ desc notNil ifTrue:[ icon := self getIconFor:desc. desc icon:icon. - self debugMessage:'icon for invisible items by suffix', desc baseName. + self debugMessage:'icon for invisible items by suffix ', desc baseName. ^ true ]. "/ update icon for invisible items by contents @@ -2110,7 +2102,7 @@ desc notNil ifTrue:[ icon := self getIconForMimeTypeByContents:desc. desc icon:icon. - self debugMessage:'icon for invisible items by contents', desc baseName. + self debugMessage:'icon for invisible items by contents ', desc baseName. ^ true ]. "/ update file info for invisible items if file info column is shown @@ -2118,7 +2110,7 @@ desc := self findNextItemFor:[:n| n fileType isNil ]. desc notNil ifTrue:[ self getFileInfoFor:desc. - self debugMessage:'update file info for invisible items if file info column is shown', desc baseName. + self debugMessage:'update file info for invisible items if file info column is shown ', desc baseName. ^ true ]. ]. @@ -2127,7 +2119,7 @@ desc := self findNextItemFor:[:n| n preview isNil ]. desc notNil ifTrue:[ self getPreviewFor:desc. - self debugMessage:'update preview for invisible items if preview column is shown:', desc baseName. + self debugMessage:'update preview for invisible items if preview column is shown: ', desc baseName. ^ true ]. ]. @@ -2135,7 +2127,7 @@ desc := self findNextItemFor:[:n| n fileType isNil ]. desc notNil ifTrue:[ self getFileInfoFor:desc. - self debugMessage:'update file info for invisible items if file info column is not shown:', desc baseName. + self debugMessage:'update file info for invisible items if file info column is not shown: ', desc baseName. ^ true ]. ]. @@ -2146,7 +2138,7 @@ modificationCycle - | oldModificationTime | + | oldModificationTime desc| directory notNil ifTrue:[ directory exists not ifTrue:[ self directoryChangeFlag:true. @@ -2158,6 +2150,13 @@ self wakeUpForDirectoryContentsChanged. ]. ]. + desc := self findNextItemFor:[:n| n hasBeenModified ]. + desc notNil ifTrue:[ + desc resetItem. + browser invalidateVisibleRow:desc. + self debugMessage:'item is modified ', desc baseName. + ^ self. + ]. ! ! !DirectoryContentsBrowser methodsFor:'update task'! @@ -2334,6 +2333,7 @@ updateStep AbortSignal handle:[ + "if directory changed all running update flags must be reset" self debugMessage:'got an abort signal'. self directoryContentsChangeFlag:false. self filterChangeFlag:false. @@ -2389,6 +2389,8 @@ self updateColumnsCycle ifTrue:[ self debugMessage:'next time another columns update'. self changeSema signal + ] ifFalse:[ + self debugMessage:'next time not another columns update'. ]. ] ensure:[ self isBusy:false. @@ -2776,7 +2778,7 @@ ] ! -resetItemForChanges +resetItem " dont know what someone else is doing with the file - read all item properties new " fileInfo := nil. @@ -2796,22 +2798,17 @@ "check if item modification time is changed " - | time info| + | info| self isRemoteDirectory ifTrue:[^ false]. - info := fileName info. - info isNil ifTrue:[ ^ false]. - time := info modificationTime. - - contentsBrowserChangeModificationTime isNil ifTrue:[ - contentsBrowserChangeModificationTime := time. - fileInfo := nil. - ^ false. + fileInfo isNil ifTrue:[ + "first time of invokation " + info := self getFileInfo. + info isNil ifTrue:[ ^ false]. + ^ true ]. - ((contentsBrowserChangeModificationTime = time) not) ifTrue:[ - contentsBrowserChangeModificationTime := time. - fileInfo := nil. + self modificationTime ~= fileName modificationTime ifTrue:[ ^ true ]. ^ false @@ -3101,5 +3098,5 @@ !DirectoryContentsBrowser class methodsFor:'documentation'! version - ^ '$Header: /cvs/stx/stx/libtool/DirectoryContentsBrowser.st,v 1.148 2004-02-02 16:10:58 ca Exp $' + ^ '$Header: /cvs/stx/stx/libtool/DirectoryContentsBrowser.st,v 1.149 2004-02-02 16:29:14 penk Exp $' ! !