Kiln » TortoiseHg » TortoiseHg
Clone URL:  
Pushed to one repository · View In Graph Contained in 0.8, 0.8.1, and 0.8.2

status: prevent endless loops in refresh after large operations

Fixes #181

Changeset 4769b614a189

Parent 243a4415d03e

by Steve Borho

Changes to one file · Browse files at 4769b614a189 Showing diff from parent 243a4415d03e Diff from another changeset...

Change 1 of 4 Show Entire File hggtk/​status.py Stacked
 
266
267
268
269
270
271
 
272
273
274
 
500
501
502
 
 
 
 
 
 
503
504
505
 
596
597
598
599
 
 
 
 
 
 
600
601
602
 
609
610
611
612
613
614
615
 
 
 
 
 
616
617
618
 
266
267
268
 
 
 
269
270
271
272
 
498
499
500
501
502
503
504
505
506
507
508
509
 
600
601
602
 
603
604
605
606
607
608
609
610
611
 
618
619
620
 
 
 
 
621
622
623
624
625
626
627
628
@@ -266,9 +266,7 @@
  self._menus['MU'] = unresolved_menu     # model stores the file list. - self.filemodel = gtk.ListStore(bool, str, str, str, str, bool) - self.filemodel.set_sort_func(1001, self.sort_by_stat) - self.filemodel.set_default_sort_func(self.sort_by_stat) + self.filemodel = self.newfilemodel()     self.filetree = gtk.TreeView(self.filemodel)   self.filetree.connect('button-press-event', self.tree_button_press) @@ -500,6 +498,12 @@
    ### End of overrides ###   + def newfilemodel(self): + fm = gtk.ListStore(bool, str, str, str, str, bool) + fm.set_sort_func(1001, self.sort_by_stat) + fm.set_default_sort_func(self.sort_by_stat) + return fm +   def realize_status_settings(self):   self._diffpane.set_position(self._setting_pos)   @@ -596,7 +600,12 @@
    # Load the new data into the tree's model   self.filetree.hide() - self.filemodel.clear() + + # issue 181 hack, create new model rather than clearing existing model + model = self.newfilemodel() + self.filemodel = model + self.filetree.set_model(model) + selection = self.filetree.get_selection()     for opt, char, changes in ([ct for ct in explicit_changetypes   if self.test_opt(ct[0])] or changetypes): @@ -609,10 +618,11 @@
  self.auto_check()     selected = False - for row in model: - if row[FM_PATH] in reselect: - selection.select_iter(row.iter) - selected = True + if len(reselect) < 100: # issue 181 hack + for row in model: + if row[FM_PATH] in reselect: + selection.select_iter(row.iter) + selected = True   if not selected:   selection.select_path((0,))