--- a/eric6/UI/BrowserModel.py Fri Sep 04 18:48:52 2020 +0200 +++ b/eric6/UI/BrowserModel.py Fri Sep 04 18:50:43 2020 +0200 @@ -199,7 +199,7 @@ childItem = index.internalPointer() parentItem = childItem.parent() - if parentItem == self.rootItem: + if parentItem is None or parentItem == self.rootItem: return QModelIndex() return self.createIndex(parentItem.row(), 0, parentItem) @@ -657,7 +657,8 @@ node = BrowserCodingItem( parentItem, QCoreApplication.translate("BrowserModel", "Coding: {0}") - .format(dictionary["@@Coding@@"].coding)) + .format(dictionary["@@Coding@@"].coding), + dictionary["@@Coding@@"].linenumber) self._addItem(node, parentItem) if "@@Globals@@" in keys: node = BrowserGlobalsItem( @@ -693,7 +694,8 @@ if repopulate: self.endInsertRows() parentItem._populated = True - if (parentItem.type_ == BrowserItemFile and + if ( + parentItem.type_ == BrowserItemFile and fileName not in self.watchedFileItems ): # watch the file only in the file browser not the project viewer @@ -755,21 +757,6 @@ for name in list(cl.methods.keys()): keys.append((name, 'm')) - if len(keys) > 0: - if repopulate: - self.beginInsertRows( - self.createIndex(parentItem.row(), 0, parentItem), - 0, len(keys) - 1) - for key, kind in keys: - if kind == 'c': - node = BrowserClassItem(parentItem, cl.classes[key], file_) - elif kind == 'm': - node = BrowserMethodItem(parentItem, cl.methods[key], - file_) - self._addItem(node, parentItem) - if repopulate: - self.endInsertRows() - if len(cl.attributes): node = BrowserClassAttributesItem( parentItem, cl.attributes, @@ -790,6 +777,21 @@ node, self.createIndex(parentItem.row(), 0, parentItem)) else: self._addItem(node, parentItem) + + if len(keys) > 0: + if repopulate: + self.beginInsertRows( + self.createIndex(parentItem.row(), 0, parentItem), + 0, len(keys) - 1) + for key, kind in keys: + if kind == 'c': + node = BrowserClassItem(parentItem, cl.classes[key], file_) + elif kind == 'm': + node = BrowserMethodItem(parentItem, cl.methods[key], + file_) + self._addItem(node, parentItem) + if repopulate: + self.endInsertRows() def populateMethodItem(self, parentItem, repopulate=False): """ @@ -1862,17 +1864,32 @@ """ Class implementing the data structure for browser coding items. """ - def __init__(self, parent, text): + def __init__(self, parent, text, linenumber): """ Constructor @param parent parent item - @param text text to be shown by this item (string) + @type BrowserItem + @param text text to be shown by this item + @type str + @param linenumber line number of the coding line + @type int """ BrowserItem.__init__(self, parent, text) self.type_ = BrowserItemCoding self.icon = UI.PixmapCache.getIcon("textencoding") + + self.__lineno = linenumber + + def lineno(self): + """ + Public method returning the line number of the coding line. + + @return line number defining the coding line + @rtype int + """ + return self.__lineno def lessThan(self, other, column, order): """