diff options
author | Aleksey Lim <alsroot@member.fsf.org> | 2009-09-07 12:08:35 (GMT) |
---|---|---|
committer | Aleksey Lim <alsroot@member.fsf.org> | 2009-09-07 12:08:35 (GMT) |
commit | 0318d6a17195dcfc8f3b7e5b1d71ff7ad10fdfd8 (patch) | |
tree | 3d372ea05993bf796ac1e66a0b6c5ed487ddd13d | |
parent | ca7669e06afabdcf1ac9e7a46d9a0b092e36e11f (diff) |
Journal title editing unexpected behaviour requires two clicks to edit #1283
-rw-r--r-- | src/jarabe/journal/listview.py | 32 |
1 files changed, 31 insertions, 1 deletions
diff --git a/src/jarabe/journal/listview.py b/src/jarabe/journal/listview.py index 5e829bc..df1a713 100644 --- a/src/jarabe/journal/listview.py +++ b/src/jarabe/journal/listview.py @@ -478,9 +478,14 @@ class ListView(BaseListView): def __init__(self): BaseListView.__init__(self) + self._is_dragging = False + + self.tree_view.connect('drag-begin', self.__drag_begin_cb) + self.tree_view.connect('button-release-event', + self.__button_release_event_cb) - self.cell_title.props.editable = True self.cell_title.connect('edited', self.__cell_title_edited_cb) + self.cell_title.connect('editing-canceled', self.__editing_canceled_cb) self.cell_icon.connect('clicked', self.__icon_clicked_cb) self.cell_icon.connect('detail-clicked', self.__detail_clicked_cb) @@ -494,6 +499,27 @@ class ListView(BaseListView): column.pack_start(cell_detail) self.tree_view.append_column(column) + def __drag_begin_cb(self, widget, drag_context): + self._is_dragging = True + + def __button_release_event_cb(self, tree_view, event): + try: + if self._is_dragging: + return + finally: + self._is_dragging = False + + pos = tree_view.get_path_at_pos(int(event.x), int(event.y)) + if pos is None: + return + + path, column, x_, y_ = pos + if column != self._title_column: + return + + self.cell_title.props.editable = True + tree_view.set_cursor_on_cell(path, column, start_editing=True) + def __detail_cell_clicked_cb(self, cell, path): row = self.tree_view.get_model()[path] self.emit('detail-clicked', row[ListModel.COLUMN_UID]) @@ -511,6 +537,10 @@ class ListView(BaseListView): metadata = model.get(row[ListModel.COLUMN_UID]) metadata['title'] = new_text model.write(metadata, update_mtime=False) + self.cell_title.props.editable = False + + def __editing_canceled_cb(self, cell): + self.cell_title.props.editable = False class CellRendererFavorite(CellRendererIcon): __gtype_name__ = 'JournalCellRendererFavorite' |