[orca] Handle row-reordered event spam
- From: Joanmarie Diggs <joanied src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [orca] Handle row-reordered event spam
- Date: Fri, 22 Apr 2016 19:22:52 +0000 (UTC)
commit 8a73e3718e1376f156d1f544d1ffe02a78618aec
Author: Joanmarie Diggs <jdiggs igalia com>
Date: Fri Apr 22 15:21:28 2016 -0400
Handle row-reordered event spam
src/orca/input_event.py | 6 +++++
src/orca/script_utilities.py | 36 +++++++++++++++++++++++++++++++
src/orca/scripts/apps/soffice/script.py | 6 -----
src/orca/scripts/default.py | 24 ++++++++------------
4 files changed, 52 insertions(+), 20 deletions(-)
---
diff --git a/src/orca/input_event.py b/src/orca/input_event.py
index c2eb841..722eb4e 100644
--- a/src/orca/input_event.py
+++ b/src/orca/input_event.py
@@ -543,6 +543,12 @@ class KeyboardEvent(InputEvent):
return False
+ def isHandledBy(self, method):
+ if not self._handler:
+ return False
+
+ return method.__func__ == self._handler.function
+
def _present(self, inputEvent=None):
if self.isPressedKey():
self._script.presentationInterrupt()
diff --git a/src/orca/script_utilities.py b/src/orca/script_utilities.py
index bd39af5..c750caf 100644
--- a/src/orca/script_utilities.py
+++ b/src/orca/script_utilities.py
@@ -3880,6 +3880,42 @@ class Utilities:
return False
+ def lastInputEventWasTableSort(self, delta=0.5):
+ event = orca_state.lastInputEvent
+ if not event:
+ return False
+
+ now = time.time()
+ if now - event.time > delta:
+ return False
+
+ lastSortTime = self._script.pointOfReference.get('last-table-sort-time', 0.0)
+ if now - lastSortTime < delta:
+ return False
+
+ if isinstance(event, input_event.MouseButtonEvent):
+ if not self.lastInputEventWasPrimaryMouseRelease():
+ return False
+ elif isinstance(event, input_event.KeyboardEvent):
+ if not event.isHandledBy(self._script.leftClickReviewItem):
+ keyString, mods = self.lastKeyAndModifiers()
+ if keyString not in ["Return", "space", " "]:
+ return False
+
+ try:
+ role = orca_state.locusOfFocus.getRole()
+ except:
+ msg = "ERROR: Exception getting role for %s" % orca_state.locusOfFocus
+ debug.println(debug.LEVEL_INFO, msg, True)
+ return False
+
+ roles = [pyatspi.ROLE_COLUMN_HEADER,
+ pyatspi.ROLE_ROW_HEADER,
+ pyatspi.ROLE_TABLE_COLUMN_HEADER,
+ pyatspi.ROLE_TABLE_ROW_HEADER]
+
+ return role in roles
+
def treatEventAsTerminalCommand(self, event):
try:
role = event.source.getRole()
diff --git a/src/orca/scripts/apps/soffice/script.py b/src/orca/scripts/apps/soffice/script.py
index 6ceefd9..e9c5384 100644
--- a/src/orca/scripts/apps/soffice/script.py
+++ b/src/orca/scripts/apps/soffice/script.py
@@ -833,12 +833,6 @@ class Script(default.Script):
if weToggledIt:
speech.speak(self.speechGenerator.generateSpeech(obj))
- def onRowReordered(self, event):
- """Callback for object:row-reordered accessibility events."""
-
- # We're seeing a crazy ton of these emitted bogusly.
- pass
-
def onSelectedChanged(self, event):
"""Callback for object:state-changed:selected accessibility events."""
diff --git a/src/orca/scripts/default.py b/src/orca/scripts/default.py
index 02b4b20..0721b92 100644
--- a/src/orca/scripts/default.py
+++ b/src/orca/scripts/default.py
@@ -2647,31 +2647,27 @@ class Script(script.Script):
self.updateBraille(obj)
def onColumnReordered(self, event):
- """Called whenever the columns in a table are reordered.
+ """Callback for object:column-reordered accessibility events."""
- Arguments:
- - event: the Event
- """
+ if not self.utilities.lastInputEventWasTableSort():
+ return
- parentTable = self.utilities.ancestorWithRole(
- orca_state.locusOfFocus, [pyatspi.ROLE_TABLE], [pyatspi.ROLE_FRAME])
- if event.source != parentTable:
+ if event.source != self.utilities.getTable(orca_state.locusOfFocus):
return
+ self.pointOfReference['last-table-sort-time'] = time.time()
self.presentMessage(messages.TABLE_REORDERED_COLUMNS)
def onRowReordered(self, event):
- """Called whenever the rows in a table are reordered.
+ """Callback for object:row-reordered accessibility events."""
- Arguments:
- - event: the Event
- """
+ if not self.utilities.lastInputEventWasTableSort():
+ return
- parentTable = self.utilities.ancestorWithRole(
- orca_state.locusOfFocus, [pyatspi.ROLE_TABLE], [pyatspi.ROLE_FRAME])
- if event.source != parentTable:
+ if event.source != self.utilities.getTable(orca_state.locusOfFocus):
return
+ self.pointOfReference['last-table-sort-time'] = time.time()
self.presentMessage(messages.TABLE_REORDERED_ROWS)
def onValueChanged(self, event):
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]