Skip to content

Commit 7f4c757

Browse files
committed
ui.notebook: Move handling for tab label changes to MeldNotebook
1 parent 254a1fb commit 7f4c757

3 files changed

Lines changed: 26 additions & 13 deletions

File tree

data/ui/meldapp.ui

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@
3232
<signal name="page-reordered" handler="after_page_reordered" after="yes" swapped="no"/>
3333
<signal name="switch-page" handler="on_switch_page" swapped="no"/>
3434
<signal name="switch-page" handler="after_switch_page" after="yes" swapped="no"/>
35+
<signal name="page-label-changed" handler="on_page_label_changed" swapped="no"/>
3536
</object>
3637
<packing>
3738
<property name="expand">True</property>

meld/meldwindow.py

Lines changed: 3 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -389,18 +389,8 @@ def after_switch_page(self, notebook, page, which):
389389
def after_page_reordered(self, notebook, page, page_num):
390390
self._update_page_action_sensitivity()
391391

392-
def on_notebook_label_changed(self, component, text, tooltip):
393-
page = component.widget
394-
nbl = self.notebook.get_tab_label(page)
395-
nbl.set_label_text(text)
396-
nbl.set_tooltip_text(tooltip)
397-
398-
# Only update the window title if the current page is active
399-
if self.notebook.get_current_page() == self.notebook.page_num(page):
400-
self.widget.set_title(text + " - Meld")
401-
if isinstance(text, unicode):
402-
text = text.encode('utf8')
403-
self.notebook.child_set_property(page, "menu-label", text)
392+
def on_page_label_changed(self, notebook, label_text):
393+
self.widget.set_title(label_text + " - Meld")
404394

405395
def on_can_undo(self, undosequence, can):
406396
self.actiongroup.get_action("Undo").set_sensitive(can)
@@ -558,7 +548,6 @@ def _append_page(self, page, icon):
558548
if hasattr(page, 'scheduler'):
559549
self.scheduler.add_scheduler(page.scheduler)
560550
if isinstance(page, melddoc.MeldDoc):
561-
page.connect("label-changed", self.on_notebook_label_changed)
562551
page.connect("file-changed", self.on_file_changed)
563552
page.connect("create-diff", lambda obj, arg, kwargs:
564553
self.append_diff(arg, **kwargs))
@@ -570,6 +559,7 @@ def _append_page(self, page, icon):
570559
def append_new_comparison(self):
571560
doc = newdifftab.NewDiffTab(self)
572561
self._append_page(doc, "document-new")
562+
self.notebook.on_label_changed(doc, _("New comparison"), None)
573563

574564
def diff_created_cb(doc, newdoc):
575565
doc.on_delete_event()

meld/ui/notebook.py

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ class MeldNotebook(Gtk.Notebook):
2525

2626
__gsignals__ = {
2727
'tab-switch': (GObject.SignalFlags.ACTION, None, (int,)),
28+
'page-label-changed': (0, None, (GObject.TYPE_STRING,)),
2829
}
2930

3031
css = """
@@ -88,6 +89,8 @@ def __init__(self, *args, **kwargs):
8889

8990
self.connect('button-press-event', self.on_button_press_event)
9091
self.connect('popup-menu', self.on_popup_menu)
92+
self.connect('page-added', self.on_page_added)
93+
self.connect('page-removed', self.on_page_removed)
9194

9295
def do_tab_switch(self, notebook, page_num):
9396
notebook.set_current_page(page_num)
@@ -126,3 +129,22 @@ def on_tab_move_right(self, *args):
126129
page_num = self.get_current_page()
127130
child = self.get_nth_page(page_num)
128131
self.reorder_child(child, page_num + 1)
132+
133+
def on_page_added(self, notebook, child, page_num, *args):
134+
child.pyobject.connect("label-changed", self.on_label_changed)
135+
136+
def on_page_removed(self, notebook, child, page_num, *args):
137+
child.pyobject.disconnect_by_func(self.on_label_changed)
138+
139+
def on_label_changed(self, component, text, tooltip):
140+
page = component.widget
141+
nbl = self.get_tab_label(page)
142+
nbl.set_label_text(text)
143+
nbl.set_tooltip_text(tooltip)
144+
145+
# Only update the window title if the current page is active
146+
if self.get_current_page() == self.page_num(page):
147+
self.emit('page-label-changed', text)
148+
if isinstance(text, unicode):
149+
text = text.encode('utf8')
150+
self.child_set_property(page, "menu-label", text)

0 commit comments

Comments
 (0)