WebKit Bugzilla
New
Browse
Log In
×
Sign in with GitHub
or
Remember my login
Create Account
·
Forgot Password
Forgotten password account recovery
RESOLVED FIXED
Bug 25673
[GTK] ATs should be able to select/unselect text
https://bugs.webkit.org/show_bug.cgi?id=25673
Summary
[GTK] ATs should be able to select/unselect text
Joanmarie Diggs
Reported
2009-05-10 12:43:00 PDT
As part of
bug 16135
support was added for text selection via the keyboard. (Thanks!!) In addition to this capability, users of refreshable braille displays expect to be able to select text using their display instead of the keyboard. In order to provide this support, assistive technologies such as Orca need to be able to select and unselect text. This can be accomplished via set_selection and remove_selection. (If multiple text selections can or will be possible via keyboard or mouse, add_selection should also be implemented.) Marking the priority as P3 because the other Gtk+/Atk bugs are more critical than this one.
Attachments
Patch proposal
(9.77 KB, patch)
2010-08-12 10:15 PDT
,
Mario Sanchez Prada
no flags
Details
Formatted Diff
Diff
Patch proposal
(9.61 KB, patch)
2010-08-31 05:19 PDT
,
Mario Sanchez Prada
no flags
Details
Formatted Diff
Diff
Path proposal + Unit tests
(19.52 KB, patch)
2010-09-07 10:13 PDT
,
Mario Sanchez Prada
mrobinson
: review-
Details
Formatted Diff
Diff
Path proposal + Unit tests
(22.62 KB, patch)
2010-09-10 11:04 PDT
,
Mario Sanchez Prada
no flags
Details
Formatted Diff
Diff
Path proposal + Unit tests
(22.55 KB, patch)
2010-09-10 11:27 PDT
,
Mario Sanchez Prada
no flags
Details
Formatted Diff
Diff
Path proposal + Unit tests
(21.73 KB, patch)
2010-09-10 11:55 PDT
,
Mario Sanchez Prada
no flags
Details
Formatted Diff
Diff
Show Obsolete
(5)
View All
Add attachment
proposed patch, testcase, etc.
Mario Sanchez Prada
Comment 1
2010-08-12 10:15:21 PDT
Created
attachment 64235
[details]
Patch proposal Asking for review on this patch. More details in the ChangeLog entry inside the patch. Note: Unit tests for this new stuff are provided by the patch for
bug 43919
(which was filed just with the purpose of providing those unittests) because they couldn't be properly implemented without the fix for
bug 26991
, which is closely related to this one. That's why
bug 43919
was set as dependent on these other two bugs (so patches get applied in order once reviewed+). See comments on
bug 26991
and
bug 43919
for more details
WebKit Review Bot
Comment 2
2010-08-12 12:15:31 PDT
Attachment 64235
[details]
did not build on gtk: Build output:
http://queues.webkit.org/results/3762092
Mario Sanchez Prada
Comment 3
2010-08-12 12:43:46 PDT
(In reply to
comment #2
)
>
Attachment 64235
[details]
did not build on gtk: > Build output:
http://queues.webkit.org/results/3762092
Hmm... true, but that is because it uses a new static function defined while writing the patch for
bug 26991
. It would be great if we could set this bug as depending on
bug 26991
then, but I can't do it. Perhaps Joanmarie could (as she's the reporter). If not possible, I can write a new patch not assuming the function defined in the other patch and later on we could do the merge, or just provide a new -updated- patch in the bug being fixed in second place. Opinions?
Mario Sanchez Prada
Comment 4
2010-08-12 12:49:41 PDT
(In reply to
comment #3
)
> [...] > It would be great if we could set this bug as depending on
bug 26991
then, but > I can't do it. Perhaps Joanmarie could (as she's the reporter).
Thanks Joanie! Now let's wait for 26991 to get reviewed+ :-)
Mario Sanchez Prada
Comment 5
2010-08-31 05:19:00 PDT
Created
attachment 66040
[details]
Patch proposal Updating patch after coming back from holidays, based on
comment #5
for
bug 26991
(guess the same rationale applies here). (Remember that this patch depends on patch
bug 26991
to work)
WebKit Review Bot
Comment 6
2010-08-31 05:34:07 PDT
Attachment 66040
[details]
did not build on gtk: Build output:
http://queues.webkit.org/results/3855184
Mario Sanchez Prada
Comment 7
2010-09-07 10:13:40 PDT
Created
attachment 66735
[details]
Path proposal + Unit tests Attaching new up-to-date version now we (Martin and I) decided to bundle unit tests for this stuff along with this patch (instead of using a the new
bug 43919
for that, which should be closed/invalidated now). Hope this helps to get this stuff in soon O:-) PS: Still, note this patch won't work if you don't apply patch for
bug 26991
first, as it uses a new function defined there
WebKit Review Bot
Comment 8
2010-09-07 11:15:07 PDT
Attachment 66735
[details]
did not build on gtk: Build output:
http://queues.webkit.org/results/3961245
Martin Robinson
Comment 9
2010-09-07 15:06:32 PDT
Comment on
attachment 66735
[details]
Path proposal + Unit tests View in context:
https://bugs.webkit.org/attachment.cgi?id=66735&action=prettypatch
Looks good, but I have a few concerns.
> WebCore/accessibility/AccessibilityObject.cpp:-377 > -#if PLATFORM(GTK)
Nice!
> WebCore/accessibility/gtk/AccessibilityObjectWrapperAtk.cpp:1419 > static gboolean webkit_accessible_text_remove_selection(AtkText* text, gint selection_num)
Please convert non-WebKit-style variable names as you implement these methods.
> WebCore/accessibility/gtk/AccessibilityObjectWrapperAtk.cpp:1435 > + if (startOffset != endOffset) {
Please use early returns.
> WebCore/accessibility/gtk/AccessibilityObjectWrapperAtk.cpp:1440 > + VisiblePositionRange range = coreObject->visiblePositionRangeForRange(textRange);
Why not just use core(text)->setSelectedTextRange(PlainTextRange(caretOffset, 0)); ?
> WebCore/accessibility/gtk/AccessibilityObjectWrapperAtk.cpp:1449 > static gboolean webkit_accessible_text_set_selection(AtkText* text, gint selection_num, gint start_offset, gint end_offset)
Please convert these variable names to WebKit-style as you implement these methods.
> WebCore/accessibility/gtk/AccessibilityObjectWrapperAtk.cpp:1455 > + if (start_offset != end_offset) {
Please use an early return here instead. if (start_offset == end_offset) return FALSE;
> WebCore/accessibility/gtk/AccessibilityObjectWrapperAtk.cpp:1458 > + VisiblePositionRange range = coreObject->visiblePositionRangeForRange(textRange);
Why not just use core(text)->setSelectedTextRange(PlainTextRange(startOffset, endOffset - startOffset)); ?
> WebCore/accessibility/gtk/AccessibilityObjectWrapperAtk.cpp:1472 > + VisiblePositionRange range = coreObject->visiblePositionRangeForRange(textRange);
Why not just use core(text)->setSelectedTextRange(PlainTextRange(offset, 0)); ?
> WebKit/gtk/WebCoreSupport/EditorClientGtk.cpp:357 > + if (gtk_widget_has_screen(GTK_WIDGET(m_webView))) {
This change seems sane, but since we're getting into a condition of depth three (if you count the #if), perhaps we should move this logic to a new method called something like setSelectionPrimaryClipboardIfNeeded and use early returns.
Mario Sanchez Prada
Comment 10
2010-09-10 11:04:13 PDT
Created
attachment 67206
[details]
Path proposal + Unit tests (In reply to
comment #9
)
> (From update of
attachment 66735
[details]
) > View in context:
https://bugs.webkit.org/attachment.cgi?id=66735&action=prettypatch
> > Looks good, but I have a few concerns.
Attaching a new patch, hopefully better (still it depends on patch for 26991 so don't expect this to compile without applying the other one first).
> > WebCore/accessibility/gtk/AccessibilityObjectWrapperAtk.cpp:1419 > > static gboolean webkit_accessible_text_remove_selection(AtkText* text, gint selection_num) > Please convert non-WebKit-style variable names as you implement these methods.
Done
> > WebCore/accessibility/gtk/AccessibilityObjectWrapperAtk.cpp:1435 > > + if (startOffset != endOffset) { > Please use early returns.
Done.
> > WebCore/accessibility/gtk/AccessibilityObjectWrapperAtk.cpp:1440 > > + VisiblePositionRange range = coreObject->visiblePositionRangeForRange(textRange); > Why not just use core(text)->setSelectedTextRange(PlainTextRange(caretOffset, 0)); ?
I removed this part now, and make removeSelection delegate on setSelection, so no more a problem.
> > WebCore/accessibility/gtk/AccessibilityObjectWrapperAtk.cpp:1449 > > static gboolean webkit_accessible_text_set_selection(AtkText* text, gint selection_num, gint start_offset, gint end_offset) > Please convert these variable names to WebKit-style as you implement these methods.
Done.
> > WebCore/accessibility/gtk/AccessibilityObjectWrapperAtk.cpp:1455 > > + if (start_offset != end_offset) { > Please use an early return here instead. > if (start_offset == end_offset) > return FALSE; > > > WebCore/accessibility/gtk/AccessibilityObjectWrapperAtk.cpp:1458 > > + VisiblePositionRange range = coreObject->visiblePositionRangeForRange(textRange); > Why not just use core(text)->setSelectedTextRange(PlainTextRange(startOffset, endOffset - startOffset)); ?
I tried that but didn't work fine, probably (wild guess) because it's not the same than setting a VisibleSelection. Not sure, though. Hence I kept this part as it is.
> > WebCore/accessibility/gtk/AccessibilityObjectWrapperAtk.cpp:1472 > > + VisiblePositionRange range = coreObject->visiblePositionRangeForRange(textRange); > Why not just use core(text)->setSelectedTextRange(PlainTextRange(offset, 0)); ?
I kept this part as it is, as that change didn't work (see rationale above)
> > WebKit/gtk/WebCoreSupport/EditorClientGtk.cpp:357 > > + if (gtk_widget_has_screen(GTK_WIDGET(m_webView))) { > This change seems sane, but since we're getting into a condition of depth three (if you count the #if), perhaps we should move this logic to a new method called something like setSelectionPrimaryClipboardIfNeeded and use early returns.
Done.
Martin Robinson
Comment 11
2010-09-10 11:12:16 PDT
Comment on
attachment 67206
[details]
Path proposal + Unit tests View in context:
https://bugs.webkit.org/attachment.cgi?id=67206&action=prettypatch
> WebCore/accessibility/gtk/AccessibilityObjectAtk.cpp:112 > + if (!textLength) {
This should probably be an early return.
> WebKit/gtk/WebCoreSupport/EditorClientGtk.cpp:346 > +{
I like this a lot better, but I'd rather see early returns. :/ Looks good! r=me, but please switch to using early returns before landing.
Mario Sanchez Prada
Comment 12
2010-09-10 11:27:39 PDT
Created
attachment 67208
[details]
Path proposal + Unit tests (In reply to
comment #11
)
> (From update of
attachment 67206
[details]
) > View in context:
https://bugs.webkit.org/attachment.cgi?id=67206&action=prettypatch
> > > WebCore/accessibility/gtk/AccessibilityObjectAtk.cpp:112 > > + if (!textLength) { > This should probably be an early return. > > > WebKit/gtk/WebCoreSupport/EditorClientGtk.cpp:346 > > +{ > I like this a lot better, but I'd rather see early returns. :/ > > Looks good! r=me, but please switch to using early returns before landing.
Here you have a new version. BTw, I'm not asking for cq+ for now because we must make sure patch for 26991 are landed first (hence, I'll ask for cq+ later)
Martin Robinson
Comment 13
2010-09-10 11:35:26 PDT
Comment on
attachment 67208
[details]
Path proposal + Unit tests View in context:
https://bugs.webkit.org/attachment.cgi?id=67208&action=prettypatch
Thanks! LGTM.
Mario Sanchez Prada
Comment 14
2010-09-10 11:55:00 PDT
Created
attachment 67214
[details]
Path proposal + Unit tests (In reply to
comment #13
)
> (From update of
attachment 67208
[details]
) > View in context:
https://bugs.webkit.org/attachment.cgi?id=67208&action=prettypatch
> > Thanks! LGTM.
This is *the right patch*, sorry for the noise. Guess you'll need to review+ it again (but do not cq+ it yet, please)
WebKit Review Bot
Comment 15
2010-09-10 11:56:40 PDT
Attachment 67214
[details]
did not pass style-queue: Failed to run "['WebKitTools/Scripts/check-webkit-style']" exit_code: 1 WARNING: File exempt from style guide. Skipping: "WebKit/gtk/tests/testatk.c" WebCore/accessibility/gtk/AccessibilityObjectWrapperAtk.cpp:1390: webkit_accessible_text_set_selection is incorrectly named. Don't use underscores in your identifier names. [readability/naming] [4] WebCore/accessibility/gtk/AccessibilityObjectWrapperAtk.cpp:1411: webkit_accessible_text_remove_selection is incorrectly named. Don't use underscores in your identifier names. [readability/naming] [4] Total errors found: 2 in 8 files If any of these errors are false positives, please file a bug against check-webkit-style.
Martin Robinson
Comment 16
2010-09-10 12:59:17 PDT
Comment on
attachment 67214
[details]
Path proposal + Unit tests Ok.
Eric Seidel (no email)
Comment 17
2010-09-10 23:03:58 PDT
Comment on
attachment 67206
[details]
Path proposal + Unit tests Cleared Martin Robinson's review+ from obsolete
attachment 67206
[details]
so that this bug does not appear in
http://webkit.org/pending-commit
.
Eric Seidel (no email)
Comment 18
2010-09-10 23:04:02 PDT
Comment on
attachment 67208
[details]
Path proposal + Unit tests Cleared Martin Robinson's review+ from obsolete
attachment 67208
[details]
so that this bug does not appear in
http://webkit.org/pending-commit
.
Mario Sanchez Prada
Comment 19
2010-09-13 04:58:09 PDT
Comment on
attachment 67214
[details]
Path proposal + Unit tests Now that the patch for
bug 26991
has already landed in the WK repository, it's time to ask for the cq+ for this patch. Thanks!
Xan Lopez
Comment 20
2010-09-13 05:08:01 PDT
Comment on
attachment 67214
[details]
Path proposal + Unit tests Bang.
WebKit Commit Bot
Comment 21
2010-09-13 05:30:08 PDT
Comment on
attachment 67214
[details]
Path proposal + Unit tests Clearing flags on attachment: 67214 Committed
r67383
: <
http://trac.webkit.org/changeset/67383
>
WebKit Commit Bot
Comment 22
2010-09-13 05:30:17 PDT
All reviewed patches have been landed. Closing bug.
Note
You need to
log in
before you can comment on or make changes to this bug.
Top of Page
Format For Printing
XML
Clone This Bug