After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 382415 - Speak cell/row setting ignored in OOo Writer tables
Speak cell/row setting ignored in OOo Writer tables
Status: RESOLVED FIXED
Product: orca
Classification: Applications
Component: speech
2.17.x
Other All
: Normal normal
: 2.20.0
Assigned To: Rich Burridge
Orca Maintainers
Depends on:
Blocks:
 
 
Reported: 2006-12-04 22:23 UTC by Joanmarie Diggs (IRC: joanie)
Modified: 2008-07-22 19:27 UTC
See Also:
GNOME target: ---
GNOME version: 2.17/2.18


Attachments
Patch to hopefully fix the problem. (2.62 KB, patch)
2006-12-06 17:49 UTC, Rich Burridge
none Details | Review
test case referred to in the comment (8.88 KB, application/vnd.oasis.opendocument.text)
2006-12-06 19:15 UTC, Joanmarie Diggs (IRC: joanie)
  Details
New version of the patch to try. (4.47 KB, patch)
2006-12-11 19:12 UTC, Rich Burridge
none Details | Review
Alternative new version of the patch to try (speak cell name only if readTableCellRow == False). (5.14 KB, patch)
2006-12-12 02:16 UTC, Rich Burridge
none Details | Review
Patch variant to hopefully handle multiple paragraphs per table cell too. (8.18 KB, patch)
2006-12-12 17:38 UTC, Rich Burridge
none Details | Review
Patch to fix the incorrect speaking of the old cell name. (740 bytes, patch)
2006-12-12 21:41 UTC, Rich Burridge
none Details | Review
full debug.out (153.68 KB, text/plain)
2006-12-12 23:09 UTC, Joanmarie Diggs (IRC: joanie)
  Details
OOo Writer example table-sample.odt (9.67 KB, application/vnd.oasis.opendocument.text)
2007-09-21 19:51 UTC, Rich Burridge
  Details

Description Joanmarie Diggs (IRC: joanie) 2006-12-04 22:23:02 UTC
Please describe the problem:
When navigating in a table within an OOo Writer document, Orca always speaks the cell with focus regardless of whether or not speak row is enabled.

Steps to reproduce:
1. Open an OOo Writer document that contains a table.
2. Be sure that speak row is enabled
3. Arrow Up and Down within the table


Actual results:
Orca speaks the cell with focus.

Expected results:
When speak row is enabled, Orca would speak the row which contains the cell with focus.

Does this happen every time?
Yes

Other information:
Comment 1 Rich Burridge 2006-12-05 22:58:10 UTC
In short, none of the existing code paths in the StarOffice.py
script handle this situation. I've been testing with the table-sample.odt
file attached to bug #382408.

What we have here is a "paragraph" inside a "table cell".

OBJECT EVENT: object:state-changed:focused             detail=(1,0)
             app.name='soffice.bin'        name=None role='paragraph' state='EDITABLE ENABLED FOCUSABLE FOCUSED MULTI_LINE MULTISELECTABLE SHOWING VISIBLE' relations='FLOWS_FROM FLOWS_TO'
+-name='soffice.bin' role='application' state='' relations=''
  +-name='table-sample - OpenOffice.org Writer' role='frame' state='ACTIVE ENABLED RESIZABLE SENSITIVE SHOWING VISIBLE' relations=''
    +-name='table-sample - OpenOffice.org Writer' role='root pane' state='ENABLED SENSITIVE SHOWING VISIBLE' relations=''
      +-name=None role='panel' state='ENABLED SENSITIVE SHOWING VISIBLE' relations=''
        +-name=None role='scroll pane' state='ENABLED SENSITIVE SHOWING VISIBLE' relations=''
          +-name='Document view' role='unknown' state='EDITABLE ENABLED MULTISELECTABLE OPAQUE SHOWING VISIBLE' relations=''
            +-name='Calendar-1' role='table' state='EDITABLE ENABLED MULTISELECTABLE SHOWING VISIBLE' relations=''
              +-name='B1' role='table cell' state='EDITABLE ENABLED SELECTABLE SHOWING VISIBLE' relations=''
                +-name=None role='paragraph' state='EDITABLE ENABLED FOCUSABLE FOCUSED MULTI_LINE MULTISELECTABLE SHOWING VISIBLE' relations='FLOWS_FROM FLOWS_TO'

The speaking of the text is being done by the _presentTextAtNewCaretPosition()
routine in default.py

Will, any suggestions on the best way to handle this?

One possible scenerio is to look for the given role hierarchy in
onStateChanged() in StarOffice.py (and that the event type is
"object:state-changed:focused", and if so, try calling
orca.setLocusOfFocus() for the parent table cell. I haven't tried this
yet, and I've no idea if each call to _getSpeechForTableCell() would
extract out the right text.

I'll give it a try tomorrow (unless you can think of a better way)...
Comment 2 Willie Walker 2006-12-06 01:25:00 UTC
I'm not quite sure of the right thing to do here.  I'm not sure forcing the locus of focus to the table cell is the right thing to do since we want to be able to handle caret moved events when the user arrows around inside the paragraph and we'll be battling the logic for that.

One could potentially look upwards in the hierarchy to see if the locus of focus is inside a table cell and then do the appropriate braille/speech stuff from there (i.e., use the _get{Speech,BrailleRegions}ForTableCellRow) methods.  Not sure what exactly to do with that, though.
Comment 3 Rich Burridge 2006-12-06 17:49:33 UTC
Created attachment 77836 [details] [review]
Patch to hopefully fix the problem.

Note that I have NOT checked this patch into CVS HEAD.
Joanie, I need a little help testing this. It seems to do
what we want for the Writer table-sample.odt file, but I'm
unable to check that I haven't adversely affected spreadsheet
tables, as oocalc just goes into Error Recovery Mode for me
when I try to traverse a spread sheet with Orca running (there
is already an open OOo bug on that).

Note that this patch doesn't try to fix the other OOo table
bugs/enhancements you filed. Just this one. One step at a time! 8-)

Thanks.
Comment 4 Joanmarie Diggs (IRC: joanie) 2006-12-06 18:47:27 UTC
In the spirit of one step at a time, I'm going to break things down into two comments because the results depend upon whether or not you're working with a Writer table with multi-line cells.  In that environment, I haven't yet worked out what Orca is doing well enough to present you with a test case, but it's definitely not correct.  Stay tuned on that front.  In the meantime...

**Given a simple table** in which each cell contains no more than a single line of text:

1. This does fix the reported problem of speak row not being respected. Thanks!

2. The fix does not break (or as far as I can tell, even change) anything in Calc documents.

3. It's *slightly* chatty, however.  It seems that regardless of whether or not we are speaking cell or speaking row, we get the following:

a. Contents (i.e. row contents or cell contents)
b. Location
c. the word "paragraph" followed by the cell contents

In other words, when speak cell is enabled, we're hearing the contents twice.  Also, could we suppress the speaking of "paragraph"?
Comment 5 Joanmarie Diggs (IRC: joanie) 2006-12-06 19:15:16 UTC
Created attachment 77846 [details]
test case referred to in the comment

Okay, I found the pattern with tables in which cells contain multiple lines of text.  As I mentioned in my previous comment, Orca is providing the following info:

a. Contents (i.e. row contents or cell contents)
b. Location
c. the word "paragraph" followed by the cell contents

It seems like #a is always the last line of text in that cell.  If there is only one line of text in a cell that's not a problem.  It is a problem with multi-line cells.  In the attached file, for instance, if you have speak cell enabled and arrow to the first line of row 2 column 2, Orca speaks the following:

"Line 3 for R2C2"
"Cell B2"
"Paragraph"
"Line 1 for R2C2"

Similarly, if speak row is enabled, arrowing to the first line in row 2 column 2 causes Orca to say:

"Row 2"
"Line 3 for R2C2"
"Line 3 for R2C3"
"Cell B2"
"Paragraph"
"Line 1 for R2C2"

Which raises another question, namely what all should be spoken when you have speak row enabled and arrow to a row in which at least one of the cells contains text that spans multiple lines?  Personally, I think it should treat the multi-line cell as a single line.  For instance, if you had a table which contained contact info and a structure like:

Column 1:  Contact Name
Column 2:  Street Address (line 1), City (line 2), State and Zip (line 3)
Column 3:  Phone Number

I would want to hear the name, followed by the full address, followed by the phone number.  Hearing the name, followed by the street address only, followed by the phone number would be a bit confusing.  At least in my opinion....
Comment 6 Rich Burridge 2006-12-06 20:07:27 UTC
Thanks Joanie.

Okay, Mike I need guidance here. What would you like to have
spoken/brailled (see previous two comments)? You will have to 
factor in:

1/ Whether we are speaking by row or by cell.
2/ Whether we are moving left/right within the same paragraph in
   the same table cell.

Note there are three events which can potentially cause speaking/brailling
of table cells contents (i.e. the paragraph) within oowriter:

object:state-changed:focused
object:text-caret-moved
focus:

Currently it's a real pain to juggle these three in the staroffice.py
script, and try to say something meaningful.
Comment 7 Mike Pedersen 2006-12-07 01:21:44 UTC
A couple comments here.
1.  Joanie is right that when reading a cell when it gains focus we should hear the whole cell not just the first line.  In braille you will just show the first line because that keeps braille showing what is actually on the line.  
2.  The word paragraph is to verbose in this setting.  I'm OK with suppressing it.  
3.  When moving to characters, words and lines in the same cell it is not necessary to alert the user that they are navigating a cell.
Comment 8 Rich Burridge 2006-12-07 02:28:46 UTC
Thanks Mike. I understand about the multi-line problem.
I'm happy to remove the "paragraph".

I still have a few things that need to be cleared up.

1/ I'm still not exactly clear what you want spoken when going by row.
   Using the example the Joanie attached to bug #382408, namely:

   http://bugzilla.gnome.org/attachment.cgi?id=77687

   what should be spoken and brailled as you move down to the line of
   the table containing the row "Sun Mon Tue Wed Thu Fri Sat" for both 
   "read by row" and "read by cell"? Did you get a chance to try the
   patch?

2/ If I'm positioned with the cursor after the "n" of "Mon" on that
   row, what should be spoken and brailled if I arrow right one more
   character, and enter the start of the next table cell ("Tue")?

3/ Should the cell position (say "cell b 1" ever be spoken)? If not, then
   I presume the "where am I" functionality needs to make sure it provides
   that...

Thanks.
Comment 9 Rich Burridge 2006-12-11 16:07:27 UTC
Looks like we've found YAOOoB. 

I've been testing with the multiline table sample file that Joanie
attached to this bug. For those table cells with multiline paragraphs
within them, _getSpeechForTableCell() in speechgenerator.py is calling
util.getDisplayedText() to get the text associated with that object.
These objects of role "paragraph" have an obj.text, so

    displayedText = obj.text.getText(0, -1)

is called. This should return all the text associated with this object.
It the test case, for example with the cell that contains:

Line 1 for R2C2
Line 2 for R2C2
Line 3 for R2C2

it always returns "Line 3 for R2C2". You can verify this by Tabbing into
that cell, then using the Up/Down arrow keys to move up and down the 
three lines within that cell. You will always here "Line 3 for R2C2".

I'll file another OOo issue.
Comment 10 Rich Burridge 2006-12-11 16:21:47 UTC
I've filed OOo issue #72470
http://www.openoffice.org/issues/show_bug.cgi?id=72470
on this problem.
Comment 11 Rich Burridge 2006-12-11 19:12:07 UTC
Created attachment 78150 [details] [review]
New version of the patch to try.

Here's a new version of the patch to try. It supercedes the
previous one. Save the attachment to disk, then apply with:

  % cd .../orca/src/orca/scripts
  % patch < patch.11-Dec-2006

As I previous mentioned, there are three events here, that can cause new
information to be spoken/brailled:

object:state-changed:focused
focus:
object:text-caret-moved

And in some cases, we don't always get all of those events at the right 
time.

I've now tried to get a balance of providing the right information without
repeating it and without being too verbose and without adding another 300 
lines of code to the script.

I'm still unable to test this patch against oocalc, to make sure I haven't
broken anything there. If somebody could do that I'd be grateful.

Some things to consider as you are trying out this patch:

* Would you like the cell name to be spoken whenever you enter a new cell
  or just when you are moving into a new cell when you go left to right?
  It currently doesn't speak the cell name when you go up/down. It probably
  should. It's hopefully fairly easy to go. Let me know.

* When you arrow to the end of a paragraph in OOo, when the caret is to the
  right of the last caret, what should it say? For now, I've emulated the
  way that it's handled for other paragraphs in OOo, and that's to say 
  nothing.
  
* Multi-line paragraphs are broken because of OOo issue #72470. Will, can
  you think of an alternate way we can work around getText(0, -1) not
  returning the whole paragraph?

Please let me know what changes you would like me to make to this fix.

Thanks.
Comment 12 Joanmarie Diggs (IRC: joanie) 2006-12-11 20:26:37 UTC
Hi Rich.  In light of the YAOOoB, I only tested this with a table in which cell contents consisted of single lines.

This is a massive improvement over the previous patch.  Thanks!! Also, nothing seems to be broken in OOo 2.0.4 (in Edgy) or 2.1.0 (in Feisty).  

In response to the things you've asked us to consider, my answer is "it depends." ;-)

If a user is reading a table with speak row enabled, in a sense they've chosen to ignore the fact that the information is in a table and are instead choosing to read it as text.  On the other head, with speak cell enabled, they are treating the information like a table.  So in my personal opinion:

* I would like the cell name to be spoken whenever I enter a new cell IF speak cell is enabled.  I would prefer it NOT to be spoken IF speak row is enabled.

* If the cell name is not going to be spoken if speak row is enabled, there should still be a way to get at this info (e.g. via whereAmI)

* I'm not sure I understand your second question.  I'm taking it to refer to speaking (or not speaking) all of the paragraph markers that seem to be present at the end of cells in OOo Writer tables.  If so, it's good the way it is now.  If that's not what you mean....
Comment 13 Rich Burridge 2006-12-11 21:06:19 UTC
I like the idea of just speaking cell name (for left/right/up/down) only
is "speak by cell" is enabled. Mike/Will, does this seem reasonable?

You summarized my concerns with the paragraph marker. I'm just wondering
whether we should be letting users be aware that they are at an end of
paragraph. Again, Will/Mike?

Thanks for testing it.
Comment 14 Rich Burridge 2006-12-12 02:16:56 UTC
Created attachment 78178 [details] [review]
Alternative new version of the patch to try (speak cell name only if readTableCellRow == False).

Here's a variant of the patch which implements Joanies nice
suggestion of only speaking the cell name when traversing into
a new cell, if the user has readTableCellRow set to False.

I really like this version.

Awaiting feedback, before I check it in though.
Comment 15 Joanmarie Diggs (IRC: joanie) 2006-12-12 03:04:30 UTC
I really like this version too!!  (And, yes, I did test it against calc :-) )

Out of curiosity, I tried it with my multi-line table sample.  It seems the old saying about no free lunches is holding true.  This patch makes it a lot easier to access tables where cell contents do not span multiple lines.  Unfortunately, as a result of OOo issue #72470, this patch makes it harder to access tables where the cell contents do span multiple lines. (Try arrowing up and down within cells in the multi-line sample: The final line is always spoken.)

So I suppose the question is:  Do you check this patch in now or block this RFE against the OOo bug and check it in when that's fixed?  And I'm afraid I don't have a definitive answer.  If I were reading a table with single-line cells, I'd really want this patch checked in.  But if I were reading a table with multiple-line cells, I wouldn't....
Comment 16 Joanmarie Diggs (IRC: joanie) 2006-12-12 03:10:53 UTC
One additional piece of information I just noticed:  With multi-line cells that result from the text wrapping automatically, the patch is great.  It's only when there are multi-paragraph cells that this patch makes things more difficult.
Comment 17 Rich Burridge 2006-12-12 03:51:28 UTC
Ahh, then that might be scriptable. I've been assuming that this was all a
single paragraph. From doing an Insert-F8 when in one of those multi-paragraph
cells, I see that you are right.

I'll have a look at this tomorrow. Thanks Joanie.

        +-name='Edit' role='menu' state='ENABLED OPAQUE SELECTABLE SENSITIVE SHOWING VISIBLE' relations=''
        +-name='View' role='menu' state='ENABLED OPAQUE SELECTABLE SENSITIVE SHOWING VISIBLE' relations=''
        +-name='Insert' role='menu' state='ENABLED OPAQUE SELECTABLE SENSITIVE SHOWING VISIBLE' relations=''
        +-name='Format' role='menu' state='ENABLED OPAQUE SELECTABLE SENSITIVE SHOWING VISIBLE' relations=''
        +-name='Table' role='menu' state='ENABLED OPAQUE SELECTABLE SENSITIVE SHOWING VISIBLE' relations=''
        +-name='Tools' role='menu' state='ENABLED OPAQUE SELECTABLE SENSITIVE SHOWING VISIBLE' relations=''
        +-name='Window' role='menu' state='ENABLED OPAQUE SELECTABLE SENSITIVE SHOWING VISIBLE' relations=''
        +-name='Help' role='menu' state='ENABLED OPAQUE SELECTABLE SENSITIVE SHOWING VISIBLE' relations=''
      +-name=None role='panel' state='ENABLED SENSITIVE SHOWING VISIBLE' relations=''
        +-name='Standard' role='tool bar' state='ENABLED FOCUSABLE HORIZONTAL SENSITIVE SHOWING VISIBLE' relations=''
          +-name='New' role='push button' state='ENABLED FOCUSABLE SENSITIVE SHOWING VISIBLE' relations=''
          +-name='Open' role='push button' state='ENABLED FOCUSABLE SENSITIVE SHOWING VISIBLE' relations=''
          +-name='Save' role='push button' state='FOCUSABLE SHOWING VISIBLE' relations=''
          +-name='Document as E-mail' role='push button' state='ENABLED FOCUSABLE SENSITIVE SHOWING VISIBLE' relations=''
          +-name=None role='separator' state='FOCUSABLE SHOWING VISIBLE' relations=''
          +-name='Edit File' role='push button' state='CHECKED ENABLED FOCUSABLE SENSITIVE SHOWING VISIBLE' relations=''
          +-name=None role='separator' state='FOCUSABLE SHOWING VISIBLE' relations=''
          +-name='Export Directly as PDF' role='push button' state='ENABLED FOCUSABLE SENSITIVE SHOWING VISIBLE' relations=''
          +-name='Print File Directly' role='push button' state='ENABLED FOCUSABLE SENSITIVE SHOWING VISIBLE' relations=''
          +-name='Page Preview' role='push button' state='ENABLED FOCUSABLE SENSITIVE SHOWING VISIBLE' relations=''
          +-name=None role='separator' state='FOCUSABLE SHOWING VISIBLE' relations=''
          +-name='Spellcheck' role='push button' state='ENABLED FOCUSABLE SENSITIVE SHOWING VISIBLE' relations=''
          +-name='AutoSpellcheck' role='push button' state='CHECKED ENABLED FOCUSABLE SENSITIVE SHOWING VISIBLE' relations=''
          +-name=None role='separator' state='FOCUSABLE SHOWING VISIBLE' relations=''
          +-name='Cut' role='push button' state='FOCUSABLE SHOWING VISIBLE' relations=''
          +-name='Copy' role='push button' state='FOCUSABLE SHOWING VISIBLE' relations=''
          +-name='Paste' role='push button' state='ENABLED FOCUSABLE SENSITIVE SHOWING VISIBLE' relations=''
          +-name='Format Paintbrush' role='push button' state='ENABLED FOCUSABLE SENSITIVE SHOWING VISIBLE' relations=''
          +-name=None role='separator' state='FOCUSABLE SHOWING VISIBLE' relations=''
          +-name='Can't Undo' role='push button' state='FOCUSABLE SHOWING VISIBLE' relations=''
          +-name='Can't Restore' role='push button' state='FOCUSABLE SHOWING VISIBLE' relations=''
          +-name=None role='separator' state='FOCUSABLE SHOWING VISIBLE' relations=''
          +-name='Hyperlink' role='push button' state='ENABLED FOCUSABLE SENSITIVE SHOWING VISIBLE' relations=''
          +-name='Table' role='push button' state='ENABLED FOCUSABLE SENSITIVE SHOWING VISIBLE' relations=''
          +-name='Show Draw Functions' role='toggle button' state='ENABLED FOCUSABLE SENSITIVE SHOWING VISIBLE' relations=''
          +-name=None role='separator' state='FOCUSABLE SHOWING VISIBLE' relations=''
          +-name='Find & Replace' role='push button' state='ENABLED FOCUSABLE SENSITIVE SHOWING VISIBLE' relations=''
          +-name='Navigator' role='push button' state='ENABLED FOCUSABLE SENSITIVE SHOWING VISIBLE' relations=''
          +-name='Gallery' role='push button' state='ENABLED FOCUSABLE SENSITIVE SHOWING VISIBLE' relations=''
          +-name='Data Sources' role='push button' state='ENABLED FOCUSABLE SENSITIVE SHOWING VISIBLE' relations=''
          +-name='Nonprinting Characters' role='push button' state='ENABLED FOCUSABLE SENSITIVE SHOWING VISIBLE' relations=''
          +-name='Zoom' role='panel' state='ENABLED FOCUSABLE SENSITIVE SHOWING VISIBLE' relations=''
          +-name=None role='separator' state='FOCUSABLE SHOWING VISIBLE' relations=''
          +-name='OpenOffice.org Help' role='push button' state='ENABLED FOCUSABLE SENSITIVE SHOWING VISIBLE' relations=''
        +-name='Formatting' role='tool bar' state='ENABLED FOCUSABLE HORIZONTAL SENSITIVE SHOWING VISIBLE' relations=''
          +-name='Styles and Formatting' role='push button' state='ENABLED FOCUSABLE SENSITIVE SHOWING VISIBLE' relations=''
          +-name=None role='separator' state='FOCUSABLE SHOWING VISIBLE' relations=''
          +-name='Apply Style' role='panel' state='CHECKED ENABLED FOCUSABLE SENSITIVE SHOWING VISIBLE' relations=''
            +-name='Apply Style' role='combo box' state='ENABLED SENSITIVE SHOWING VISIBLE' relations=''
              +-name=None role='text' state='EDITABLE ENABLED FOCUSABLE SENSITIVE SHOWING SINGLE_LINE VISIBLE' relations=''
          +-name=None role='separator' state='FOCUSABLE SHOWING VISIBLE' relations=''
          +-name='Font Name' role='panel' state='ENABLED FOCUSABLE SENSITIVE SHOWING VISIBLE' relations=''
            +-name='Font Name' role='combo box' state='ENABLED SENSITIVE SHOWING VISIBLE' relations=''
              +-name=None role='text' state='EDITABLE ENABLED FOCUSABLE SENSITIVE SHOWING SINGLE_LINE VISIBLE' relations=''
          +-name=None role='separator' state='FOCUSABLE SHOWING VISIBLE' relations=''
          +-name='Font Size' role='panel' state='ENABLED FOCUSABLE SENSITIVE SHOWING VISIBLE' relations=''
            +-name='Font Size' role='combo box' state='ENABLED SENSITIVE SHOWING VISIBLE' relations=''
              +-name=None role='text' state='EDITABLE ENABLED FOCUSABLE SENSITIVE SHOWING SINGLE_LINE VISIBLE' relations=''
          +-name=None role='separator' state='FOCUSABLE SHOWING VISIBLE' relations=''
          +-name='Bold' role='push button' state='ENABLED FOCUSABLE SENSITIVE SHOWING VISIBLE' relations=''
          +-name='Italic' role='push button' state='ENABLED FOCUSABLE SENSITIVE SHOWING VISIBLE' relations=''
          +-name='Underline' role='push button' state='ENABLED FOCUSABLE SENSITIVE SHOWING VISIBLE' relations=''
          +-name=None role='separator' state='FOCUSABLE SHOWING VISIBLE' relations=''
          +-name='Align Left' role='push button' state='CHECKED ENABLED FOCUSABLE SENSITIVE SHOWING VISIBLE' relations=''
          +-name='Centered' role='push button' state='ENABLED FOCUSABLE SENSITIVE SHOWING VISIBLE' relations=''
          +-name='Align Right' role='push button' state='ENABLED FOCUSABLE SENSITIVE SHOWING VISIBLE' relations=''
          +-name='Justified' role='push button' state='ENABLED FOCUSABLE SENSITIVE SHOWING VISIBLE' relations=''
          +-name=None role='separator' state='FOCUSABLE SHOWING VISIBLE' relations=''
          +-name=None role='separator' state='FOCUSABLE SHOWING VISIBLE' relations=''
          +-name=None role='separator' state='FOCUSABLE SHOWING VISIBLE' relations=''
          +-name='Numbering On/Off' role='push button' state='ENABLED FOCUSABLE SENSITIVE SHOWING VISIBLE' relations=''
          +-name='Bullets On/Off' role='push button' state='ENABLED FOCUSABLE SENSITIVE SHOWING VISIBLE' relations=''
          +-name='Decrease Indent' role='push button' state='ENABLED FOCUSABLE SENSITIVE SHOWING VISIBLE' relations=''
          +-name='Increase Indent' role='push button' state='ENABLED FOCUSABLE SENSITIVE SHOWING VISIBLE' relations=''
          +-name=None role='separator' state='FOCUSABLE SHOWING VISIBLE' relations=''
          +-name='Font Color' role='push button' state='ENABLED FOCUSABLE SENSITIVE SHOWING VISIBLE' relations=''
          +-name='Highlighting' role='push button' state='ENABLED FOCUSABLE SENSITIVE SHOWING VISIBLE' relations=''
          +-name='Background Color' role='push button' state='ENABLED FOCUSABLE SENSITIVE SHOWING VISIBLE' relations=''
          +-name=None role='separator' state='FOCUSABLE SHOWING VISIBLE' relations=''
      +-name=None role='panel' state='ENABLED SENSITIVE SHOWING VISIBLE' relations=''
      +-name=None role='panel' state='ENABLED SENSITIVE SHOWING VISIBLE' relations=''
      +-name=None role='panel' state='ENABLED SENSITIVE SHOWING VISIBLE' relations=''
      +-name=None role='panel' state='ENABLED SENSITIVE SHOWING VISIBLE' relations=''
        +-name=None role='scroll pane' state='ENABLED SENSITIVE SHOWING VISIBLE' relations=''
          +-name='Document view' role='unknown' state='EDITABLE ENABLED MULTISELECTABLE OPAQUE SHOWING VISIBLE' relations=''
            +-name=None role='paragraph' state='EDITABLE ENABLED FOCUSABLE MULTI_LINE MULTISELECTABLE SHOWING VISIBLE' relations='FLOWS_TO'
            +-name='Table1-1' role='table' state='EDITABLE ENABLED MULTISELECTABLE SHOWING VISIBLE' relations=''
              +-name='A1' role='table cell' state='EDITABLE ENABLED SELECTABLE SHOWING VISIBLE' relations=''
                +-name=None role='paragraph' state='EDITABLE ENABLED FOCUSABLE MULTI_LINE MULTISELECTABLE SHOWING VISIBLE' relations='FLOWS_FROM FLOWS_TO'
              +-name='B1' role='table cell' state='EDITABLE ENABLED SELECTABLE SHOWING VISIBLE' relations=''
                +-name=None role='paragraph' state='EDITABLE ENABLED FOCUSABLE MULTI_LINE MULTISELECTABLE SHOWING VISIBLE' relations='FLOWS_FROM FLOWS_TO'
              +-name='C1' role='table cell' state='EDITABLE ENABLED SELECTABLE SHOWING VISIBLE' relations=''
                +-name=None role='paragraph' state='EDITABLE ENABLED FOCUSABLE MULTI_LINE MULTISELECTABLE SHOWING VISIBLE' relations='FLOWS_FROM FLOWS_TO'
              +-name='A2' role='table cell' state='EDITABLE ENABLED SELECTABLE SHOWING VISIBLE' relations=''
                +-name=None role='paragraph' state='EDITABLE ENABLED FOCUSABLE MULTI_LINE MULTISELECTABLE SHOWING VISIBLE' relations='FLOWS_FROM FLOWS_TO'
              +-name='B2' role='table cell' state='EDITABLE ENABLED SELECTABLE SHOWING VISIBLE' relations=''
                +-name=None role='paragraph' state='EDITABLE ENABLED FOCUSABLE MULTI_LINE MULTISELECTABLE SHOWING VISIBLE' relations='FLOWS_FROM FLOWS_TO'
                +-name=None role='paragraph' state='EDITABLE ENABLED FOCUSABLE MULTI_LINE MULTISELECTABLE SHOWING VISIBLE' relations='FLOWS_FROM FLOWS_TO'
                +-name=None role='paragraph' state='EDITABLE ENABLED FOCUSABLE FOCUSED MULTI_LINE MULTISELECTABLE SHOWING VISIBLE' relations='FLOWS_FROM FLOWS_TO'
              +-name='C2' role='table cell' state='EDITABLE ENABLED SELECTABLE SHOWING VISIBLE' relations=''
                +-name=None role='paragraph' state='EDITABLE ENABLED FOCUSABLE MULTI_LINE MULTISELECTABLE SHOWING VISIBLE' relations='FLOWS_FROM FLOWS_TO'
                +-name=None role='paragraph' state='EDITABLE ENABLED FOCUSABLE MULTI_LINE MULTISELECTABLE SHOWING VISIBLE' relations='FLOWS_FROM FLOWS_TO'
                +-name=None role='paragraph' state='EDITABLE ENABLED FOCUSABLE MULTI_LINE MULTISELECTABLE SHOWING VISIBLE' relations='FLOWS_FROM FLOWS_TO'
              +-name='A3' role='table cell' state='EDITABLE ENABLED SELECTABLE SHOWING VISIBLE' relations=''
                +-name=None role='paragraph' state='EDITABLE ENABLED FOCUSABLE MULTI_LINE MULTISELECTABLE SHOWING VISIBLE' relations='FLOWS_FROM FLOWS_TO'
              +-name='B3' role='table cell' state='EDITABLE ENABLED SELECTABLE SHOWING VISIBLE' relations=''
                (*)name=None role='paragraph' state='EDITABLE ENABLED FOCUSABLE MULTI_LINE MULTISELECTABLE SHOWING VISIBLE' relations='FLOWS_FROM FLOWS_TO'
                +-name=None role='paragraph' state='EDITABLE ENABLED FOCUSABLE MULTI_LINE MULTISELECTABLE SHOWING VISIBLE' relations='FLOWS_FROM FLOWS_TO'
                +-name=None role='paragraph' state='EDITABLE ENABLED FOCUSABLE MULTI_LINE MULTISELECTABLE SHOWING VISIBLE' relations='FLOWS_FROM FLOWS_TO'
              +-name='C3' role='table cell' state='EDITABLE ENABLED SELECTABLE SHOWING VISIBLE' relations=''
                +-name=None role='paragraph' state='EDITABLE ENABLED FOCUSABLE MULTI_LINE MULTISELECTABLE SHOWING VISIBLE' relations='FLOWS_FROM FLOWS_TO'
                +-name=None role='paragraph' state='EDITABLE ENABLED FOCUSABLE MULTI_LINE MULTISELECTABLE SHOWING VISIBLE' relations='FLOWS_FROM FLOWS_TO'
                +-name=None role='paragraph' state='EDITABLE ENABLED FOCUSABLE MULTI_LINE MULTISELECTABLE SHOWING VISIBLE' relations='FLOWS_FROM FLOWS_TO'
            +-name=None role='paragraph' state='EDITABLE ENABLED FOCUSABLE MULTI_LINE MULTISELECTABLE SHOWING VISIBLE' relations='FLOWS_FROM'
          +-name=None role='filler' state='ENABLED RESIZABLE SENSITIVE SHOWING VISIBLE' relations=''
          +-name=None role='panel' state='ENABLED SENSITIVE SHOWING VISIBLE' relations=''
          +-name=None role='panel' state='ENABLED SENSITIVE SHOWING VISIBLE' relations=''
          +-name=None role='scroll bar' state='ENABLED FOCUSABLE HORIZONTAL SENSITIVE SHOWING VISIBLE' relations=''
          +-name='Click the up button to scroll to the previous page or object.' role='push button' state='ENABLED FOCUSABLE SENSITIVE SHOWING VISIBLE' relations=''
          +-name='Click the down button to scroll to the next page or object.' role='push button' state='ENABLED FOCUSABLE SENSITIVE SHOWING VISIBLE' relations=''
          +-name='Navigation' role='push button' state='ENABLED FOCUSABLE SENSITIVE SHOWING VISIBLE' relations=''
          +-name=None role='scroll bar' state='ENABLED FOCUSABLE SENSITIVE SHOWING VERTICAL VISIBLE' relations=''
      +-name=None role='statusbar' state='ENABLED SENSITIVE SHOWING VISIBLE' relations=''
        +-name='Page Number' role='label' state='ENABLED SENSITIVE SHOWING VISIBLE' relations=''
        +-name='Page Style' role='label' state='ENABLED SENSITIVE SHOWING VISIBLE' relations=''
        +-name='Zoom' role='label' state='ENABLED SENSITIVE SHOWING VISIBLE' relations=''
        +-name='Insert Mode' role='label' state='ENABLED SENSITIVE SHOWING VISIBLE' relations=''
        +-name='Selection Mode' role='label' state='ENABLED SENSITIVE SHOWING VISIBLE' relations=''
        +-name='Hyperlinks Active' role='label' state='ENABLED SENSITIVE SHOWING VISIBLE' relations=''
        +-name='Document Modified' role='label' state='ENABLED SENSITIVE SHOWING VISIBLE' relations=''
        +-name='Digital Signatures' role='label' state='ENABLED SENSITIVE SHOWING VISIBLE' relations=''
        +-name='Size' role='label' state='ENABLED SENSITIVE SHOWING VISIBLE' relations=''
  +-name='Table' role='frame' state='ENABLED SENSITIVE SHOWING VISIBLE' relations=''
    +-name='Table' role='frame' state='ENABLED RESIZABLE SENSITIVE SHOWING VISIBLE' relations=''
      +-name='Table' role='tool bar' state='ENABLED FOCUSABLE HORIZONTAL SENSITIVE SHOWING VISIBLE' relations=''
        +-name='Table' role='push button' state='ENABLED FOCUSABLE SENSITIVE SHOWING VISIBLE' relations=''
        +-name=None role='separator' state='FOCUSABLE SHOWING VISIBLE' relations=''
        +-name='Line Style' role='push button' state='ENABLED FOCUSABLE SENSITIVE SHOWING VISIBLE' relations=''
        +-name='Line Color (of the border)' role='push button' state='ENABLED FOCUSABLE SENSITIVE SHOWING VISIBLE' relations=''
        +-name=None role='separator' state='FOCUSABLE SHOWING VISIBLE' relations=''
        +-name='Borders' role='push button' state='ENABLED FOCUSABLE SENSITIVE SHOWING VISIBLE' relations=''
        +-name='Background Color' role='push button' state='ENABLED FOCUSABLE SENSITIVE SHOWING VISIBLE' relations=''
        +-name=None role='separator' state='FOCUSABLE SHOWING VISIBLE' relations=''
        +-name='Merge Cells' role='push button' state='FOCUSABLE SHOWING VISIBLE' relations=''
        +-name='Split Cells' role='push button' state='ENABLED FOCUSABLE SENSITIVE SHOWING VISIBLE' relations=''
        +-name='Optimize' role='push button' state='ENABLED FOCUSABLE SENSITIVE SHOWING VISIBLE' relations=''
        +-name=None role='separator' state='FOCUSABLE SHOWING VISIBLE' relations=''
        +-name='Top' role='toggle button' state='CHECKED ENABLED FOCUSABLE SENSITIVE SHOWING VISIBLE' relations=''
        +-name='Center ( vertical )' role='toggle button' state='ENABLED FOCUSABLE SENSITIVE SHOWING VISIBLE' relations=''
        +-name='Bottom' role='toggle button' state='ENABLED FOCUSABLE SENSITIVE SHOWING VISIBLE' relations=''
        +-name=None role='separator' state='FOCUSABLE SHOWING VISIBLE' relations=''
        +-name='Insert Row' role='push button' state='ENABLED FOCUSABLE SENSITIVE SHOWING VISIBLE' relations=''
        +-name='Insert Column' role='push button' state='ENABLED FOCUSABLE SENSITIVE SHOWING VISIBLE' relations=''
        +-name='Delete Row' role='push button' state='ENABLED FOCUSABLE SENSITIVE SHOWING VISIBLE' relations=''
        +-name='Delete Column' role='push button' state='ENABLED FOCUSABLE SENSITIVE SHOWING VISIBLE' relations=''
        +-name=None role='separator' state='FOCUSABLE SHOWING VISIBLE' relations=''
        +-name=None role='separator' state='FOCUSABLE SHOWING VISIBLE' relations=''
        +-name='AutoFormat' role='push button' state='ENABLED FOCUSABLE SENSITIVE SHOWING VISIBLE' relations=''
        +-name='Table Properties' role='push button' state='ENABLED FOCUSABLE SENSITIVE SHOWING VISIBLE' relations=''
        +-name=None role='separator' state='FOCUSABLE SHOWING VISIBLE' relations=''
        +-name='Sort' role='push button' state='FOCUSABLE SHOWING VISIBLE' relations=''
        +-name=None role='separator' state='FOCUSABLE SHOWING VISIBLE' relations=''
        +-name='Sum' role='push button' state='ENABLED FOCUSABLE SENSITIVE SHOWING VISIBLE' relations=''
Comment 18 Rich Burridge 2006-12-12 17:38:34 UTC
Created attachment 78216 [details] [review]
Patch variant to hopefully handle multiple paragraphs per table cell too.

This seems to work nicely. One slight bit of ugliness is when
you are going Up/Down in the same multi-paragraph table cell.
It's prepending "paragraph". I can't see a simple way of getting
rid of this without adding a *lot* of extra code. Hopefully we can
live with the extra bit of verboseness.

Comments please (especially you Mike who has kept quiet so far ;-).
Comment 19 Mike Pedersen 2006-12-12 20:14:23 UTC
Hi Rich, I think this patch is OK to commit. I'm about to open a separate rfe on a change to how paragraphs should be handled.  
Comment 20 Joanmarie Diggs (IRC: joanie) 2006-12-12 20:22:47 UTC
I can live with the extra bit of verboseness, however:

I just tried it in the simple table sample.  Now when you arrow up and down, Orca seems to speak the cell you just left followed by the cell you just landed on.  In single-paragraph tables, the previous patch is preferable.
Comment 21 Rich Burridge 2006-12-12 20:38:05 UTC
Okay, I'll keep working on it. We should be able to handle both cases.
Thanks.
Comment 22 Rich Burridge 2006-12-12 20:41:11 UTC
I take it back. I'm not seeing this problem using "table-sample.odt"
with OOo v2.0.4 on Ubuntu Edgy with Orca from CVS HEAD from yesterday
plus patches StarOffice.py script. I tried with both speak-by-row and
speak-by-cell

So...

Can you give me exact, blow-by-blow steps on how to try to reproduce
the problem you see please?

Thanks.
Comment 23 Joanmarie Diggs (IRC: joanie) 2006-12-12 21:01:21 UTC
I am using the latest (from just now) Orca from CVS HEAD with the latest patch (from comment 18) applied.  On this machine, I'm using OOo v2.0.4 with Edgy.

It seems the behavior is inconsistent, but I can reproduce the following reliably:

1. Launch Orca
2. Open table-sample.odt.  Focus is in the cell with "Mon".  On this machine, speak-by-row is enabled by default.
3. Down arrow three times to the cell that contains 11.  Up to this point, Orca is behaving as expected.
4. Up arrow once to the cell that contains 4.  Orca says "11" before reading the row.
5. Up arrow once to the blank cell on the previous row.  Orca says "4" before reading the row.
6. Switch to speak-by-row
7. Down arrow once to the cell that contains 4.  Orca says "Cell B2" before "4 cell B3"
8. Down arrow once to the cell that contains 11.  Orca says "Cell B3" before "11 cell B4"

HTH
Comment 24 Rich Burridge 2006-12-12 21:10:33 UTC
Okay. Thanks Joanie. I've gone ahead and checked the current patch in.
I've also found the fix for the spurious "paragraph".

Index: src/orca/speechgenerator.py
===================================================================
RCS file: /cvs/gnome/orca/src/orca/speechgenerator.py,v
retrieving revision 1.87
diff -u -r1.87 speechgenerator.py
--- src/orca/speechgenerator.py 3 Dec 2006 11:24:21 -0000       1.87
+++ src/orca/speechgenerator.py 12 Dec 2006 21:04:40 -0000
@@ -812,7 +812,8 @@
         if len(utterances) == 0:
             if obj.name and (len(obj.name)):
                 utterances.append(obj.name)
-        utterances.extend(self._getSpeechForObjectRole(obj))
+        if obj.role != rolenames.ROLE_PARAGRAPH:
+            utterances.extend(self._getSpeechForObjectRole(obj))

         [text, caretOffset, startOffset] = util.getTextLineAtCaret(obj)
         utterances.append(text)

That's checked in too.

I'm going to go-ahead and close out the other two related OOo Orca bugs you've
open. Those I believe are fixed.

I'll then look at your test case.


Comment 25 Rich Burridge 2006-12-12 21:41:13 UTC
Created attachment 78234 [details] [review]
Patch to fix the incorrect speaking of the old cell name.

I think I found the problem. It should no longer speak the 
previous cell name when moving up or down in a table in OOo
Writer, when speak-by-cell is enabled. I've checked this into
CVS HEAD. Joanie, if this is fixed for you too (and assuming 
you don't find any other problems), I'll go ahead and close 
this out. Let me know... Thanks.
Comment 26 Joanmarie Diggs (IRC: joanie) 2006-12-12 22:03:53 UTC
Now, instead of speaking the previous cell name, it speaks the previous cell contents.  Sorry!
Comment 27 Rich Burridge 2006-12-12 22:16:59 UTC
I did find one more problem with the old cell name being spoken
when moving with Left, Right, Tab or Shift Tab, and with speak-by-cell
enabled. The following patch (which I've checked into CVS HEAD) fixes that:

Index: StarOffice.py
===================================================================
RCS file: /cvs/gnome/orca/src/orca/scripts/StarOffice.py,v
retrieving revision 1.69
diff -u -r1.69 StarOffice.py
--- StarOffice.py       12 Dec 2006 21:38:43 -0000      1.69
+++ StarOffice.py       12 Dec 2006 22:12:46 -0000
@@ -1585,7 +1585,8 @@
                (event_string == "Right" and caretOffset == 0) or \
                (event_string == "Tab" or event_string == "ISO_Left_Tab"):
                 if settings.readTableCellRow == False:
-                    self.speakCellName(event.source.parent.name)
+                    if event.detail1 != -1:
+                        self.speakCellName(event.source.parent.name)

                 # Speak a blank line, if appropriate.
                 if self.speakBlankLine(event.source):

But I'm simply not seeing the latest problem you are seeing "speaking
the previous cell contents". 

Can you give me a set of steps to try to recreate it please?

Thanks.
Comment 28 Joanmarie Diggs (IRC: joanie) 2006-12-12 22:52:12 UTC
At the risk of sounding crazy....

All I have to do is down arrow a few times (e.g. to the cell that contains 18) and then up arrow.  I figured that perhaps a full debug.out would help, but (here's the crazy part) when I changed my user-settings.py so that the debug level was LEVEL_ALL and the eventDebugLevel line uncommented, it stopped happening.  At best, under those circumstances, I can get one repeat out of 20 attempts.  If I re-comment that line and set the debug level back to LEVEL_SEVERE, the problem reappears.

I'll keep trying....
Comment 29 Joanmarie Diggs (IRC: joanie) 2006-12-12 23:09:45 UTC
Created attachment 78247 [details]
full debug.out

Okay, I captured it.  If you look at the attached, you'll see that for the most part I got one cell spoken per keyevent as expected.  Eventually I arrowed down to the cell that contains "25" which was spoken (line 2561 of debug.out).  Then I up arrowed to the cell that contains 18.  However, Orca spoke "25" (line 2633) and then spoke "18" (line 2672).  I up arrowed to the cell that contains 11.  Orca repeated "18" (line 2767) before speaking "11" (line 2814).
Comment 30 Rich Burridge 2006-12-13 00:12:34 UTC
Thanks Joanie. Good sleuthing! Could you try making the following
change and see if that fixes it please:

Index: StarOffice.py
===================================================================
RCS file: /cvs/gnome/orca/src/orca/scripts/StarOffice.py,v
retrieving revision 1.70
diff -u -r1.70 StarOffice.py
--- StarOffice.py       12 Dec 2006 22:14:59 -0000      1.70
+++ StarOffice.py       13 Dec 2006 00:09:07 -0000
@@ -1382,6 +1382,7 @@
         if event.type == "object:state-changed:focused" and \
            event.source.role == rolenames.ROLE_PARAGRAPH and \
            event.source.parent.role == rolenames.ROLE_TABLE_CELL and \
+           event.source.detail1 == 1 and \
            event.source.state.count(atspi.Accessibility.STATE_FOCUSED):
 
             # Check to see if the last input event was "Up" or "Down".

I want to get your feedback before I check it in "as done", because in
the last case for a similar change for onCaretMoved, I had to reverse
the test, i.e.:

+           event.source.detail1 != 0 and \

I don't think that's needed in this case.

Will, is there a place where all these detail1/detail2 meanings is written up?
I'm having to guess whether I should be doing something on not, and that's not
good.

Comment 31 Joanmarie Diggs (IRC: joanie) 2006-12-13 00:59:19 UTC
Because the problem is intermittent, I arrowed up and down *a bunch* -- and ran the test several times. I can no longer reproduce the problem.
Comment 32 Rich Burridge 2006-12-13 01:27:57 UTC
Thanks for the testing. I've checked that change in, and I'm
closing the bug as FIXED. If you find any more problems, please
just comment and I'll have a look at them.
Comment 33 Joanmarie Diggs (IRC: joanie) 2006-12-14 02:57:30 UTC
Rich:  I was looking at your patch for bug 382418 and noticed in debug.out that this fix seems to be generating an error:

DEQUEUED EVENT object:state-changed:focused <----------

vvvvv PROCESS OBJECT EVENT object:state-changed:focused vvvvv
OBJECT EVENT: object:state-changed:focused             detail=(1,0)
    app.name='soffice.bin'        name=None role='paragraph' state='EDITABLE ENABLED FOCUSABLE FOCUSED MULTI_LINE MULTISELECTABLE SHOWING VISIBLE' relations='FLOWS_FROM FLOWS_TO'
SPEECH OUTPUT: 'table with 7 rows and 7 columns.'

Traceback (most recent call last):
  • File "/usr/lib/python2.4/site-packages/orca/focus_tracking_presenter.py", line 500 in _processObjectEvent
    s.processObjectEvent(event)
  • File "/usr/lib/python2.4/site-packages/orca/script.py", line 215 in processObjectEvent
    self.listeners[key](event)
  • File "/usr/lib/python2.4/site-packages/orca/scripts/StarOffice.py", line 1422 in onStateChanged
    if event.type == "object:state-changed:focused" and \
  • File "/usr/lib/python2.4/site-packages/orca/atspi.py", line 1345 in __getattr__
    return self.__dict__[attr]
KeyError: 'detail1'

^^^^^ PROCESS OBJECT EVENT object:state-changed:focused ^^^^
Comment 34 Joanmarie Diggs (IRC: joanie) 2006-12-14 03:52:50 UTC
Rich I looked around for other instances of "detail1" in the scripts.  Based on that...  I think that instead of:

           event.source.detail1 == 1 and \

you want

           event.detail1 == 1 and \
Comment 35 Rich Burridge 2006-12-14 04:11:15 UTC
Yup. I noticed it as I was testing the table boundry patch.
I snuck an update to StarOffice.py in this afternoon. It's
fixed in CVS HEAD. Thanks for following up.
Comment 36 Rich Burridge 2007-05-11 14:30:42 UTC
Reopening this bug for further comments.

At open point we opened up OpenOffice issue #72470 on this problem.
This has just been closed as INVALID by Oliver with:

------- Additional comments from obr@openoffice.org Fri May 11 05:26:54 +0000 2007 -------
Thanks to the patch I was finally able to reproduce the issue. However, this
doesn't seem to be an OOo bug:

what happens is that Orca always queries the last child/paragraph of the table
cell for its text, which seems to be due to the implementation of
getRealActiveDescendant in default.py. I have changed it to return child 1 if
the child count is greater than 1, and now Orca is reading "Line 2 of RC.." all
the time.

----

As we have a workaround in the StarOffice.py script already in place,
do we wish to make any changes to getRealActiveDescendant in default.py?
Comment 37 Rich Burridge 2007-05-18 10:34:15 UTC
Setting this one to [will] for his thoughts on comment #36.
Comment 38 Willie Walker 2007-05-18 12:33:49 UTC
I have a question regarding this:

> getRealActiveDescendant in default.py. I have changed it to return child 1 if
> the child count is greater than 1, and now Orca is reading "Line 2 of RC.." all
> the time.

Is this desired behavior?

In addition, with respect to gertRealActiveDescendant, there's a comment in this code regarding the use of child(1):

        # [[[TODO: WDW - this is an odd hacky thing I've somewhat drawn
        # from Gnopernicus.  The notion here is that we get an active
        # descendant changed event, but that object tends to have children
        # itself and we need to decide what to do.  Well...the idea here
        # is that the last child (Gnopernicus chooses child(1)), tends to
        # be the child with information.  The previous children tend to
        # be non-text or just there for spacing or something.  You will
        # see this in the various table demos of gtk-demo and you will
        # also see this in the Contact Source Selector in Evolution.
        #
        # Just note that this is most likely not a really good solution
        # for the general case.  That needs more thought.  But, this
        # comment is here to remind us this is being done in poor taste
        # and we need to eventually clean up our act.]]]

So, I'd say if you can devise a solution that works with the various table demos of gtk-demo and the Contact Source Selector in Evolution and OOo, then it seems like it might be good to get it into default.py.  Otherwise, I'd say stick with the workaround in StarOffice.py.
Comment 39 Rich Burridge 2007-05-22 13:44:16 UTC
> Is this desired behavior?

Don't know.

> So, I'd say if you can devise a solution that works with the various table
> demos of gtk-demo and the Contact Source Selector in Evolution and OOo, then it
> seems like it might be good to get it into default.py.  Otherwise, I'd say
> stick with the workaround in StarOffice.py.

I'm going to take the attitude, if it ain't broke, don't fix it.
The version of getRealActiveDescendant() in default.py seems to work nicely
with everything else and we have a workaround for OOo Writer tables in
the StarOffice.py script. Closing (again) as FIXED.
Comment 40 Rich Burridge 2007-09-21 19:51:28 UTC
Created attachment 95984 [details]
OOo Writer example table-sample.odt