[Webkit-unassigned] [Bug 47630] reversion bubble in WebViews
bugzilla-daemon at webkit.org
bugzilla-daemon at webkit.org
Thu Nov 4 11:22:45 PDT 2010
https://bugs.webkit.org/show_bug.cgi?id=47630
mitz at webkit.org changed:
What |Removed |Added
----------------------------------------------------------------------------
Attachment #72904|review? |review-
Flag| |
--- Comment #2 from mitz at webkit.org 2010-11-04 11:22:45 PST ---
(From update of attachment 72904)
View in context: https://bugs.webkit.org/attachment.cgi?id=72904&action=review
Generally good, but enough comments to warrant a second round.
> WebCore/ChangeLog:18
> + 1. On Mac OS X, the result of spell checking is partly determined by past user usage. We can't
> + realiably generating test cases until we can disable user custom data during spell checking.
Is there a way to set up the environment for DumpRenderTree such that it won’t be affected by user data?
> WebCore/ChangeLog:21
> + This patch is to add reversion to correction panel. It consistis of following major code changes:
Typo: “consistis”
> WebCore/ChangeLog:37
> + the new selection is a carret selection at end of a previously corrected word.
Typo: “carret”.
> WebCore/WebCore.vcproj/WebCore.vcproj:45856
> + RelativePath="..\editing\CorrectionPanelInfo.h"
> + >
You used spaces instead of tabs for some of the indentation here.
> WebCore/editing/CorrectionPanelInfo.h:38
> +#endif /* #if PLATFORM(MAC) && !defined(BUILDING_ON_TIGER) && !defined(BUILDING_ON_LEOPARD) && !defined(BUILDING_ON_SNOW_LEOPARD) */
Use // for the trailing comment.
> WebCore/editing/CorrectionPanelInfo.h:49
> + enum {
> + PanelTypeCorrection = 0,
> + PanelTypeReversion
> + };
> + typedef unsigned PanelType;
This is not a bit mask, so you should just name the enum and avoid the typedef.
> WebCore/editing/CorrectionPanelInfo.h:58
> +enum CorrectionWasRejectedOrNot { CorrectionWasNotRejected, CorrectionWasRejected };
I wonder if “Accepted” would be better than “Not Rejected”.
> WebCore/editing/Editor.cpp:500
> + if (currentSelection.isCaret() && currentSelection != oldSelection) {
> + VisiblePosition selectionPosition = currentSelection.start();
> + VisiblePosition endPositionOfWord = endOfWord(selectionPosition, LeftWordIfOnBoundary);
> + if (selectionPosition == endPositionOfWord) {
> + Position position = endPositionOfWord.deepEquivalent();
> + if (position.anchorType() == Position::PositionIsOffsetInAnchor) {
> + Node* node = position.containerNode();
> + int endOffset = position.offsetInContainerNode();
> + Vector<DocumentMarker> markers = node->document()->markers()->markersForNode(node);
> + size_t markerCount = markers.size();
> + for (size_t i = 0; i < markerCount; ++i) {
> + const DocumentMarker& marker = markers[i];
> + if (marker.type == DocumentMarker::CorrectionIndicator && static_cast<int>(marker.endOffset) == endOffset) {
> + RefPtr<Range> wordRange = Range::create(frame()->document(), node, marker.startOffset, node, marker.endOffset);
> + String currentWord = plainText(wordRange.get());
> + if (currentWord.length() > 0 && marker.description.length() > 0) {
> + m_correctionPanelInfo.m_rangeToBeReplaced = wordRange;
> + m_correctionPanelInfo.m_replacementString = marker.description;
> + startCorrectionPanelTimer(CorrectionPanelInfo::PanelTypeReversion);
> + }
> + break;
> + }
> + }
> + }
> + }
> + }
You could write this using early returns to avoid this deep indentation.
> WebCore/editing/Editor.cpp:2490
> + return client()->dismissCorrectionPanel(CorrectionWasRejected);
No need for “return” here.
> WebCore/editing/Editor.cpp:2511
> + return client()->dismissCorrectionPanel(correctionWasRejectedOrNot);
Ditto.
You can also change this method and handleCancelOperation() to have early returns instead of indenting the entire body of the method.
> WebCore/platform/graphics/mac/GraphicsContextMac.mm:27
> +#import "CorrectionPanelInfo.h"
It’s a layering violation to include in platform/ files headers from other parts of WebCore. I suggest that you just leave this file as-is (with the BUILDING_ON checks).
> WebKit/mac/WebCoreSupport/WebEditorClient.mm:873
> + NSCorrectionBubbleType correctionPanelType = panelType == WebCore::CorrectionPanelInfo::PanelTypeCorrection
> + ? NSCorrectionBubbleTypeCorrection
> + : NSCorrectionBubbleTypeReversion;
Please just write this expression in a single line or two lines with normal 4-space indentation for the second line. You should probably name this “correctionBubbleType” or just “bubbleType”.
> WebKit/mac/WebCoreSupport/WebEditorClient.mm:875
> + if (!acceptedString && correctionPanelType == WebCore::CorrectionPanelInfo::PanelTypeCorrection) {
You’re comparing a variable of type NSCorrectionBubbleType to a WebCore enum. Didn’t you mean to compare to NSCorrectionBubbleTypeCorrection?
> WebKit/mac/WebCoreSupport/WebEditorClient.mm:878
> + } else if (acceptedString && correctionPanelType == WebCore::CorrectionPanelInfo::PanelTypeReversion) {
Similar question here.
> WebKit/mac/WebCoreSupport/WebEditorClient.mm:888
> + if (correctionWasRejectedOrNot)
This is confusing to read. If you use the variable as a boolean expression, you should give it a non-ambiguous name. Or you can just explicitly compare to one of the enum values.
--
Configure bugmail: https://bugs.webkit.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug.
More information about the webkit-unassigned
mailing list