https://github.com/Guake/guake/commit/584cc12f307f8c520a20153b61686a299b493f38 https://github.com/Guake/guake/commit/2c72f306e3eb5e4eb3de7bbb6bc00e37be9b2468 --- a/src/guake/guake_app.py +++ b/src/guake/guake_app.py @@ -549,15 +549,24 @@ screen = self.window.get_screen() x, y, _ = screen.get_root_window().get_pointer() screen_no = screen.get_monitor_at_point(x, y) + valignment = self.client.get_int(KEY('/general/window_valignment')) max_height = screen.get_monitor_geometry(screen_no).height - percent = y / (max_height / 100) + if valignment == ALIGN_BOTTOM: + percent = 100 * (max_height - y) / max_height + else: + percent = 100 * y / max_height if percent < 1: percent = 1 window_rect = self.window.get_size() - self.window.resize(window_rect[0], y) + window_pos = self.window.get_position() + if valignment == ALIGN_BOTTOM: + self.window.resize(window_rect[0], max_height-y) + self.window.move(window_pos[0], y) + else: + self.window.resize(window_rect[0], y) self.client.set_int(KEY('/general/window_height'), int(percent)) self.client.set_float(KEY('/general/window_height_f'), float(percent)) @@ -1782,7 +1791,12 @@ self.mainframe.reorder_child(self.notebook, 2) else: self.mainframe.reorder_child(self.notebook, 0) - self.mainframe.pack_start(self.notebook, expand=True, fill=True, padding=0) + + # make sure resizer is at right position depending on window alignment + if self.client.get_int(KEY('/general/window_valignment')) == ALIGN_BOTTOM: + self.mainframe.reorder_child(self.resizer, 0) + else: + self.mainframe.reorder_child(self.resizer, -1) def reset_terminal(self, directory=None): self.preventHide = True --- a/src/guake/gconfhandler.py +++ b/src/guake/gconfhandler.py @@ -145,6 +145,7 @@ be called and will call the move function in guake. """ self.guake.set_final_window_rect() + self.guake.set_tab_position() def size_changed(self, client, connection_id, entry, data): """If the gconf var window_height or window_width are changed,