diff --git a/terminatorlib/editablelabel.py b/terminatorlib/editablelabel.py index a970a3fd..f99578ed 100644 --- a/terminatorlib/editablelabel.py +++ b/terminatorlib/editablelabel.py @@ -130,4 +130,11 @@ class EditableLabel(gtk.EventBox): """Set the label foreground""" self._label.modify_fg(state, color) + def is_custom(self): + """Return whether or not we have a custom string set""" + return(self._custom) + + def set_custom(self): + """Set the customness of the string to True""" + self._custom = True gobject.type_register(EditableLabel) diff --git a/terminatorlib/notebook.py b/terminatorlib/notebook.py index 4e69bba3..a803f3ce 100755 --- a/terminatorlib/notebook.py +++ b/terminatorlib/notebook.py @@ -45,7 +45,7 @@ class Notebook(Container, gtk.Notebook): # the new order of terminals. We probably need to preserve this for # navigation to next/prev terminals. #self.connect('page-reordered', self.on_page_reordered) - self.set_property('homogeneous', not self.config['scroll_tabbar']) + self.set_property('homogeneous', True) self.set_scrollable(self.config['scroll_tabbar']) pos = getattr(gtk, 'POS_%s' % self.config['tab_position'].upper()) @@ -405,12 +405,14 @@ class TabLabel(gtk.HBox): """Update the angle of a label""" position = self.notebook.get_tab_pos() if position == gtk.POS_LEFT: - self.set_orientation(gtk.ORIENTATION_VERTICAL) + if hasattr(self, 'set_orientation'): + self.set_orientation(gtk.ORIENTATION_VERTICAL) self.label.set_angle(90) elif position == gtk.POS_RIGHT: self.label.set_angle(270) else: - self.set_orientation(gtk.ORIENTATION_HORIZONTAL) + if hasattr(self, 'set_orientation'): + self.set_orientation(gtk.ORIENTATION_HORIZONTAL) self.label.set_angle(0) def on_close(self, _widget): diff --git a/terminatorlib/terminal.py b/terminatorlib/terminal.py index a6d1f3cb..465343ad 100755 --- a/terminatorlib/terminal.py +++ b/terminatorlib/terminal.py @@ -1249,6 +1249,7 @@ for %s (%s)' % (name, urlplugin.__class__.__name__)) def get_cursor_position(self): """Return the co-ordinates of our cursor""" + # FIXME: THIS METHOD IS DEPRECATED AND UNUSED col, row = self.vte.get_cursor_position() width = self.vte.get_char_width() height = self.vte.get_char_height() @@ -1282,6 +1283,9 @@ for %s (%s)' % (name, urlplugin.__class__.__name__)) if layout != "default": # There's no point explicitly noting default profiles layout['profile'] = profile + title = self.titlebar.get_custom_string() + if title: + layout['title'] = title name = 'terminal%d' % count count = count + 1 global_layout[name] = layout @@ -1298,6 +1302,8 @@ for %s (%s)' % (name, urlplugin.__class__.__name__)) # This doesn't need/use self.titlebar, but it's safer than sending # None self.really_create_group(self.titlebar, layout['group']) + if layout.has_key('title') and layout['title'] != '': + self.titlebar.set_custom_string(layout['title']) # There now begins a great list of keyboard event handlers def key_zoom_in(self): diff --git a/terminatorlib/titlebar.py b/terminatorlib/titlebar.py index 4c9ae65e..78cc267d 100755 --- a/terminatorlib/titlebar.py +++ b/terminatorlib/titlebar.py @@ -244,4 +244,16 @@ class Titlebar(gtk.EventBox): self.bellicon.hide() return(False) + def get_custom_string(self): + """If we have a custom string set, return it, otherwise None""" + if self.label.is_custom(): + return(self.label.get_text()) + else: + return(None) + + def set_custom_string(self, string): + """Set a custom string""" + self.label.set_text(string) + self.label.set_custom() + gobject.type_register(Titlebar) diff --git a/terminatorlib/window.py b/terminatorlib/window.py index 8fda5acc..d320e496 100755 --- a/terminatorlib/window.py +++ b/terminatorlib/window.py @@ -671,9 +671,10 @@ class Window(Container, gtk.Window): if len(winners) > 1: # Break an n-way tie using the cursor position - cursor_x, cursor_y = terminal.get_cursor_position() - cursor_x = cursor_x + allocation.x - cursor_y = cursor_y + allocation.y + term_alloc = terminal.allocation + cursor_x = term_alloc.x + term_alloc.width / 2 + cursor_y = term_alloc.y + term_alloc.height / 2 + for term in winners: rect = layout[term] if util.get_nav_tiebreak(direction, cursor_x, cursor_y,