Kiln » TortoiseHg » TortoiseHg
Clone URL:  
Pushed to one repository · View In Graph Contained in 1.0.1, 1.0.2, and 1.0.3

stable history: refresh branch names in filter bar on reload

Fixes #1048

Changeset 446aabda7030

Parent ff696cea5899

by Yuki KODAMA

Changes to one file · Browse files at 446aabda7030 Showing diff from parent ff696cea5899 Diff from another changeset...

 
47
48
49
 
50
51
52
 
84
85
86
87
88
89
 
90
91
92
 
126
127
128
 
 
 
 
129
130
131
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
132
133
134
 
1129
1130
1131
 
 
 
1132
1133
1134
 
47
48
49
50
51
52
53
 
85
86
87
 
 
 
88
89
90
91
 
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
 
1165
1166
1167
1168
1169
1170
1171
1172
1173
@@ -47,6 +47,7 @@
  gtklib.SlimToolbar.__init__(self, tooltips)   self.filter_mode = filter_mode   self.buttons = {} + self.handlers = {}     self.all = gtk.RadioButton(None, _('All'))   self.all.set_active(True) @@ -84,9 +85,7 @@
  self.buttons['branch'] = self.branches     self.branchcombo = gtk.combo_box_new_text() - self.branchcombo.append_text(_('Branches...')) - for name in branch_names: - self.branchcombo.append_text(name) + self.refresh(branch_names)   self.branchcombo.set_active(0)   self.append_widget(self.branchcombo, padding=0)   @@ -126,9 +125,46 @@
  widget = self.__dict__[widget_name]   widget.connect(signal, handler, *opts)   + if not self.handlers.has_key(widget_name): + self.handlers[widget_name] = [] + self.handlers[widget_name].append(handler) +   def get_button(self, type):   return self.buttons.get(type)   + def refresh(self, branch_names): + ''' refresh branch names in drop-down list ''' + # block all handlers + if self.handlers.has_key('branchcombo'): + handlers = self.handlers['branchcombo'] + for handler in handlers: + self.branchcombo.handler_block_by_func(handler) + else: + handlers = () + + # save selected item + text = self.branchcombo.get_active_text() + + # refresh branch names + self.branchcombo.get_model().clear() + self.branchcombo.append_text(_('Branches...')) + for name in branch_names: + self.branchcombo.append_text(name) + + # try to restore previously selected item + for row in self.branchcombo.get_model(): + if row[0] == text: + self.branchcombo.set_active_iter(row.iter) + break + else: + # fallback to 'All' filter if no matches + self.branchcombo.set_active(0) + self.all.set_active(True) + + # unblock all handlers + for handler in handlers: + self.branchcombo.handler_unblock_by_func(handler) +  class GLog(gdialog.GWindow):   'GTK+ based dialog for displaying repository logs'   def init(self): @@ -1129,6 +1165,9 @@
  'count': ncount, 'total': ntotal}   self.stbar.set_text(mq_text, name='mq')   + # refresh filterbar + self.filterbar.refresh(hglib.getlivebranch(self.repo)) +   # Remember options to next time reload_log is called   self.filteropts = opts