[meld] Fix some sensitivity handling issues (closes rhbz#835883, rhbz#806489)
- From: Kai Willadsen <kaiw src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [meld] Fix some sensitivity handling issues (closes rhbz#835883, rhbz#806489)
- Date: Sun, 16 Dec 2012 00:55:08 +0000 (UTC)
commit b831bb7eb50594a708ab4d9f0fc9ac45ca41cce3
Author: Kai Willadsen <kai willadsen gmail com>
Date: Sun Dec 16 10:50:42 2012 +1000
Fix some sensitivity handling issues (closes rhbz#835883, rhbz#806489)
Sensitivity was not being correctly set in cases where no comparison
pane was focused. This patch corrects two cases: chunk actions when the
focus pane becomes unset, and merge actions when the focus pane becomes
unset.
data/ui/filediff.ui | 3 +++
meld/filediff.py | 18 ++++++++++++++----
2 files changed, 17 insertions(+), 4 deletions(-)
---
diff --git a/data/ui/filediff.ui b/data/ui/filediff.ui
index 879f808..cf25b3f 100644
--- a/data/ui/filediff.ui
+++ b/data/ui/filediff.ui
@@ -179,6 +179,7 @@
<signal handler="on_textview_button_press_event" name="button_press_event"/>
<signal handler="on_textview_expose_event" name="expose_event"/>
<signal handler="on_textview_focus_in_event" name="focus_in_event"/>
+ <signal handler="on_textview_focus_out_event" name="focus_out_event"/>
<signal handler="on_key_press_event" name="key_press_event"/>
<signal handler="on_key_release_event" name="key_release_event"/>
<signal handler="on_textview_popup_menu" name="popup-menu"/>
@@ -254,6 +255,7 @@
<signal handler="on_textview_button_press_event" name="button_press_event"/>
<signal handler="on_textview_expose_event" name="expose_event"/>
<signal handler="on_textview_focus_in_event" name="focus_in_event"/>
+ <signal handler="on_textview_focus_out_event" name="focus_out_event"/>
<signal handler="on_key_press_event" name="key_press_event"/>
<signal handler="on_key_release_event" name="key_release_event"/>
<signal handler="on_textview_popup_menu" name="popup-menu"/>
@@ -291,6 +293,7 @@
<signal handler="on_textview_button_press_event" name="button_press_event"/>
<signal handler="on_textview_expose_event" name="expose_event"/>
<signal handler="on_textview_focus_in_event" name="focus_in_event"/>
+ <signal handler="on_textview_focus_out_event" name="focus_out_event"/>
<signal handler="on_key_press_event" name="key_press_event"/>
<signal handler="on_key_release_event" name="key_release_event"/>
<signal handler="on_textview_popup_menu" name="popup-menu"/>
diff --git a/meld/filediff.py b/meld/filediff.py
index b5a45d9..4a3145f 100644
--- a/meld/filediff.py
+++ b/meld/filediff.py
@@ -401,14 +401,20 @@ class FileDiff(melddoc.MeldDoc, gnomeglade.Component):
self.cursor.line, self.cursor.offset = line, offset
def on_current_diff_changed(self, widget, *args):
- pane = self.cursor.pane
- chunk_id = self.cursor.chunk
- push_left, push_right, pull_left, pull_right, delete, \
- copy_left, copy_right = (True,) * 7
+ pane = self._get_focused_pane()
+ if pane != -1:
+ # While this *should* be redundant, it's possible for focus pane
+ # and cursor pane to be different in several situations.
+ pane = self.cursor.pane
+ chunk_id = self.cursor.chunk
+
if pane == -1 or chunk_id is None:
push_left, push_right, pull_left, pull_right, delete, \
copy_left, copy_right = (False,) * 7
else:
+ push_left, push_right, pull_left, pull_right, delete, \
+ copy_left, copy_right = (True,) * 7
+
# Push and Delete are active if the current pane has something to
# act on, and the target pane exists and is editable. Pull is
# sensitive if the source pane has something to get, and the
@@ -650,6 +656,10 @@ class FileDiff(melddoc.MeldDoc, gnomeglade.Component):
self.on_cursor_position_changed(view.get_buffer(), None, True)
self._set_merge_action_sensitivity()
+ def on_textview_focus_out_event(self, view, event):
+ self.focus_pane = None
+ self._set_merge_action_sensitivity()
+
def _after_text_modified(self, buffer, startline, sizechange):
if self.num_panes > 1:
pane = self.textbuffer.index(buffer)
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]