2006-05-10  Matt Gough  <matt@softchaos.com>

        Reviewed, tweaked, and landed by Darin.

        Optimization of [DOMNode _nodeWith:] to look up the obj-c wrapperClass
        for each HTMLElement using a HashMap instead of by repeated calls to
        htmlElt->hasLocalName(someTag). 

        * bindings/objc/DOM.mm:
        (addElementClass): Added.
        (createHTMLElementClassMap):
        (elementClass):
        (+[DOMNode _nodeWith:]): Added code to call elementClass.

2006-05-09  Mitz Pettel  <opendarwin.org@mitzpettel.com>

        Reviewed by Hyatt.

        - fix http://bugs.webkit.org/show_bug.cgi?id=8760
          crash (hang?) on subtlegradient.com article page

        * manual-tests/first-line-style-crash.html: Added.

        * css/cssstyleselector.cpp:
        (WebCore::CSSStyleSelector::createStyleForElement): Changed to not return the
        shared styleNotYetAvailable if allowSharing is off.
        * rendering/RenderObject.cpp:
        (WebCore::RenderObject::getPseudoStyle): In the FIRST_LINE_INHERITED case,
        set the styleType on the style returned from createStyleForElement().
        * rendering/render_style.h:
        (WebCore::RenderStyle::setStyleType): Added. Called from RenderObject::getPseudoStyle().

2006-05-09  Mitz Pettel  <opendarwin.org@mitzpettel.com>

        Reviewed by Hyatt.

        - fix http://bugs.webkit.org/show_bug.cgi?id=8789
          RenderStyle::getPseudoStyle() always returns 0

        No test possible (no functionality change).

        * dom/Node.cpp:
        (WebCore::Node::diff): When checking if :before or :after has changed,
        return NoInherit unless both pseudoStyles are known and equal.
        * rendering/render_style.cpp:
        (WebCore::RenderStyle::getPseudoStyle): Fixed to match the requested
        type against the pseudoStyle's styleType instead of our own.

2006-05-09  Darin Adler  <darin@apple.com>

        - another attempt to fix the Windows build

        * bindings/js/kjs_window.cpp: (KJS::isSeparator): Take a UChar, not a KJS::UChar.
        * bridge/win/FrameWin.cpp:
        (WebCore::FrameWin::runJavaScriptAlert): Use UChar instead of QChar.
        (WebCore::FrameWin::runJavaScriptConfirm): Ditto.
        * editing/TextIterator.h: Include DeprecatedString.h.

2006-05-09  Darin Adler  <darin@apple.com>

        Reviewed by Hyatt.

        - fix http://bugs.webkit.org/show_bug.cgi?id=8781
          REGRESSION: image maps with "poly" areas, including one at lisp.geek.nz, don't work

        * html/html_imageimpl.cpp: (WebCore::HTMLAreaElement::getRegion): Remove extra Path
        definition that was shadowing the real one.

2006-05-09  Darin Adler  <darin@apple.com>

        - fix build

        * rendering/render_style.cpp: (WebCore::RenderStyle::getPseudoStyle):
        Fix a typo.

        - attempt to fix Windows build

        * css/maketokenizer: Use UChar instead of unsigned short.
        * platform/win/FontWin.cpp:
        (WebCore::getFontData): Removed cast to QChar.
        (WebCore::hackishExtentForString): Use UChar.
        (WebCore::Font::floatWidth): Use UChar.
        (WebCore::Font::drawText): Use UChar.
        (WebCore::Font::drawHighlightForText): Use UChar.
        (WebCore::Font::selectionRectForText): Use UChar.
        (WebCore::Font::checkSelectionPoint): Use UChar.
        * platform/win/KeyEventWin.cpp:
        (WebCore::singleCharacterString): Added.
        (WebCore::PlatformKeyboardEvent::PlatformKeyboardEvent): Use above function.
        * platform/win/TemporaryLinkStubs.cpp:
        (WebCore::findNextSentenceFromIndex): Use UChar.
        (WebCore::findSentenceBoundary): Use UChar.
        (WebCore::findNextWordFromIndex): Use UChar.
        (WebCore::findWordBoundary): Use UChar.
        * platform/win/TransferJobWin.cpp:
        (WebCore::TransferJob::start): Use a different String constructor.
        * rendering/RenderTable.h: Added an include of DeprecatedArray.h.
        * rendering/RenderText.cpp: Added an include of DeprecatedString.h.
        * rendering/render_list.h: Ditto.

2006-05-09  Darin Adler  <darin@apple.com>

        Rubber stamped by Hyatt.

        - http://bugs.webkit.org/show_bug.cgi?id=8782
          use ICU and UChar more, QChar less

        - fix http://bugs.webkit.org/show_bug.cgi?id=6310
          text-transform: uppercase/lowercase don't handle cases one character becomes two

        Test: fast/css/case-transform.html

        By using ICU more, this fixes some bugs in a few places.

        * bindings/js/JSXMLSerializer.cpp:
        * css/css_valueimpl.h:
        * kwq/KWQTextStream.cpp:
        * loader/CachedObject.h:
        * platform/Color.cpp:
        Add includes of DeprecatedString.h as needed, now that StringImpl.h no longer
        includes it.

        * bindings/js/kjs_css.cpp: (KJS::cssPropertyName):
        Eliminate use of QChar::latin1() in a case where it's not helpful.

        * bindings/js/kjs_proxy.cpp: (WebCore::KJSProxy::evaluate):
        Use characters() function instead of the old unicode() function.

        * bindings/js/kjs_window.cpp: (KJS::isSeparator):
        Use UChar instead of QChar.

        * bindings/objc/DOMInternal.mm:
        (StringImpl::operator NSString*): Remove typecast that's no longer needed.
        (String::String): Ditto. Also use Vector for local buffer to make code read simpler.

        * bridge/mac/FrameMac.mm:
        (WebCore::selectorForKeyEvent): Remove call to unicode() function, no longer needed.
        (WebCore::FrameMac::setTitle): Remove QChar cast, no longer needed.
        (WebCore::FrameMac::setStatusBarText): Ditto.
        (WebCore::FrameMac::advanceToNextMisspelling): Use UChar instead of QChar.
        (WebCore::FrameMac::runJavaScriptAlert): Remove QChar cast, no longer needed.
        (WebCore::FrameMac::runJavaScriptConfirm): Ditto.
        (WebCore::FrameMac::runJavaScriptPrompt): Ditto.
        (WebCore::FrameMac::attributedString): Replaces calls of QChar::direction() with
        calls to u_charDirection and use ICU constants instead of QChar ones.
        (WebCore::FrameMac::markMisspellings): Remove QChar cast, no longer needed. Added a
        QChar cast so we can call isSpace -- slated to be removed later.
        (WebCore::FrameMac::shouldClose): Remove QChar cast, no longer needed.

        * bridge/mac/WebCoreFrameBridge.mm:
        (-[WebCoreFrameBridge selectedString]): Remove QChar cast, no longer needed.
        (-[WebCoreFrameBridge stringForRange:]): Ditto.

        * css/CSSGrammar.y: Update for field name change from string to characters.
        Use UChar instead of unsigned short. 

        * css/css_valueimpl.cpp:
        (WebCore::propertyID): Use UChar instead of unsigned short and get rid of call to
        unicode() function, no longer needed.
        (WebCore::quoteStringIfNeeded): Use strings when building up a resulting string,
        instead of depending on the feature where you can append characters to a string.

        * css/csshelper.cpp: (WebCore::parseURL): Remove calls to unicode() function and
        rewrite to obviate the need to call lower() just to check for a few constant
        character values. Also remove a now-unneeded type cast.

        * css/cssparser.h: Changed ParseString field to use UChar and to be named characters
        instead of string. Changed many other fields to be UChar instead of unsigned short.
        (WebCore::domString): Update for that.
        (WebCore::atomicString): Ditto.
        * css/cssparser.cpp:
        (WebCore::ParseString::lower): Use u_tolower instead of QChar::lower(). Also change
        name to characters from string.
        (WebCore::CSSParser::setupParser): Use UChar instead of unsigned short.
        (WebCore::CSSParser::lex): Ditto. Also update for characters name change.
        (WebCore::CSSParser::text): Use UChar instead of unsigned short. Also tweak some
        of the code a little bit to handle a couple of overflow cases better and reduce
        type casting.
        (WebCore::deprecatedString): Moved here so we don't have to include DeprecatedString.h
        in the header file.

        * css/cssstyleselector.cpp: (WebCore::checkPseudoState): Added a type cast since this
        code now bridges the world between modern code and QChar/DeprecatedString.

        * dom/CharacterData.cpp: (WebCore::CharacterData::CharacterData): Changed QChar to UChar.

        * dom/Document.h:
        * dom/Document.cpp:
        (WebCore::Document::isValidName): Updated for name change from unicode to characters.
        (WebCore::Document::parseQualifiedName): Ditto.
        (WebCore::Document::backslashAsCurrencySymbol): Changed return type to UChar.

        * dom/NamedMappedAttrMap.cpp:
        (WebCore::isClassWhitespace): Changed parameter to UChar from QChar.
        (WebCore::NamedMappedAttrMap::parseClassAttribute): Changed from UChar to QChar and
        from unicode to characters.

        * dom/Position.cpp:
        (WebCore::Position::leadingWhitespacePosition): Changed from QChar to UChar.
        (WebCore::Position::trailingWhitespacePosition): Ditto.

        * dom/StyledElement.cpp:
        (WebCore::isClassWhitespace): Changed from QChar to UChar.
        (WebCore::StyledElement::addCSSLength): Changed from QChar to UChar, and remove one
        case where latin1() was used and was not helpful.
        (WebCore::StyledElement::addCSSColor): Removed unicode() function call, no longer needed.

        * dom/dom2_eventsimpl.cpp: (WebCore::KeyboardEvent::charCode):
        * html/HTMLInputElement.cpp: (WebCore::HTMLInputElement::constrainValue):
        Removed unicode() function call, no longer needed.

        * dom/xml_tokenizer.h: Removed default parameter for xmlDocPtrForString so we don't have
        to include the DeprecatedString.h header in this file (and since no one uses it).

        * editing/HTMLInterchange.cpp: (convertHTMLTextToInterchangeFormat): Added a couple calls
        to the unicode() function to bridge the gap from QChar/DeprecatedString back to modern
        code.

        * editing/InsertTextCommand.cpp: Removed unused function.

        * editing/TextIterator.h: Changed from QChar to UChar.
        * editing/TextIterator.cpp:
        (WebCore::TextIterator::TextIterator): Initialize m_lastCharacter since it's now a UChar
        (which is just a typedef) rather than a QChar (which was a class with a default value of 0).
        (WebCore::TextIterator::handleTextNode): Updated to use characters() instead of unicode().
        (WebCore::TextIterator::handleTextBox): Removed unicode() call since it's now a UChar instead
        of a QChar.
        (WebCore::TextIterator::emitCharacter): More of the same.
        (WebCore::SimplifiedBackwardsTextIterator::handleTextNode): Ditto.
        (WebCore::SimplifiedBackwardsTextIterator::emitCharacter): Ditto.
        (WebCore::CharacterIterator::string): Ditto.
        (WebCore::WordAwareIterator::advance): Ditto.
        (WebCore::WordAwareIterator::length): Ditto.
        (WebCore::WordAwareIterator::characters): Ditto.
        (WebCore::CircularSearchBuffer::CircularSearchBuffer): Changed to use UChar
        instead of QChar, but also to use foldCase() instead of lower(), because
        we want case folding here, not lowercasing.
        (WebCore::CircularSearchBuffer::append): Ditto, with u_foldCase.
        (WebCore::CircularSearchBuffer::isMatch): Ditto.
        (WebCore::plainText): Added type cast since this bridges the gap from the modern stuff
        to QChar/DeprecatedString.

        * editing/VisiblePosition.h: Changed from QChar to UChar.
        * editing/VisiblePosition.cpp: (WebCore::VisiblePosition::characterAfter): Ditto.

        * editing/markup.cpp: (WebCore::escapeTextForMarkup): Changed code that used latin1()
        for no good reason to use unicode() instead.
 
        * html/HTMLTokenizer.h: Changed from QChar to UChar.
        * html/HTMLTokenizer.cpp: Changed from QChar to UChar, including removing the
        KHTML_ALLOC_QCHAR_VEC and KHTML_DELETE_QCHAR_VEC macros, which weren't being
        used consistently anyway.
        (WebCore::fixUpChar): More of the same.
        (WebCore::tagMatch): Ditto.
        (WebCore::HTMLTokenizer::reset): Ditto.
        (WebCore::HTMLTokenizer::begin): Ditto. Also corrected anomaly where buffer
        size was not the same as the size value -- this was only true in the initial
        allocation, so I believe there was no value in it.
        (WebCore::HTMLTokenizer::parseSpecial): Ditto. Also removed a use of latin1()
        that was unnnecessary extra work.
        (WebCore::HTMLTokenizer::scriptHandler): More of the same.
        (WebCore::HTMLTokenizer::parseComment): Ditto.
        (WebCore::HTMLTokenizer::parseServer): Ditto.
        (WebCore::HTMLTokenizer::parseProcessingInstruction): Ditto. Another unnecessary
        use of latin1() removed.
        (WebCore::HTMLTokenizer::parseText): Ditto.
        (WebCore::HTMLTokenizer::parseEntity): Ditto. Changed hex-parsing code to handle
        uppercase hex a more-efficient way than calling QChar::lower() on each character.
        Also changed surrogate code logic to fix a couple things -- reject character codes
        > 0x10FFFF as it should and use U16_LEAD and U16_TRAIL instead of writing our
        own versions of these.
        (WebCore::HTMLTokenizer::parseTag): Ditto.
        (WebCore::HTMLTokenizer::write): Ditto.
        (WebCore::HTMLTokenizer::end): Ditto.
        (WebCore::HTMLTokenizer::finish): Ditto.
        (WebCore::HTMLTokenizer::enlargeBuffer): Ditto.
        (WebCore::HTMLTokenizer::enlargeScriptBuffer): Ditto.
        (WebCore::HTMLTokenizer::notifyFinished):
        (WebCore::decodeNamedEntity): Ditto.

        * html/html_inlineimpl.cpp: (WebCore::parseFontSizeNumber): Changed from QChar
        to UChar, including using u_isdigit and u_charDigitValue instead of QChar::isNumber
        and QChar::digitValue. Also removed unneeded range checking that's already done
        by WebCore::String.

        * kwq/KWQLoader.mm: (KWQIsResponseURLEqualToURL): Rewrote to use Vector and UChar,
        removing all the type casts and making the whole function much shorter.

        * kwq/WebCoreAXObject.mm:
        (AXAttributedStringAppendText): Use UChar instead of QChar.
        (-[WebCoreAXObject doAXAttributedStringForTextMarkerRange:]): More of the same.

        * loader/Cache.h: Remove unnecessary default parameters, preventing the need to
        include the DeprecatedString.h header in this header. Cleaned up the header
        structure a bit, removing some obsolete and redundant comments and fixing typos.
        * loader/Cache.cpp: Removed unused preload functions.

        * page/Frame.h:
        * page/Frame.cpp:
        (WebCore::UserStyleSheetLoader::UserStyleSheetLoader): Added explicit arguments.
        This was the only caller anywhere that took advantage of the default parameter
        values in one of the Cache class request functions.
        (WebCore::Frame::backslashAsCurrencySymbol): Changed QChar to UChar.

        * platform/AtomicString.h: Changed QChar to UChar. Removed constructor that makes
        an AtomicString from a single character. Renamed unicode() function to characters().
        Renamed KHTML_ATOMICSTRING_HIDE_GLOBALS to ATOMICSTRING_HIDE_GLOBALS.
        * platform/AtomicString.cpp:
        (WebCore::CStringTranslator::equal): Changed QChar to UChar.
        (WebCore::operator==): Changed unicode() to characters().
        (WebCore::UCharBufferTranslator::hash): More of the same.
        (WebCore::UCharBufferTranslator::equal): Ditto.
        (WebCore::UCharBufferTranslator::translate): Ditto.
        (WebCore::AtomicString::add): Ditto.
        (WebCore::AtomicString::operator Identifier): Ditto.
        (WebCore::AtomicString::operator UString): Ditto.
        (WebCore::AtomicString::AtomicString): Moved here so we don't need DeprecatedString.h
        in the header.
        (WebCore::AtomicString::deprecatedString): Ditto.

        * platform/DeprecatedString.h: Removed QChar::Direction enum and all the DirXXX values,
        isDigit, isLetter, isNumber, isLetterOrNumber, isPunct, digitValue, and direction functions.
        (QChar::isSpace): Changed to use u_charDirection instead of QChar::direction.

        * platform/Font.h: (WebCore::Font::width): Changed QChar to UChar.
        * platform/Font.cpp: (WebCore::Font::width): Ditto.

        * platform/GraphicsContext.h:
        * platform/GraphicsContext.cpp:
        (WebCore::GraphicsContext::drawText): Changed QChar to UChar. Removed horizontalAlignment
        parameter from simplified string drawing entry point, since it's not used.
        (WebCore::GraphicsContext::drawHighlightForText): Changed QChar to UChar.

        * platform/PlatformString.h: Changed QChar to UChar. Removed constructor that makes
        a String from a single character. Renamed unicode() function to characters(). Added
        an append function and changed += operator to just call that. Added a foldCase() function.
        Removed the concatenation operators that add individual strings before or after.
        * platform/String.cpp:
        (WebCore::String::String): Changed QChar to UChar.
        (WebCore::String::append): Renamed from operator+= and removed the return value.
        (WebCore::String::operator[]): Changed QChar to UChar.
        (WebCore::String::foldCase): Added.
        (WebCore::String::percentage): More of the same.
        (WebCore::String::characters): Renamed from unicode().
        (WebCore::String::deprecatedString): More of the same.
        (WebCore::String::sprintf): Fixed mistakes in the comments.
        (WebCore::String::isEmpty): Tweaked a bit.
        (WebCore::operator==): More of the same.
        (WebCore::String::operator Identifier): Ditto.
        (WebCore::String::operator UString): Ditto.

        * platform/SegmentedString.h: Changed from QChar to UChar. Had to initialize
        data members that are now UChar.
        * platform/SegmentedString.cpp:
        (WebCore::SegmentedString::length): Updated for change from QChar to UChar.
        (WebCore::SegmentedString::append): Ditto.
        (WebCore::SegmentedString::prepend): Ditto.
        (WebCore::SegmentedString::toString): Ditto.

        * platform/StringHash.h: Updated to use UChar instead of QChar and for name changes.
        Also changed to use case folding intead of lowercasing for case insensitive hashing.

        * platform/StringImpl.h:
        * platform/StringImpl.cpp:
        (WebCore::newUCharVector): Changed to UChar from QChar.
        (WebCore::deleteUCharVector): Ditto.
        (WebCore::StringImpl::StringImpl): Ditto.
        (WebCore::StringImpl::init): Ditto. Also renamed from initWithChar and initWithQChar.
        (WebCore::StringImpl::~StringImpl): Ditto.
        (WebCore::StringImpl::append): Ditto.
        (WebCore::StringImpl::insert): Ditto.
        (WebCore::StringImpl::truncate): Ditto.
        (WebCore::StringImpl::remove): Ditto.
        (WebCore::StringImpl::split): Ditto.
        (WebCore::StringImpl::containsOnlyWhitespace): Ditto. Also added comment because this
        function seems a little broken.
        (WebCore::parseLength): More of the same.
        (WebCore::StringImpl::toCoordsArray): Ditto.
        (WebCore::StringImpl::toLengthArray): Ditto.
        (WebCore::StringImpl::isLower): Ditto.
        (WebCore::StringImpl::lower): Rewrote to use u_strToLower.
        (WebCore::StringImpl::upper): Rewrote to use u_strToUpper.
        (WebCore::StringImpl::foldCase): Added. Uses u_strFoldCase.
        (WebCore::getWordBreakIterator): Changed to use U_FAILURE instead of accepting only
        U_ZERO_ERROR as a success code.
        (WebCore::StringImpl::capitalize): More QChar to UChar changes.
        (WebCore::StringImpl::toInt): Ditto.
        (WebCore::equal): Changed from QChar to UChar and was careful to preserve the old
        semantics where "high ASCII" is treated as U+0080-U+00FF even though I don't know
        if this feature is important.
        (WebCore::equalIgnoringCase): Ditto, but used case folding instead of lowercasing
        by using the u_foldCase and u_memcasecmp functions. Also renamed from
        equalCaseInsensitive for more-consistent naming.
        (WebCore::StringImpl::find): Ditto. Use case folding for the case insensitive branch.
        (WebCore::StringImpl::replace): More of the same.
        (WebCore::StringImpl::computeHash): Ditto.
        (WebCore::StringImpl::ascii): Ditto.

        * platform/TextBoundaries.h: Changed from QChar to UChar.
        * platform/mac/TextBoundaries.mm:
        (WebCore::findWordBoundary): Made the change to UChar and removed some type casts.
        (WebCore::findNextWordFromIndex): Ditto.
        (WebCore::findSentenceBoundary): Ditto.
        (WebCore::findNextSentenceFromIndex): Ditto.

        * platform/TextEncoding.h:
        * platform/TextEncoding.cpp:
        (WebCore::TextEncoding::backslashAsCurrencySymbol): Changed from QChar to UChar.
        (WebCore::TextEncoding::fromUnicode): More of the same.
        * platform/mac/TextEncodingMac.cpp: (WebCore::TextEncoding::fromUnicode): More
        of the same.

        * platform/mac/FontFamilyMac.mm: (WebCore::FontFamily::getNSFamily): Removed a
        now-unneeded type cast.

        * platform/mac/FontMac.mm:
        (WebCore::Font::selectionRectForText):
        (WebCore::Font::drawText):
        (WebCore::Font::drawHighlightForText):
        (WebCore::Font::floatWidth):
        (WebCore::Font::checkSelectionPoint):
        Changed QChar to UChar and removed some now-unneeded type casts.

        * editing/RebalanceWhitespaceCommand.cpp: (WebCore::isWhitespace):
        * editing/ReplaceSelectionCommand.cpp: (WebCore::ReplaceSelectionCommand::doApply):
        * editing/visible_units.cpp:
        (WebCore::previousBoundary):
        (WebCore::nextBoundary):
        (WebCore::startWordBoundary):
        (WebCore::endWordBoundary):
        (WebCore::previousWordPositionBoundary):
        (WebCore::nextWordPositionBoundary):
        (WebCore::startSentenceBoundary):
        (WebCore::endSentenceBoundary):
        (WebCore::previousSentencePositionBoundary):
        (WebCore::nextSentencePositionBoundary):
        (WebCore::startOfParagraph):
        (WebCore::endOfParagraph):
        * html/HTMLParser.cpp: (WebCore::HTMLParser::handleError):
        * rendering/InlineTextBox.cpp:
        (WebCore::InlineTextBox::selectionRect):
        (WebCore::InlineTextBox::paint):
        (WebCore::InlineTextBox::paintSelection):
        (WebCore::InlineTextBox::paintMarkedTextBackground):
        (WebCore::InlineTextBox::paintTextMatchMarker):
        (WebCore::InlineTextBox::offsetForPosition):
        (WebCore::InlineTextBox::positionForOffset):
        * rendering/RenderBlock.cpp:
        (WebCore::stripTrailingSpace):
        (WebCore::RenderBlock::updateFirstLetter):
        * rendering/RenderFlexibleBox.cpp:
        (WebCore::RenderFlexibleBox::layoutVerticalBox):
        * rendering/RenderObject.h:
        * rendering/RenderObject.cpp:
        (WebCore::RenderObject::backslashAsCurrencySymbol):
        * rendering/RenderTreeAsText.cpp: (quoteAndEscapeNonPrintables):
        * rendering/break_lines.cpp: (WebCore::nextBreakablePosition):
        * rendering/break_lines.h: (WebCore::isBreakable):
        * rendering/render_style.h: (WebCore::RenderStyle::isCollapsibleWhiteSpace):
        * xml/XSLStyleSheet.cpp: (WebCore::XSLStyleSheet::parseString):
        * xml/xmlhttprequest.cpp:
        (WebCore::getMIMEType):
        (WebCore::getCharset):
        Changed QChar to UChar.

        * rendering/RenderImage.cpp:
        (WebCore::RenderImage::imageChanged): Changed QChar to UChar.
        (WebCore::RenderImage::paint): Changed callers of drawText to no-longer pass 0
        for the horizontal alignment, since I removed that parameters.

        * rendering/RenderText.h: Changed QChar to UChar.
        * rendering/RenderText.cpp:
        (WebCore::characterBreakIterator): Update for name change.
        (WebCore::RenderText::RenderText): Ditto.
        (WebCore::RenderText::allAscii): Remove uneeded unicode() and allow the value
        U+007F to count as ASCII.
        (WebCore::RenderText::cacheWidths): Changed QChar to UChar.
        (WebCore::RenderText::widthFromCache): Changed code that deals with direction to
        use the ICU direction calls.
        (WebCore::RenderText::trimmedMinMaxWidth): Changed QChar to UChar.
        (WebCore::RenderText::calcMinMaxWidth): Ditto.
        (WebCore::RenderText::containsOnlyWhitespace): Ditto.
        (WebCore::RenderText::setText): Ditto.
        (WebCore::RenderText::width): Ditto.

        * rendering/RenderTextField.cpp:
        (WebCore::RenderTextField::updateFromElement): Removed unneeded QChar cast.
        (WebCore::RenderTextField::calcMinMaxWidth): Changed from QChar to UChar.

        * rendering/bidi.h:
        * rendering/bidi.cpp:
        (WebCore::BidiIterator::BidiIterator):
        (WebCore::BidiState::BidiState):
        (WebCore::BidiContext::BidiContext):
        (WebCore::bidiNext):
        (WebCore::bidiFirst):
        (WebCore::BidiIterator::current):
        (WebCore::BidiIterator::direction):
        (WebCore::addRun):
        (WebCore::checkMidpoints):
        (WebCore::appendRun):
        (WebCore::embed):
        (WebCore::RenderBlock::tabWidth):
        (WebCore::RenderBlock::computeHorizontalPositionsForLine):
        (WebCore::RenderBlock::bidiReorderLine):
        (WebCore::RenderBlock::layoutInlineChildren):
        (WebCore::skipNonBreakingSpace):
        (WebCore::RenderBlock::skipWhitespace):
        (WebCore::RenderBlock::findNextLineBreak):
        (WebCore::RenderBlock::checkLinesForTextOverflow):
        Changed from QChar to UChar and all direction from QChar constants to the
        ones from ICU.

        * rendering/render_form.cpp:
        (WebCore::RenderLineEdit::updateFromElement):
        (WebCore::RenderSelect::updateFromElement):
        (WebCore::RenderTextArea::updateFromElement):
        (WebCore::RenderTextArea::text):
        (WebCore::RenderTextArea::textWithHardLineBreaks):
        Got rid of now-unneeded QChar type casts.

        * rendering/render_line.cpp:
        (WebCore::InlineFlowBox::placeBoxesHorizontally): Updated for change from QChar
        to UChar.
        (WebCore::EllipsisBox::paint): Updated for unicode() -> characters() name change.

        * rendering/render_list.cpp:
        (WebCore::toRoman): Updated from QChar to UChar.
        (WebCore::toLetterString): Ditto.
        (WebCore::toHebrew): More of the same, also cleaned up the logic a bit.
        (WebCore::RenderListMarker::paint): Removed the alignment parameters from the
        various functions. Also removed all reliance on the width-measuring functions
        that take a string.
        (WebCore::RenderListMarker::calcMinMaxWidth): More of the same.
        (WebCore::RenderListMarker::getRelativeMarkerRect): Ditto.

2006-05-09  Tim Omernick  <timo@apple.com>

        Reviewed by/co-written by Darin.

        Performance improvement when drawing large numbers of animated images.

        Instead of removing the "first" object from a set on each next(),
        copy the clients into a vector once and keep track of the current index.

        * loader/CachedObjectClientWalker.h:
        * loader/CachedObjectClientWalker.cpp:
        (WebCore::CachedObjectClientWalker::CachedObjectClientWalker):
        (WebCore::CachedObjectClientWalker::next):

2006-05-09  Steve Falkenburg  <sfalken@apple.com>

        Fix Windows build.  Added TextDocument.cpp to vcproj.
        
        Reviewed by adele.

        * WebCore.vcproj/WebCore/WebCore.vcproj:

2006-05-09  Steve Falkenburg  <sfalken@apple.com>

        Fix Windows build.
        Add host calback so caller can determine success/failure of a page load.
        
        Reviewed by kevin.

        * WebCore.vcproj/WebCore/WebCore.vcproj: Fix paths, add missing files
        * loader/CachedResource.h: Fix include path.
        * loader/CachedResourceClientWalker.h: Fix include path.
        * platform/FontPlatformData.h: Fix include path.
        * platform/TransferJobClient.h: Make PlatformData, PlatformResponse an opaque struct.
        * platform/image-decoders/ImageDecoder.h: Fix include path.
        * platform/win/SharedTimerWin.cpp: Fix include path.
        * platform/win/TransferJobWin.cpp: 
        (WebCore::TransferJobWndProc): Add host callback for success/failure of load.
        * platform/win/TransferJobWin.h: Added. Windows version of PlatformData/PlatformResponse.
        * xpath/impl/XPathFunctions.cpp: Work around missing math functions in MSVC.
        (round): Work around missing math functions in MSVC.
        * xpath/impl/XPathPredicate.cpp: Work around missing math functions in MSVC.
        * xpath/impl/XPathValue.cpp: Work around missing math functions in MSVC.

2006-05-09  David Hyatt  <hyatt@apple.com>

        Revert styleForElement, pseudoStyleForElement, styleForRenderer back to
        their old names, since the term "create" is not accurate.

        * css/cssstyleselector.cpp:
        (WebCore::CSSStyleSelector::styleForElement):
        (WebCore::CSSStyleSelector::pseudoStyleForElement):
        * css/cssstyleselector.h:
        * dom/Element.cpp:
        (WebCore::Element::styleForRenderer):
        (WebCore::Element::recalcStyle):
        * dom/Element.h:
        * dom/Node.cpp:
        (WebCore::Node::createRendererIfNeeded):
        (WebCore::Node::styleForRenderer):
        * dom/Node.h:
        * ksvg2/svg/SVGClipPathElement.cpp:
        (SVGClipPathElement::canvasResource):
        * ksvg2/svg/SVGFEFloodElement.cpp:
        (SVGFEFloodElement::filterEffect):
        * ksvg2/svg/SVGGradientElement.cpp:
        (SVGGradientElement::rebuildStops):

2006-05-09  Anders Carlsson  <acarlsson@apple.com>

        Reviewed by Darin.

        * loader/TextDocument.cpp:
        (WebCore::TextTokenizer::write):
        Use the correct variable to prevent crashes.

2006-05-09  Anders Carlsson  <acarlsson@apple.com>

        Reviewed by Darin.

        http://bugs.webkit.org/show_bug.cgi?id=8808
        WebCore should handle text files
        
        * WebCore.xcodeproj/project.pbxproj:
        Add TextDocument.cpp and TextDocument.h
        
        * bridge/mac/WebCoreFrameBridge.mm:
        (+[WebCoreFrameBridge supportedMIMETypes]):
        Add text types here.
        
        * dom/DOMImplementation.cpp:
        (WebCore::DOMImplementation::createTextDocument):
        (WebCore::DOMImplementation::isTextMIMEType):
        * dom/DOMImplementation.h:
        New functions for creating a TextDocument and determining if a 
        mime type is a text MIME type.
        
        * loader/TextDocument.cpp: Added.
        (WebCore::TextTokenizer::TextTokenizer):
        (WebCore::TextTokenizer::write):
        (WebCore::TextTokenizer::finish):
        (WebCore::TextTokenizer::isWaitingForScripts):
        Special tokenizer which will put text inside a <pre> tag
        in a document.
        
        (WebCore::TextDocument::TextDocument):        
        (WebCore::TextDocument::createTokenizer):
        Create a TextTokenizer.
        
        * loader/TextDocument.h: Added.
        
        * page/Frame.cpp:
        (WebCore::Frame::begin):
        Create a TextDocument if the MIME type is of type text.

2006-05-09  Maciej Stachowiak  <mjs@apple.com>

        Rubber stamped by Anders.
        
        - renamed kxmlcore to wtf
        
        kxmlcore --> wtf
        KXMLCore --> WTF
        KXC --> WTF

        * ForwardingHeaders/kxmlcore: Removed.
        * ForwardingHeaders/kxmlcore/AlwaysInline.h: Removed.
        * ForwardingHeaders/kxmlcore/Assertions.h: Removed.
        * ForwardingHeaders/kxmlcore/FastMalloc.h: Removed.
        * ForwardingHeaders/kxmlcore/Forward.h: Removed.
        * ForwardingHeaders/kxmlcore/HashCountedSet.h: Removed.
        * ForwardingHeaders/kxmlcore/HashMap.h: Removed.
        * ForwardingHeaders/kxmlcore/HashSet.h: Removed.
        * ForwardingHeaders/kxmlcore/HashTraits.h: Removed.
        * ForwardingHeaders/kxmlcore/Noncopyable.h: Removed.
        * ForwardingHeaders/kxmlcore/OwnArrayPtr.h: Removed.
        * ForwardingHeaders/kxmlcore/OwnPtr.h: Removed.
        * ForwardingHeaders/kxmlcore/PassRefPtr.h: Removed.
        * ForwardingHeaders/kxmlcore/Platform.h: Removed.
        * ForwardingHeaders/kxmlcore/RefPtr.h: Removed.
        * ForwardingHeaders/kxmlcore/Vector.h: Removed.
        * ForwardingHeaders/wtf: Added.
        * bindings/js/JSHTMLElementWrapperFactory.h:
        * bindings/js/kjs_binding.cpp:
        * bindings/js/kjs_window.h:
        * bindings/objc/DOMImplementationFront.h:
        * bridge/JavaAppletWidget.h:
        * bridge/mac/WebCoreFrameNamespaces.mm:
        * bridge/mac/WebCorePageBridge.mm:
        (initializeLogChannel):
        * bridge/mac/WebCoreStringTruncator.mm:
        * bridge/mac/WebCoreViewFactory.m:
        * config.h:
        * css/css_base.h:
        * css/css_valueimpl.h:
        * css/csshelper.cpp:
        * css/cssparser.h:
        * dom/DOMImplementation.h:
        * dom/Document.h:
        * dom/NamedNodeMap.h:
        * dom/Node.h:
        * dom/NodeList.h:
        * dom/QualifiedName.cpp:
        * dom/Range.h:
        * dom/StyledElement.cpp:
        * dom/dom2_traversalimpl.h:
        * dom/xml_tokenizer.h:
        * editing/RebalanceWhitespaceCommand.cpp:
        * editing/RemoveCSSPropertyCommand.cpp:
        * editing/RemoveNodeAttributeCommand.cpp:
        * editing/RemoveNodeCommand.cpp:
        * editing/RemoveNodePreservingChildrenCommand.cpp:
        * editing/ReplaceSelectionCommand.h:
        * editing/Selection.cpp:
        * editing/SetNodeAttributeCommand.cpp:
        * editing/SplitElementCommand.cpp:
        * editing/SplitTextNodeCommand.cpp:
        * editing/SplitTextNodeContainingElementCommand.cpp:
        * editing/TextIterator.h:
        * editing/htmlediting.h:
        * editing/markup.h:
        * html/CanvasGradient.h:
        * html/CanvasRenderingContext2D.h:
        * html/CanvasStyle.cpp:
        * html/HTMLCollection.h:
        * html/HTMLElementFactory.h:
        * kcanvas/KCanvasFilters.cpp:
        * kcanvas/KCanvasPath.h:
        * kcanvas/RenderPath.cpp:
        * kcanvas/RenderSVGImage.cpp:
        * kcanvas/RenderSVGText.cpp:
        * kcanvas/device/quartz/KCanvasItemQuartz.mm:
        * kcanvas/device/quartz/KRenderingPaintServerGradientQuartz.mm:
        * kcanvas/device/quartz/QuartzSupport.mm:
        * ksvg2/misc/KSVGTimeScheduler.h:
        * ksvg2/misc/SVGDocumentExtensions.h:
        * ksvg2/scripts/make_names.pl:
        * ksvg2/svg/SVGDOMImplementation.cpp:
        * ksvg2/svg/SVGExternalResourcesRequired.h:
        * ksvg2/svg/SVGFilterPrimitiveStandardAttributes.cpp:
        * ksvg2/svg/SVGForeignObjectElement.cpp:
        * ksvg2/svg/SVGImageElement.cpp:
        * ksvg2/svg/SVGMaskElement.cpp:
        * ksvg2/svg/SVGStyledElement.cpp:
        * ksvg2/svg/SVGTests.h:
        * ksvg2/svg/SVGTransform.h:
        * ksvg2/svg/SVGTransformable.cpp:
        * kwq/AccessibilityObjectCache.h:
        * kwq/KWQCString.cpp:
        * kwq/KWQFormData.mm:
        * kwq/KWQListBox.mm:
        * kwq/KWQResourceLoader.mm:
        * kwq/KWQTextEdit.mm:
        * loader/Cache.h:
        * loader/CachedObject.h:
        * loader/CachedObjectClientWalker.h:
        * loader/Decoder.h:
        * loader/DocLoader.h:
        * loader/loader.cpp:
        * loader/loader.h:
        * page/DOMWindow.h:
        * page/Frame.h:
        * page/FramePrivate.h:
        * page/FrameTree.cpp:
        * page/Page.cpp:
        * page/Page.h:
        * page/Plugin.h:
        * platform/Arena.cpp:
        * platform/ArrayImpl.h:
        * platform/AtomicString.cpp:
        * platform/CharsetNames.cpp:
        * platform/Color.cpp:
        * platform/DeprecatedPtrListImpl.cpp:
        * platform/DeprecatedValueListImpl.h:
        * platform/FontFallbackList.h:
        * platform/GraphicsContext.h:
        * platform/GraphicsTypes.cpp:
        * platform/Image.h:
        * platform/KURL.cpp:
        * platform/Logging.cpp:
        * platform/Logging.h:
        * platform/PlatformString.h:
        * platform/PlugInInfoStore.h:
        * platform/StreamingTextDecoder.cpp:
        * platform/StreamingTextDecoder.h:
        * platform/String.cpp:
        * platform/StringHash.h:
        * platform/StringImpl.cpp:
        * platform/StringImpl.h:
        * platform/TextEncoding.cpp:
        * platform/Timer.cpp:
        * platform/Timer.h:
        * platform/TransferJob.h:
        * platform/TransferJobInternal.h:
        * platform/mac/BlockExceptions.mm:
        * platform/mac/ColorMac.mm:
        * platform/mac/FontData.mm:
        * platform/mac/KURLMac.mm:
        * platform/mac/QStringMac.mm:
        * platform/mac/SharedTimerMac.cpp:
        * platform/mac/TextEncodingMac.cpp:
        * platform/mac/WebCoreImageRendererFactory.m:
        * platform/mac/WebCoreKeyGenerator.m:
        * platform/mac/WebCoreTextArea.mm:
        * platform/mac/WebCoreTextField.mm:
        * platform/mac/WebTextRendererFactory.h:
        * platform/mac/WebTextRendererFactory.mm:
        * platform/win/TemporaryLinkStubs.cpp:
        (JavaAppletWidget::JavaAppletWidget):
        * rendering/InlineTextBox.cpp:
        * rendering/RenderText.cpp:
        * rendering/RenderTreeAsText.cpp:
        * rendering/bidi.cpp:
        * xml/XSLTProcessor.h:
        * xpath/impl/XPathExpressionNode.h:
        * xpath/impl/XPathParser.h:
        * xpath/impl/XPathPath.h:
        * xpath/impl/XPathUtil.h:

2006-05-09  Anders Carlsson  <acarlsson@apple.com>

        Reviewed by Maciej.

        http://bugs.webkit.org/show_bug.cgi?id=8803
        XPath query for empty attributes crashes in XPath::StringExpression::StringExpression
        
        * xpath/impl/XPathParser.cpp:
        (WebCore::XPath::Parser::lexString):
        Make sure an empty string is returned instead of a null string.
        
        (WebCore::XPath::Parser::lex):
        Only assign the string if it isn't null.

2006-05-09  Alexey Proskuryakov  <ap@nypop.com>

        Reviewed by Darin.

        - http://bugs.webkit.org/show_bug.cgi?id=8769
          TextEncoding::fromUnicode() - support non-BMP characters and convert to NFC

        Fix the ICU code path, too (currently unused on the Mac).

        * platform/TextEncoding.cpp:
        (WebCore::TextEncoding::fromUnicode): Normalize the string.

2006-05-08  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by Tim Hatcher.
        
        - refactor things so that WebKit doesn't save a WebResource for every loaded URL,
        but rather retrieves the data from the WebCore cache as needed.
        http://bugs.webkit.org/show_bug.cgi?id=8802

        * bridge/mac/WebCoreFrameBridge.h:
        * bridge/mac/WebCoreFrameBridge.mm:
        (-[WebCoreFrameBridge getData:andResponse:forURL:]):
        (-[WebCoreFrameBridge getAllResourceDatas:andResponses:]):
        * loader/Cache.cpp:
        (WebCore::Cache::updateCacheStatus):
        (WebCore::Cache::requestImage):
        (WebCore::Cache::requestStyleSheet):
        (WebCore::Cache::requestScript):
        (WebCore::Cache::requestXSLStyleSheet):
        (WebCore::Cache::requestXBLDocument):
        * loader/Cache.h:
        * loader/CachedResource.cpp: Added.
        * loader/CachedResource.h: Added.
        * loader/CachedResourceClient.h: Added.
        * loader/CachedResourceClientWalker.cpp: Added.
        * loader/CachedResourceClientWalker.h: Added.
        * loader/DocLoader.cpp:
        (WebCore::DocLoader::setAutoloadImages):
        (WebCore::DocLoader::removeCachedObject):
        * loader/DocLoader.h:
        (WebCore::DocLoader::cachedObject):
        (WebCore::DocLoader::allCachedObjects):

2006-05-08  Levi Weintraub  <lweintraub@apple.com>

        Reviewed by justin.

        * editing/TextIterator.cpp:
        (WebCore::shouldEmitSpaceBeforeAndAfterNode):
        Returns true when the node should have a leading and trailing space. Currently only
        used for inline tables. The function shouldEmitNewlinesBeforeAndAfterNode has a
        fallback for nodes with no RenderObject, but the inline property doesn't really
        have a meaning without one.
        (WebCore::TextIterator::handleNonTextNode):
        Checks shouldEmitSpaceBeforeAndAfterNode and inserts a space if necessary.
        (WebCore::TextIterator::exitNode):
        Checks shouldEmitSpaceBeforeAndAfterNode and inserts a space if necessary.

2006-05-08  Anders Carlsson  <acarlsson@apple.com>

        Try fixing the Win32 build
        
        * WebCore.vcproj/WebCore/WebCore.vcproj:
        Add XPath files to project.

2006-05-08  Anders Carlsson  <acarlsson@apple.com>

        Reviewed by Darin, Eric and Maciej.

        http://bugs.webkit.org/show_bug.cgi?id=6638
        Support Mozilla's XPathEvaluator object.
        
        * DerivedSources.make:
        Generate XPath grammar, and JavaScript wrappers.
        
        * WebCore.xcodeproj/project.pbxproj:
        Add new files to project
        
        * bindings/js/kjs_binding.cpp:
        (KJS::):
        (KJS::setDOMException):
        Handle setting XPath exceptions.
        
        * bindings/objc/DOM.mm:
        Just return nil for now when trying to create a wrapper for 
        XPath namespace nodes.

        * bindings/scripts/CodeGeneratorJS.pm:
        Add XPath types. Also add a "CanBeConstructed" extended attribute
        for interfaces that can be constructed directly.
        
        * bridge/mac/WebCorePageBridge.mm:
        (initializeLoggingChannelsIfNecessary):
        Initialize LogXPath channel.
        
        * dom/DOMImplementation.cpp:
        (WebCore::DOMImplementation::hasFeature):
        Support "xpath" version "3.0".
        
        * dom/Document.cpp:
        (WebCore::Document::Document):
        
        (WebCore::Document::importNode):
        Ignore XPath namespace nodes.
        
        (WebCore::Document::createExpression):
        (WebCore::Document::createNSResolver):
        (WebCore::Document::evaluate):
        New functions which call down to a lazily created XPathEvaluator.

        * dom/Document.h:
        Add function declarations.
        
        * dom/Document.idl:
        Add XPath methods.
        
        * dom/Node.h:
        (WebCore::Node::):
        Add XPATH_NAMESPACE_NODE type.
        
        * editing/markup.cpp:
        (WebCore::startMarkup):
        Ignore XPath namespace nodes.
        
        * page/DOMWindow.idl:
        Add constructors for XPathEvaluator and XPathResult.
        
        * platform/Logging.cpp:
        * platform/Logging.h:
        Add XPath log channel

        * xpath: Added.
        * xpath/XPathEvaluator.cpp: Added.
        (WebCore::XPathEvaluator::createExpression):
        (WebCore::XPathEvaluator::createNSResolver):
        (WebCore::XPathEvaluator::evaluate):
        * xpath/XPathEvaluator.h: Added.
        (WebCore::):
        * xpath/XPathEvaluator.idl: Added.
        * xpath/XPathExpression.cpp: Added.
        (WebCore::XPathExpression::createExpression):
        (WebCore::XPathExpression::~XPathExpression):
        (WebCore::XPathExpression::evaluate):
        * xpath/XPathExpression.h: Added.
        * xpath/XPathExpression.idl: Added.
        * xpath/XPathNSResolver.cpp: Added.
        (WebCore::XPathNSResolver::XPathNSResolver):
        (WebCore::XPathNSResolver::lookupNamespaceURI):
        * xpath/XPathNSResolver.h: Added.
        * xpath/XPathNSResolver.idl: Added.
        * xpath/XPathNamespace.cpp: Added.
        (WebCore::XPathNamespace::XPathNamespace):
        (WebCore::XPathNamespace::~XPathNamespace):
        (WebCore::XPathNamespace::ownerDocument):
        (WebCore::XPathNamespace::ownerElement):
        (WebCore::XPathNamespace::prefix):
        (WebCore::XPathNamespace::nodeName):
        (WebCore::XPathNamespace::nodeValue):
        (WebCore::XPathNamespace::namespaceURI):
        (WebCore::XPathNamespace::nodeType):
        * xpath/XPathNamespace.h: Added.
        * xpath/XPathResult.cpp: Added.
        (WebCore::InvalidatingEventListener::InvalidatingEventListener):
        (WebCore::InvalidatingEventListener::handleEvent):
        (WebCore::XPathResult::XPathResult):
        (WebCore::XPathResult::~XPathResult):
        (WebCore::XPathResult::convertTo):
        (WebCore::XPathResult::resultType):
        (WebCore::XPathResult::numberValue):
        (WebCore::XPathResult::stringValue):
        (WebCore::XPathResult::booleanValue):
        (WebCore::XPathResult::singleNodeValue):
        (WebCore::XPathResult::invalidateIteratorState):
        (WebCore::XPathResult::invalidIteratorState):
        (WebCore::XPathResult::snapshotLength):
        (WebCore::XPathResult::iterateNext):
        (WebCore::XPathResult::snapshotItem):
        * xpath/XPathResult.h: Added.
        (WebCore::XPathResult::):
        * xpath/XPathResult.idl: Added.
        * xpath/impl: Added.
        * xpath/impl/XPathExpressionNode.cpp: Added.
        (WebCore::XPath::Expression::evaluationContext):
        (WebCore::XPath::Expression::Expression):
        (WebCore::XPath::Expression::~Expression):
        (WebCore::XPath::Expression::evaluate):
        (WebCore::XPath::Expression::addSubExpression):
        (WebCore::XPath::Expression::optimize):
        (WebCore::XPath::Expression::subExprCount):
        (WebCore::XPath::Expression::subExpr):
        (WebCore::XPath::Expression::isConstant):
        * xpath/impl/XPathExpressionNode.h: Added.
        (WebCore::XPath::EvaluationContext::EvaluationContext):
        * xpath/impl/XPathFunctions.cpp: Added.
        (WebCore::XPath::Interval::Interval):
        (WebCore::XPath::Interval::contains):
        (WebCore::XPath::Interval::asString):
        (WebCore::XPath::Function::setArguments):
        (WebCore::XPath::Function::setName):
        (WebCore::XPath::Function::arg):
        (WebCore::XPath::Function::argCount):
        (WebCore::XPath::Function::name):
        (WebCore::XPath::FunLast::doEvaluate):
        (WebCore::XPath::FunLast::isConstant):
        (WebCore::XPath::FunPosition::doEvaluate):
        (WebCore::XPath::FunPosition::isConstant):
        (WebCore::XPath::FunLocalName::isConstant):
        (WebCore::XPath::FunLocalName::doEvaluate):
        (WebCore::XPath::FunNamespaceURI::isConstant):
        (WebCore::XPath::FunNamespaceURI::doEvaluate):
        (WebCore::XPath::FunName::isConstant):
        (WebCore::XPath::FunName::doEvaluate):
        (WebCore::XPath::FunCount::doEvaluate):
        (WebCore::XPath::FunCount::isConstant):
        (WebCore::XPath::FunString::doEvaluate):
        (WebCore::XPath::FunConcat::doEvaluate):
        (WebCore::XPath::FunStartsWith::doEvaluate):
        (WebCore::XPath::FunContains::doEvaluate):
        (WebCore::XPath::FunSubstringBefore::doEvaluate):
        (WebCore::XPath::FunSubstringAfter::doEvaluate):
        (WebCore::XPath::FunSubstring::doEvaluate):
        (WebCore::XPath::FunStringLength::doEvaluate):
        (WebCore::XPath::FunNormalizeSpace::doEvaluate):
        (WebCore::XPath::FunTranslate::doEvaluate):
        (WebCore::XPath::FunBoolean::doEvaluate):
        (WebCore::XPath::FunNot::doEvaluate):
        (WebCore::XPath::FunTrue::doEvaluate):
        (WebCore::XPath::FunTrue::isConstant):
        (WebCore::XPath::FunLang::doEvaluate):
        (WebCore::XPath::FunLang::isConstant):
        (WebCore::XPath::FunFalse::doEvaluate):
        (WebCore::XPath::FunFalse::isConstant):
        (WebCore::XPath::FunNumber::doEvaluate):
        (WebCore::XPath::FunSum::doEvaluate):
        (WebCore::XPath::FunFloor::doEvaluate):
        (WebCore::XPath::FunCeiling::doEvaluate):
        (WebCore::XPath::FunRound::doEvaluate):
        (WebCore::XPath::FunctionLibrary::self):
        (WebCore::XPath::FunctionLibrary::FunctionLibrary):
        (WebCore::XPath::FunctionLibrary::createFunction):
        * xpath/impl/XPathFunctions.h: Added.
        * xpath/impl/XPathGrammar.y: Added.
        * xpath/impl/XPathParser.cpp: Added.
        (WebCore::XPath::):
        (WebCore::XPath::Parser::charCat):
        (WebCore::XPath::Parser::isAxisName):
        (WebCore::XPath::Parser::isNodeTypeName):
        (WebCore::XPath::Parser::isOperatorContext):
        (WebCore::XPath::Parser::skipWS):
        (WebCore::XPath::Parser::makeTokenAndAdvance):
        (WebCore::XPath::Parser::makeIntTokenAndAdvance):
        (WebCore::XPath::Parser::peekAheadHelper):
        (WebCore::XPath::Parser::peekCurHelper):
        (WebCore::XPath::Parser::lexString):
        (WebCore::XPath::Parser::lexNumber):
        (WebCore::XPath::Parser::lexNCName):
        (WebCore::XPath::Parser::lexQName):
        (WebCore::XPath::Parser::nextTokenInternal):
        (WebCore::XPath::Parser::nextToken):
        (WebCore::XPath::Parser::Parser):
        (WebCore::XPath::Parser::reset):
        (WebCore::XPath::Parser::lex):
        (WebCore::XPath::Parser::parseStatement):
        (WebCore::XPath::Parser::registerParseNode):
        (WebCore::XPath::Parser::unregisterParseNode):
        (WebCore::XPath::Parser::registerPredicateVector):
        (WebCore::XPath::Parser::unregisterPredicateVector):
        (WebCore::XPath::Parser::registerExpressionVector):
        (WebCore::XPath::Parser::unregisterExpressionVector):
        (WebCore::XPath::Parser::registerString):
        (WebCore::XPath::Parser::unregisterString):
        * xpath/impl/XPathParser.h: Added.
        (WebCore::XPath::Token::Token):
        (WebCore::XPath::Parser::):
        (WebCore::XPath::Parser::current):
        * xpath/impl/XPathPath.cpp: Added.
        (WebCore::XPath::Filter::Filter):
        (WebCore::XPath::Filter::~Filter):
        (WebCore::XPath::Filter::doEvaluate):
        (WebCore::XPath::LocationPath::LocationPath):
        (WebCore::XPath::LocationPath::~LocationPath):
        (WebCore::XPath::LocationPath::optimize):
        (WebCore::XPath::LocationPath::doEvaluate):
        (WebCore::XPath::Path::Path):
        (WebCore::XPath::Path::~Path):
        (WebCore::XPath::Path::doEvaluate):
        * xpath/impl/XPathPath.h: Added.
        * xpath/impl/XPathPredicate.cpp: Added.
        (WebCore::XPath::Number::Number):
        (WebCore::XPath::Number::isConstant):
        (WebCore::XPath::Number::doEvaluate):
        (WebCore::XPath::StringExpression::StringExpression):
        (WebCore::XPath::StringExpression::isConstant):
        (WebCore::XPath::StringExpression::doEvaluate):
        (WebCore::XPath::Negative::doEvaluate):
        (WebCore::XPath::NumericOp::NumericOp):
        (WebCore::XPath::NumericOp::doEvaluate):
        (WebCore::XPath::EqTestOp::EqTestOp):
        (WebCore::XPath::EqTestOp::doEvaluate):
        (WebCore::XPath::LogicalOp::LogicalOp):
        (WebCore::XPath::LogicalOp::shortCircuitOn):
        (WebCore::XPath::LogicalOp::isConstant):
        (WebCore::XPath::LogicalOp::doEvaluate):
        (WebCore::XPath::Union::doEvaluate):
        (WebCore::XPath::Predicate::Predicate):
        (WebCore::XPath::Predicate::~Predicate):
        (WebCore::XPath::Predicate::evaluate):
        (WebCore::XPath::Predicate::optimize):
        * xpath/impl/XPathPredicate.h: Added.
        (WebCore::XPath::NumericOp::):
        (WebCore::XPath::EqTestOp::):
        (WebCore::XPath::LogicalOp::):
        * xpath/impl/XPathStep.cpp: Added.
        (WebCore::XPath::Step::axisAsString):
        (WebCore::XPath::Step::Step):
        (WebCore::XPath::Step::~Step):
        (WebCore::XPath::Step::evaluate):
        (WebCore::XPath::Step::nodesInAxis):
        (WebCore::XPath::Step::nodeTestMatches):
        (WebCore::XPath::Step::optimize):
        (WebCore::XPath::Step::namespaceFromNodetest):
        (WebCore::XPath::Step::primaryNodeType):
        * xpath/impl/XPathStep.h: Added.
        (WebCore::XPath::Step::):
        * xpath/impl/XPathUtil.cpp: Added.
        (WebCore::XPath::isRootDomNode):
        (WebCore::XPath::stringValue):
        (WebCore::XPath::isValidContextNode):
        * xpath/impl/XPathUtil.h: Added.
        * xpath/impl/XPathValue.cpp: Added.
        (WebCore::XPath::Value::Value):
        (WebCore::XPath::Value::type):
        (WebCore::XPath::Value::isNodeVector):
        (WebCore::XPath::Value::isBoolean):
        (WebCore::XPath::Value::isNumber):
        (WebCore::XPath::Value::isString):
        (WebCore::XPath::Value::toNodeVector):
        (WebCore::XPath::Value::toBoolean):
        (WebCore::XPath::Value::toNumber):
        (WebCore::XPath::Value::toString):
        * xpath/impl/XPathValue.h: Added.
        (WebCore::XPath::Value::):
        * xpath/impl/XPathVariableReference.cpp: Added.
        (WebCore::XPath::VariableReference::VariableReference):
        (WebCore::XPath::VariableReference::isConstant):
        (WebCore::XPath::VariableReference::doEvaluate):
        * xpath/impl/XPathVariableReference.h: Added.

2006-05-08  David Hyatt  <hyatt@apple.com>

        Comprehensive box-sizing fix.  This patch changes all form controls to
        have the right box-sizing values (text fields and text areas actually only
        use border-box in quirks mode now, and image buttons never use border-box).

        Tables are supposed to use border-box box-sizing as well, but that's a scary
        enough change that I'm saving it for a separate patch.

        Reviewed by mjs

        * css/html4.css:
        * css/quirks.css:

2006-05-07  Darin Adler  <darin@apple.com>
        
        Suggested by Mitz. Reviewed and landed by Maciej.
        
        * dom/Document.cpp: (WebCore::Document::formElementsState): Fixed mistake where the
        vector has an initial size and instead should have an initial capacity. Harmless in
        a way, but hurts performance.
        
2006-05-07  David Hyatt  <hyatt@apple.com>

        Fix for bugzilla bug 8060.

        Fixed width table cells weren't having their border widths
        included in the effective width of the column (and thus could end up being
        too small).

        Reviewed by darin

        Added fast/tables/fixed-cell-growth.html

        * rendering/table_layout.cpp:
        (WebCore::AutoTableLayout::recalcColumn):

2006-05-07  Alexey Proskuryakov  <ap@nypop.com>

        Reviewed by Darin.

        - http://bugs.webkit.org/show_bug.cgi?id=8769
          TextEncoding::fromUnicode() - support non-BMP characters and convert to NFC

        Tests: 
        * fast/forms/form-data-encoding.html
        * fast/forms/form-data-encoding-2.html

        * platform/mac/TextEncodingMac.cpp:
        (WebCore::TextEncoding::fromUnicode): Normalize the string; handle surrogate pairs.

2006-05-06  David Hyatt  <hyatt@apple.com>

        Rename WebCoreFont to FontPlatformData and WebTextRenderer to FontData.  Merge them into the
        headers (uncleanly with ifdefs at the moment, so I can see what I'm working towards).

        Reviewed by mjs

        * ChangeLog:
        * WebCore.vcproj/WebCore/WebCore.vcproj:
        * WebCore.xcodeproj/project.pbxproj:
        * bridge/mac/WebCoreStringTruncator.mm:
        (stringWidth):
        (truncateString):
        (+[WebCoreStringTruncator widthOfString:font:]):
        * kwq/KWQComboBox.mm:
        (QComboBox::sizeHint):
        * kwq/KWQLineEdit.mm:
        (QLineEdit::sizeForCharacterWidth):
        * kwq/KWQListBox.mm:
        (itemTextRenderer):
        (groupLabelTextRenderer):
        (QListBox::sizeForNumberOfLines):
        (-[KWQTableView drawRow:clipRect:]):
        * platform/Font.cpp:
        (WebCore::m_wordSpacing):
        (WebCore::Font::Font):
        (WebCore::Font::operator=):
        (WebCore::Font::update):
        (WebCore::Font::ascent):
        (WebCore::Font::descent):
        (WebCore::Font::lineSpacing):
        (WebCore::Font::xHeight):
        (WebCore::Font::isFixedPitch):
        * platform/Font.h:
        (WebCore::Font::getNSFont):
        * platform/FontData.h:
        (WebCore::FontData::ascent):
        (WebCore::FontData::descent):
        (WebCore::FontData::lineSpacing):
        (WebCore::FontData::lineGap):
        (WebCore::FontData::misspellingLineThickness):
        (WebCore::FontData::misspellingLinePatternWidth):
        (WebCore::FontData::misspellingLinePatternGapWidth):
        * platform/FontDataSet.h: Removed.
        * platform/FontFallbackList.h: Added.
        * platform/FontPlatformData.h:
        * platform/mac/FontData.mm: Added.
        (WebCore::WebCoreInitializeFont):
        (WebCore::WebCoreInitializeEmptyTextGeometry):
        (WebCore::widthForGlyph):
        (WebCore::overrideLayoutOperation):
        (WebCore::FontData::~FontData):
        (WebCore::FontData::xHeight):
        (WebCore::FontData::drawRun):
        (WebCore::FontData::floatWidthForRun):
        (WebCore::FontData::drawLineForCharacters):
        (WebCore::FontData::selectionRectForRun):
        (WebCore::FontData::drawHighlightForRun):
        (WebCore::FontData::drawLineForMisspelling):
        (WebCore::FontData::pointToOffset):
        (WebCore::FontData::setAlwaysUseATSU):
        (WebCore::getSmallCapsRenderer):
        (WebCore::findSubstituteFont):
        (WebCore::rendererForAlternateFont):
        (WebCore::findSubstituteRenderer):
        (WebCore::computeWidthForSpace):
        (WebCore::setUpFont):
        (WebCore::CG_drawHighlight):
        (WebCore::CG_selectionRect):
        (WebCore::CG_draw):
        (WebCore::CG_floatWidthForRun):
        (WebCore::updateGlyphMapEntry):
        (WebCore::extendGlyphMap):
        (WebCore::extendWidthMap):
        (WebCore::initializeATSUStyle):
        (WebCore::createATSULayoutParameters):
        (WebCore::getTextBounds):
        (WebCore::ATSU_floatWidthForRun):
        (WebCore::ATSU_drawHighlight):
        (WebCore::ATSU_selectionRect):
        (WebCore::ATSU_draw):
        (WebCore::ATSU_pointToOffset):
        (WebCore::advanceWidthIteratorOneCharacter):
        (WebCore::CG_pointToOffset):
        (WebCore::glyphForCharacter):
        (WebCore::initializeWidthIterator):
        (WebCore::advanceWidthIterator):
        * platform/mac/FontMac.mm:
        (WebCore::m_font):
        (WebCore::FontFallbackList::~FontFallbackList):
        (WebCore::FontFallbackList::platformFont):
        (WebCore::FontFallbackList::primaryFont):
        (WebCore::FontFallbackList::determinePitch):
        (WebCore::FontFallbackList::invalidate):
        (WebCore::Font::platformFont):
        (WebCore::Font::selectionRectForText):
        (WebCore::Font::drawText):
        (WebCore::Font::drawHighlightForText):
        (WebCore::Font::drawLineForText):
        (WebCore::Font::drawLineForMisspelling):
        (WebCore::Font::misspellingLineThickness):
        (WebCore::Font::floatWidth):
        (WebCore::Font::checkSelectionPoint):
        * platform/mac/WebCoreTextRenderer.mm:
        (WebCoreDrawTextAtPoint):
        (WebCoreTextFloatWidth):
        (WebCoreSetAlwaysUseATSU):
        * platform/mac/WebTextRenderer.h: Removed.
        * platform/mac/WebTextRenderer.mm: Removed.
        * platform/mac/WebTextRendererFactory.h:
        * platform/mac/WebTextRendererFactory.mm:
        (-[WebTextRendererFactory isFontFixedPitch:]):
        (-[WebTextRendererFactory init]):
        (-[WebTextRendererFactory rendererWithFont:]):
        (-[WebTextRendererFactory fontWithFamilies:traits:size:]):
        * platform/win/FontWin.cpp:
        (WebCore::FontFallbackList::~FontFallbackList):
        (WebCore::FontFallbackList::determinePitch):
        (WebCore::FontFallbackList::invalidate):
        (WebCore::FontFallbackList::primaryFont):
        (WebCore::Font::floatWidth):
        (WebCore::Font::drawText):
        (WebCore::Font::drawHighlightForText):
        (WebCore::Font::selectionRectForText):
        (WebCore::Font::checkSelectionPoint):

2006-05-05  Darin Adler  <darin@apple.com>

        - fix the Windows build

        * platform/win/FontWin.cpp: (WebCore::getFontData):

2006-05-05  Darin Adler  <darin@apple.com>

        * platform/SegmentedString.h: (WebCore::SegmentedString::advance): Oops!
        Removed an extra ! that was causing everything to fail.

2006-05-05  Darin Adler  <darin@apple.com>

        Reviewed by Tim Hatcher.

        - remove a few of the stranger features of QChar on the road to
          eventually replacing it with an integer type (probably ICU's UChar)

        * platform/DeprecatedString.h: Remove SpecialCharacter, byteOrderMark, null,
        cell, row, isNull, mirrored, mirroredChar, operator char, >, >=, <, and <=
        from QChar. Also removed the many unneeded friend declarations. Remove findArg
        and arg from DeprecatedString.

        * dom/Document.cpp: (WebCore::Document::parseQualifiedName): Cast the type of the
        buffer before invoking the U16_NEXT function. Turns out this was converting each
        QChar to a char and back to a UChar, which means it caused a bug with characters
        that are U+0100 or greater.

        * css/csshelper.cpp: (WebCore::parseURL):
        * html/HTMLInputElement.cpp: (WebCore::HTMLInputElement::constrainValue):
        * platform/StringImpl.cpp: (WebCore::StringImpl::toCoordsArray):
        * xml/xmlhttprequest.cpp: (WebCore::getCharset):
        Add some calls to unicode() since we don't have comparison operators any more.

        * dom/StyledElement.cpp:
        (WebCore::toHex): Rewrote to just take a UChar parameter.
        (WebCore::StyledElement::addCSSColor): Call toHex on the character code.

        * bridge/mac/WebCoreFrameBridge.mm:
        (-[WebCoreFrameBridge smartInsertForString:replacingRange:beforeString:afterString:]):
        * editing/ReplaceSelectionCommand.cpp: (WebCore::ReplaceSelectionCommand::doApply):
        * editing/TextIterator.cpp: (WebCore::TextIterator::handleTextBox):
        * platform/SegmentedString.h:
        (WebCore::SegmentedString::push):
        (WebCore::SegmentedString::advance):
        (WebCore::SegmentedString::escaped):
        * platform/SegmentedString.cpp:
        (WebCore::SegmentedString::length):
        (WebCore::SegmentedString::append):
        (WebCore::SegmentedString::prepend):
        (WebCore::SegmentedString::toString):
        Changed calls to isNull() to instead just use unicode() and check for 0.

        * html/HTMLTokenizer.cpp:
        (WebCore::HTMLTokenizer::parseEntity): Change callers that used cell and row to
        just use unicode() instead.
        (WebCore::HTMLTokenizer::parseTag): Ditto.

        * loader/Decoder.cpp: (Decoder::decode): Changed code that did a type cast to
        unsigned char to instead call unicode().

        * platform/DeprecatedString.cpp:
        (KWQStringData::makeAscii): Call latin1() instead of relying on the conversion operator.
        (DeprecatedString::DeprecatedString): Call unicode() instead of relying on the conversion
        operator (the character has been tested and is known to be ASCII).
        (DeprecatedString::at): Use 0 instead of QChar::null.
        (DeprecatedString::compare): Use unicode() so we can do comparison since we don't have
        comparison operators any more.
        (DeprecatedString::find): Call unicode() instead of relying on the conversion
        operator (the character has been tested and is known to be ASCII).
        (DeprecatedString::findRev): Ditto.
        (DeprecatedString::copyLatin1): Call latin1() instead of relying on the conversion operator.
        (DeprecatedString::lower): Call unicode() instead of relying on the conversion
        operator (the character has been tested and is known to be ASCII).
        (DeprecatedString::insert): Ditto.
        (DeprecatedString::replace): Ditto.
        (DeprecatedString::fill): Ditto.
        (DeprecatedString::append): Ditto.

        * html/html_inlineimpl.cpp: (WebCore::HTMLAnchorElement::defaultEventHandler):
        Eliminate the one use of DeprecatedString::arg.

        - other cleanup

        * kwq/KWQCString.cpp: Remove unneeded "using" directive.

        * html/HTMLElementFactory.cpp:
        (WebCore::htmlConstructor):
        (WebCore::headConstructor):
        (WebCore::bodyConstructor):
        (WebCore::baseConstructor):
        (WebCore::linkConstructor):
        (WebCore::metaConstructor):
        (WebCore::styleConstructor):
        (WebCore::titleConstructor):
        (WebCore::frameConstructor):
        (WebCore::framesetConstructor):
        (WebCore::iframeConstructor):
        (WebCore::formConstructor):
        (WebCore::buttonConstructor):
        (WebCore::inputConstructor):
        (WebCore::isindexConstructor):
        (WebCore::fieldsetConstructor):
        (WebCore::labelConstructor):
        (WebCore::legendConstructor):
        (WebCore::optgroupConstructor):
        (WebCore::optionConstructor):
        (WebCore::selectConstructor):
        (WebCore::textareaConstructor):
        (WebCore::dlConstructor):
        (WebCore::ulConstructor):
        (WebCore::olConstructor):
        (WebCore::dirConstructor):
        (WebCore::menuConstructor):
        (WebCore::liConstructor):
        (WebCore::blockquoteConstructor):
        (WebCore::divConstructor):
        (WebCore::headingConstructor):
        (WebCore::hrConstructor):
        (WebCore::paragraphConstructor):
        (WebCore::preConstructor):
        (WebCore::basefontConstructor):
        (WebCore::fontConstructor):
        (WebCore::modConstructor):
        (WebCore::anchorConstructor):
        (WebCore::imageConstructor):
        (WebCore::mapConstructor):
        (WebCore::areaConstructor):
        (WebCore::canvasConstructor):
        (WebCore::appletConstructor):
        (WebCore::embedConstructor):
        (WebCore::objectConstructor):
        (WebCore::paramConstructor):
        (WebCore::scriptConstructor):
        (WebCore::tableConstructor):
        (WebCore::tableCaptionConstructor):
        (WebCore::tableColConstructor):
        (WebCore::tableRowConstructor):
        (WebCore::tableCellConstructor):
        (WebCore::tableSectionConstructor):
        (WebCore::brConstructor):
        (WebCore::quoteConstructor):
        (WebCore::marqueeConstructor):
        Mark functions static, remove unused parameters, change from docPtr to doc.

2006-05-05  Alexey Proskuryakov  <ap@nypop.com>

        Reviewed by Maciej.

        - http://bugs.webkit.org/show_bug.cgi?id=8626
          Strict mode erroneously triggered by a broken comment

        Test: fast/parser/broken-comments-vs-parsing-mode.html

        * page/Frame.cpp:
        (WebCore::Frame::endIfNotLoading): Call determineParseMode() if needed.

2006-05-05  Darin Adler  <darin@apple.com>

        - fix the Windows build (this time for sure)

        * platform/win/TemporaryLinkStubs.cpp:
        (GraphicsContext::translate): Added.
        (GraphicsContext::rotate): Ditto.
        (GraphicsContext::scale): Ditto.

2006-05-05  Darin Adler  <darin@apple.com>

        - fix the Windows build

        * bridge/win/FrameWin.h: Add Element* parameter to createPlugin.
        * platform/win/TemporaryLinkStubs.cpp: (FrameWin::createPlugin): Ditto.

2006-05-05  Darin Adler  <darin@apple.com>

        - get the Windows build a little closer to building again

        * platform/cairo/GraphicsContextCairo.cpp:
        (WebCore::GraphicsContext::drawRect): Call alpha to check if the color is transparent.
        Call setColor directly instead of setColorFromPen.
        (WebCore::GraphicsContext::drawLine): Ditto.
        (WebCore::GraphicsContext::drawEllipse): Ditto.
        (WebCore::GraphicsContext::drawArc): Ditto.
        (WebCore::GraphicsContext::drawConvexPolygon): Ditto.
        * platform/win/TemporaryLinkStubs.cpp: (JavaAppletWidget::JavaAppletWidget): Updated parameter types.

2006-05-05  Darin Adler  <darin@apple.com>

        Reviewed by Adele.

        - fixed data structure used to save/restore form element state to remove the
          O(n^2) algorithm and remove anomalies in how it works
        - fix http://bugs.webkit.org/show_bug.cgi?id=8683
          REGRESSION: imdb search button has "Submit" overload after going back

        * manual-tests/form-value-restore.html: Added.

        * bridge/mac/WebCoreFrameBridge.mm:
        (-[WebCoreFrameBridge saveDocumentState]): Rewrote to call the new formElementsState
        function on the document and also to convert null strings to NSNull instead of empty
        NSString objects.
        (-[WebCoreFrameBridge restoreDocumentState]): Ditto, with the setStateForNewFormElements
        function.

        * dom/Document.h: Added FormElementKey, FormElementKeyHash, and FormElementKeyHashTraits
        for use in the hash map. Made readyState, inputEncoding, defaultCharset, charset,
        characterSet, getElementByAccessKey, haveStylesheetsLoaded, usesDescendantRules,
        usesSiblingRules, inCompatMode, inAlmostStrictMode, inStrictMode, preferredStylesheetSet,
        selectedStylesheetSet, and getCSSTarget all const member functions. Removed the unused
        nextState function. Renamed registerMaintainsState and deregisterMaintainsState to
        registerFormElementWithState and HTMLGenericFormElement and changed them to use form
        elements rather than arbitrary DOM nodes. Replaced docState with formElementsState and
        setRestoreState and restoreState with setStateForNewFormElements, hasStateForNewFormElements,
        and takeStateForFormElement. Replaced m_maintainsState with m_formElementsWithState,
        m_state with m_stateForNewFormElements. Made m_elementsByAccessKey and m_accessKeyMapValid
        mutable. Removed unused m_elementNames, m_elementNameAlloc, m_elementNameCount, m_attrNames,
        m_attrNameAlloc, m_attrNameCount, m_namespaceURIs, m_namespaceURIAlloc, m_namespaceURICount.

        * dom/Document.cpp:
        (WebCore::Document::Document): Remove initialization of long-obsolete m_elementNames and
        m_attrNames.
        (WebCore::Document::~Document): Remove destruction of same.
        (WebCore::Document::readyState): Made const.
        (WebCore::Document::inputEncoding): Ditto.
        (WebCore::Document::defaultCharset): Ditto.
        (WebCore::Document::getElementByAccessKey): Ditto.
        (WebCore::Document::preferredStylesheetSet): Ditto.
        (WebCore::Document::selectedStylesheetSet): Ditto.
        (WebCore::Document::getCSSTarget): Ditto.
        (WebCore::Document::formElementsState): Added. Replaces the old docState function.
        Builds a vector of strings, with 3 strings for each form element containing the
        name, type, and state value.
        (WebCore::Document::setStateForNewFormElements): Added. Converts the state vector
        into a hash map, considering the scheme with 3 strings for form element used above.
        (WebCore::Document::hasStateForNewFormElements): Added.
        (WebCore::Document::takeStateForFormElement): Added. Given a name and type, looks
        up the values in the hash map and "peels off" the last one.
        (WebCore::FormElementKey::FormElementKey): Added.
        (WebCore::FormElementKey::~FormElementKey): Added.
        (WebCore::FormElementKey::operator=): Added.
        (WebCore::FormElementKey::ref): Added.
        (WebCore::FormElementKey::deref): Added.
        (WebCore::FormElementKeyHash::hash): Added.
        (WebCore::FormElementKeyHashTraits::deletedValue): Added.

        * dom/Element.h: Removed state function.
        * dom/Node.h: Removed maintainsState, state, and restoreState functions.
        * dom/Node.cpp: Ditto.

        * dom/QualifiedName.cpp: Reformatted.
        (WebCore::hashComponents): Removed code to handle buffers that are not multiples
        of 4 bytes, since a QualifiedName is guaranteed to be; also asserted that fact.

        * html/HTMLParser.cpp:
        (WebCore::HTMLParser::insertNode): Remove code to restore state; that's now handled
        by closeRenderer.
        (WebCore::HTMLParser::popOneBlock): Ditto.

        * html/HTMLFormElement.cpp: Added include of HTMLInputElement.h.

        * html/HTMLGenericFormElement.h: Changed form to be a const member function.
        Changed type function to return a const AtomicString& instead of a String.
        Added an override of closeRenderer. Removed state and findMatchingState functions.
        Added stateValue and restoreState functions. Made m_form, m_disabled, and m_readOnly
        be private instead of protected. Removed m_inited. Changed booleans to not use bit
        fields since there are only two of them.
        * html/HTMLGenericFormElement.cpp: Removed encodedElementName, state, and
        findMatchingState functions.
        (WebCore::HTMLGenericFormElement::stateValue): Added. No implementation. This will only be
        called for subclasses that call registerFormElementWithState, and those will override and
        implement it.
        (WebCore::HTMLGenericFormElement::restoreState): Ditto.
        (WebCore::HTMLGenericFormElement::closeRenderer): Added. Replaces code that was in the
        HTML parser. Calls takeStateForFormElement, passing in the name and type, and if a
        state is found, calls restoreState.

        * html/HTMLButtonElement.h: Changed type to return a const AtomicString& instead
        of a String.
        * html/HTMLButtonElement.cpp:
        (WebCore::HTMLButtonElement::type): Return a const AtomicString& instead of a
        String.
        (WebCore::HTMLButtonElement::defaultEventHandler): Use form() instead of m_form.
        (WebCore::HTMLButtonElement::isSuccessfulSubmitButton): Use disabled() instead of
        m_disabled.

        * html/HTMLInputElement.h: Changed type to return a const AtomicString& instead
        of a String. Removed maintainsState, state, and restoreState functions, and added
        new stateValue and restoreState functions. Added m_inited (moved here from the generic
        form element base class).
        * html/HTMLInputElement.cpp:
        (WebCore::HTMLInputElement::init): Call registerFormElementWithState. This was
        formerly done by the HTML parser.
        (WebCore::HTMLInputElement::~HTMLInputElement): Call deregisterFormElementWithState
        by its new name.
        (WebCore::HTMLInputElement::isKeyboardFocusable): Use form() instead of m_form.
        (WebCore::HTMLInputElement::setType): Ditto.
        (WebCore::HTMLInputElement::setInputType): Ditto. Also call inputType() != PASSWORD
        instead of maintainsState(), since this is the only function that needs to know
        the rule and it's no longer a function in the base class. Also call register and
        deregister functions by their new names.
        (WebCore::HTMLInputElement::type): Changed to return const AtomicString& instead
        of String.
        (WebCore::HTMLInputElement::stateValue): Renamed from state and changed to no
        longer include the name and type, formerly obtained by calling the base class's
        HTMLGenericFormElement::state, and to no longer modify the value() string by
        adding a ".", which gets in the way of distinguishing null and empty values
        and is slower and unnecessary.
        (WebCore::HTMLInputElement::restoreState):  Changed because it takes a single
        state and doesn't need to call findMatchingState, and also to no longer remove the last
        character from the value when restoring state.
        (WebCore::HTMLInputElement::parseMappedAttribute): Use form() instead of m_form.
        (WebCore::HTMLInputElement::isSuccessfulSubmitButton): Use disabled() instead of
        m_disabled.
        (WebCore::HTMLInputElement::setChecked): Use form() instead of m_form.
        (WebCore::HTMLInputElement::preDispatchEventHandler): Ditto.
        (WebCore::HTMLInputElement::defaultEventHandler): Ditto.

        * html/HTMLSelectElement.h: Changed type to return a const AtomicString& instead
        of a String.
        * html/HTMLSelectElement.cpp:
        (WebCore::HTMLSelectElement::HTMLSelectElement): Call registerFormElementWithState.
        This was formerly done by the HTML parser.
        (WebCore::HTMLSelectElement::~HTMLSelectElement): Call deregisterFormElementWithState
        by its new name.
        (WebCore::HTMLSelectElement::type): Changed to return const AtomicString& instead
        of String.
        (WebCore::HTMLSelectElement::stateValue): Renamed from state and changed to no
        longer include the name and type, formerly obtained by calling the base class's
        HTMLGenericFormElement::state, and to build the string in a Vector<char> instead of
        appending characters one at a time to a string.
        (WebCore::HTMLSelectElement::restoreState):  Changed because it takes a single
        state and doesn't need to call findMatchingState.
        (WebCore::HTMLSelectElement::defaultEventHandler): Use form() instead of m_form.

        * html/HTMLTextAreaElement.h: Changed type to return a const AtomicString& instead
        of a String. Removed maintainsState, state, and restoreState functions, and added
        new stateValue and restoreState functions.
        * html/HTMLTextAreaElement.cpp:
        (WebCore::HTMLTextAreaElement::HTMLTextAreaElement): Call registerFormElementWithState.
        This was formerly done by the HTML parser. Also use member initialization instead of
        assignment.
        (WebCore::HTMLTextAreaElement::~HTMLTextAreaElement): Call deregisterFormElementWithState
        by its new name.
        (WebCore::HTMLTextAreaElement::type): Changed to return const AtomicString& instead
        of String.
        (WebCore::HTMLTextAreaElement::stateValue): Renamed from state and changed to no
        longer include the name and type, formerly obtained by calling the base class's
        HTMLGenericFormElement::state, and to no longer modify the value() string by
        adding a ".", which is unnecessary.
        (WebCore::HTMLTextAreaElement::restoreState): Changed because it takes a single
        state and doesn't need to call findMatchingState, and also to no longer remove the last
        character from the value when restoring state.
        (WebCore::HTMLTextAreaElement::updateValue): Changed to const.
        (WebCore::HTMLTextAreaElement::value): Ditto.
        (WebCore::HTMLTextAreaElement::defaultValue): Ditto.

        * html/HTMLFieldSetElement.h: Changed type to return a const AtomicString& instead
        of a String.
        * html/HTMLFieldSetElement.cpp: (WebCore::HTMLFieldSetElement::type): Ditto.
        * html/HTMLKeygenElement.h: Ditto.
        * html/HTMLKeygenElement.cpp: (WebCore::HTMLKeygenElement::type): Ditto.
        * html/HTMLLegendElement.h: Ditto.
        * html/HTMLLegendElement.cpp: (WebCore::HTMLLegendElement::type):
        * html/HTMLOptGroupElement.h: Ditto.
        * html/HTMLOptGroupElement.cpp: (WebCore::HTMLOptGroupElement::type): Ditto.
        * html/HTMLOptionElement.h: Ditto.
        * html/HTMLOptionElement.cpp: (WebCore::HTMLOptionElement::type): Ditto.

        * ksvg2/svg/SVGAnimationElement.cpp: (SVGAnimationElement::closeRenderer):
        Added missing call to base class.

        * rendering/render_form.h: Removed element() functions that cast to the
        appropriate derived element class. They do make some bits of code slightly
        more readable, but they also require including too many headers. Removed
        the includes of HTMLInputElement.h, HTMLSelectElement.h, HTMLTextAreaElement.h,
        and KWQLineEdit.h, and added an include of GraphicsTypes.h.
        * rendering/render_form.cpp:
        (WebCore::RenderFormElement::updateFromElement): Changed use of element()
        to instead use node() and cast.
        (WebCore::RenderFormElement::clicked): Ditto.
        (WebCore::RenderLineEdit::selectionChanged): Ditto.
        (WebCore::RenderLineEdit::returnPressed): Ditto.
        (WebCore::RenderLineEdit::performSearch): Ditto.
        (WebCore::RenderLineEdit::addSearchResult): Ditto.
        (WebCore::RenderLineEdit::calcMinMaxWidth): Ditto.
        (WebCore::RenderLineEdit::setStyle): Ditto.
        (WebCore::RenderLineEdit::updateFromElement): Ditto.
        (WebCore::RenderLineEdit::valueChanged): Ditto.
        (WebCore::RenderFileButton::calcMinMaxWidth): Ditto.
        (WebCore::RenderFileButton::updateFromElement): Ditto.
        (WebCore::RenderFileButton::returnPressed): Ditto.
        (WebCore::RenderFileButton::valueChanged): Ditto.
        (WebCore::RenderSelect::updateFromElement): Ditto.
        (WebCore::RenderSelect::layout): Ditto.
        (WebCore::RenderSelect::valueChanged): Ditto.
        (WebCore::RenderSelect::selectionChanged): Ditto.
        (WebCore::RenderSelect::updateSelection): Ditto.
        (WebCore::RenderTextArea::destroy): Ditto.
        (WebCore::RenderTextArea::calcMinMaxWidth): Ditto.
        (WebCore::RenderTextArea::setStyle): Ditto.
        (WebCore::RenderTextArea::updateFromElement): Ditto.
        (WebCore::RenderTextArea::valueChanged): Ditto.
        (WebCore::RenderTextArea::selectionChanged): Ditto.
        (WebCore::RenderSlider::updateFromElement): Ditto.
        (WebCore::RenderSlider::valueChanged): Ditto.

2006-05-05  Matt Gough  <matt@softchaos.com>

        Reviewed by Darin.

        http://bugs.webkit.org/show_bug.cgi?id=8563

        Test: fast/doctypes/005-case-preserving.html

        The doctype object in the DOM is now usable by client code
        as opposed to always being exposed as nil. Now also ensures that
        the 'name' of the component preserves the case of the original html source.
        (i.e HtMl -> HtMl not HTML)

        * dom/Document.h:
        Changes comment by docType() to say it may return 0 for html
        * html/HTMLDocument.cpp:
        (WebCore::parseDocTypeDeclaration):
        (WebCore::HTMLDocument::determineParseMode):
        Preserves the case of the name component
        (WebCore::HTMLDocument::doctype):removed
        * html/HTMLDocument.h:
        (WebCore::HTMLDocument::doctype):removed

2006-05-05  Rob Buis  <buis@kde.org>

        Reviewed by Darin.

        Fix for http://bugs.webkit.org/show_bug.cgi?id=8445:
        [DOMHTMLSelectElement multiple] returns no when the select element is multiple

        Correct the logic errors, which are clearly indicated by the changeset given
        in the bug report.

        * bindings/objc/DOMHTML.mm:
        (-[DOMHTMLLinkElement disabled]):
        (-[DOMHTMLSelectElement disabled]):
        (-[DOMHTMLSelectElement multiple]):
        (-[DOMHTMLOptGroupElement disabled]):
        (-[DOMHTMLOptionElement defaultSelected]):
        (-[DOMHTMLOptionElement disabled]):

2006-05-04  Darin Adler  <darin@apple.com>

        Reviewed by Tim Omernick.

        - fix storage leak I introduced yesterday

        * platform/cg/GraphicsContextCG.cpp:
        (WebCore::setCGFillColor): Added.
        (WebCore::setCGStrokeColor): Added.
        (WebCore::GraphicsContext::drawRect): Use setCGFillColor to avoid allocating
        a CGColorRef object.
        (WebCore::GraphicsContext::drawLine): Use setCGStrokeColor and setCGFillColor
        to avoid allocating a CGColorRef object.
        (WebCore::GraphicsContext::drawEllipse): Ditto.
        (WebCore::GraphicsContext::drawArc): Ditto.
        (WebCore::GraphicsContext::drawConvexPolygon): Ditto.
        (WebCore::GraphicsContext::fillRect): Ditto.

2006-05-04  Justin Garcia  <justin.garcia@apple.com>

        Reviewed by harrison

        * dom/Node.cpp:
        (WebCore::Node::rootEditableElement):
        Restored code to stop at the body tag.  Editing shouldn't be allowed to 
        happen outside the body, so it needs to be the editable root even if the 
        html element is contentEditable.
        * editing/ReplaceSelectionCommand.cpp:
        (WebCore::ReplaceSelectionCommand::shouldMergeEnd):
        Now takes in more information so it can be "the decider".
        (WebCore::ReplaceSelectionCommand::doApply):
        Merging two paragraphs will destroy the moved one's block styles. Perform 
        the end merge backward (from content already in the document to just inserted
        content) if moving forward would move the paragraph that contained the start of 
        the selection being pasted into, since we always want to preserve that paragraph's 
        block style.
        Moving backward in this case is also helpful because otherwise it would be
        difficult to remember the position where inserted content began (since merging
        would remove m_firstNodeInserted).  That position is needed in order to select 
        the replacement and to add smart replace whitespace.
        (WebCore::ReplaceSelectionCommand::removeEndBRIfNeeded):
        If [br, 0] is at the end of a block, the br is not necessarily collapsed
        in quirks mode.  [br, 0] needs to also not be at the start of a block.
         
        * editing/ReplaceSelectionCommand.h:

2006-05-04  Tim Omernick  <timo@apple.com>

        Reviewed by Darin.

        <rdar://problem/4537606> Give Java WebKit plugin access to its own DOM element

        * bridge/mac/WebCoreFrameBridge.h:
        Added DOMElement parameter to -viewForJavaAppletWithFrame:attributeNames:attributeValues:baseURL:.

        * bridge/JavaAppletWidget.h:
        Constructor now takes the applet's element instead of its containing frame.

        * bridge/mac/JavaAppletWidget.mm:
        (JavaAppletWidget::JavaAppletWidget):
        Pass the applet's element to viewForJavaAppletWithFrame:.

        * rendering/RenderApplet.cpp:
        (WebCore::RenderApplet::createWidgetIfNecessary):
        Pass the element along to JavaAppletWidget.

2006-05-04  Tim Omernick  <timo@apple.com>

        Reviewed by John Sullivan.

        <rdar://problem/4480186> Give WebKit plugins access to their own DOM element

        * bridge/mac/WebCoreFrameBridge.h:
        Added DOMElement: parameter to -viewForPluginWithURL:attributeNames:attributueValues:MIMEType:

        * bridge/mac/FrameMac.h:
        * bridge/mac/FrameMac.mm:
        (WebCore::FrameMac::createPlugin):
        Added "element" parameter; wrap element in DOMElement and pass up to the bridge.

        * page/Frame.h:
        Added "element" parameter to createPlugin().
        * page/Frame.cpp:
        (WebCore::Frame::loadPlugin):
        Get the plugin's DOM element and pass to createPlugin().

2006-05-04  Eric Seidel  <eseidel@apple.com>

        Reviewed by timo.

        Add drag & drop support to <input type="file">
        http://bugs.webkit.org/show_bug.cgi?id=8733

        Test: manual/input-type-file-drag-drop.html

        * kwq/KWQFileButton.mm:
        (-[WebFileChooserButton initWithWidget::]):
        (-[WebCoreFileButton initWithWidget:]):
        (-[WebCoreFileButton drawRect:]):
        (-[WebCoreFileButton updateLabel]):
        (-[WebCoreFileButton setFilename:]):
        (-[WebCoreFileButton changeFilename:]):
        (-[WebCoreFileButton chooseFilename:]):
        (validFilenameFromPasteboard):
        (-[WebCoreFileButton draggingEntered:]):
        (-[WebCoreFileButton draggingExited:]):
        (-[WebCoreFileButton performDragOperation:]):

2006-05-04  Beth Dakin  <bdakin@apple.com>

        Reviewed by Hyatt.

        Fix for http://bugs.webkit.org/show_bug.cgi?id=8732 
        Backgrounds with background-size and background-origin do not 
        always lay out correctly

        * platform/cairo/ImageCairo.cpp:
        (WebCore::Image::drawTiled): We no longer need to scale the source 
        point since it will now come in with the scale already taken into 
        account.
        * platform/mac/ImageMac.mm:
        (WebCore::Image::drawTiled): Same as above.
        * rendering/RenderBox.cpp:
        (WebCore::cacluateBackgroundSize): Now calculate the background 
        size in a helper method.
        (WebCore::RenderBox::paintBackgroundExtended): Calculate the 
        background size before calculating cx, cy, cw, ch, sx, and sy so 
        that they can all be calculated with the scaled image size taken 
        into account.

2006-05-04  David Hyatt  <hyatt@apple.com>

        Fix for 8693, crash when reloading PDF. Make sure to clear the truncator's
        cached renderer.

        Reviewed by beth

        * bridge/mac/WebCoreStringTruncator.h:
        * bridge/mac/WebCoreStringTruncator.mm:
        (+[WebCoreStringTruncator clear]):
        * platform/mac/WebTextRendererFactory.mm:
        (-[WebTextRendererFactory clearCaches]):

2006-05-03  Darin Adler  <darin@apple.com>

        Reviewed by Eric.

        - http://bugs.webkit.org/show_bug.cgi?id=8696
          another round of GraphicsContext improvements

        * WebCore.xcodeproj/project.pbxproj: Added GraphicsContextCG.cpp.
        * html/CanvasRenderingContext2D.cpp:
        (WebCore::CanvasRenderingContext2D::scale): Use new GraphicsContext function.
        (WebCore::CanvasRenderingContext2D::rotate): Ditto.
        (WebCore::CanvasRenderingContext2D::translate): Ditto.
        * kwq/KWQComboBox.mm: Added include (not sure if this is needed for this patch,
        but it's needed for one of my upcoming ones).

        * platform/GraphicsContext.h: Changed fillColor and setFillColor to use Color
        instead of RGBA32. Removed setColorFromFillColor and setColorFromPen. Added
        scale, rotate, and translate functions.
        * platform/GraphicsContext.cpp:
        (WebCore::GraphicsContext::setFillColor): Changed to use Color instead of RGBA32.
        (WebCore::GraphicsContext::fillColor): Ditto.

        * platform/GraphicsTypes.h: Moved HorizontalAlignment here.
        * platform/Widget.h: Removed HorizontalAlignment from here.

        * platform/cg/GraphicsContextCG.cpp: Added. Started as a copy of GraphicsContextMac.mm.
        (WebCore::GraphicsContext::drawRect): Rewrote to not rely on [NSGraphicsContext currentContext].
        (WebCore::GraphicsContext::drawLine): Ditto.
        (WebCore::GraphicsContext::drawEllipse): Ditto.
        (WebCore::GraphicsContext::drawArc): Ditto.
        (WebCore::GraphicsContext::drawConvexPolygon): Ditto.
        (WebCore::GraphicsContext::fillRect): Ditto.
        (WebCore::GraphicsContext::setLineWidth):  Added check of paintingDisabled(). 
        (WebCore::GraphicsContext::setMiterLimit): Ditto.
        (WebCore::GraphicsContext::setAlpha): Ditto.
        (WebCore::GraphicsContext::clearRect): Ditto.
        (WebCore::GraphicsContext::strokeRect): Ditto.
        (WebCore::GraphicsContext::setLineCap): Ditto.
        (WebCore::GraphicsContext::setLineJoin): Ditto.
        (WebCore::GraphicsContext::clip): Ditto.
        (WebCore::GraphicsContext::scale): Added.
        (WebCore::GraphicsContext::rotate): Added.
        (WebCore::GraphicsContext::translate): Added.

        * platform/mac/GraphicsContextMac.mm: Moved most of this file into GraphicsContextCG.cpp.
        (WebCore::GraphicsContext::setCompositeOperation): Added check of paintingDisabled().

        * platform/mac/WebCoreSystemInterface.h: Added declarations so this header
        stands alone.

2006-05-03  Darin Adler  <darin@apple.com>

        Reviewed by Justin.

        - fix http://bugs.webkit.org/show_bug.cgi?id=8159
          REGRESSION: Clicking outside new text field focuses the field

        This bug has always been present for "content editable" HTML, but
        now affects <input type=text> as well. The problem is with the editing
        concept of a "deep equivalent". When computing the deep equivalent,
        the code can move from outside an editable area to inside. To fix this,
        I removed all use of the "deep equivalent" concept.

        * rendering/RenderBlock.cpp: (WebCore::RenderBlock::positionForCoordinates):
        Changed argument names from _x and _y to just x and y. When the element
        is the editable root, changed things so that clicks that are not within
        the element at all return positions before or after the element, rather than
        always choosing the closest point within the element. This gets us off on
        the right foot, by not choosing a position inside an editable root when you
        click outside that editable root. This code handles shadowParentNode as well,
        and also calls positionForCoordinates on children rather than calling
        positionForRenderer (which I believe is now a function that can be removed).

        * editing/VisiblePosition.h: Removed the deepEquivalent function.
        * editing/VisiblePosition.cpp:
        (WebCore::VisiblePosition::previousVisiblePosition): Removed use of the
        deepEquivalent function. Also, to make this function easier to understand
        I separated out the case where the start point is "in rendered content"
        and the case where it's not into two separate loops.
        (WebCore::VisiblePosition::nextVisiblePosition): Ditto.
        (WebCore::VisiblePosition::initDeepPosition): Removed use of the deepEquivalent
        function. Also added code to make sure that this work never turns a position
        outside an editable element into a position inside that editable element, or
        vice versa. Reorganized the code a bit.

        * dom/Position.cpp:
        (WebCore::Position::upstream): Removed use of the deepEquivalent function.
        (WebCore::Position::downstream): Ditto.

        * editing/htmlediting.cpp:
        (WebCore::editingIgnoresContent): Changed to use isReplaced instead of isWidget
        and isImage to determine if editing should ignore content.
        (WebCore::firstInSpecialElement): Rewrote isFirstVisiblePositionInSpecialElement
        to have code to share with positionBeforeContainingSpecialElement. And changed
        to allow both the position just before a table and the position just inside a
        table to qualify. While this is slightly sloppy, the old code worked because
        of the "deep equivalent" technique. This change is needed to get the desired
        results even without that technique.
        (WebCore::lastInSpecialElement): Ditto.
        (WebCore::isFirstVisiblePositionInSpecialElement): Changed to use the new function.
        (WebCore::positionBeforeContainingSpecialElement): Ditto.
        (WebCore::isLastVisiblePositionInSpecialElement): Ditto.
        (WebCore::positionAfterContainingSpecialElement): Ditto.

        * dom/Node.cpp: (WebCore::Node::rootEditableElement): Rewrote to remove
        special case for body tag.

        - other changes

        * html/HTMLElement.cpp:
        (WebCore::HTMLElement::setOuterHTML): Added a FIXME about the fact
        that this won't merge neighboring text nodes the way setOuterText does.
        (WebCore::HTMLElement::setInnerText): Added a FIXME about the fact that
        this creates a text node even when setting to empty text.
        (WebCore::HTMLElement::setOuterText): Ditto.

        * editing/DeleteSelectionCommand.cpp: Removed some #if 1 and #if 0.
        * editing/ReplaceSelectionCommand.cpp: A little reformatting.
        * rendering/render_button.h: Tiny formatting tweak.

2006-05-02  Adele Peterson  <adele@apple.com>

        Reviewed by Beth.

        Fix for <rdar://problem/4523671> 
        REGRESSION (NativeTextField): Auto-complete popup list doesn't appear at the correct location after scrolling page.

        * bindings/objc/DOMHTML.mm: (-[DOMHTMLInputElement _rectOnScreen]):
        Use the documentView to compute the correct rect for the element when the view is scrolled.

2006-05-02  Justin Garcia  <justin.garcia@apple.com>

        Reviewed by harrison
        
        <http://bugs.webkit.org/show_bug.cgi?id=8704>
        Fix a few end merge bugs
        <rdar://problem/4424044>
        REGRESSION: Extra line appears when typing

        * bridge/mac/WebCoreFrameBridge.mm:
        (-[WebCoreFrameBridge smartInsertForString:replacingRange:beforeString:afterString:]): 
        Use renamed characterAfter.
        * editing/InsertParagraphSeparatorCommand.cpp:
        (WebCore::InsertParagraphSeparatorCommand::doApply):
        Regenerate a VisiblePosition that became stale during a text node split.
        Don't rebalance whitespace after the operation, 1) it has a bug that turns preserved
        newlines into nbsps, 2) I think it should only be done during serialization, not after 
        every command (since editable regions now always have -webkit-nbsp-mode:space on them).
        Use a regular br for the placeholder as I think we can move away from -webkit-block-placeholders.
        
        * editing/RebalanceWhitespaceCommand.cpp: Added FIXMEs.
        * editing/ReplaceSelectionCommand.cpp:
        (WebCore::ReplaceSelectionCommand::shouldMergeStart): Removed FIXME.
        (WebCore::ReplaceSelectionCommand::shouldMergeEnd): Can now use rendering information.
        (WebCore::ReplaceSelectionCommand::doApply):
        Call shouldMergeEnd after the insertion so that it can use rendering information.
        Don't use positionAfterNode of the last node inserted to mark the position at the end 
        of inserted content because canonicalization can send it into content that was already
        in the document.
        
        * editing/ReplaceSelectionCommand.h:
        * editing/VisiblePosition.cpp:
        (WebCore::VisiblePosition::characterAfter): 
        Renamed.  When two candidates are visually equivalent, the rightmost candidate will be 
        the one inside the text node where the character will be.
        
        * editing/VisiblePosition.h:
        * editing/htmlediting.cpp:
        (WebCore::enclosingTableCell): Added.
        (WebCore::enclosingList):
        * editing/htmlediting.h:

2006-05-02  David Hyatt  <hyatt@apple.com>

        Partial fix for the crash in bugzilla bug 8088.  There's a third crash
        even after fixing this though.

        Reviewed by darin

        * platform/mac/WebTextRenderer.mm:
        (WebCore::WidthMap::widths):
        (WebCore::extendWidthMap):
        * platform/mac/WebTextRendererFactory.mm:
        (-[WebTextRendererFactory clearCaches]):

2006-05-02  Steve Falkenburg  <sfalken@apple.com>

        Reviewed by eric.

        * WebCore.vcproj/WebCore/WebCore.vcproj: defined NDEBUG in release build
        * bridge/win/FrameWin.cpp:
        (WebCore::FrameWin::FrameWin): turned on javascript.
        * kwq/KWQKHTMLSettings.h: 
        (KHTMLSettings::KHTMLSettings): initialized settings to 0

2006-05-02  David Hyatt  <hyatt@apple.com>

        Make sure to updateLayout on all scrolling functions (in particular when
        setting scrollLeft/Top).

        Reviewed by eric

        fast/overflow/008,html added as a test case.

        * dom/Element.cpp:
        (WebCore::Element::scrollIntoView):
        (WebCore::Element::scrollIntoViewIfNeeded):
        (WebCore::Element::setScrollLeft):
        (WebCore::Element::setScrollTop):

2006-05-02  Anders Carlsson  <andersca@mac.com>

        Reviewed by Dave Hyatt.
        
        http://bugs.webkit.org/show_bug.cgi?id=8688
        file URLs aren't being serialized correctly when using window.location
        
        * platform/KURL.cpp:
        (KURL::prettyURL):
        Append "//" for file URLs.
        
2006-05-01  David Hyatt  <hyatt@apple.com>

        Convert WebTextRenderer to be a C++ class.  Change the factory so
        that it uses pointer-based hashmaps instead of NSMutableDictionaries.
        Convert uses of malloc/free to new/delete so that they start using
        the fastMalloc/fastFree code.

        Reviewed by darin

        * bridge/mac/WebCoreStringTruncator.mm:
        (stringWidth):
        (truncateString):
        * kwq/KWQComboBox.mm:
        (QComboBox::sizeHint):
        * kwq/KWQLineEdit.mm:
        (QLineEdit::sizeForCharacterWidth):
        * kwq/KWQListBox.mm:
        (itemTextRenderer):
        (groupLabelTextRenderer):
        (QListBox::sizeForNumberOfLines):
        (QListBox::clearCachedTextRenderers):
        (-[KWQTableView drawRow:clipRect:]):
        * platform/FontDataSet.h:
        * platform/mac/FontMac.mm:
        (WebCore::FontDataSet::~FontDataSet):
        (WebCore::FontDataSet::getRenderer):
        (WebCore::FontDataSet::invalidate):
        (WebCore::Font::ascent):
        (WebCore::Font::descent):
        (WebCore::Font::lineSpacing):
        (WebCore::Font::xHeight):
        (WebCore::Font::selectionRectForText):
        (WebCore::Font::drawText):
        (WebCore::Font::drawHighlightForText):
        (WebCore::Font::drawLineForText):
        (WebCore::Font::drawLineForMisspelling):
        (WebCore::Font::misspellingLineThickness):
        (WebCore::Font::floatWidth):
        (WebCore::Font::checkSelectionPoint):
        * platform/mac/WebCoreTextRenderer.mm:
        (WebCoreDrawTextAtPoint):
        (WebCoreTextFloatWidth):
        (WebCoreSetAlwaysUseATSU):
        * platform/mac/WebTextRenderer.h:
        (WebCore::WebTextRenderer::ascent):
        (WebCore::WebTextRenderer::descent):
        (WebCore::WebTextRenderer::lineSpacing):
        (WebCore::WebTextRenderer::lineGap):
        (WebCore::WebTextRenderer::misspellingLineThickness):
        (WebCore::WebTextRenderer::misspellingLinePatternWidth):
        (WebCore::WebTextRenderer::misspellingLinePatternGapWidth):
        * platform/mac/WebTextRenderer.mm:
        (WebCore::WebCoreInitializeFont):
        (WebCore::WebCoreInitializeTextRun):
        (WebCore::WebCoreInitializeEmptyTextStyle):
        (WebCore::WebCoreInitializeEmptyTextGeometry):
        (WebCore::widthForGlyph):
        (WebCore::overrideLayoutOperation):
        (WebCore::m_ATSUMirrors):
        (WebCore::WebTextRenderer::~WebTextRenderer):
        (WebCore::WebTextRenderer::xHeight):
        (WebCore::WebTextRenderer::drawRun):
        (WebCore::WebTextRenderer::floatWidthForRun):
        (WebCore::WebTextRenderer::drawLineForCharacters):
        (WebCore::WebTextRenderer::selectionRectForRun):
        (WebCore::WebTextRenderer::drawHighlightForRun):
        (WebCore::WebTextRenderer::drawLineForMisspelling):
        (WebCore::WebTextRenderer::pointToOffset):
        (WebCore::WebTextRenderer::setAlwaysUseATSU):
        (WebCore::getSmallCapsRenderer):
        (WebCore::findSubstituteFont):
        (WebCore::rendererForAlternateFont):
        (WebCore::computeWidthForSpace):
        (WebCore::setUpFont):
        (WebCore::CG_selectionRect):
        (WebCore::CG_draw):
        (WebCore::updateGlyphMapEntry):
        (WebCore::extendGlyphMap):
        (WebCore::extendWidthMap):
        (WebCore::initializeATSUStyle):
        (WebCore::createATSULayoutParameters):
        (WebCore::disposeATSULayoutParameters):
        (WebCore::addDirectionalOverride):
        (WebCore::ATSU_selectionRect):
        (WebCore::ATSU_draw):
        (WebCore::ATSU_pointToOffset):
        (WebCore::freeWidthMap):
        (WebCore::freeGlyphMap):
        (WebCore::glyphForCharacter):
        (WebCore::advanceWidthIterator):
        * platform/mac/WebTextRendererFactory.h:
        * platform/mac/WebTextRendererFactory.mm:
        (-[WebTextRendererFactory clearCaches]):
        (-[WebTextRendererFactory init]):
        (-[WebTextRendererFactory dealloc]):
        (-[WebTextRendererFactory rendererWithFont:]):

2006-05-01  Justin Garcia  <justin.garcia@apple.com>

        Reviewed by darin
        
        <http://bugs.webkit.org/show_bug.cgi?id=8653>
        Remove a use of hasMoreThanOneBlock, which uses info from the test rendering.

        * editing/DeleteSelectionCommand.cpp:
        (WebCore::DeleteSelectionCommand::initializePositionData):
        Removed code that stopped the merge if the end of the selection to delete
        was in a fully selected line, which was nonsense.
        
        (WebCore::DeleteSelectionCommand::mergeParagraphs):
        Deletion does a bad job of updating the endpoints of the selection as it removes 
        content.  If the endpoints have been flip flipped, bail.
        If deletion has removed everything from the block that contained the
        start of the selection to delete, we can't create a visible position inside 
        that block to serve as a destination for the merge.  So, we insert a placeholder 
        at that position to prop the block open to let content in.
        
        * editing/ReplaceSelectionCommand.cpp:
        (WebCore::ReplaceSelectionCommand::doApply):
        Added an assert and two early returns for cases where we'll crash.
        Removed a use of !fragment.hasMoreThanOneBlock, which uses test rendering info 
        and which was wrong.
        If we've already inserted content during the start merge, insertionPos will be 
        the position just after that content, so inserting new content before insertionPos 
        will reverse its order.

2006-05-01  Mitz Pettel  <opendarwin.org@mitzpettel.com>

        Reviewed by Darin.

        - manual test for http://bugs.webkit.org/show_bug.cgi?id=8658
          Assertion failure in -[WebPluginContainerCheck _isForbiddenFileLoad]
          (bridge is null) when clicking QuickTime object with href

        * manual-tests/plugin-controller-datasource.html: Added.
        * manual-tests/resources/orange.mov: Added.

2006-04-30  Rob Buis  <buis@kde.org>

        Reviewed by eseidel.  Landed by eseidel.

        Fix for http://bugs.webkit.org/show_bug.cgi?id=8651:
        CGContextSetLineDash: invalid dash array: emmited during WebKit tests

        Properly discard invalid stroke-dasharray properties like in
        invalid-css.svg.  (Tests updated.)

        * ksvg2/css/SVGCSSParser.cpp:
        (WebCore::CSSParser::parseSVGStrokeDasharray):

2006-04-28  David Hyatt  <hyatt@apple.com>

        Make image buffer sizes in the loader more accurate, since we know we store
        buffers with 4 bytes per pixel.  Double sizes to account for this.  Also
        deal better with animated GIFs that may have thousands of frames by adding
        in a heuristic that will use the data size instead of a single frame RGBA32
        buffer size if it's larger.

        Reviewed by darin

        * loader/Cache.cpp:
        * loader/CachedImage.cpp:
        (WebCore::CachedImage::data):

2006-04-28  Steve Falkenburg  <sfalken@apple.com>

        Reviewed by eric.

        No test necessary - fixing Win32 build, turned off C++ exceptions, turned off RTTI

        * WebCore.vcproj/WebCore/WebCore.vcproj:
        * bridge/win/FrameWin.cpp:
        (WebCore::FrameWin::~FrameWin):
        * bridge/win/PageWin.cpp:
        (WebCore::Page::Page):
        * page/Page.h:
        * platform/win/TemporaryLinkStubs.cpp:
        (FrameWin::saveDocumentState):
        (Path::contains):
        (Path::boundingRect):

2006-04-28  David Hyatt  <hyatt@apple.com>

        Merge WebCoreTextRenderer into WebTextRenderer.  Merge WebCoreTextRendererFactory
        into WebTextRendererFactory.  Change all callers to refer to the concrete classes
        now.  Change WebCoreTextRenderer.h to be the public API that WebKit uses when
        it calls in to WebCore.  Clean up the exports to remove things WebKit no longer
        needs.

        Reviewed by darin

        * WebCore.exp:
        * WebCore.xcodeproj/project.pbxproj:
        * bridge/mac/WebCoreStringTruncator.mm:
        (stringWidth):
        (truncateString):
        (+[WebCoreStringTruncator widthOfString:font:]):
        * kwq/KWQComboBox.mm:
        (QComboBox::sizeHint):
        * kwq/KWQLineEdit.mm:
        (QLineEdit::sizeForCharacterWidth):
        * kwq/KWQListBox.mm:
        (itemTextRenderer):
        (groupLabelTextRenderer):
        (QListBox::sizeForNumberOfLines):
        (-[KWQTableView drawRow:clipRect:]):
        * platform/Font.h:
        * platform/FontDataSet.h:
        * platform/mac/FontMac.mm:
        (WebCore::FontDataSet::getWebCoreFont):
        (WebCore::FontDataSet::getRenderer):
        (WebCore::FontDataSet::determinePitch):
        * platform/mac/WebCoreTextRenderer.h:
        * platform/mac/WebCoreTextRendererFactory.mm:
        (-[WebCoreTextRendererFactory init]):
        * platform/mac/WebTextRenderer.h:
        * platform/mac/WebTextRenderer.mm:
        * platform/mac/WebTextRendererFactory.h:
        * platform/mac/WebTextRendererFactory.mm:
        (WebCoreInitializeFont):
        (WebCoreInitializeTextRun):
        (WebCoreInitializeEmptyTextStyle):
        (WebCoreInitializeEmptyTextGeometry):
        (-[WebTextRendererFactory clearCaches]):
        (+[WebTextRendererFactory createSharedFactory]):
        (+[WebTextRendererFactory sharedFactory]):
        (-[WebTextRendererFactory init]):

2006-04-28  David Hyatt  <hyatt@apple.com>

        Fix for 8586, move WebTextRenderer into WebCore.

        Reviewed by darin

        * WebCore.exp:
        * WebCore.xcodeproj/project.pbxproj:
        * bridge/mac/WebCoreStringTruncator.mm:
        * platform/mac/WebCoreSystemInterface.h:
        * platform/mac/WebCoreSystemInterface.mm:
        * platform/mac/WebCoreTextRenderer.h:
        * platform/mac/WebCoreTextRendererFactory.mm:
        (+[WebCoreTextRendererFactory sharedFactory]):
        * platform/mac/WebTextRenderer.h: Added.
        * platform/mac/WebTextRenderer.mm: Added.
        (widthForGlyph):
        (-[WebTextRenderer initWithFont:]):
        (destroy):
        (-[WebTextRenderer drawLineForCharacters:yOffset:width:color:thickness:]):
        (-[WebTextRenderer drawLineForMisspelling:withWidth:]):
        (findSubstituteFont):
        (setUpFont):
        (pathFromFont):
        (drawGlyphs):
        (CG_draw):
        (extendGlyphMap):
        (extendWidthMap):
        (initializeATSUStyle):
        (createATSULayoutParameters):
        (getTextBounds):
        (addDirectionalOverride):
        (ATSU_draw):
        (normalizeVoicingMarks):
        (advanceWidthIterator):
        (fillStyleWithAttributes):
        * platform/mac/WebTextRendererFactory.h: Added.
        * platform/mac/WebTextRendererFactory.mm: Added.
        (getAppDefaultValue):
        (getUserDefaultValue):
        (getLCDScaleParameters):
        (fontsChanged):
        (+[WebTextRendererFactory createSharedFactory]):
        (-[WebTextRendererFactory isFontFixedPitch:]):
        (-[WebTextRendererFactory fontWithFamily:traits:size:]):
        (FontCacheKeyCopy):
        (-[WebTextRendererFactory cachedFontFromFamily:traits:size:]):

2006-04-28  Eric Seidel  <eseidel@apple.com>

        Fix by beth.  Reviewed by darin.  Landed by eseidel.

        Make hackish fix to avoid crash in Xcode and Filemaker.
        <rdar://problem/4059059> Crash in RenderFlow::detach (XCode Documentation Window)

        * bridge/mac/WebCoreFrameBridge.mm:
        (-[WebCoreFrameBridge didNotOpenURL:pageCache:]):

2006-04-28  Alexey Proskuryakov  <ap@nypop.com>

        Reviewed by hyatt.

        - http://bugs.webkit.org/show_bug.cgi?id=5855
          REGRESSION: revert SGML comment parsing fix (comment parsing causes most of usbank.com page to be missing)

        * html/HTMLTokenizer.cpp:
        (WebCore::HTMLTokenizer::parseComment): Revert one change made for acid2, 
        <http://weblogs.mozillazine.org/hyatt/acid6.txt>.

2006-04-28  Darin Adler  <darin@apple.com>

        Reviewed by Eric.

        - http://bugs.webkit.org/show_bug.cgi?id=8608
          make GraphicsContext more suitable for cross-platform use, step 2

        - Changed GraphicsContext to use NSGraphicsContext as little as possible.
        - Removed the printing flag from GraphicsContext.
        - Changed GraphicsContext to assume the NSGraphicsContext is always flipped,
          and got rid of parameters to pass the flipped boolean around.

        * WebCore.vcproj/WebCore/WebCore.vcproj: Add GraphicsTypes.h/cpp and remove
        CompositeOperator.h/cpp.
        * WebCore.xcodeproj/project.pbxproj: Ditto.

        * bridge/mac/FrameMac.mm: (WebCore::FrameMac::setDisplaysWithFocusAttributes):
        * bridge/mac/WebCoreFrameBridge.mm: (-[WebCoreFrameBridge drawRect:]):
        * html/CanvasPattern.cpp: (WebCore::patternCallback):
        * html/HTMLCanvasElement.cpp: (WebCore::HTMLCanvasElement::createDrawingContext):
        * kcanvas/device/quartz/KRenderingDeviceQuartz.mm:
        (WebCore::KRenderingDeviceContextQuartz::createGraphicsContext):
        * platform/mac/WidgetMac.mm: (WebCore::Widget::lockDrawingFocus):
        Update for changes to GraphicsContext constructor (no flipped or printing boolean).

        * html/CanvasRenderingContext2D.h: Added a Path to the context state. Changed the
        LineCap and LineJoin types to use the new ones in GraphicsTypes.h instead of defining
        types here in this class. Changed m_platformContextStrokeStyleIsPattern and
        m_platformContextFillStyleIsPattern to be named m_appliedStrokePattern and
        m_appliedFillPattern and moved them outside the __APPLE__ ifdefs. Removed the
        platformContext() function. Moved applyStrokePattern and applyFillPattern out of
        the __APPLE__ ifdef.

        * html/CanvasRenderingContext2D.cpp:
        (WebCore::CanvasRenderingContext2D::State::State): Moved the stroke pattern
        booleans out of Mac-specific ifdef.
        (WebCore::CanvasRenderingContext2D::save): Changed to use GraphicsContext instead
        of using CGContext directly.
        (WebCore::CanvasRenderingContext2D::restore): Ditto.
        (WebCore::CanvasRenderingContext2D::setStrokeStyle): Ditto.
        (WebCore::CanvasRenderingContext2D::setFillStyle): Ditto.
        (WebCore::CanvasRenderingContext2D::setLineWidth): Ditto.
        (WebCore::CanvasRenderingContext2D::lineCap): Ditto.
        (WebCore::CanvasRenderingContext2D::setLineCap): Ditto.
        (WebCore::CanvasRenderingContext2D::lineJoin): Ditto.
        (WebCore::CanvasRenderingContext2D::setLineJoin): Ditto.
        (WebCore::CanvasRenderingContext2D::setMiterLimit): Ditto.
        (WebCore::CanvasRenderingContext2D::shadowColor): Ditto.
        (WebCore::CanvasRenderingContext2D::setGlobalAlpha): Ditto.
        (WebCore::CanvasRenderingContext2D::setGlobalCompositeOperation): Ditto.
        (WebCore::CanvasRenderingContext2D::scale): Update since platformContext() function
        no longer exists.
        (WebCore::CanvasRenderingContext2D::rotate): Ditto.
        (WebCore::CanvasRenderingContext2D::translate): Ditto.
        (WebCore::CanvasRenderingContext2D::beginPath): Changed to use GraphicsContext instead
        of using CGContext directly.
        (WebCore::CanvasRenderingContext2D::closePath): Ditto.
        (WebCore::CanvasRenderingContext2D::moveTo): Ditto.
        (WebCore::CanvasRenderingContext2D::lineTo): Ditto.
        (WebCore::CanvasRenderingContext2D::quadraticCurveTo): Ditto.
        (WebCore::CanvasRenderingContext2D::bezierCurveTo): Ditto.
        (WebCore::CanvasRenderingContext2D::arcTo): Ditto.
        (WebCore::CanvasRenderingContext2D::arc): Ditto.
        (WebCore::CanvasRenderingContext2D::rect): Ditto.
        (WebCore::CanvasRenderingContext2D::fill): Changed to use the current path from this class
        instead of relying on the CGContext's current path.
        (WebCore::CanvasRenderingContext2D::stroke): Ditto.
        (WebCore::CanvasRenderingContext2D::clip): Changed to use the current path and use the
        GraphicsContext instead of using CGContext directly.
        (WebCore::CanvasRenderingContext2D::clearRect): Changed to use GraphicsContext instead
        of using CGContext directly.
        (WebCore::CanvasRenderingContext2D::fillRect): Update since platformContext() function
        no longer exists.
        (WebCore::CanvasRenderingContext2D::strokeRect): Ditto.
        (WebCore::CanvasRenderingContext2D::setShadow): Ditto.
        (WebCore::CanvasRenderingContext2D::applyShadow): Ditto.
        (WebCore::CanvasRenderingContext2D::drawImage): Ditto.
        (WebCore::CanvasRenderingContext2D::drawImageFromRect): Ditto.
        (WebCore::CanvasRenderingContext2D::createPattern): Ditto.
        (WebCore::CanvasRenderingContext2D::applyStrokePattern): Made a tiny bit of this function
        cross-platform. The bulk is still Mac-specific.
        (WebCore::CanvasRenderingContext2D::applyFillPattern): Ditto.

        * html/CanvasStyle.h: Changed to use GraphicsContext instead of CGContext. Now the
        platform-specific stuff is in the implementation, not the header.
        * html/CanvasStyle.cpp:
        (WebCore::CanvasStyle::applyStrokeColor): Moved the ifdefs inside the function, getting
        us one step closer to platform independence.
        (WebCore::CanvasStyle::applyFillColor): Ditto.

        * html/html_imageimpl.cpp:
        (WebCore::HTMLAreaElement::getRect): Update for changes to the Path class.
        (WebCore::HTMLAreaElement::getRegion): Ditto.

        * page/Frame.cpp:
        (WebCore::Frame::paint): Change to check printing flag on the document, rather than on
        the GraphicsContext, since there is no printing flag for GraphicsContext any more.
        (WebCore::Frame::adjustPageHeight): Update for change to GraphicsContext constructor.

        * platform/GraphicsContext.h: Define a type called PlatformGraphicsContext so the
        platform-specific getter and constructor don't have to be ifdef'd. Added clearRect,
        strokeRect, setLineWidth, setLineCap, setLineJoin, setMiterLimit, setAlpha, setCompositeOperation,
        and clip functions. Removed the isForPrinting parameter from createGraphicsContextPrivate.
        * platform/GraphicsContext.cpp:
        (WebCore::GraphicsContextPrivate::GraphicsContextPrivate): Removed isForPrinting.
        (WebCore::GraphicsContext::createGraphicsContextPrivate): Ditto.
        * platform/mac/GraphicsContextMac.mm:
        (WebCore::GraphicsContextPlatformPrivate::GraphicsContextPlatformPrivate):
        Removed NSGraphicsContext.
        (WebCore::GraphicsContextPlatformPrivate::~GraphicsContextPlatformPrivate):
        Ditto.
        (WebCore::GraphicsContext::GraphicsContext): Removed constructor that
        takes an NSGraphicsContext. Removed the flipText and forPrinting parameters
        to the other constructor.
        (WebCore::GraphicsContext::savePlatformState): Removed NSGraphicsContext code.
        (WebCore::GraphicsContext::restorePlatformState): Ditto.
        (WebCore::GraphicsContext::drawRect): Updated assertion to more-precisely
        reflect the limitation of the current version of this function.
        (WebCore::GraphicsContext::setColorFromFillColor): Ditto.
        (WebCore::GraphicsContext::setColorFromPen): Ditto.
        (WebCore::GraphicsContext::drawLine): Updated assertion to more-precisely
        reflect the limitation of the current version of this function.
        (WebCore::setCompositeOperation):
        (WebCore::GraphicsContext::fillRect): Ditto.
        (WebCore::GraphicsContext::setLineWidth): Added.
        (WebCore::GraphicsContext::setMiterLimit): Added.
        (WebCore::GraphicsContext::setAlpha): Added.
        (WebCore::GraphicsContext::setCompositeOperation): Added.
        (WebCore::GraphicsContext::clearRect): Added.
        (WebCore::GraphicsContext::strokeRect): Added.
        (WebCore::GraphicsContext::setLineCap): Added.
        (WebCore::GraphicsContext::setLineJoin): Added.
        (WebCore::GraphicsContext::clip): Added.

        * platform/CompositeOperator.cpp: Removed.
        * platform/CompositeOperator.h: Removed.
        * platform/GraphicsTypes.cpp: Added. Includes CompositeOperator, LineCap, and LineJoin.
        * platform/GraphicsTypes.h: Added.

        * platform/Image.h: Changed include to GraphicsTypes.h from CompositeOperator.h.

        * platform/Path.h: Removed constructors that take a Rect and an array of points. Made
        the Path mutable. Changed the types for contains and boundingRect to be float-based
        instead of int-based. Changed translate to take a FloatSize instead of two integers.
        Added clear, moveTo, addLineTo, addQuadCurveTo, addBezierCurveTo, addArcTo, closeSubpath,
        addArc, addRect, addEllipse, and platformPath functions. Defined a PlatformPath type
        so we don't have to ifdef the header so much.
        * platform/cg/PathCG.cpp:
        (WebCore::Path::Path): Changed class to always have a mutable path.
        (WebCore::Path::operator=): Changed to make a mutable copy.
        (WebCore::Path::contains): Changed to take a FloatPoint instead of IntPoint.
        (WebCore::Path::translate): Changed to use a FloatSize instead of two ints.
        (WebCore::Path::boundingRect): Changed to return a FloatRect.
        (WebCore::Path::moveTo): Added.
        (WebCore::Path::addLineTo): Added.
        (WebCore::Path::addQuadCurveTo): Added.
        (WebCore::Path::addBezierCurveTo): Added.
        (WebCore::Path::addArcTo): Added.
        (WebCore::Path::closeSubpath): Added.
        (WebCore::Path::addArc): Added.
        (WebCore::Path::addRect): Added.
        (WebCore::Path::addEllipse): Added.
        (WebCore::Path::clear): Added.

        * platform/mac/ImageMac.mm:
        (WebCore::fillSolidColorInRect): Changed to take a GraphicsContext instead of
        a CGContext.
        (WebCore::Image::checkForSolidColor): Changed to use the new setCompositeOperation
        in GraphicsContex.
        (WebCore::Image::draw): Changed to use the new PDF image and fillSolidColorInRect
        function that take GraphicsContext instead of CGContext.
        (WebCore::Image::drawTiled): Ditto.

        * platform/mac/PDFDocumentImage.h: Made most functions private. Changed to
        use GraphicsContext and FloatRect instead of CGContext and NSRect. Also
        removed the unused alpha and flipped booleans.
        * platform/mac/PDFDocumentImage.mm:
        (WebCore::PDFDocumentImage::bounds): Update for change in types.
        (WebCore::PDFDocumentImage::adjustCTM): Ditto.
        (WebCore::PDFDocumentImage::setCurrentPage): Ditto.
        (WebCore::PDFDocumentImage::draw): Ditto.

        * platform/win/TemporaryLinkStubs.cpp: Added lots of new stubs.

        * rendering/InlineTextBox.cpp: (WebCore::InlineTextBox::paint): Changed to get
        printing boolean from document instead graphics context.
        * rendering/RenderBlock.cpp:
        (WebCore::RenderBlock::paintChildren): Ditto.
        (WebCore::RenderBlock::paintObject): Ditto.
        * rendering/RenderFlow.cpp: (WebCore::RenderFlow::paintLines): Ditto.
        * rendering/RenderHTMLCanvas.cpp: (WebCore::RenderHTMLCanvas::paint): Ditto.
        * rendering/RenderImage.cpp: (WebCore::RenderImage::paint): Ditto.
        * rendering/RenderThemeMac.mm: (WebCore::RenderThemeMac::paintButton): Ditto.
        * rendering/render_list.cpp: (WebCore::RenderListMarker::paint): Ditto.
        * rendering/render_replaced.cpp: (WebCore::RenderWidget::paint): Ditto.

2006-04-28  Mitz Pettel  <opendarwin.org@mitzpettel.com>

        Reviewed by hyatt, landed by ap.

        - fix http://bugs.webkit.org/show_bug.cgi?id=6769
          REGRESSION: Incomplete repaint when a cell's extra bottom margin grows

        Test: fast/repaint/table-extra-bottom-grow.html

        * rendering/RenderBlock.cpp:
        (WebCore::RenderBlock::overflowRect): Changed to not add the top/left overflow twice and
        allow the normal overflow height to overlap with the bottom extra height.
        * rendering/RenderTableRow.cpp:
        (WebCore::RenderTableRow::layout): Removed the code that resets the extra heights.
        * rendering/RenderTableSection.cpp:
        (WebCore::RenderTableSection::layoutRows): If the top extra height changed or the
        bottom extra height increased, just repaint the entire cell.

2006-04-28  Eric Seidel  <eseidel@apple.com>

        Reviewed by andersca.

        Remove KCanvasContainerQuartz, pushing all logic into KCanvasContainer.
        
        No tests affected.

        * kcanvas/KCanvasContainer.cpp:
        (WebCore::KCanvasContainer::canHaveChildren):
        (WebCore::KCanvasContainer::requiresLayer):
        (WebCore::KCanvasContainer::lineHeight):
        (WebCore::KCanvasContainer::baselinePosition):
        (WebCore::KCanvasContainer::calcMinMaxWidth):
        (WebCore::KCanvasContainer::layout):
        (WebCore::KCanvasContainer::paint):
        (WebCore::KCanvasContainer::setViewport):
        (WebCore::KCanvasContainer::viewport):
        (WebCore::KCanvasContainer::setViewBox):
        (WebCore::KCanvasContainer::viewBox):
        (WebCore::KCanvasContainer::setAlign):
        (WebCore::KCanvasContainer::align):
        (WebCore::KCanvasContainer::viewportTransform):
        (WebCore::KCanvasContainer::getAbsoluteRepaintRect):
        (WebCore::KCanvasContainer::absoluteTransform):
        (WebCore::KCanvasContainer::getAspectRatio):
        * kcanvas/KCanvasContainer.h:
        (WebCore::KCanvasContainer::renderName):
        * kcanvas/device/KRenderingDevice.h:
        * kcanvas/device/quartz/KCanvasResourcesQuartz.h:
        * kcanvas/device/quartz/KCanvasResourcesQuartz.mm:
        * kcanvas/device/quartz/KRenderingDeviceQuartz.h:
        * kcanvas/device/quartz/KRenderingDeviceQuartz.mm:
        (WebCore::KRenderingDeviceQuartz::createPaintServer):
        * ksvg2/svg/SVGAElement.cpp:
        (WebCore::SVGAElement::createRenderer):
        * ksvg2/svg/SVGGElement.cpp:
        (SVGGElement::createRenderer):
        * ksvg2/svg/SVGMarkerElement.cpp:
        (WebCore::SVGMarkerElement::createRenderer):
        * ksvg2/svg/SVGMaskElement.cpp:
        (WebCore::SVGMaskElement::createRenderer):
        * ksvg2/svg/SVGPatternElement.cpp:
        (WebCore::SVGPatternElement::createRenderer):
        * ksvg2/svg/SVGSVGElement.cpp:
        (WebCore::SVGSVGElement::createRenderer):
        * ksvg2/svg/SVGSwitchElement.cpp:
        (WebCore::SVGSwitchElement::createRenderer):
        * ksvg2/svg/SVGUseElement.cpp:
        (SVGUseElement::createRenderer):

2006-04-27  Eric Seidel  <eseidel@apple.com>

        Reviewed by andersca.

        Make WebCore accept any */*+xml type as XML.
        http://bugs.webkit.org/show_bug.cgi?id=5998
        <rdar://problem/4031511> XmlHttpRequest doesn't allow responses with Content-Type: application/soap+xml

        Test: http/tests/xmlhttprequest/supported-xml-content-types.html

        * dom/DOMImplementation.cpp:
        (WebCore::DOMImplementation::isXMLMIMEType):

2006-04-27  Eric Seidel  <eseidel@apple.com>

        * WebCore.vcproj/WebCore/WebCore.vcproj: Fix break from last checkin.

2006-04-27  Geoffrey Garen  <ggaren@apple.com>

        Reviewed by Maciej.

        - Added global constructor autogeneration for the following,
        many of which are required by *.live.com: Node, Element, Range,
        CSSRule, CSSValue, CSSPrimitiveValue, CSSStyleDeclaration, Event,
        MutationEvent, NodeFilter

        It works like so:
        
        - The autogenerator knows about the "Constructor" data type, which
        gets special treatment because it exists purely in the
        bindings. It also knows about the "GenerateConstructor" interface
        attribute, which does just that.

        - The window interface has many Constructor attributes

        - The hash table generator swizzles empty tables to tables with one
        empty bucket, to prevent crashes in Lookup::findEntry. (The old
        generator used to work this way, too.)

        - Window object property lookup gets special treatment to allow
        shadowing of its built-in global constructor properties. We'll
        need to expand this mechanism in the future and make it more
        flexible, but it works for now.
        
        * DerivedSources.make:
        * WebCore.vcproj/WebCore/WebCore.vcproj:
        * WebCore.xcodeproj/project.pbxproj:
        * bindings/js/kjs_css.cpp:
        (KJS::toJS):
        * bindings/js/kjs_css.h:
        * bindings/js/kjs_window.cpp: Removed 'namedFrameGetter' and its use
        because they were bogus; added FIXME describing what they were
        attempting to do.
        (KJS::Window::getValueProperty):
        (KJS::Window::getOverridePropertySlot):
        (KJS::Window::getOwnPropertySlot):
        * bindings/js/kjs_window.h:
        (KJS::Window::):
        * bindings/scripts/CodeGeneratorJS.pm:
        * css/CSSPrimitiveValue.idl:
        * css/CSSRule.idl:
        * css/CSSStyleDeclaration.idl: Added.
        * css/CSSValue.idl:
        * dom/Document.idl:
        * dom/Element.idl:
        * dom/Event.idl:
        * dom/MutationEvent.idl:
        * dom/Node.idl:
        * dom/NodeFilter.idl:
        * dom/Range.idl:
        * page/DOMWindow.idl:

2006-04-27  Mitz Pettel  <opendarwin.org@mitzpettel.com>

        Reviewed by darin
        
        <http://bugs.webkit.org/show_bug.cgi?id=8607>
        Automate repaint tests

        * manual-tests/backgroundSizeRepaint.html: Removed.
        * manual-tests/border-repaint-glitch.html: Removed.
        * manual-tests/bugzilla-3509.html: Removed.
        * manual-tests/bugzilla-5699.html: Removed.
        * manual-tests/bugzilla-6278.html: Removed.
        * manual-tests/bugzilla-6388.html: Removed.
        * manual-tests/bugzilla-6473.html: Removed.
        * manual-tests/bugzilla-7235.html: Removed.
        * manual-tests/inline-outline-repaint.html: Removed.
        * manual-tests/outline-repaint-glitch.html: Removed.
        * manual-tests/repaint-resized-overflow.html: Removed.
        * manual-tests/table-cell-move.html: Removed.

2006-04-27  Justin Garcia  <justin.garcia@apple.com>

        Reviewed by darin
        
        <http://bugs.webkit.org/show_bug.cgi?id=8624>
        Placeholders aren't always removed during paste
        <rdar://problem/4059807>
        Seed: Mail: pasting quoted content sometimes adds a phantom newline

        * editing/CompositeEditCommand.cpp: Added a FIXME.
        * editing/ReplaceSelectionCommand.cpp:
        (WebCore::ReplaceSelectionCommand::doApply):
        Removed two no-op setEndingSelection calls.
        Store away a br at the position where we'll start inserting content in case the 
        br a) is made unnecessary by the insertion (it's collapsed away) b) was acting 
        as a placeholder and should therefore be displaced by inserted content or c) was
        acting as a line break and, as a result of the insertion, is now acting as a 
        placeholder.  
        Don't only store away brs that have the webkit-block-placeholder class on them.
        Any br that does any of the three things just mentioned should be removed.
        The linePlaceholder removal was run after the code that makes sure to interpret 
        incoming brs strictly, and was negating that work in certain cases.
        
        (WebCore::ReplaceSelectionCommand::removeEndBRIfNeeded): Described above.
        * editing/ReplaceSelectionCommand.h:
        * editing/VisiblePosition.cpp:
        (WebCore::isEqualIgnoringAffinity): 
        Added a workaround for 8622.  We want this function to return true even if one of 
        the two visible positions has been incorrectly canonicalized.

2006-04-26  Tim Omernick  <timo@apple.com>

        Reviewed by Hyatt.

        <rdar://problem/4068375> Flash inserted via innerHTML Fails to Show when CSS Display
        Style is Toggled via Javascript

        * html/html_objectimpl.cpp:
        (WebCore::HTMLObjectElement::setComplete):
        Set needWidgetUpdate when finished parsing, even if the object element is not in
        a document.  That way, when the element attaches to a document, it will update its
        widget (creating the plug-in view if necessary).  This is important when the object
        is being inserted via setInnerHTML, since the parsed nodes are not added to the
        document until the whole HTML string is parsed.

2006-04-26  Geoffrey Garen  <ggaren@apple.com>

        Reviewed by Hyatt.

        - Fixed http://bugs.webkit.org/post_bug.cgi
        REGRESSION (r14048): Google calendar not parsing
        
        * html/HTMLParser.cpp:
        (WebCore::HTMLParser::handleError): Rolling out grandparent NULL check
        because it caused this regression and there's no test case
        justifying it.
        
2006-04-26  Justin Garcia  <justin.garcia@apple.com>

        Reviewed by hyatt
        
        <http://bugs.webkit.org/show_bug.cgi?id=8459>
        REGRESSION: Content lost during a delete/merge of whitespace:pre text

        * editing/CompositeEditCommand.cpp:
        (WebCore::CompositeEditCommand::prune): 
        The function would prune a rendered leaf because it assumed that the 
        first node passed to it would be a container.
        The old code ascended using the DOM tree, and would remove the <b> when
        pruning the <div> in <b><div></div>foo</b>.  Now ascends using the render tree.

2006-04-26  Geoffrey Garen  <ggaren@apple.com>

        This time for sure. Fixed Windows build too.
        
        * WebCore.vcproj/WebCore/WebCore.vcproj:
        * WebCore.xcodeproj/project.pbxproj:

2006-04-26  Geoffrey Garen  <ggaren@apple.com>

        Reviewed by TimO.

        Build fix.

        * bindings/js/kjs_dom.cpp:
        * bindings/js/kjs_domnode.h:

2006-04-26  Geoffrey Garen  <ggaren@apple.com>

        Reviewed by OMG DETHBAKIN.

        - Start autogenerating Node. This fixes many missing attributes in our
        DOM by making prototypes hold their relevant constants as properties.

        * DerivedSources.make:
        * WebCore.xcodeproj/project.pbxproj:
        * bindings/js/kjs_dom.cpp:
        (KJS::DOMEventTargetNode::DOMEventTargetNode):
        (KJS::toJS):
        * bindings/js/kjs_dom.h:
        (KJS::DOMEventTargetNode::):
        * bindings/js/kjs_domnode.h: Had to break DOMNode into a separate
        header to avoid circular dependency in header includes. Gave it an
        old-school file name to keep distinguishing beteween old school and
        news school files easy.
        (KJS::DOMNode::impl):
        (KJS::DOMNode::classInfo):
        (KJS::DOMNode::):
        * bindings/js/kjs_window.cpp:
        (KJS::Window::getValueProperty):
        * bindings/scripts/CodeGeneratorJS.pm:
        * dom/DocumentType.idl:
        * dom/Entity.idl:
        * dom/Node.idl: Added.
        * dom/Notation.idl:
        * dom/ProcessingInstruction.idl:

2006-04-26  Geoffrey Garen  <ggaren@apple.com>

        Reviewed by Darin.

        Committing the project file change jhaygood suggesed in
        http://bugs.webkit.org/show_bug.cgi?id=8044
        WebKit Visual Studio 2005 project shouldn't use the SolutionDir
        
        Instead of his patch, I used the following commands:

        sed -e 's/$(SolutionDir)/$(ProjectDir)\\../g' Image\ Viewer/Image\
        Viewer.vcproj > Image\ Viewer/Image\ Viewer.vcproj_ && mv Image\
        Viewer/Image\ Viewer.vcproj_ Image\ Viewer/Image\ Viewer.vcproj

        sed -e 's/$(SolutionDir)/$(ProjectDir)\\../g'
        WebCore/WebCore.vcproj > WebCore/WebCore.vcproj_ && mv
        WebCore/WebCore.vcproj_ WebCore/WebCore.vcproj

        * Viewer.vcproj:
        * WebCore.vcproj/WebCore/WebCore.vcproj:

2006-04-25  Justin Garcia  <justin.garcia@apple.com>

        Reviewed by harrison

        <http://bugs.webkit.org/show_bug.cgi?id=8583>
        Moving paste code around and some small fixes
        
        Moved code to make it easier to do the start merge after the fact, 
        with moveParagraph, instead of in the middle of the paste operation.

        * editing/CompositeEditCommand.cpp:
        (WebCore::CompositeEditCommand::moveParagraph):
        * editing/ReplaceSelectionCommand.cpp:
        (WebCore::ReplaceSelectionCommand::ReplaceSelectionCommand):
        (WebCore::ReplaceSelectionCommand::shouldMergeStart):
        Moved code to make this decision to its own function.  Moved special case
        checks to the top.  Added m_forceMergeStart to override the special cases 
        because moveParagraph uses ReplaceSelectionCommand and expects a merge.
        
        (WebCore::ReplaceSelectionCommand::shouldMergeEnd): 
        No functional changes, just moved code here.
        (WebCore::ReplaceSelectionCommand::doApply):
        Do the end merge in the opposite direction.  Merging two paragraphs destroys
        the moved one's block level styles, and we prefer to use the styles of the 
        one that was in the document, not the one that's being pasted.
        
        * editing/ReplaceSelectionCommand.h:
        * editing/Selection.h:
        (WebCore::Selection::visibleStart): Added.
        (WebCore::Selection::visibleEnd): Added.
        * editing/htmlediting.cpp:
        (WebCore::enclosingList): Added.
        (WebCore::isMailBlockquote): 
        Don't require a renderer so that this can be used on nodes in fragments.
        
        * editing/htmlediting.h:

2006-04-25  Geoffrey Garen  <ggaren@apple.com>

        Reviewed by Maciej.

        - Removed special handling of attributes in the DOM. To match
        WinIE, we used to make all attributes available as properties of
        their elements in the DOM, but that has caused us more
        compatibility woes than it has solved, so, after talking with Darin
        and Maciej, I'm taking it out. (Firefox does not support it.)

        A layout test regression caused by this change led me to do the
        following as well:
        
        - Implemented DOM properties missing on EMBED elements: align, height,
        name, width, src, type. Since align, height, name, and width are
        common to all plugin elements, I factored them and some other common
        functionality out into a new abstract base class, HTMLPlugInElement.

        - Removed extraneous attribute-to-style mappings on EMBED elements:
        valign, border. Why they were there in the first place is a question
        for the ages. Neither FF nor IE supports them.

        * bindings/js/kjs_dom.cpp:
        (KJS::getRuntimeObject):
        * bindings/js/kjs_html.cpp:
        (KJS::):
        (KJS::JSHTMLElement::classInfo):
        (KJS::JSHTMLElement::accessors):
        (KJS::JSHTMLElement::embedGetter):
        (KJS::JSHTMLElement::embedSetter):
        * bindings/js/kjs_html.h:
        (KJS::JSHTMLElement::):
        * bindings/scripts/CodeGeneratorJS.pm:
        * dom/Element.idl:
        * html/html_objectimpl.cpp:
        (WebCore::HTMLPlugInElement::HTMLPlugInElement):
        (WebCore::HTMLPlugInElement::align):
        (WebCore::HTMLPlugInElement::setAlign):
        (WebCore::HTMLPlugInElement::height):
        (WebCore::HTMLPlugInElement::setHeight):
        (WebCore::HTMLPlugInElement::name):
        (WebCore::HTMLPlugInElement::setName):
        (WebCore::HTMLPlugInElement::width):
        (WebCore::HTMLPlugInElement::setWidth):
        (WebCore::HTMLPlugInElement::mapToEntry):
        (WebCore::HTMLPlugInElement::parseMappedAttribute):
        (WebCore::HTMLPlugInElement::checkDTD):
        (WebCore::HTMLAppletElement::HTMLAppletElement):
        (WebCore::HTMLAppletElement::~HTMLAppletElement):
        (WebCore::HTMLAppletElement::parseMappedAttribute):
        (WebCore::HTMLAppletElement::insertedIntoDocument):
        (WebCore::HTMLAppletElement::removedFromDocument):
        (WebCore::HTMLAppletElement::getInstance):
        (WebCore::HTMLAppletElement::closeRenderer):
        (WebCore::HTMLAppletElement::detach):
        (WebCore::HTMLEmbedElement::HTMLEmbedElement):
        (WebCore::HTMLEmbedElement::~HTMLEmbedElement):
        (WebCore::HTMLEmbedElement::getInstance):
        (WebCore::HTMLEmbedElement::mapToEntry):
        (WebCore::HTMLEmbedElement::parseMappedAttribute):
        (WebCore::HTMLEmbedElement::attach):
        (WebCore::HTMLEmbedElement::detach):
        (WebCore::HTMLEmbedElement::insertedIntoDocument):
        (WebCore::HTMLEmbedElement::removedFromDocument):
        (WebCore::HTMLEmbedElement::src):
        (WebCore::HTMLEmbedElement::setSrc):
        (WebCore::HTMLEmbedElement::type):
        (WebCore::HTMLEmbedElement::setType):
        (WebCore::HTMLObjectElement::HTMLObjectElement):
        (WebCore::HTMLObjectElement::~HTMLObjectElement):
        (WebCore::HTMLObjectElement::getInstance):
        (WebCore::HTMLObjectElement::parseMappedAttribute):
        (WebCore::HTMLObjectElement::rendererIsNeeded):
        (WebCore::HTMLObjectElement::attach):
        (WebCore::HTMLObjectElement::closeRenderer):
        (WebCore::HTMLObjectElement::detach):
        (WebCore::HTMLObjectElement::insertedIntoDocument):
        (WebCore::HTMLObjectElement::removedFromDocument):
        (WebCore::HTMLObjectElement::recalcStyle):
        * html/html_objectimpl.h:
        (WebCore::HTMLPlugInElement::endTagRequirement):
        (WebCore::HTMLAppletElement::tagPriority):
        (WebCore::HTMLEmbedElement::tagPriority):
        (WebCore::HTMLObjectElement::tagPriority):

2006-04-25  Beth Dakin  <bdakin@apple.com>

        Reviewed by Maciej.

        Fix for <rdar://problem/4518632> getComputedStyle returns 'auto' 
        for dimensions like 'margin-left'

        * css/CSSComputedStyleDeclaration.cpp:
        (WebCore::CSSComputedStyleDeclaration::getPropertyCSSValue): For 
        margin and padding, to match Firefox we now go to the renderer to 
        get the property value instead of calling valueForLength() on the 
        style attribute. valueForLength() will return the string 'auto' if 
        that was what was specified in the CSS, or a percentage if it was 
        specified as a percent. But to match Firefox, we always want to 
        return a pixel value for margin and padding.

2006-04-26  Mitz Pettel  <opendarwin.org@mitzpettel.com>

        Reviewed by darin.  Landed by eseidel.

        - fix http://bugs.webkit.org/show_bug.cgi?id=8452
          mangleme(0x58c22e11): Random crashes

        Test: fast/frames/empty-cols-attribute.html

        * platform/StringImpl.cpp:
        (WebCore::StringImpl::toLengthArray): If the string is empty, return 0
        but set len to 1. This gives the same behavior you get if you don't specify
        the attribute at all, matching WinIE and Firefox. Previously, the empty
        string resulted in len being set to 0 (and a memory smasher in
        RenderFrameSet::layout()).
        * rendering/render_frames.cpp:
        (WebCore::RenderFrameSet::layout): Added an assert.

2006-04-26  Oliver Hunt  <ojh16@student.canterbury.ac.nz>

        Reviewed by eseidel.  Landed by eseidel.

        * WebCore.xcodeproj/project.pbxproj:
        * kcanvas/KCanvasFilters.cpp:
        (WebCore::operator<<):
        * kcanvas/KCanvasFilters.h:
        (WebCore::KCComponentTransferFunction::KCComponentTransferFunction):
        * kcanvas/device/quartz/KCanvasFilterQuartz.h:
        * kcanvas/device/quartz/KCanvasFilterQuartz.mm:
        (WebCore::getVectorForChannel):
        (WebCore::genImageFromTable):
        (WebCore::filterForComponentFunc):
        (WebCore::setParametersForComponentFunc):
        (WebCore::getFilterForFunc):
        (WebCore::KCanvasFEComponentTransferQuartz::getFunctionFilter):
        (WebCore::KCanvasFEComponentTransferQuartz::getCIFilter):
        * kcanvas/device/quartz/KRenderingDeviceQuartz.mm:
        (WebCore::KRenderingDeviceQuartz::createFilterEffect):
        * kcanvas/device/quartz/filters/WKComponentMergeFilter.cikernel: Added.
        * kcanvas/device/quartz/filters/WKComponentMergeFilter.h: Added.
        * kcanvas/device/quartz/filters/WKComponentMergeFilter.m: Added.
        (+[WKComponentMergeFilter initialize]):
        (+[WKComponentMergeFilter filterWithName:]):
        (-[WKComponentMergeFilter init]):
        (-[WKComponentMergeFilter outputImage]):
        * kcanvas/device/quartz/filters/WKDiscreteTransferFilter.cikernel: Added.
        * kcanvas/device/quartz/filters/WKDiscreteTransferFilter.h: Added.
        * kcanvas/device/quartz/filters/WKDiscreteTransferFilter.m: Added.
        (+[WKDiscreteTransferFilter initialize]):
        (+[WKDiscreteTransferFilter filterWithName:]):
        (-[WKDiscreteTransferFilter init]):
        (-[WKDiscreteTransferFilter outputImage]):
        * kcanvas/device/quartz/filters/WKGammaTransferFilter.cikernel: Added.
        * kcanvas/device/quartz/filters/WKGammaTransferFilter.h: Added.
        * kcanvas/device/quartz/filters/WKGammaTransferFilter.m: Added.
        (+[WKGammaTransferFilter initialize]):
        (+[WKGammaTransferFilter filterWithName:]):
        (-[WKGammaTransferFilter init]):
        (-[WKGammaTransferFilter outputImage]):
        * kcanvas/device/quartz/filters/WKIdentityTransferFilter.h: Added.
        * kcanvas/device/quartz/filters/WKIdentityTransferFilter.m: Added.
        (+[WKIdentityTransferFilter initialize]):
        (+[WKIdentityTransferFilter filterWithName:]):
        (-[WKIdentityTransferFilter init]):
        (-[WKIdentityTransferFilter outputImage]):
        * kcanvas/device/quartz/filters/WKLinearTransferFilter.cikernel: Added.
        * kcanvas/device/quartz/filters/WKLinearTransferFilter.h: Added.
        * kcanvas/device/quartz/filters/WKLinearTransferFilter.m: Added.
        (+[WKLinearTransferFilter initialize]):
        (+[WKLinearTransferFilter filterWithName:]):
        (-[WKLinearTransferFilter init]):
        (-[WKLinearTransferFilter outputImage]):
        * kcanvas/device/quartz/filters/WKTableTransferFilter.cikernel: Added.
        * kcanvas/device/quartz/filters/WKTableTransferFilter.h: Added.
        * kcanvas/device/quartz/filters/WKTableTransferFilter.m: Added.
        (+[WKTableTransferFilter initialize]):
        (+[WKTableTransferFilter filterWithName:]):
        (-[WKTableTransferFilter init]):
        (-[WKTableTransferFilter outputImage]):
        * ksvg2/svg/SVGComponentTransferFunctionElement.cpp:
        (SVGComponentTransferFunctionElement::parseMappedAttribute):
        (SVGComponentTransferFunctionElement::transferFunction):

2006-04-25  Eric Seidel  <eseidel@apple.com>

        Reviewed by ggaren.

        Make trunk match the branch.  Now nodes are fully removed
        from the tree before calling detach.  There is (thankfully) no
        good way to test this, as no one should depend on this behavior.
        This change was made are part of fixing:
        <rdar://problem/4427024> repro crash on www.formassembly.com in khtml::RenderBlock::addChildToFlow
        <rdar://problem/4233435> CrashTracer: 2698 crashes in Safari at com.apple.WebCore: khtml::RenderBlock::addChildToFlow + 156
        on the branch.

        * dom/ContainerNode.cpp:
        (WebCore::ContainerNode::removeChildren):

2006-04-25  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by Adele.

        - don't have a fini method, since trying to call it will actually call the subclass method
        and mess up the bridge count.

        * bridge/mac/WebCoreFrameBridge.mm:
        (-[WebCoreFrameBridge dealloc]):
        (-[WebCoreFrameBridge finalize]):

2006-04-25  Steve Falkenburg  <sfalkenburg@apple.com>

        Reviewed by eseidel.

        No test case needed

        * platform/win/TemporaryLinkStubs.cpp:
        (KWQFileButton::setFrameGeometry):

2006-04-25  Eric Seidel  <eseidel@apple.com>

        Reviewed by mjs.

        Fix reproducible crash in html parser code.
        http://bugs.webkit.org/show_bug.cgi?id=7137

        Test: fast/parser/remove-current-node-parent.html

        * html/HTMLParser.cpp:
        (WebCore::HTMLParser::handleError):

2006-04-25  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by Eric.

        - fixed http://bugs.webkit.org/show_bug.cgi?id=8575
        New KWQFileButton leaks reported by buildbot

        * kwq/KWQFileButton.mm:
        (KWQFileButton::KWQFileButton): Add a missing release

2006-04-24  David Hyatt  <hyatt@apple.com>

        Fix for 8336, focus ring redrawing on top of itself.  Make sure
        not to include empty rects when doing the focus ring drawing, since
        that results in a draw with no clip set.

        Reviewed by adele

        * platform/mac/GraphicsContextMac.mm:
        (WebCore::GraphicsContext::drawFocusRing):

2006-04-24  Eric Seidel  <eseidel@apple.com>

        Reviewed by ggaren.

        Fix for 5th worst unresolved crasher:
        <rdar://problem/4129744> [REGRESSION]CrashTracer: ..400 crashes at com.apple.WebCore: DOM::NodeImpl::createRendererIfNeeded + 44

        Test: fast/dom/remove-style-element.html

        * dom/ContainerNode.cpp:
        (WebCore::ContainerNode::removeChildren):

2006-04-24  Eric Seidel  <eseidel@apple.com>

        Reviewed by mjs.

        Speculative fix for our 7th worst crasher.
        Also added ASSERTs to help us better understand the issue.
        <rdar://problem/4153404> CrashTracer: 2412 crashes in Safari at com.apple.WebCore: khtml::RenderStyle::RenderStyle[unified] + 44

        * dom/Document.cpp:
        (WebCore::Document::recalcStyle):
        (WebCore::Document::setInPageCache):
        * dom/Document.h:
        * dom/Element.cpp:
        (WebCore::Element::recalcStyle):

2006-04-24  Adele Peterson  <adele@apple.com>

        Reviewed by Hyatt.

        Fix for <rdar://problem/4503438> REGRESSION (NativeTextField): Can't insert caret when 
        selection is active in field (Business/Unit)

        * css/html4.css: Added -webkit-user-select:text for input elements.

2006-04-24  Maciej Stachowiak  <mjs@apple.com>

        Build fix:
        
        - move some prematurely moved code back

        * bridge/mac/WebCoreFrameBridge.h:
        * bridge/mac/WebCoreFrameBridge.mm:
        (-[WebCoreFrameBridge fini]):

2006-04-24  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by Darin.

        - move more code from WebFrameBridge to WebCoreFrameBridge

        * bridge/mac/WebCoreFrameBridge.h:
        * bridge/mac/WebCoreFrameBridge.mm:
        (-[WebCoreFrameBridge domain]):
        (-[WebCoreFrameBridge canTargetLoadInFrame:]):
        (-[WebCoreFrameBridge fini]):
        (-[WebCoreFrameBridge dealloc]):
        (-[WebCoreFrameBridge finalize]):
        (_getPreSmartSet):
        (_getPostSmartSet):
        (-[WebCoreFrameBridge isCharacterSmartReplaceExempt:isPreviousCharacter:]):
        (-[WebCoreFrameBridge _retrieveKeyboardUIModeFromPreferences:]):
        (-[WebCoreFrameBridge keyboardUIMode]):

2006-04-24  Adele Peterson  <adele@apple.com>

        Reviewed by Tim O.

        Fix to send textFieldDidBeginEditing on the first editing change instead of on focus.
        This matches our old behavior.

        * html/HTMLInputElement.cpp: (WebCore::HTMLInputElement::dispatchFocusEvent):
        * rendering/RenderTextField.cpp: (WebCore::RenderTextField::subtreeHasChanged):

2006-04-24  Beth Dakin  <bdakin@apple.com>

        Reviewed by Eric.

        Fix for <rdar://problem/4513383> REGRESSION: Crash in 
        WebCore::shouldEmitTabBeforeNode() when iterating through document 
        text

        * editing/TextIterator.cpp:
        (WebCore::shouldEmitTabBeforeNode): Need to nil-check the renderer.

2006-04-23  Geoffrey Garen  <ggaren@apple.com>

        Reviewed by Maciej.

        * bindings/scripts/CodeGeneratorJS.pm: Removed confusing 'JS' prefix
        from string descriptions of DOM prototypes, so the prototype for, e.g.,
        Document serializes as 'Document,' not 'JSDocument.'

2006-04-23  Geoffrey Garen  <ggaren@apple.com>

        Reviewed by Darin.

        - Took the larger snippets of C++ in the code generator and broke
        them into HERE documents in the hopes of improving readability.
        
        * bindings/scripts/CodeGeneratorJS.pm: I indented variable names
        level with their corresponding HERE documents to clearly
        "sandwich" the HERE documents between opening and closing EOF
        statements.

2006-04-23  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by Darin.
        
        - push WebFileButton and WebStringTruncator code down to WebCore
        http://bugs.webkit.org/show_bug.cgi?id=8552

        * WebCore.exp:
        * WebCore.xcodeproj/project.pbxproj:
        * bridge/mac/WebCoreFrameBridge.h:
        * bridge/mac/WebCoreStringTruncator.h: Added.
        * bridge/mac/WebCoreStringTruncator.mm: Added.
        (stringWidth):
        (truncateString):
        (+[WebCoreStringTruncator widthOfString:font:]):
        * bridge/mac/WebCoreViewFactory.h:
        * kwq/KWQFileButton.h:
        * kwq/KWQFileButton.mm:
        (-[WebFileChooserButton initWithWidget::]):
        (-[WebCoreFileButton positionButton]):
        (-[WebCoreFileButton initWithWidget:]):
        (-[WebCoreFileButton initWithFrame:]):
        (-[WebCoreFileButton dealloc]):
        (-[WebCoreFileButton isFlipped]):
        (-[WebCoreFileButton drawRect:]):
        (-[WebCoreFileButton updateLabel]):
        (-[WebCoreFileButton setFilename:]):
        (-[WebCoreFileButton filename]):
        (-[WebCoreFileButton setFrameSize:]):
        (-[WebCoreFileButton bestVisualFrameSizeForCharacterCount:]):
        (-[WebCoreFileButton visualFrame]):
        (-[WebCoreFileButton setVisualFrame:]):
        (-[WebCoreFileButton baseline]):
        (-[WebCoreFileButton beginSheet]):
        (-[WebCoreFileButton chooseFilename:]):
        (-[WebCoreFileButton cancel]):
        (-[WebCoreFileButton chooseButtonPressed:]):
        (-[WebCoreFileButton mouseDown:]):
        (-[WebCoreFileButton acceptsFirstResponder]):
        (-[WebCoreFileButton becomeFirstResponder]):
        (-[WebCoreFileButton nextKeyView]):
        (-[WebCoreFileButton previousKeyView]):
        (-[WebCoreFileButton nextValidKeyView]):
        (-[WebCoreFileButton previousValidKeyView]):
        (-[WebCoreFileButton performClick]):
        (-[WebFileChooserButton initWithWidget:]):
        (-[WebFileChooserButton nextValidKeyView]):
        (-[WebFileChooserButton previousValidKeyView]):
        (-[WebFileChooserButton resignFirstResponder]):
        (KWQFileButton::KWQFileButton):
        (KWQFileButton::setFilename):
        (KWQFileButton::click):
        (KWQFileButton::sizeForCharacterWidth):
        (KWQFileButton::frameGeometry):
        (KWQFileButton::setFrameGeometry):
        (KWQFileButton::baselinePosition):
        (KWQFileButton::filenameChanged):

2006-04-23  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by Eric.

        - remove WebCoreCookieAdapter, instead make mac implementation of
        CookieJar use Foundation directly.

        * WebCore.exp:
        * WebCore.xcodeproj/project.pbxproj:
        * platform/mac/CookieJar.mm:
        (WebCore::cookies):
        (WebCore::setCookies):
        (WebCore::cookiesEnabled):
        * platform/mac/WebCoreCookieAdapter.h: Removed.
        * platform/mac/WebCoreCookieAdapter.m: Removed.

2006-04-21  Rob Buis  <buis@kde.org>

        Reviewed by hyatt.  Landed by eseidel.

        Fix for http://bugs.webkit.org/show_bug.cgi?id=8170:
        SVG CSS property values with extra items do not get treated
        as invalid (they should)

        Fixes the handling of invalid svg css properties similar
        to how invalid html css properties are handled, ie. discard
        the property if there are more values in the value list than
        expected.

        Test: svg/custom/invalid-css.svg

        * ksvg2/css/SVGCSSParser.cpp:
        (WebCore::CSSParser::parseSVGValue):

2006-04-23  Michael Emmel  <mike.emmel@gmail.com>

        Reviewed by mjs.  Landed by eseidel.

        http://bugs.webkit.org/show_bug.cgi?id=8517
        No test necessary, no functional change.

        * DerivedSources.make: use VPATH more consistently.

2006-04-23  Jon Shier  <jshier@iastate.edu>
        
        Reviewed by ggaren.  Landed by eseidel.
        
        - Fix for http://bugs.webkit.org/show_bug.cgi?id=8511
        onerror JS property does not register listener properly

        Test: fast/dom/onerror-img.html       
 
        * bindings/js/kjs_dom.cpp:  
        (KJS::DOMEventTargetNode::getValueProperty): changed khtmlErrorEvent to errorEvent.
        (KJS::DOMEventTargetNode::putValueProperty): ditto.
        * bindings/js/kjs_window.cpp:
        (KJS::Window::getValueProperty): ditto.
        (KJS::Window::put):
        * dom/EventNames.h: Removed khtmlError macro.
        
2006-04-23  Eric Seidel  <eseidel@apple.com>

        Reviewed by hyatt.

        Reproducible crasher with <li value=1234567890 type=A>
        http://bugs.webkit.org/show_bug.cgi?id=8542

        Fixed our alphabetical list generation to match WinIE (not FireFox)
        Previously our alphabetical lists were completely wrong past 26 items.

        Tests:
        * fast/lists/alpha-list-wrap.html
        * fast/lists/li-style-alpha-huge-value-crash.html

        * rendering/render_list.cpp:
        (WebCore::toLetterString):
        (WebCore::toHebrew):
        (WebCore::RenderListMarker::calcMinMaxWidth):

2006-04-22  Geoffrey Garen  <ggaren@apple.com>

        Reviewed by Darin.

        - Finished autogeneration of Element

        * bindings/js/kjs_dom.cpp: Removed DOMElement class
        * bindings/js/kjs_dom.h: ditto
        * bindings/scripts/CodeGeneratorJS.pm: added support for special
        attribute lookup that elements do
        * dom/Element.idl: added new attribute, 
        "IncludeAttributesInPropertyLookup," which tells the code generator 
        to include HTML element attributes in property lookup

2006-04-22  Michael Emmel  <mike.emmel@gmail.com>

        Reviewed by Maciej.

        - fix http://bugs.webkit.org/show_bug.cgi?id=8529
          Extra Qaulification in header
        - fix http://bugs.webkit.org/show_bug.cgi?id=8530
          Missing assert.h include

        * rendering/RenderObject.h: Removed erroneous RenderObject::
        prefix from a member function name.
        * rendering/RenderText.h: Removed erroneous RenderText::
        prefix from a member function name.

        * platform/Arena.cpp: Added <assert.h> to list of includes.
        * platform/KURL.cpp: Ditto.
        * platform/StringImpl.cpp: Ditto.
        * platform/image-decoders/jpeg/JPEGImageDecoder.cpp: Ditto.
        * platform/image-decoders/png/PNGImageDecoder.cpp: Ditto.

2006-04-22  Darin Adler  <darin@apple.com>

        * doc: Added.

2006-04-22  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by Eric.

        - push down a bunch of WebCoreFrameBridge code to C++ (plus some reformatting)

        * bridge/mac/WebCoreFrameBridge.mm:
        (-[WebCoreFrameBridge isDescendantOfFrame:]):
        (-[WebCoreFrameBridge traverseNextFrameStayWithin:]):
        (-[WebCoreFrameBridge nextFrameWithWrap:]):
        (-[WebCoreFrameBridge previousFrameWithWrap:]):
        (+[WebCoreFrameBridge bridgeForDOMDocument:]):
        (-[WebCoreFrameBridge parent]):
        (-[WebCoreFrameBridge addData:]):
        (-[WebCoreFrameBridge didNotOpenURL:pageCache:]):
        (-[WebCoreFrameBridge restoreDocumentState]):
        (-[WebCoreFrameBridge _stringWithDocumentTypeStringAndMarkupString:]):
        (-[WebCoreFrameBridge nodesFromList:]):
        (-[WebCoreFrameBridge markupStringFromNode:nodes:]):
        (-[WebCoreFrameBridge markupStringFromRange:nodes:]):
        (-[WebCoreFrameBridge rangeByExpandingSelectionWithGranularity:]):
        (-[WebCoreFrameBridge rangeByAlteringCurrentSelection:direction:granularity:]):
        (-[WebCoreFrameBridge alterCurrentSelection:direction:granularity:]):
        (-[WebCoreFrameBridge rangeByAlteringCurrentSelection:verticalDistance:]):
        (-[WebCoreFrameBridge alterCurrentSelection:verticalDistance:]):
        (-[WebCoreFrameBridge replaceMarkedTextWithText:]):
        (-[WebCoreFrameBridge replaceSelectionWithFragment:selectReplacement:smartReplace:matchStyle:]):
        (-[WebCoreFrameBridge increaseSelectionListLevel]):
        (-[WebCoreFrameBridge decreaseSelectionListLevel]):
        (-[WebCoreFrameBridge insertLineBreak]):
        (-[WebCoreFrameBridge insertParagraphSeparator]):
        (-[WebCoreFrameBridge insertParagraphSeparatorInQuotedContent]):
        (-[WebCoreFrameBridge insertText:selectInsertedText:]):
        (-[WebCoreFrameBridge deleteSelectionWithSmartDelete:]):
        (-[WebCoreFrameBridge ensureSelectionVisible]):
        (-[WebCoreFrameBridge RenderObject::nodeInfoAtPoint:allowShadowContent:]):
        * page/Frame.cpp:
        (WebCore::Frame::nodeInfoAtPoint):
        (WebCore::Frame::hasSelection):
        (WebCore::Frame::documentTypeString):
        * page/Frame.h:
        * page/FrameTree.cpp:
        (WebCore::FrameTree::traverseNextWithWrap):
        (WebCore::FrameTree::traversePreviousWithWrap):
        (WebCore::FrameTree::deepLastChild):
        * page/FrameTree.h:

2006-04-22  Beth Dakin  <bdakin@apple.com>

        Reviewed by Hyatt.

        Fix for http://bugs.webkit.org/show_bug.cgi?id=6141 
        DOMCSSPrimitiveValue is always returning values in pixels when 
        using getComputedStyle:

        getFloatValue() took a unit type as a parameter, ignored it, and 
        returned m_value.num. This patch writes a second version of the 
        function that actually converts m_value.num to the specified unites 
        before returning it. Where a conversion is not required, I removed 
        the unit type from the caller so that it would go directly to the 
        inline version of the function.

        * css/css_valueimpl.cpp:
        (WebCore::CSSPrimitiveValue::computeLengthFloat): Remove type 
        parameter since a conversion is not needed.
        (WebCore::scaleFactorForConversion): Helper function for 
        conversion.
        (WebCore::CSSPrimitiveValue::getFloatValue): This version of 
        getFloatValue() takes a unit type parameter and converts 
        m_value.num.
        * css/css_valueimpl.h:
        (WebCore::CSSPrimitiveValue::getFloatValue): This version does not 
        take a parameter and just returns m_value.num.
        * css/cssparser.cpp:
        (WebCore::BorderImageParseContext::commitBorderImage): Remove type 
        parameter since a conversion is not needed.
        * css/cssstyleselector.cpp:
        (WebCore::convertToLength): Same.
        (WebCore::CSSStyleSelector::applyProperty): Same.
        (WebCore::CSSStyleSelector::mapBackgroundSize): Same.
        (WebCore::CSSStyleSelector::mapBackgroundXPosition): Same.
        (WebCore::CSSStyleSelector::mapBackgroundYPosition): Same.
        * editing/ApplyStyleCommand.cpp:
        (WebCore::ApplyStyleCommand::applyRelativeFontStyleChange): Same.
        * ksvg2/css/SVGCSSStyleSelector.cpp:
        (WebCore::CSSStyleSelector::applySVGProperty): Same.
        * ksvg2/misc/KCanvasRenderingStyle.cpp:
        (WebCore::KSVGPainterFactory::cssPrimitiveToLength): Same.

2006-04-21  Geoffrey Garen  <ggaren@apple.com>

        Reviewed by John.

        - Fixed http://bugs.webkit.org/show_bug.cgi?id=8509
        javascript:document.importNode(null)
        
        * dom/Document.cpp:
        (WebCore::Document::importNode): Throw an error if the node is null.
        This happens when the object provided in the JavaScript call is not
        a node.
        (WebCore::Document::adoptNode): Set the DOM exception code in all error
        cases instead of just a few, because that's what the spec requires.

2006-04-21  Geoffrey Garen  <ggaren@apple.com>

        Reviewed by John.

        - Fixed http://bugs.webkit.org/show_bug.cgi?id=8510
        submit event doesn't bubble - it's supposed to.

        * html/HTMLElement.cpp:
        (WebCore::HTMLElement::parseMappedAttribute): Added recognition for the
        onsubmit attribute, so elements can use it
        * html/HTMLFormElement.cpp:
        (WebCore::HTMLFormElement::prepareSubmit): Changed bubbling attribute
        to 'true'

2006-04-21  Geoffrey Garen  <ggaren@apple.com>

        Reviewed by TimO.

        - Fixed: error event does not bubble

        I discovered this bug while working on the "submit event does not
        bubble" bug. The DOM spec says the event should bubble, and that's how
        it works in Firefox.

        The DOM Spec also says that the error event is "valid for
        OBJECT elements, BODY elements, and FRAMESET element." But it doesn't
        say "valid ONLY." Firefox supports it on all elements and web
        developers tend to think it will work for things like <img> and
        <script>, so I went whole hog here.

        * html/HTMLElement.cpp:
        (WebCore::HTMLElement::parseMappedAttribute): Make onerror a mapped
        attribute for all elements, so containing elements can register for
        the event.
        * html/HTMLTokenizer.cpp:
        (WebCore::HTMLTokenizer::notifyFinished): make onerror bubble
        * html/html_headimpl.cpp:
        (WebCore::HTMLScriptElement::parseMappedAttribute): Remove special
        case for onerror because HTMLElement will take care of it
        (WebCore::HTMLScriptElement::notifyFinished): make onerror bubble
        * html/html_imageimpl.cpp:
        (WebCore::HTMLImageElement::parseMappedAttribute): Remove special
        case for onerror because HTMLElement will take care of it

2006-04-21  Adele Peterson  <adele@apple.com>

        Test for: http://bugs.webkit.org/show_bug.cgi?id=8181
        REGRESSION: After tabbing in page's field, attempting to tab from Google toolbar search to page fails on first try

        * manual-tests/tabbing-input-google.html: Added.

2006-04-21  Kevin M. Ollivier  <kevino@theolliviers.com>

        Reviewed by Darin.

        - http://bugs.webkit.org/show_bug.cgi?id=8507
          Compilation fixes for building on gcc 4.0.2, and without precomp headers

        * platform/Cursor.h: Created a fallback case that typedefs PlatformCursor
        to void * if it isn't defined to anything else. (Useful to help get new ports
        initially compiling.)
        
        * bindings/js/kjs_window.cpp:
        * rendering/RenderTextField.cpp:
        * rendering/RenderBox.cpp:
        Add missing headers to resolve issues when compiling without precompiled
        headers.
        
        * rendering/RenderText.h: Declare the InlineTextBox class before 
        friend declaration to resolve compilation issues with gcc 4.0.2.
        
2006-04-21  Adele Peterson  <adele@apple.com>

        Reviewed by Darin.

        Fix for: http://bugs.webkit.org/show_bug.cgi?id=8213
        REGRESSION: Can't tab out of text field if iframe comes after it

        Test: fast/forms/tabbing-input-iframe.html

        * bridge/mac/FrameMac.mm: (WebCore::FrameMac::nextKeyViewInFrame):
          If the next focusable node is a RenderWidget without a view, then continue in the loop.  We used to break out in this case. 
          I also made some formatting changes and reorganized the function to make it easier to read.

2006-04-21  Adele Peterson  <adele@apple.com>

        Reviewed by Beth.

        Fix for: http://bugs.webkit.org/show_bug.cgi?id=8496
        REGRESSION: Dragging to select text around a text field causes the text field to scroll.

        Test: manual-tests/text-field-autoscroll.html

        * bridge/mac/FrameMac.mm: (WebCore::FrameMac::handleMouseMoveEvent): Start the frame's autoscroll timer
        even when we're calling over the bridge to handle the autoscroll.
        * page/Frame.cpp: (WebCore::Frame::stopAutoscrollTimer): Clear out pointer to layer.

2006-04-21  Geoffrey Garen  <ggaren@apple.com>

        - And again.

        * WebCore.vcproj/WebCore/WebCore.vcproj:

2006-04-21  Geoffrey Garen  <ggaren@apple.com>

        - Futile attempt to fix Windows build.
        
        * WebCore.vcproj/WebCore/WebCore.vcproj:

2006-04-20  Geoffrey Garen  <ggaren@apple.com>

        Reviewed by Maciej.

        - Added autogeneration of JS bindings for CSSRule, CSSValue,
        Event, and NodeFilter.  

        - Made related prototype objects hold the relevant constants, to
        match Mozilla and the DOM 2 spec. (Previously, only the related
        constructor objects held those constants, in accordance with the
        DOM 3 spec.)

        - Fixed up remaining Windows build issues.

        * DerivedSources.make: Added new autogenerated files
        * WebCore.xcodeproj/project.pbxproj: ditto
        * bindings/js/kjs_css.cpp:
        (KJS::DOMCSSRule::classInfo):
        (KJS::DOMCSSRule::getOwnPropertySlot): scope call to classInfo()
        because it's virtual and DOMCSSRule has a derrived class now.
        (KJS::DOMCSSRule::put): ditto
        (KJS::DOMCSSRuleFunc::callAsFunction):
        (KJS::toJS):
        * bindings/js/kjs_css.h:
        * bindings/js/kjs_events.cpp:
        (KJS::toJS):
        * bindings/js/kjs_events.h:
        * bindings/js/kjs_html.cpp:
        (KJS::OptionConstructorImp::OptionConstructorImp):
        * bindings/js/kjs_traversal.cpp:
        (KJS::toJS):
        * bindings/js/kjs_traversal.h:
        * bindings/js/kjs_window.cpp: 
        (KJS::Window::getValueProperty): added CSSValue global object
        * bindings/js/kjs_window.h:
        (KJS::Window::):
        * bindings/scripts/CodeGeneratorJS.pm: Changed generator to write
        constants to prototype objects (previously only wrote constants to
        constructor objects)
        * css/CSSPrimitiveValue.idl: Removed LegacyParent since CSSValue now
        exists in IDL
        * css/CSSRule.idl: Added.
        * css/CSSValue.idl: Added.
        * css/css_ruleimpl.h:
        (WebCore::CSSRule::):
        * css/css_valueimpl.h:
        * dom/Event.idl: Added.
        * dom/MutationEvent.idl: Removed LegacyParent since Event now exists
        in IDL
        * dom/NodeFilter.idl: Added.
        * dom/UIEvent.idl: Removed LegacyParent since event now exists in IDL
        * dom/dom2_eventsimpl.h:
        (WebCore::Event::):

2006-04-21  Darin Adler  <darin@apple.com>

        - one more attempt to fix Windows build

        * platform/cairo/GraphicsContextCairo.cpp:
        (WebCore::GraphicsContext::fillRect): Update to use Color and match
        the similar function on GraphicsContextMac.

2006-04-21  Beth Dakin  <bdakin@apple.com>

        Reviewed by Hyatt.

        Fix for http://bugs.webkit.org/show_bug.cgi?id=8495 
        REGRESSION: Sidebar on cnn.com is hosed

        * platform/mac/ImageMac.mm:
        (WebCore::Image::drawTiled): Use the size of the destination rect, 
        not the oneTileRect in the no-pattern case.
        * rendering/RenderBox.cpp:
        (WebCore::RenderBox::paintBackgroundExtended): Initialize 
        scaledWidth and scaledHeight to the appropriate value (was wrong in 
        scroll case), adjust position at appropriate times, and take out 
        no-repeat clause for now since we don't have enough test cases yet 
        to be sure we won't cause massive regressions. 

2006-04-21  Darin Adler  <darin@apple.com>

        - attempt to fix Windows build after my last check-in

        * WebCore.vcproj/Image Viewer/ImageView.cpp: Changed calls to use the
        new IntRect-based API.

        * html/CanvasPattern.cpp: (WebCore::CanvasPattern::CanvasPattern):
        Put appropriate ifdefs around the m_platformImage initializer.

        * page/Frame.cpp: Make Frame::adjustPageHeight Mac-OS-X-only for now
        since it's used for printing and we don't have printing going on any
        other platforms yet.

        * platform/cairo/GraphicsContextCairo.cpp: Take out constructor that
        takes only the "for printing" boolean for now.

        * platform/cairo/ImageCairo.cpp: Include the GraphicsContext.h header.

        * platform/win/TemporaryLinkStubs.cpp: (GraphicsContext::setShadow):
        Fix up this stub and remove the GraphicsContext empty constructor stub.

2006-04-21  Darin Adler  <darin@apple.com>

        - fix build

        * WebCore.xcodeproj/project.pbxproj: Replaced absolute path on my system
        with a build-result-relative path; also removed some source files from the
        list of resources to install!

2006-04-20  Darin Adler  <darin@apple.com>

        Reviewed by Hyatt.

        - make <canvas> element and related API behave more like the draft of
          the WhatWG Web Application specification, checking parameter validity
          and raising exceptions
        - changed HTMLCanvasElement bindings to be auto-generated, fixing all
          issues so we can generate bindings for classes drived from HTMLElement
        - change GraphicsContext API to use IntRect/Point/Size in more cases
        - change GraphicsContext so it is closer to truly wrapping a graphics
          context rather than representing the current NSGraphicsContext; there
          are still some things like text and rectangle fills that are tied to
          NSGraphicsContext, but we're most of the way there
        - removed Brush class since it just amounted to a color, using an RGBA32
          instead where we used to use a Brush

        * DerivedSources.make: Added JSHTMLCanvasElement.h.
        * WebCore.xcodeproj/project.pbxproj: Added new files.

        * bindings/js/JSCanvasRenderingContext2DBase.h: Added toJS.
        * bindings/js/JSCanvasRenderingContext2DBase.cpp:
        (WebCore::JSCanvasRenderingContext2DBaseProtoFunc::callAsFunction):
        Added exception code handling for strokeRect, drawImage, and createPattern.
        Added version of createPattern that takes a canvas. Use TYPE_MISMATCH_ERR
        instead of JavaScript TypeError when parameter is neither an image or canvas
        element. Adapt for new HTMLCanvasElement binding.
        (WebCore::toJS): Added. Converts context object to JS wrapper.

        * bindings/js/JSHTMLElementWrapperFactory.h: Added.
        * bindings/js/JSHTMLElementWrapperFactory.cpp: Added. Creates a JavaScript
        wrapper for an arbitrary HTML element. Better than putting this all in the
        DOM node class toJS function.

        * bindings/js/JSXMLSerializer.cpp: Tweaked to make it build.
        * bindings/js/kjs_dom.cpp: (KJS::toJS): Changed to call the
        JSHTMLElementWrapperFactory function createJSWrapper, instead
        of always creating a JSHTMLElement.

        * bindings/js/kjs_html.h: Removed canvas-related stuff. Added HTMLElement
        prototype.
        * bindings/js/kjs_html.cpp:
        (KJS::JSHTMLElement::classInfo): Removed canvas element.
        (KJS::JSHTMLElement::accessors): Ditto.
        (KJS::JSHTMLElementProtoFunc::callAsFunction): Added, to help the auto-binding
        machiner cope with HTMLElement.
        (KJS::HTMLElementFunction::callAsFunction): Removed canvas element.

        * bindings/scripts/CodeGeneratorJS.pm: Added types needed for HTMLCanvasElement.

        * bridge/mac/FrameMac.mm: (WebCore::FrameMac::setDisplaysWithFocusAttributes):
        Changed to create a GraphicsContext with the new constructor that takes
        a CGContextRef.
        * bridge/mac/WebCoreFrameBridge.mm: (-[WebCoreFrameBridge drawRect:]):
        Changed to create a GraphicsContext with the new constructor that takes
        a NSGraphicsContext.
        * page/Frame.cpp: (WebCore::Frame::adjustPageHeight): Changed to create a
        GraphicsContext with the new constructor that takes a CGContextRef.

        * editing/SelectionController.cpp: (WebCore::SelectionController::paintCaret):
        Eliminated a use of obsolete class Brush.

        * html/CanvasPattern.h:
        * html/CanvasPattern.cpp:
        (WebCore::CanvasPattern::parseRepetitionType): Added. Parses a repetition
        type. Different from the old logic in that it is case-sensitive and rejects
        anything other than null, empty string, or the four repeat types.
        (WebCore::CanvasPattern::CanvasPattern): Added constructor that takes
        a CGImageRef. Changed constructor to take two booleans instead of the repetition
        type string. It's the caller's responsibility to parse the string.
        (WebCore::CanvasPattern::~CanvasPattern): Release the CGImage.
        (WebCore::patternCallback): Handle the CGImage case. Also changed the code
        to create a GraphicsContext as needed and call the image drawing code with that.
        (WebCore::CanvasPattern::createPattern): Handle both the image element case and
        the canvas element case.
        
        * html/CanvasRenderingContext2D.h:
        * html/CanvasRenderingContext2D.cpp:
        (WebCore::CanvasRenderingContext2D::State::State): Change line cap, line join,
        and global composite to store enum values instead of strings.
        (WebCore::CanvasRenderingContext2D::setLineWidth): Do nothing if width is NaN
        or <= 0.
        (WebCore::CanvasRenderingContext2D::lineCap): Return a string based on a
        stored enum, rather than returning a stored string.
        (WebCore::CanvasRenderingContext2D::setLineCap): Do nothing if the string is
        not one of the standard line cap types. Also case sensitive and stores enum
        rather than the string.
        (WebCore::CanvasRenderingContext2D::lineJoin): Return a string based on a
        stored enum, rather than returning a stored string.
        (WebCore::CanvasRenderingContext2D::setLineJoin): Do nothing if the string is
        not one of the standard line join types. Also case sensitive and stores enum
        rather than the string.
        (WebCore::CanvasRenderingContext2D::setMiterLimit): Do nothing if limit is NaN
        or <= 0.
        (WebCore::CanvasRenderingContext2D::setGlobalAlpha): Do nothing if alpha is NaN
        or < 0 or > 1.
        (WebCore::CanvasRenderingContext2D::globalCompositeOperation): Return a string
        based on a stored enum, rather than returning a stored string.
        (WebCore::CanvasRenderingContext2D::setGlobalCompositeOperation): Do nothing if
        the string is not one of the standard compositing modes. Also case sensitive and
        stores enum rather than the string.
        (WebCore::CanvasRenderingContext2D::arcTo): Generate INDEX_SIZE_ERR exception
        if radius is NaN or <= 0.
        (WebCore::CanvasRenderingContext2D::arc): Ditto.
        (WebCore::CanvasRenderingContext2D::rect): Generate INDEX_SIZE_ERR exception
        if width or height is NaN or <= 0.
        (WebCore::CanvasRenderingContext2D::clearRect): Ditto.
        (WebCore::CanvasRenderingContext2D::fillRect): Ditto.
        (WebCore::CanvasRenderingContext2D::strokeRect): Ditto, same for line width.
        Changed the case where the line width is not specified to share code with the
        case where it is.
        (WebCore::size): Renamed from imageSize, since C++ overloads based on parameter
        types anyway.
        (WebCore::CanvasRenderingContext2D::drawImage): Generate INDEX_SIZE_ERR exception
        if the source rect is not entirely inside the image rect, or if the width or height
        of either the source or destination rect is NaN or <= 0. Changed image drawing
        code to be platform-independent for the image element case, but not yet for the
        canvas case.
        (WebCore::CanvasRenderingContext2D::drawImageFromRect): Change code to parse the
        composite operation to use the new code shared with Image.
        (WebCore::CanvasRenderingContext2D::createPattern): Added code to parse the
        repetition type separately before creating the pattern. Added an overload for
        canvas elements.
        (WebCore::CanvasRenderingContext2D::drawingContext): Changed to return a
        GraphicsContext*.
        (WebCore::CanvasRenderingContext2D::platformContext): Added. Now does what
        drawingContext used to do.

        * html/CanvasRenderingContext2D.idl: Added exception declarations as needed
        for changes above.

        * html/HTMLCanvasElement.h:
        * html/HTMLCanvasElement.cpp:
        (WebCore::HTMLCanvasElement::HTMLCanvasElement): Changed m_drawingContext
        to be a GraphicsContext instead of a CGContextRef.
        (WebCore::HTMLCanvasElement::~HTMLCanvasElement): Ditto.
        (WebCore::HTMLCanvasElement::getContext): Removed special cases for null
        and empty string. Only give a 2D graphics context if the string is "2d".
        (WebCore::HTMLCanvasElement::reset): Updated for change to GraphicsContext
        from CGContextRef.
        (WebCore::HTMLCanvasElement::paint): Ditto.
        (WebCore::HTMLCanvasElement::createDrawingContext): Changed to create a
        GraphicsContext* instead of a CGContextRef.
        (WebCore::HTMLCanvasElement::drawingContext): Changed to return a
        GraphicsContext* instead of a CGContextRef.
        (WebCore::HTMLCanvasElement::createPlatformImage): Updated for changes above.

        * html/HTMLCanvasElement.idl: Added.

        * html/HTMLParser.h:
        * html/HTMLParser.cpp:
        (WebCore::HTMLParser::canvasCreateErrorCheck): Added. An attempt to implement the
        fallback behavior for canvas elements when JavaScript is off.
        (WebCore::HTMLParser::getNode): Sorted list of functions. Added case for canvas.

        * html/html_imageimpl.h:
        * html/html_imageimpl.cpp:
        (WebCore::HTMLImageElement::HTMLImageElement): Changed m_compositeOperator to be
        an enum instead of a string.
        (WebCore::HTMLImageElement::parseMappedAttribute): Parse the enum here.

        * kcanvas/KCanvasResources.h:
        * kcanvas/KCanvasResources.cpp: (WebCore::KCanvasMarker::draw): Changed to take a
        GraphicsContext parameter.

        * kcanvas/RenderPath.h: Added GraphicsContext parameter to drawMarkersIfNeeded.

        * kcanvas/RenderPath.cpp: (WebCore::RenderPath::paint):
        * kcanvas/RenderSVGImage.cpp: (WebCore::RenderSVGImage::paint):
        * kcanvas/RenderSVGText.cpp: (WebCore::RenderSVGText::paint):
        Changed to generate and use an appropriate GraphicsContext.

        * kcanvas/device/quartz/KCanvasItemQuartz.h: Added GraphicsContext parameter to
        drawMarkersIfNeeded.
        * kcanvas/device/quartz/KCanvasItemQuartz.mm:
        (WebCore::DrawMarkersData::DrawMarkersData): Added GraphicsContext*.
        (WebCore::drawMarkerWithData): Pass along a GraphicsContext*.
        (WebCore::drawStartAndMidMarkers): Ditto.
        (WebCore::KCanvasItemQuartz::drawMarkersIfNeeded): Pass a long a GraphicsContext*.

        * kcanvas/device/KRenderingDevice.h: Added a pure virtual createGraphicsContext
        to bridge back to a GraphicsContext. Long term that class will replace this one.
        * kcanvas/device/quartz/KRenderingDeviceQuartz.h:
        * kcanvas/device/quartz/KRenderingDeviceQuartz.mm:
        (WebCore::KRenderingDeviceContextQuartz::createGraphicsContext): Added.

        * ksvg2/svg/SVGMaskElement.cpp: (WebCore::SVGMaskElement::drawMaskerContent):
        Create and pass a GraphicsContext -- old code used the default constructor for
        GraphicsContext which meant "current context", and that no longer exists.
        * ksvg2/svg/SVGPatternElement.cpp:
        (WebCore::SVGPatternElement::drawPatternContentIntoTile): Ditto.

        * platform/Brush.h: Removed.
        * platform/CompositeOperator.h: Added.
        * platform/CompositeOperator.cpp: Added.

        * platform/Font.h: Changed calls to use IntPoint instead of pairs of ints.
        Also removed the const from all the uses of GraphicsContext*.

        * platform/GraphicsContext.h: Eliminated default constructor and constructor
        that takes only a boolean. Replaced with constructors that take platform
        graphics contexts only. Replaced brush-related calls with fill color calls.
        Replaced use of Brush with use of Color. Changed Image::CompositeOperator to
        just plain CompositeOperator. Changed tuples of ints into IntRect and IntPoint.
        Moved setFocusRingClip and clearFocusRingClip out of ifdefs. Removed unused
        getCompositeOperation and string-based setCompositeOperation. Moved
        currentCGContext and the other setCompositeOperation out of the GraphicsContext
        class and made them global functions. Fixed platformContext so it won't always
        return the CGContextRef of the current NSGraphicsContext. Instead, it will
        return the appropriate CGContextRef for the GraphicsContext. This eliminates
        the need to use void* for the image-drawing functions.

        * platform/GraphicsContext.cpp:
        (WebCore::GraphicsContextState::GraphicsContextState): Replaced Brush with
        an RGBA fill color.
        (WebCore::GraphicsContext::setFillColor): Renamed from setBrush.
        (WebCore::GraphicsContext::fillColor): Renamed from brush.
        (WebCore::GraphicsContext::drawImage): Changed to use IntRect.
        (WebCore::GraphicsContext::drawTiledImage): Moved here from GraphicsContextMac.mm.
        (WebCore::GraphicsContext::drawText): Changed to use IntPoint.
        (WebCore::GraphicsContext::drawHighlightForText): Ditto.
        (WebCore::GraphicsContext::drawLineForText): Ditto.
        (WebCore::GraphicsContext::drawLineForMisspelling): Ditto.

        * platform/Image.h: Removed CompositeOperator and related functions.
        Removed void* context parameters from draw functions.

        * platform/Image.cpp: Removed compositeOperatorFromString.

        * platform/Widget.h: Added a GraphicsContext* return value from lockDrawingFocus
        that you pass back to unlockDrawingFocus (for deletion).

        * platform/mac/FontMac.mm:
        (WebCore::Font::selectionRectForText): Changed parameter to point and removed
        const on GraphicsContext* parameter.
        (WebCore::Font::drawText): Ditto.
        (WebCore::Font::drawHighlightForText): Ditto.
        (WebCore::Font::drawLineForText): Ditto.
        (WebCore::Font::drawLineForMisspelling): Ditto.
        (WebCore::Font::misspellingLineThickness): Removed const.

        * platform/mac/GraphicsContextMac.mm:
        (WebCore::GraphicsContextPlatformPrivate::GraphicsContextPlatformPrivate):
        Added fields to store a CGContextRef and an NSGraphicsContext.
        (WebCore::GraphicsContextPlatformPrivate::~GraphicsContextPlatformPrivate):
        Release both the CGContextRef and the NSGraphicsContext.
        (WebCore::GraphicsContext::GraphicsContext): Implement to set up both the
        CGContextRef and the NSGraphicsContext in one case, and only the CGContextRef
        in the other.
        (WebCore::GraphicsContext::savePlatformState): Implement for the CGContext-only
        case.
        (WebCore::GraphicsContext::restorePlatformState): Ditto.
        (WebCore::GraphicsContext::drawRect): Assert that the NS context is present
        and 
        (WebCore::GraphicsContext::setColorFromFillColor): Renamed from
        setColorFromBrush.
        (WebCore::GraphicsContext::setColorFromPen): Added assertion.
        (WebCore::GraphicsContext::drawLine): Added assertion.
        (WebCore::GraphicsContext::drawEllipse): Get CGContext from the platformContext
        function instead of currentCGContext, and changed to use fillColor.
        (WebCore::GraphicsContext::drawArc): Ditto.
        (WebCore::GraphicsContext::drawConvexPolygon): Ditto.
        (WebCore::setCompositeOperation): Changed to global function and also changed
        to do the work here -- no need to use WebCoreImageRendererFactory.
        (WebCore::GraphicsContext::drawImage): Move most of this into GraphicsContext.cpp.
        Remove the void* context parameter. Changed to take rects instead of separate coordinates.
        (WebCore::GraphicsContext::fillRect): Changed to take color instead of Brush.
        (WebCore::GraphicsContext::addClip): Added assertion.
        (WebCore::GraphicsContext::addRoundedRectClip): Get CGContextRef from the platformContext
        function instead of currentCGContext.
        (WebCore::GraphicsContext::createRenderingDeviceContext): Ditto.
        (WebCore::GraphicsContext::beginTransparencyLayer): Ditto.
        (WebCore::GraphicsContext::endTransparencyLayer): Ditto.
        (WebCore::GraphicsContext::setShadow): Change to take size instead of x,y. Also get
        CGCOntextRef from the platformContext function instead of currentCGContext.
        (WebCore::GraphicsContext::clearShadow): Get CGContextRef from the platformContext
        function instead of currentCGContext.
        (WebCore::GraphicsContext::platformContext): Added. Returns m_data->m_cgContext.

        * platform/mac/ImageMac.mm:
        (WebCore::fillSolidColorInRect): Updated for change in CompositeOperator type.
        (WebCore::Image::checkForSolidColor): Ditto.
        (WebCore::Image::draw): Removed void* context parameter and replaced it with
        a GraphicsContext* parameter. Renamed from drawInRect.
        (WebCore::Image::drawTiled): Ditto. Renamed from tileInRect and scaleAndTileInRect.

        * platform/mac/PDFDocumentImage.h: Updated for change in CompositeOperator type.
        * platform/mac/PDFDocumentImage.mm: (WebCore::PDFDocumentImage::draw): Ditto.

        * platform/mac/WidgetMac.mm:
        (WebCore::Widget::lockDrawingFocus): Changed to return a GraphicsContext*.
        (WebCore::Widget::unlockDrawingFocus): Changed to take a GraphicsContext*.

        * rendering/InlineTextBox.cpp:
        (WebCore::InlineTextBox::selectionRect): Changed to pass IntPoint.
        (WebCore::InlineTextBox::paint): Changed to pass IntSize.
        (WebCore::InlineTextBox::paintSelection): More of the same.
        (WebCore::InlineTextBox::paintMarkedTextBackground): Ditto.
        (WebCore::InlineTextBox::paintDecoration): Ditto.
        (WebCore::InlineTextBox::paintSpellingMarker): Ditto.
        (WebCore::InlineTextBox::paintTextMatchMarker): Ditto.
        (WebCore::InlineTextBox::paintMarkedTextUnderline): Ditto.
        (WebCore::InlineTextBox::positionForOffset): Ditto.
        * rendering/RenderBlock.cpp:
        (WebCore::RenderBlock::fillHorizontalSelectionGap): Ditto.
        (WebCore::RenderBlock::fillVerticalSelectionGap): Ditto.
        (WebCore::RenderBlock::fillLeftSelectionGap): Ditto.
        (WebCore::RenderBlock::fillRightSelectionGap): Ditto.
        * rendering/RenderBox.cpp:
        (WebCore::RenderBox::paintBackgroundExtended): Ditto.
        (WebCore::RenderBox::outlineBox): Ditto.
        * rendering/RenderImage.cpp:
        (WebCore::RenderImage::paint): Ditto.
        * rendering/RenderLayer.cpp:
        (WebCore::setClip): Take out ifdefs. We'll do that inside GraphicsContext instead.
        (WebCore::restoreClip): Ditto.
        * rendering/RenderObject.cpp:
        (WebCore::RenderObject::drawBorder): More of the same.
        (WebCore::RenderObject::paintBorderImage): Ditto.
        * rendering/render_line.cpp:
        (WebCore::InlineFlowBox::paintDecorations): Ditto.
        (WebCore::EllipsisBox::paint): Ditto.
        * rendering/render_list.cpp:
        (WebCore::RenderListMarker::paint): Ditto.

        * rendering/render_frames.cpp: (WebCore::RenderFrameSet::userResize): Set up a graphics
        context by calling lockDrawingFocus. Also changed a color here to be a constant.

        * platform/cairo/GraphicsContextCairo.cpp:
        (WebCore::GraphicsContext::drawImage): Update for parameter type changes.
        (WebCore::GraphicsContext::drawScaledAndTiledImage):
        (WebCore::GraphicsContext::setFocusRingClip):
        (WebCore::GraphicsContext::clearFocusRingClip):
        * platform/cairo/ImageCairo.cpp:
        (WebCore::setCompositingOperation):
        (WebCore::Image::tileInRect):
        (WebCore::Image::scaleAndTileInRect):

2006-04-20  Mitz Pettel  <opendarwin.org@mitzpettel.com>

        Reviewed by Darin.

        WebCore part of:
        - fix http://bugs.webkit.org/show_bug.cgi?id=8276
          REGRESSION (NativeTextField): Pasting a Finder item into a text field results in
            a file: URL being pasted instead of just the file name
        - fix http://bugs.webkit.org/show_bug.cgi?id=8283
          REGRESSION: File's path doesn't appear after dragging file into input field

        * bridge/mac/WebCoreFrameBridge.h:
        * bridge/mac/WebCoreFrameBridge.mm:
        (-[WebCoreFrameBridge isDragCaretRichlyEditable]): Added.
        * manual-tests/plain-text-paste.html: Added.
        * manual-tests/resources/plain-text-paste: Added.
        * manual-tests/resources/plain-text-paste/1.textClipping: Added.
        * manual-tests/resources/plain-text-paste/2.textClipping: Added.
        * manual-tests/resources/plain-text-paste/3.gif: Added.
        * manual-tests/resources/plain-text-paste/4.txt: Added.
        * manual-tests/resources/plain-text-paste/5.webloc: Added.

2006-04-20  Darin Adler  <darin@apple.com>

        Reviewed by Adele.

        - WebCore part of http://bugs.webkit.org/show_bug.cgi?id=8505
          eliminate WebCoreGraphics bridge, demonstrate new SystemInterface technique

        * platform/mac/WebCoreGraphicsBridge.h: Removed.
        * platform/mac/WebCoreGraphicsBridge.m: Removed.
        * platform/mac/WebCoreSystemInterface.h: Added.
        * platform/mac/WebCoreSystemInterface.mm: Added.

        * WebCore.exp: Add new SystemInterface globals, remove WebCoreGraphicsBridge.

        * WebCore.xcodeproj/project.pbxproj: Updated for removed and added files.
        Sorted files.

        * bridge/mac/FrameMac.mm: Removed unneeded include of WebCoreGraphicsBridge.h.

        * platform/mac/ClipboardMac.mm: (WebCore::ClipboardMac::setDragImage):
        Moved code from WebGraphicsBridge here, using WebCoreSystemInterface so we can
        call wkSetDragImage.

        * platform/mac/GraphicsContextMac.mm: (WebCore::GraphicsContext::drawFocusRing):
        Moved code from WebGraphicsBridge here, using WebCoreSystemInterface so we can
        call wkDrawFocusRing.

        * rendering/RenderThemeMac.mm: (WebCore::RenderThemeMac::paintTextField):
        Call wkDrawBezeledTextFieldCell from WebCoreSystemInterface instead of using
        WebGraphicsBridge to do the same thing.

2006-04-20  Adele Peterson  <adele@apple.com>

        Reviewed by Hyatt.

        Fix for http://bugs.webkit.org/show_bug.cgi?id=8273
        REGRESSION: Read only input text field renders at the wrong height when value attribute is not present

        Test: fast/forms/input-readonly-empty.html

        * rendering/RenderBlock.h: Added hasLineIfEmpty.
        * rendering/RenderBlock.cpp:
        (WebCore::RenderBlock::hasLineIfEmpty): Added.  Checks for rootEditableElement as well as 
         a shadowNode who has an input element as a parent.
        (WebCore::RenderBlock::getBaselineOfLastLineBox): Calls hasLineIfEmpty instead of just checking for the rootEditableElement.
        * rendering/bidi.cpp: (WebCore::RenderBlock::layoutInlineChildren): ditto.

2006-04-20  Darin Adler  <darin@apple.com>

        Reviewed by Timothy.

        Removed TO_NODE_OFFSET and TO_NODE_ADDRESS macros. These can just be done inline with pointer math.

        * platform/DeprecatedString.cpp:
        (allocateNode):
        (freeHandle):

2006-04-19  Adele Peterson  <adele@apple.com>

        Rubber-stamped by Darin.

        Removed optimizations recently added in setInnerHTML and setInnerText.  The setInnerHTML change broke a first-letter style test.
        The setInnerText change caused an empty text node to get added when setting inner text to an empty string.  The bug that this
        change went in with remains fixed.

        * html/HTMLElement.cpp:
        (WebCore::HTMLElement::setInnerHTML):
        (WebCore::HTMLElement::setInnerText):

2006-04-19  Mitz Pettel  <opendarwin.org@mitzpettel.com>

        Reviewed by Haytt.

        - fix http://bugs.webkit.org/show_bug.cgi?id=6770
          REGRESSION: Incomplete repaint when block with clipping grows

        * manual-tests/repaint-resized-overflow.html: Added.
        * rendering/RenderLayer.cpp:
        (WebCore::RenderLayer::RenderLayer):
        (WebCore::RenderLayer::computeRepaintRects): Set the m_repaintOverflowOnResize
        flag to true if our object itself needs layout or if we're an overflow
        and have a normal child that needs layout, in which case if we end up
        resizing it will be because of the child, and that child might have not repainted
        itself correctly during its own layout.
        (WebCore::RenderLayer::updateLayerPositions): Do a full repaint if
        m_repaintOverflowOnResize is set and we resized but didn't move.
        * rendering/RenderLayer.h:

2006-04-19  Mitz Pettel  <opendarwin.org@mitzpettel.com>

        Reviewed by Hyatt.

        - fix http://bugs.webkit.org/show_bug.cgi?id=8352
          CSS text-shadow does not repaint completely when changed

        * manual-tests/dynamic-shadow.html: Added.
        * rendering/render_style.cpp:
        (WebCore::RenderStyle::diff): Changed to return Layout when text-shadow
        changes.

2006-04-19  Adele Peterson  <adele@apple.com>

        Reviewed by Darin.

        Added readOnly methods for HTMLInputElement and HTMLTextAreaElement so the DOM bindings can call
        a method with the same name.  This will make it easier to autogenerate the DOM bindings in the future.
 
        * html/HTMLInputElement.h: (WebCore::HTMLInputElement::readOnly): Added. Calls isReadOnlyControl.
        * html/HTMLTextAreaElement.h: (WebCore::HTMLTextAreaElement::readOnly): ditto.
        * bindings/js/kjs_html.cpp:
        (KJS::JSHTMLElement::inputGetter): Calls readOnly instead of isReadOnlyControl.
        (KJS::JSHTMLElement::textAreaGetter): ditto.
        * bindings/objc/DOMHTML.mm:
        (-[DOMHTMLInputElement readOnly]): ditto.
        (-[DOMHTMLTextAreaElement readOnly]): Calls readOnly instead of getting the attribute directly.
        (-[DOMHTMLTextAreaElement setReadOnly:]): Calls setReadOnly instead of setting the attribute directly.

2006-04-19  Adele Peterson  <adele@apple.com>

        Reviewed by Hyatt.

        Fix for: http://bugs.webkit.org/show_bug.cgi?id=8297
        REGRESSION: Input element extends outside of DIV element at http://www.macdock.com/

        * platform/Font.h: Added runRounding parameter to floatWidth.
        * platform/mac/FontMac.mm: (WebCore::Font::floatWidth): ditto.
        * platform/win/FontWin.cpp: (WebCore::Font::floatWidth): ditto.
        * rendering/RenderTextField.cpp: (WebCore::RenderTextField::calcMinMaxWidth):
          Use new floatWidth parameter to turn off run rounding.

2006-04-19  Adele Peterson  <adele@apple.com>

        Reviewed by Beth.

        Fix for Windows build.

        * rendering/RenderThemeWin.cpp: (WebCore::RenderThemeWin::determineState):
        Use isReadOnlyControl instead of isReadOnly.

 2006-04-19  Adele Peterson  <adele@apple.com>
 
         Reviewed by Beth.
 
         Fix to make readonly text fields have dimmed borders to match AppKit behavior.
 
         Test: fast/forms/input-readonly-dimmed.html
 
         * dom/Node.h: (WebCore::Node::isReadOnlyControl): Changed from const version of isReadOnly.
         * dom/Node.cpp:
         (WebCore::Node::isReadOnlyNode): Changed from isReadOnly.
         (WebCore::Node::setNodeValue): Uses isReadOnlyNode instead of isReadOnly.
         (WebCore::Node::checkSetPrefix): ditto.
         (WebCore::Node::checkAddChild): ditto.
         * dom/Attr.cpp: (WebCore::Attr::setValue): ditto.
         * dom/CharacterData.cpp:
         (WebCore::CharacterData::setData): ditto.
         (WebCore::CharacterData::appendData): ditto.
         (WebCore::CharacterData::checkCharDataOperation): ditto.
         * dom/ContainerNode.cpp: (WebCore::ContainerNode::removeChild): ditto.
         * dom/Element.cpp: (WebCore::Element::setAttribute): ditto.
         * dom/NamedAttrMap.cpp:
         (WebCore::NamedAttrMap::setNamedItem): ditto.
         (WebCore::NamedAttrMap::removeNamedItem): ditto.
         * dom/NamedAttrMap.h: (WebCore::NamedAttrMap::isReadOnlyNode): ditto.
         * dom/NamedNodeMap.h: (WebCore::NamedNodeMap::isReadOnlyNode): ditto.
         * dom/Range.cpp:
         (WebCore::Range::checkDeleteExtract): ditto.
         (WebCore::Range::containedByReadOnly): ditto.
         * dom/Text.cpp: (WebCore::Text::splitText): ditto.
         * dom/dom_xmlimpl.cpp: (WebCore::ProcessingInstruction::setData): ditto.
 
         * bindings/js/kjs_html.cpp:
         (KJS::JSHTMLElement::inputGetter): Uses isReadOnlyControl instead of isReadOnly.
         (KJS::JSHTMLElement::textAreaGetter): ditto.
         * bindings/objc/DOMHTML.mm: (-[DOMHTMLInputElement readOnly]): ditto.
         * rendering/render_form.cpp:
         (WebCore::RenderLineEdit::updateFromElement): ditto.
         (WebCore::RenderTextArea::updateFromElement): ditto.
         * rendering/RenderTextField.cpp:
         (WebCore::RenderTextField::createDivStyle): ditto.
         (WebCore::RenderTextField::updateFromElement): ditto.
 
         * html/HTMLGenericFormElement.cpp: (WebCore::HTMLGenericFormElement::parseMappedAttribute): 
           When readonly attribute changes, update the theme so the control will repaint.
         * html/HTMLGenericFormElement.h: (WebCore::HTMLGenericFormElement::isReadOnlyControl): Renamed from readOnly.
         * html/HTMLInputElement.h: Removed isReadOnly, since isReadOnlyControl now exists on HTMLGenericFormElement.
         * rendering/RenderTheme.cpp: (WebCore::RenderTheme::isReadOnlyControl): Renamed from isReadOnly.
         * rendering/RenderTheme.h: (WebCore::): Added ReadOnlyState to ControlState enum.
         * rendering/RenderThemeMac.h: Removed NSTextFieldCell since it was only being used to store the enabled state.
           Removed setTextFieldState since it was updating the enabled state of the cell, which is only used in one place.
         * rendering/RenderThemeMac.mm:
         (WebCore::RenderThemeMac::RenderThemeMac): No longer initialized the NSTextFieldCell.
         (WebCore::RenderThemeMac::adjustRepaintRect): No longer calls setTextFieldState.
         (WebCore::RenderThemeMac::paintTextField): Uses the enabled state and the readonly state to determine whether to draw
          a dimmed version of the aqua border.
 
2006-04-19  Beth Dakin  <bdakin@apple.com>

        Reviewed by Hyatt.

        Fix for http://bugs.webkit.org/show_bug.cgi?id=8467 Block 
        with percentage background-size doesn't repaint properly when it 
        grows

        * manual-tests/backgroundSizeRepaint.html: Added.
        * manual-tests/resources/apple.jpg: Added.
        * rendering/RenderObject.cpp:
        (WebCore::RenderObject::mustRepaintBackgroundOrBorder): We must 
        return true if we have a percentage background-size.

2006-04-19  David Hyatt  <hyatt@apple.com>

        Fix for a regression in the new text fields.  Don't allow the repaint
        rect created by dynamic line layout changes to spill out of an overflow
        area's clip region.

        (There is no test, since we have no way of testing cases where we repaint
         too much rather than too little.)

        Reviewed by darin

        * rendering/bidi.cpp:
        (WebCore::RenderBlock::layoutInlineChildren):

2006-04-19  Mitz Pettel  <opendarwin.org@mitzpettel.com>

        Fix for bug 8449, incomplete repaint of table cell that moved.  This
        fix also solves some of the textfield repainting problems (e.g., on
        google.com and lxr.mozilla.org).

        Reviewed by hyatt

        * manual-tests/table-cell-move.html: Added.
        * rendering/RenderCanvas.cpp:
        (WebCore::RenderCanvas::repaintViewRectangle):
        * rendering/RenderTableSection.cpp:
        (WebCore::RenderTableSection::layoutRows):

2006-04-19  Mitz Pettel  <opendarwin.org@mitzpettel.com>

        Reviewed by Eric, landed by ap.

        - fix http://bugs.webkit.org/show_bug.cgi?id=8469
          CRASH: WebCore::CSSParser::parseDashboardRegions when attr() is passed

        Test: fast/css/dashboard-regions-attr-crash.html

        * css/cssparser.cpp:
        (WebCore::CSSParser::parseDashboardRegions): Added null check for args.

2006-04-18  Rob Buis  <buis@kde.org>

        Reviewed by eseidel & darin.  Landed by eseidel.

        No automated tests possible (from javascript).

        Fix for http://bugs.webkit.org/show_bug.cgi?id=6664:
        Inspector does not highlight SVG elements properly

        Make sure RenderObject::absoluteBoundingBoxRect works for
        svg specific render objects by overriding absoluteRects.
        This fixes highlighting in the Inspector of svg shapes, paths,
        images and text.

        * kcanvas/RenderPath.cpp:
        (WebCore::RenderPath::absoluteRects):
        * kcanvas/RenderPath.h:
        * kcanvas/RenderSVGImage.cpp:
        (WebCore::RenderSVGImage::getAbsoluteRepaintRect):
        (WebCore::RenderSVGImage::absoluteRects):
        * kcanvas/RenderSVGImage.h:
        * kcanvas/RenderSVGText.cpp:
        (WebCore::RenderSVGText::absoluteRects):
        * kcanvas/RenderSVGText.h:

2006-04-17  Rob Buis  <buis@kde.org>

        Reviewed by eseidel.  Landed by eseidel.

        Test: svg/custom/tref-update.svg

        Fix for http://bugs.webkit.org/show_bug.cgi?id=6427:
        <tref> element not implemented

        Implementation of <tref> element.

        * WebCore.xcodeproj/project.pbxproj:
        * ksvg2/svg/SVGTRefElement.cpp: Added.
        (SVGTRefElement::SVGTRefElement):
        (SVGTRefElement::~SVGTRefElement):
        (SVGTRefElement::parseMappedAttribute):
        (SVGTRefElement::closeRenderer):
        (SVGTRefElement::childShouldCreateRenderer):
        (SVGTRefElement::createRenderer):
        * ksvg2/svg/SVGTRefElement.h: Added.
        (WebCore::SVGTRefElement::rendererIsNeeded):
        * ksvg2/svg/SVGTSpanElement.cpp:
        (SVGTSpanElement::childShouldCreateRenderer):
        * ksvg2/svg/SVGTextElement.cpp:
        (WebCore::SVGTextElement::childShouldCreateRenderer):
        * ksvg2/svg/svgtags.in:

2006-04-18  Darin Adler  <darin@apple.com>

        * rendering/render_form.cpp: (WebCore::RenderSelect::updateFromElement):
        Roll out accidentally-landed change for bug 8398.

2006-04-18  Beth Dakin  <bdakin@apple.com>

        Reviewed by Darin.

        Fix for a leak exposed by background-size and detected by the 
        layout tests.

        * css/css_valueimpl.cpp:
        (WebCore::CSSPrimitiveValue::cleanup): We must deref pairs.

2006-04-18  Beth Dakin  <bdakin@apple.com>

        Reviewed by Eric.

        Build fix for Windows. Just a few typos from background-size patch.

        * platform/cairo/GraphicsContextCairo.cpp:
        (WebCore::GraphicsContext::drawTiledImage):
        * platform/cairo/ImageCairo.cpp:
        (WebCore::Image::tileInRect):

2006-04-18  Beth Dakin  <bdakin@apple.com>

        Reviewed by Hyatt.

        Implementation of CSS3 background-size property. See 
        http://bugs.webkit.org/show_bug.cgi?id=8353 for details.

        * Viewer/ImageView.cpp: Adjust parameters to drawTiledImage()
        * css/CSSComputedStyleDeclaration.cpp: Add background-size
        * css/CSSPropertyNames.in: Same.
        * css/css_valueimpl.h: Add a constructor for Pair that takes the 
        two halves of the pair.
        * css/cssparser.cpp: Parse background-size. Still need to take care 
        of parsing the shorthand.
        * css/cssparser.h: Same.
        * css/cssstyleselector.cpp: Address background-size.
        * css/cssstyleselector.h: Same.
        * platform/GraphicsContext.h: drawTiledImage() now takes the 
        tileSize so that it can appropriately scale.
        * platform/Image.h: Same as above, but for tileInRect()
        * platform/cairo/GraphicsContextCairo.cpp:
        (WebCore::GraphicsContext::drawTiledImage):
        * platform/cairo/ImageCairo.cpp:
        (WebCore::Image::tileInRect): Take care of scaling image in 
        necessary in Cairo.
        * platform/mac/GraphicsContextMac.mm:
        (WebCore::GraphicsContext::drawTiledImage): 
        * platform/mac/ImageMac.mm:
        (WebCore::Image::tileInRect): Take care of scaling image if 
        necessary in CG.
        * rendering/RenderBox.cpp:
        (WebCore::RenderBox::paintBackgroundExtended): Compute appropriate 
        scale if background-size is set. If no-repeat is set, just call 
        drawImage() directly.
        * rendering/render_style.cpp: Add background-size to the style.
        (WebCore::m_next):
        (WebCore::BackgroundLayer::BackgroundLayer):
        (WebCore::BackgroundLayer::operator=):
        (WebCore::BackgroundLayer::operator==):
        (WebCore::BackgroundLayer::fillUnsetProperties):
        (WebCore::BackgroundLayer::cullEmptyLayers):
        * rendering/render_style.h: Same.
        (WebCore::BackgroundLayer::backgroundSize):
        (WebCore::BackgroundLayer::isBackgroundSizeSet):
        (WebCore::BackgroundLayer::setBackgroundSize):
        (WebCore::BackgroundLayer::clearBackgroundSize):
        (WebCore::RenderStyle::backgroundSize):
        (WebCore::RenderStyle::initialBackgroundSize):

2006-04-17  Justin Garcia  <justin.garcia@apple.com>

        Reviewed by harrison

        * editing/CompositeEditCommand.cpp:
        (WebCore::CompositeEditCommand::moveParagraph): The placeholder that's inserted 
        to keep content from collapsing due to pruning was inserted at the position after 
        the moved paragraph.  That's only appropriate when moving the paragraph backward 
        into the previous paragraph.
        
        * editing/ReplaceSelectionCommand.cpp:
        (WebCore::ReplaceSelectionCommand::doApply): The last paragraph of the incoming
        fragment should be merged with the paragraph after the end of the selection being pasted
        into even if the incoming fragment has only one block.   This fixes a bug and gets
        rid of a use of the info gathered during the test insertion.

2006-04-17  Adele Peterson  <adele@apple.com>

        Reviewed by Darin.

        Fix for http://bugs.webkit.org/show_bug.cgi?id=8407
        REGRESSION (NativeTextField): Leading and trailing spaces trimmed from text field value attribute

        Test: fast/forms/input-spaces.html

        * rendering/RenderTextField.cpp: (WebCore::RenderTextField::createDivStyle): 
        Use white-space:pre for the inner div to avoid collapsing spaces in the text field.

2006-04-18  Mitz Pettel  <opendarwin.org@mitzpettel.com>

        Reviewed by Darin.

        - fix http://bugs.webkit.org/show_bug.cgi?id=8437
          iExploder(#293): Crash in StringImpl::hash()

        * manual-tests/applet-param-no-name.html: Added.
        * rendering/RenderApplet.cpp:
        (WebCore::RenderApplet::createWidgetIfNecessary): Skip param elements with
        empty name.

2006-04-18  Darin Adler  <darin@apple.com>

        - try to fix the Windows build

        * platform/cairo/GraphicsContextCairo.cpp: (WebCore::setColor):
        Update for changes to getRGBA.

2006-04-17  Alexey Proskuryakov  <ap@nypop.com>

        Reviewed by Darin.

        - fix http://bugs.webkit.org/show_bug.cgi?id=8440
        iExploder(#3327): Crash in StringImpl::initWithQChar()

        Test: fast/parser/number-sign-in-map-name.html

        * html/html_imageimpl.cpp:
        (WebCore::HTMLMapElement::parseMappedAttribute): Fixed handling of names starting with a '#'.

2006-04-17  Adele Peterson  <adele@apple.com>

        Reviewed by Darin.

        Fix for: http://bugs.webkit.org/show_bug.cgi?id=8269
        REGRESSION: disabled text field does not display greyed-out text

        * rendering/RenderTextField.cpp: (WebCore::RenderTextField::createDivStyle): 
        For disabled text fields, lighten or darken text color based on background color.
        Tries to get as close as possible to logic in AppKit for old text fields.
        * platform/Color.h: Removed hsv and setHsv since they were just used within Color.cpp.
        * platform/Color.cpp:
        (WebCore::parseHexColor): Cleanup.
        (WebCore::differenceSquared): Added. Returns the difference squared of two colors.
        (WebCore::convertRGBToHSV): Added static function. Replaces hsv and setHSV, and fixes bug in old implementation of the algorithm.
        (WebCore::convertHSVToRGB): ditto.
        (WebCore::Color::light): No longer takes in a factor, since all callers use the same factor.  Uses new conversion functions.
        (WebCore::Color::dark): ditto.
        * rendering/InlineTextBox.cpp: Removed simpleDifferenceBetweenColors.
        (WebCore::correctedTextColor):  Uses differenceSquared instead of simpleDifferenceBetweenColors.

2006-04-17  David Hyatt  <hyatt@apple.com>

        Fix for bug 8270, text highlights outside of textfield when it shouldn't.

        Reviewed by darin

        Added fast/forms/input-double-click-selection-gap-bug.html

        * rendering/RenderBlock.cpp:
        (WebCore::RenderBlock::fillInlineSelectionGaps):

2006-04-17  David Hyatt  <hyatt@apple.com>

        Fix for bug 8848, caret off by 1 pixel on numerous pixel tests.

        Reviewed by darin

        * rendering/InlineTextBox.cpp:
        (WebCore::InlineTextBox::positionForOffset):
        * rendering/RenderText.cpp:
        (WebCore::RenderText::caretRect):

2006-04-17  Timothy Hatcher  <timothy@apple.com>

        Reviewed by Darin.

        <rdar://problem/4506601> TOT WebCore fails to build ppc64

        Switch many CG calls to use CGFloat for colors and gradients

        * bindings/objc/DOMCSS.mm:
        (-[DOMRGBColor dealloc]): cast _internal to uintptr_t
        (-[DOMRGBColor finalize]): cast _internal to uintptr_t
        (-[DOMRGBColor red]): cast _internal to uintptr_t
        (-[DOMRGBColor green]): cast _internal to uintptr_t
        (-[DOMRGBColor blue]): cast _internal to uintptr_t
        (-[DOMRGBColor alpha]): cast _internal to uintptr_t
        (-[DOMRGBColor _color]): cast _internal to uintptr_t
        * bridge/mac/FrameMac.mm:
        (WebCore::regExpForLabels): use CFIndex as the type returned from indexOfObject:
        * bridge/mac/WebCoreFrameBridge.mm:
        (-[WebCoreFrameBridge baseWritingDirectionForSelectionStart]): workaround for <rdar://problem/4509035>
        * config.h: define CGFloat if it isn't defined already
        * html/CanvasGradient.cpp:
        (WebCore::CanvasGradient::addColorStop):
        (WebCore::gradientCallback):
        (WebCore::CanvasGradient::platformShading):
        * html/CanvasRenderingContext2D.cpp:
        (WebCore::CanvasRenderingContext2D::setShadow):
        (WebCore::CanvasRenderingContext2D::applyShadow):
        (WebCore::CanvasRenderingContext2D::applyStrokePattern):
        (WebCore::CanvasRenderingContext2D::applyFillPattern):
        * html/CanvasStyle.cpp:
        (WebCore::CanvasStyle::applyStrokeColor):
        (WebCore::CanvasStyle::applyFillColor):
        * kcanvas/device/quartz/KCanvasFilterQuartz.mm:
        (WebCore::alphaImageForImage):
        (WebCore::KCanvasFEColorMatrixQuartz::getCIFilter):
        * kcanvas/device/quartz/KCanvasMaskerQuartz.mm:
        (WebCore::applyLuminanceToAlphaFilter):
        (WebCore::applyExpandAlphatoGrayscaleFilter):
        (WebCore::transformImageIntoGrayscaleMask):
        * kcanvas/device/quartz/KCanvasPathQuartz.mm:
        (WebCore::scratchContext):
        * kcanvas/device/quartz/KRenderingPaintServerGradientQuartz.mm:
        (WebCore::cgGradientCallback):
        (WebCore::CGShadingRefForLinearGradient):
        (WebCore::CGShadingRefForRadialGradient):
        (WebCore::KRenderingPaintServerGradientQuartz::updateQuartzGradientStopsCache):
        * kcanvas/device/quartz/KRenderingPaintServerQuartz.h:
        (WebCore::):
        * kcanvas/device/quartz/KRenderingPaintServerQuartz.mm:
        (WebCore::KRenderingPaintServerPatternQuartz::setup):
        * kcanvas/device/quartz/QuartzSupport.mm:
        (WebCore::applyStrokeStyleToContext):
        * kwq/WebCoreAXObject.mm:
        (CreateCGColorIfDifferent):
        * platform/Color.cpp:
        (WebCore::Color::getRGBA): new name, was getRgbaF. getRGBA uses float and has a double overload
        * platform/Color.h:
        * platform/mac/ClipboardMac.h: no need to define NSDragOperation
        * platform/mac/ColorMac.mm:
        (+[WebCoreControlTintObserver WebCore]):
        * platform/mac/GraphicsContextMac.mm:
        (WebCore::GraphicsContext::drawLine):
        * platform/mac/ImageMac.mm:
        (WebCore::Image::checkForSolidColor):
        (WebCore::Image::tileInRect):
        (WebCore::Image::scaleAndTileInRect):
        * platform/mac/TextEncodingMac.cpp:
        (WebCore::TextEncoding::fromUnicode):

2006-04-17  Justin Garcia  <justin.garcia@apple.com>

        Reviewed by darin
        
        <http://bugs.webkit.org/show_bug.cgi?id=8402>
        Fix interchange newline handling and avoid use of test rendering info

        * editing/ReplaceSelectionCommand.cpp:
        (WebCore::ReplaceSelectionCommand::doApply):
        Fixed bugs in handling of interchange newlines at the end of incoming 
        fragments.  Removed the use of !fragment.isBlockFlow since it isn't 
        correct and relies on information gathered during the test insertion, which 
        we're trying to get rid of. 
        * editing/VisiblePosition.h:
        (WebCore::VisiblePosition::rootEditableElement): Added for convenience.

2006-04-16  Mitz Pettel  <opendarwin.org@mitzpettel.com>

        Reviewed by Darin.

        - fix http://bugs.webkit.org/show_bug.cgi?id=8408
          Paint the highlight behind selected list markers

        Test: fast/lists/markers-in-selection.html

        * rendering/RenderObject.h: Added selectionColorImageOverlayAlpha constant -
        the maximum opacity of the selection color when painted over images.
        * rendering/render_list.cpp:
        (WebCore::RenderListMarker::RenderListMarker):
        (WebCore::RenderListMarker::paint): Paint the selection highlight
        if selected: over the marker for image markers, under the marker for all other
        markers.
        (WebCore::RenderListMarker::setSelectionState): Added.
        (WebCore::RenderListMarker::selectionRect): Added.
        (WebCore::RenderListMarker::selectionColor): Added. Ensures that the selection
        color is transparent for image markers.
        * rendering/render_list.h:
        (WebCore::RenderListMarker::selectionState):
        (WebCore::RenderListMarker::canBeSelectionLeaf):
        * rendering/render_replaced.cpp
        (WebCore::RenderReplaced::selectionColor): Changed to use the selectionColorImageOverlayAlpha
        constant.

2006-04-16  Mitz Pettel  <opendarwin.org@mitzpettel.com>

        Reviewed by Darin.

        - fix http://bugs.webkit.org/show_bug.cgi?id=8420
          iExploder(#12): Assertion failure in RenderContainer::removeChildNode

        Test: fast/forms/button-inner-block-reuse.html

        Buttons have a distinguished anonymous child that holds all their other
        descendants. Descendants ended up in a sibling anonymous block as the
        initial anonymous child was being reused to hold the initial part of an
        inline that got split.

        * rendering/RenderInline.cpp:
        (WebCore::RenderInline::splitFlow): Check if the anonymous block's parent
        allows us to reuse it.
        * rendering/RenderObject.h:
        (WebCore::RenderObject::allowsReusingAnonymousChild): Added. Returns true.
        * rendering/render_button.h:
        (WebCore::RenderButton::allowsReusingAnonymousChild): Added. Returns false.

2006-04-16  Mitz Pettel  <opendarwin.org@mitzpettel.com>

        Reviewed by Justin.

        - fix http://bugs.webkit.org/show_bug.cgi?id=8394
          Editable region does not accept dropped text if there is no selection

        Test: editing/pasteboard/drop-text-without-selection.html

        * bridge/mac/WebCoreFrameBridge.mm:
        (-[WebCoreFrameBridge documentFragmentWithText:]): Changed to allow
        creating a fragment regardless of the selection.

2006-04-16  Mitz Pettel  <opendarwin.org@mitzpettel.com>

        Reviewed by Darin.

        - WebCore part of fix for http://bugs.webkit.org/show_bug.cgi?id=8324
          REGRESSION: textarea :focus not applied immediately

        * bridge/mac/WebCoreFrameBridge.h:
        * kwq/KWQComboBox.mm:
        (-[KWQPopUpButton becomeFirstResponder]): Added call to formControlIsBecomingFirstResponder:.
        (-[KWQPopUpButton resignFirstResponder]): Cleaned up.
        * kwq/KWQListBox.mm: Ditto.
        (-[KWQTableView becomeFirstResponder]):
        (-[KWQTableView resignFirstResponder]):
        * kwq/KWQSlider.mm:
        (-[KWQSlider becomeFirstResponder]): Added call to formControlIsBecomingFirstResponder: and
        cleaned up.
        (-[KWQSlider resignFirstResponder]): Cleaned up.
        * platform/mac/WebCoreTextArea.mm:
        (-[WebCoreTextView becomeFirstResponder]): Added call to formControlIsBecomingFirstResponder:.
        (-[WebCoreTextView resignFirstResponder]): Cleaned up.
        * platform/mac/WebCoreTextField.mm:
        (-[KWQTextFieldController setHasFocus:]): Added call to formControlIsBecomingFirstResponder:.
        * manual-tests/textarea-focus.html: Added.

2006-04-16  Darin Adler  <darin@apple.com>

        Reviewed by Adele and Justin.

        - fix http://bugs.webkit.org/show_bug.cgi?id=8298
          REGRESSION: Crash occurs when attempting to drag selection into
          Depart/Return input fields at http://www.travelocity.com/
        - remove the mutation event listener that's installed all the time,
          since it slows things down a bit

        Calling SelectionController::nodeWillBeRemoved from Document::notifyBeforeNodeRemoval
        fixes the crash, which was happening because the call that was removing the text
        node, removeChildren, does not send a "node removed" mutation event (it sends a
        "subtree modified" mutation event instead). So this change alone fixes the crash.

        But I also changed setInnerText to not blow away the text node each time the value
        is changed, and that makes the test case behave even better -- you don't even lose
        the selection; it works as it did with the NSTextField-based text field.

        * manual-tests/input-empty-on-focus.html: Added.

        * page/Frame.h: Tweaked a few comments and functions related to selection.
        * page/Frame.cpp: (WebCore::Frame::dragCaret): Made non-const.

        * dom/Document.cpp: (WebCore::Document::notifyBeforeNodeRemoval):
        Call nodeWillBeRemoved on the two selection controllers before removing
        a node from the document.

        * editing/SelectionController.h: Tweak formatting. Remove MutationListener
        class and m_mutationListener field.
        * editing/SelectionController.cpp:
        (WebCore::SelectionController::SelectionController): Remove code to set up
        the mutation event listener.
        (WebCore::SelectionController::setSelection): Remove code to maintain the
        mutation event listener.

        * html/HTMLElement.cpp:
        (WebCore::HTMLElement::setInnerHTML): In cases where the container has only a
        single child use replaceChild, and in cases where the HTML being inserted
        also has only a single child and both are text nodes use setData. It's common
        to use setInnerHTML to set something that's just text.
        (WebCore::HTMLElement::setInnerText): Same as above, but simpler since the
        thing we're replacing with is always text.

2006-04-16  Kevin Ollivier  <kevino@theolliviers.com>

        Reviewed by Darin.

        - fix http://bugs.webkit.org/show_bug.cgi?id=8417
          make-css-file-arrays.pl hangs when run on Linux

        * css/make-css-file-arrays.pl: Remove the "-" parameter from the invocation of cpp,
        which means "send output to stdout". It's optional on Mac OS X, and is causing a
        hang on Linux.
        * rendering/RenderArena.cpp: Added a missing include of <assert.h>.

2006-04-15  Darin Adler  <darin@apple.com>

        - removed references to a couple files that are obsolete
          but were still in the Windows project file

        * WebCore.vcproj/WebCore/WebCore.vcproj: Remove kjs_views.h and .cpp.

2006-04-15  Mitz Pettel  <opendarwin.org@mitzpettel.com>

        Reviewed by Maciej.

        - fix http://bugs.webkit.org/show_bug.cgi?id=8405
          REGRESSION: Web Inspector's Style pane is blank

        * bindings/js/kjs_window.cpp:
        (KJS::Window::isSafeScript): Use isEmpty() instead of isNull() for checking
        the domain to determine if the document in a local file. 

2006-04-14  David Hyatt  <hyatt@apple.com>

        CSS vendor-specific property/value cleanup.  Properly qualify background-clip,
        background-origin, border-image and the border-radius properties.  Make sure
        our overflow extensions of marquee and overlay are qualified as well.  Rename
        the -khtml- extension to -webkit.

        Reviewed by beth

        * bindings/js/kjs_css.cpp:
        (KJS::cssPropertyName):
        * bindings/objc/DOMCSS.mm:
        (-[DOMCSSStyleDeclaration _fontSizeDelta]):
        (-[DOMCSSStyleDeclaration _setFontSizeDelta:]):
        * bindings/objc/DOMHTML.mm:
        (-[DOMHTMLInputElement _setAutofilled:]):
        * bridge/mac/FrameMac.h:
        * bridge/mac/FrameMac.mm:
        * css/CSSComputedStyleDeclaration.cpp:
        (WebCore::):
        (WebCore::valueForTextAlign):
        (WebCore::CSSComputedStyleDeclaration::getPropertyCSSValue):
        * css/CSSGrammar.y:
        * css/CSSPropertyNames.in:
        * css/CSSValueKeywords.in:
        * css/css_base.cpp:
        (WebCore::CSSSelector::extractPseudoType):
        * css/css_valueimpl.cpp:
        (WebCore::):
        * css/css_valueimpl.h:
        * css/cssparser.cpp:
        (WebCore::CSSParser::parseRule):
        (WebCore::CSSParser::parseValue):
        (WebCore::CSSParser::parseColor):
        (WebCore::CSSParser::parseDeclaration):
        (WebCore::CSSParser::parseBackgroundShorthand):
        (WebCore::CSSParser::parseBackgroundColor):
        (WebCore::CSSParser::parseBackgroundProperty):
        (WebCore::CSSParser::parseFontFamily):
        (WebCore::CSSParser::parseShadow):
        * css/cssstyleselector.cpp:
        (WebCore::CSSStyleSelector::applyDeclarations):
        (WebCore::CSSStyleSelector::applyProperty):
        (WebCore::CSSStyleSelector::getColorFromPrimitiveValue):
        * css/cssstyleselector.h:
        * css/html4.css:
        * css/quirks.css:
        * css/tokenizer.flex:
        * editing/ApplyStyleCommand.cpp:
        (WebCore::StyleChange::init):
        (WebCore::ApplyStyleCommand::applyRelativeFontStyleChange):
        (WebCore::ApplyStyleCommand::removeInlineStyle):
        * editing/CompositeEditCommand.cpp:
        (WebCore::blockPlaceholderClassString):
        * editing/JSEditor.cpp:
        * editing/ReplaceSelectionCommand.cpp:
        (WebCore::ReplaceSelectionCommand::fixupNodeStyles):
        (WebCore::styleForNode):
        * editing/htmlediting.cpp:
        (WebCore::rebalanceWhitespaceInTextNode):
        * html/HTMLElement.cpp:
        (WebCore::HTMLElement::addHTMLAlignment):
        (WebCore::HTMLElement::setContentEditable):
        * html/html_blockimpl.cpp:
        (WebCore::HTMLDivElement::parseMappedAttribute):
        (WebCore::HTMLParagraphElement::parseMappedAttribute):
        (WebCore::HTMLMarqueeElement::parseMappedAttribute):
        * html/html_inlineimpl.cpp:
        (WebCore::HTMLFontElement::parseMappedAttribute):
        * html/html_tableimpl.cpp:
        (WebCore::HTMLTablePartElement::parseMappedAttribute):
        (WebCore::HTMLTableCellElement::parseMappedAttribute):
        * page/Frame.cpp:
        (WebCore::Frame::canMouseDownStartSelect):
        * page/Frame.h:
        * rendering/RenderObject.cpp:
        (WebCore::RenderObject::draggableNode):

2006-04-14  Eric Seidel  <eseidel@apple.com>

        Reviewed by beth.

        Fix win32 build.

        * WebCore.vcproj/WebCore/WebCore.vcproj:
        * page/FramePrivate.h:

2006-04-04  Eric Seidel  <eseidel@apple.com>

        Reviewed by darin.

        Fix build-warnings in cairo code.
        http://bugs.webkit.org/show_bug.cgi?id=8176

        * platform/cairo/cairo/src/cairo-win32-surface.c:
        (_cairo_win32_print_gdi_error):
        (_cairo_win32_surface_create_for_dc):
        (_composite_alpha_blend):
        (cairo_win32_surface_create):
        * platform/cairo/pixman/src/iccolor.c:
        (pixman_pixel_to_color):

2006-04-14  David Hyatt  <hyatt@apple.com>

        Fix for 8333, make sure newlines in whitespace:pre (and friends) get
        line boxes created for them.  This resolves all the weird selection/navigation
        issues that arise by not creating lines (and thus not having navigable positions
        on those lines).

        This checkin is also removing all of the layout test hacks that have piled
        up, so layout test results are being regenerated completely.

        Reviewed by eric

        * dom/Position.cpp:
        (WebCore::Position::downstream):
        * editing/CompositeEditCommand.cpp:
        (WebCore::CompositeEditCommand::moveParagraph):
        * editing/DeleteSelectionCommand.cpp:
        (WebCore::DeleteSelectionCommand::doApply):
        * editing/visible_units.cpp:
        (WebCore::startOfParagraph):
        (WebCore::endOfParagraph):
        * kwq/RenderTreeAsText.cpp:
        (getTagName):
        (operator<<):
        * rendering/InlineTextBox.cpp:
        (WebCore::InlineTextBox::selectionState):
        (WebCore::InlineTextBox::isLineBreak):
        (WebCore::InlineTextBox::nodeAtPoint):
        (WebCore::InlineTextBox::paint):
        (WebCore::InlineTextBox::offsetForPosition):
        (WebCore::InlineTextBox::positionForOffset):
        * rendering/InlineTextBox.h:
        * rendering/RenderBR.cpp:
        * rendering/RenderBR.h:
        * rendering/RenderText.cpp:
        (WebCore::RenderText::atLineWrap):
        (WebCore::RenderText::caretRect):
        (WebCore::RenderText::height):
        (WebCore::RenderText::inlineBox):
        * rendering/bidi.cpp:
        (WebCore::RenderBlock::computeHorizontalPositionsForLine):
        (WebCore::RenderBlock::layoutInlineChildren):
        (WebCore::RenderBlock::findNextLineBreak):
        * rendering/render_line.h:
        (WebCore::InlineBox::isLineBreak):

2006-04-13  Darin Adler  <darin@apple.com>

        Reviewed by Geoff.

        - moved a few things out of kwq and cleaned up the
          Java-applet-related renderers

        * WebCore.vcproj/WebCore/WebCore.vcproj: Updated for file location
        and name changes.
        * WebCore.xcodeproj/project.pbxproj: Ditto.

        * kwq/JavaAppletWidget.h: Moved.
        * kwq/JavaAppletWidget.mm: Moved.
        * kwq/RegularExpression.cpp: Moved.
        * kwq/RegularExpression.h: Moved.
        * kwq/RenderTreeAsText.cpp: Moved.
        * kwq/RenderTreeAsText.h: Moved.
        * rendering/render_applet.cpp: Moved.
        * rendering/render_applet.h: Moved.

        * bridge/JavaAppletWidget.h: Moved here.
        * bridge/mac/JavaAppletWidget.mm: Moved here.
        * platform/RegularExpression.cpp: Moved here.
        * platform/RegularExpression.h: Moved here.
        * rendering/RenderTreeAsText.cpp: Moved here.
        * rendering/RenderTreeAsText.h: Moved here.

        * rendering/RenderApplet.h: Moved here and made changes.
        Removed unused element() function.
        * rendering/RenderApplet.cpp: Moved here and made changes.
        (WebCore::RenderApplet::RenderApplet): Changed parameter type to
        be more precise (HTMLAppletElement).
        (WebCore::RenderApplet::intrinsicWidth): Removed unnecessary type
        cast and simplified.
        (WebCore::RenderApplet::intrinsicHeight): Ditto.
        (WebCore::RenderApplet::createWidgetIfNecessary): Straightened out
        the if statements and changed to use node() instead of element().
        (WebCore::RenderApplet::layout): Removed unneeded check before
        calling createWidgetIfNecessary.

        * rendering/RenderEmptyApplet.h: Moved here and made changes.
        Removed unneeded overrides of intrinsicWidth and intrinsicHeight.
        * rendering/RenderEmptyApplet.cpp: Moved here and made changes.
        (WebCore::RenderEmptyApplet::RenderEmptyApplet): Added code to
        set the intrinsic width and height.

        * rendering/render_replaced.cpp:
        (WebCore::RenderWidget::RenderWidget): Initialize m_widget
        with contructor syntax.
        (WebCore::RenderWidget::paint): Changed _tx and _ty to be just
        tx and ty. Rearranged the code so the transparent wash will draw
        even if m_widget is 0.

        * html/html_objectimpl.cpp: Update includes for new file names.

2006-04-12  Geoffrey Garen  <ggaren@apple.com>

        Reviewed by Darin.

        - Fixed <rdar://problem/4478467> document.defaultView should return 
        the window object
        
        Also made part of the window object autogenerated by IDL file.
        
        * DerivedSources.make: Added /page to IDL file search path, added
        JSDOMWindow.h, removed kjs_views.lut.h
        * WebCore.xcodeproj/project.pbxproj: Added missing files, removed
        obsolete files
        * bindings/js/kjs_dom.cpp:
        * bindings/js/kjs_events.cpp:
        * bindings/js/kjs_proxy.cpp:
        (WebCore::KJSProxy::initScriptIfNeeded):
        * bindings/js/kjs_views.cpp: Removed.
        * bindings/js/kjs_views.h: Removed.
        * bindings/js/kjs_window.cpp: Removed document property -- it now
        belongs to JSDOMWindow. Added toJS and toDOMWindow.
        (KJS::Window::Window):
        (KJS::Window::impl):
        (KJS::Window::getValueProperty):
        (KJS::Window::clear): Added call to setPrototype to ensure
        that the prototype gets cleared during navigation. (Previously
        this wasn't an issue because the window object had no real prototype.)
        (WebCore::toJS):
        (WebCore::toDOMWindow):
        * bindings/js/kjs_window.h:
        (KJS::Window::):
        * bindings/objc/DOMCSS.mm: Added NULL checks for the AbstractView
        (Presumably this is an issue after the window is closed.) Typedef-ed
        AbstractView as DOMWindow. I could have just replaced AbstractView
        with DOMWindow, but I think it's clearer to say, "There's this thing
        called the AbstractView, but really it's just the window."
        (-[DOMDocument getComputedStyle::]):
        (-[DOMDocument getMatchedCSSRules::]):
        * bindings/objc/DOMViews.mm:
        * bindings/objc/DOMViewsInternal.h:
        * bindings/scripts/CodeGeneratorJS.pm: Removed unused
        GetLegacyImplementationIncludes. Added support for DOMWindow and new
        "DoNotCache" attribute. Replaced C macros with text because (1) it
        makes the generated source easier to read and debug and (2) it made 
        it much easier to implement the DoNotCache attribute.
        * bindings/scripts/IDLParser.pm: Return a hash reference instead of
        a hash, because otherwise an interface with more than one attribute
        returns too many arguments to be processed.
        * bridge/mac/FrameMac.mm:
        * dom/AbstractView.cpp: Removed.
        * dom/AbstractView.h: Removed.
        * dom/Document.cpp:
        (WebCore::Document::Document):
        (WebCore::Document::defaultView):
        * dom/Document.h:
        * dom/Document.idl:
        * dom/KeyboardEvent.idl:
        * dom/MouseEvent.idl:
        * dom/Position.cpp:
        * dom/UIEvent.idl:
        * dom/dom2_eventsimpl.h:
        * page/DOMWindow.cpp: Added.
        (WebCore::DOMWindow::DOMWindow):
        (WebCore::DOMWindow::frame):
        (WebCore::DOMWindow::disconnectFrame):
        (WebCore::DOMWindow::document):
        (WebCore::DOMWindow::getComputedStyle):
        (WebCore::DOMWindow::getMatchedCSSRules):
        * page/DOMWindow.h: Added.
        * page/DOMWindow.idl: Added.
        * page/Frame.cpp:
        (WebCore::Frame::~Frame): Disconnect the new DOMWindow object in
        addition to the Window object. Maybe we can unify this in the future.
        (WebCore::Frame::tree):
        (WebCore::Frame::domWindow):
        * page/Frame.h:
        * page/FramePrivate.h:

2006-04-13  Alexey Proskuryakov  <ap@nypop.com>

        Reviewed by Darin.

        - fix http://bugs.webkit.org/show_bug.cgi?id=7602
        Only use fixupChar for entities

        * html/HTMLTokenizer.cpp: Only use fixUpChar() when handling entities.
        (WebCore::HTMLTokenizer::parseSpecial):
        (WebCore::HTMLTokenizer::parseText):
        (WebCore::HTMLTokenizer::parseTag):
        (WebCore::HTMLTokenizer::write):
        * platform/StreamingTextDecoder.cpp:
        (WebCore::StreamingTextDecoder::convert): Remove the special case for Latin-1, because it is already handled 
        via effectiveEncoding().
        * platform/StreamingTextDecoder.h: Remove convertLatin1().

2006-04-13  Darin Adler  <darin@apple.com>

        * platform/mac/GraphicsContextMac.mm: Fix one no-SVG compile problem by adding
        a "using namespace std".

2006-04-12  Darin Adler  <darin@apple.com>

        Rubber-stamped by Anders.

        - fix Windows build

        * WebCore.vcproj/Image\ Viewer/Image\ Viewer.vcproj: Add loader directory.

        - use std::min/max exclusively intead of kMin/Max
        - eliminate KWQDef.h since all it had left in it was kMin/Max

        * WebCore.vcproj/WebCore/WebCore.vcproj: Remove KWQDef.h.
        * WebCore.xcodeproj/project.pbxproj: Ditto.

        * kwq/KWQDef.h: Removed.

        * bridge/mac/FrameMac.mm:
        (WebCore::FrameMac::attributedString):
        * bridge/mac/WebCoreFrameBridge.mm:
        (-[WebCoreFrameBridge computePageRectsWithPrintWidthScaleFactor:printHeight:]):
        * css/cssstyleselector.cpp:
        (WebCore::CSSStyleSelector::applyProperty):
        (WebCore::CSSStyleSelector::getComputedSizeFromSpecifiedSize):
        (WebCore::CSSStyleSelector::fontSizeForKeyword):
        * dom/Document.cpp:
        (WebCore::Document::minimumLayoutDelay):
        (WebCore::Document::addMarker):
        * dom/StyledElement.cpp:
        (WebCore::StyledElement::addCSSColor):
        * dom/xml_tokenizer.cpp:
        (WebCore::OffsetBuffer::readOutBytes):
        * editing/ApplyStyleCommand.cpp:
        (WebCore::ApplyStyleCommand::applyRelativeFontStyleChange):
        * editing/CompositeEditCommand.cpp:
        (WebCore::CompositeEditCommand::deleteInsignificantText):
        * editing/TextIterator.cpp:
        (WebCore::TextIterator::handleTextNode):
        (WebCore::TextIterator::handleTextBox):
        (WebCore::CharacterIterator::string):
        (WebCore::findPlainText):
        * editing/htmlediting.cpp:
        (WebCore::rangeCompliantEquivalent):
        * editing/markup.cpp:
        (WebCore::renderedText):
        * editing/visible_units.cpp:
        (WebCore::startOfParagraph):
        * html/HTMLSelectElement.cpp:
        (WebCore::HTMLSelectElement::parseMappedAttribute):
        * html/HTMLTokenizer.cpp:
        (WebCore::HTMLTokenizer::parseComment):
        (WebCore::HTMLTokenizer::parseEntity):
        (WebCore::HTMLTokenizer::parseTag):
        (WebCore::HTMLTokenizer::enlargeBuffer):
        (WebCore::HTMLTokenizer::enlargeScriptBuffer):
        * html/html_imageimpl.cpp:
        (WebCore::HTMLAreaElement::getRegion):
        * html/html_tableimpl.cpp:
        (WebCore::HTMLTableElement::parseMappedAttribute):
        * ksvg2/css/SVGCSSParser.cpp:
        (WebCore::CSSParser::parseSVGPaint):
        (WebCore::CSSParser::parseSVGColor):
        * kwq/KWQComboBox.mm:
        (QComboBox::sizeHint):
        * kwq/KWQListBox.mm:
        (QListBox::sizeForNumberOfLines):
        * kwq/KWQSlider.mm:
        (QSlider::setValue):
        * loader/Cache.cpp:
        (WebCore::Cache::setSize):
        * page/Frame.cpp:
        (WebCore::Frame::forceLayoutWithPageWidthRange):
        * platform/DeprecatedPtrListImpl.h:
        * platform/DeprecatedString.cpp:
        (ucstrcmp):
        * platform/DeprecatedString.h:
        * platform/DeprecatedValueListImpl.h:
        * platform/mac/GraphicsContextMac.mm:
        (WebCore::GraphicsContext::addRoundedRectClip):
        * platform/mac/WebCoreTextArea.mm:
        (-[WebCoreTextView _trackResizeFromMouseDown:]):
        * rendering/InlineTextBox.cpp:
        (WebCore::InlineTextBox::isSelected):
        (WebCore::InlineTextBox::selectionRect):
        (WebCore::InlineTextBox::placeEllipsisBox):
        (WebCore::InlineTextBox::selectionStartEnd):
        (WebCore::InlineTextBox::paintMarkedTextBackground):
        (WebCore::InlineTextBox::paintSpellingMarker):
        (WebCore::InlineTextBox::paintTextMatchMarker):
        (WebCore::InlineTextBox::paintMarkedTextUnderline):
        * rendering/RenderBlock.cpp:
        (WebCore::RenderBlock::overflowRect):
        (WebCore::RenderBlock::layoutBlock):
        (WebCore::RenderBlock::collapseMargins):
        (WebCore::RenderBlock::clearFloatsIfNeeded):
        (WebCore::RenderBlock::estimateVerticalPosition):
        (WebCore::RenderBlock::determineHorizontalPosition):
        (WebCore::RenderBlock::setCollapsedBottomMargin):
        (WebCore::RenderBlock::handleBottomOfBlock):
        (WebCore::RenderBlock::layoutBlockChildren):
        (WebCore::RenderBlock::fillVerticalSelectionGap):
        (WebCore::RenderBlock::fillLeftSelectionGap):
        (WebCore::RenderBlock::fillRightSelectionGap):
        (WebCore::RenderBlock::positionNewFloats):
        (WebCore::RenderBlock::nearestFloatBottom):
        (WebCore::RenderBlock::lowestPosition):
        (WebCore::RenderBlock::rightmostPosition):
        (WebCore::RenderBlock::leftmostPosition):
        (WebCore::RenderBlock::getClearDelta):
        (WebCore::RenderBlock::calcMinMaxWidth):
        (WebCore::RenderBlock::calcInlineMinMaxWidth):
        (WebCore::RenderBlock::calcBlocminMaxWidth):
        * rendering/RenderBlock.h:
        * rendering/RenderBox.cpp:
        (WebCore::RenderBox::calcBorderBoxWidth):
        (WebCore::RenderBox::calcBorderBoxHeight):
        (WebCore::RenderBox::calcContentBoxWidth):
        (WebCore::RenderBox::calcContentBoxHeight):
        (WebCore::RenderBox::paintRootBoxDecorations):
        (WebCore::RenderBox::paintBoxDecorations):
        (WebCore::RenderBox::calcWidth):
        (WebCore::RenderBox::calcWidthUsing):
        (WebCore::RenderBox::calcHeight):
        (WebCore::RenderBox::calcPercentageHeight):
        (WebCore::RenderBox::calcReplacedWidth):
        (WebCore::RenderBox::calcReplacedHeight):
        (WebCore::RenderBox::calcAbsoluteHorizontalValues):
        (WebCore::RenderBox::calcAbsoluteVerticalValues):
        * rendering/RenderCanvas.cpp:
        (WebCore::RenderCanvas::layout):
        * rendering/RenderFlexibleBox.cpp:
        (WebCore::RenderFlexibleBox::calcMinMaxWidth):
        (WebCore::RenderFlexibleBox::layoutHorizontalBox):
        (WebCore::RenderFlexibleBox::layoutVerticalBox):
        (WebCore::RenderFlexibleBox::allowedChildFlex):
        * rendering/RenderFlow.cpp:
        (WebCore::RenderFlow::paintLines):
        (WebCore::RenderFlow::lowestPosition):
        (WebCore::RenderFlow::rightmostPosition):
        (WebCore::RenderFlow::leftmostPosition):
        (WebCore::RenderFlow::paintOutlineForLine):
        * rendering/RenderImage.cpp:
        (WebCore::RenderImage::imageChanged):
        (WebCore::RenderImage::calcReplacedWidth):
        (WebCore::RenderImage::calcReplacedHeight):
        * rendering/RenderLayer.cpp:
        (WebCore::RenderLayer::scrollRectToVisible):
        (WebCore::RenderLayer::computeScrollDimensions):
        (WebCore::RenderLayer::updateScrollInfoAfterLayout):
        (WebCore::RenderLayer::absoluteBoundingBox):
        (WebCore::Marquee::marqueeSpeed):
        (WebCore::Marquee::computePosition):
        (WebCore::Marquee::timerFired):
        * rendering/RenderObject.cpp:
        (WebCore::RenderObject::drawBorder):
        (WebCore::RenderObject::paintBorderImage):
        (WebCore::RenderObject::paintBorder):
        (WebCore::RenderObject::repaintAfterLayoutIfNeeded):
        * rendering/RenderTable.cpp:
        (WebCore::RenderTable::calcWidth):
        (WebCore::RenderTable::layout):
        (WebCore::RenderTable::paintBoxDecorations):
        * rendering/RenderTableCell.cpp:
        (WebCore::RenderTableCell::paintBackgroundsBehindCell):
        * rendering/RenderTableSection.cpp:
        (WebCore::RenderTableSection::layoutRows):
        (WebCore::RenderTableSection::lowestPosition):
        (WebCore::RenderTableSection::rightmostPosition):
        (WebCore::RenderTableSection::leftmostPosition):
        * rendering/RenderText.cpp:
        (WebCore::RenderText::caretRect):
        (WebCore::RenderText::calcMinMaxWidth):
        (WebCore::RenderText::minXPos):
        (WebCore::RenderText::width):
        (WebCore::RenderText::caretMinOffset):
        (WebCore::RenderText::caretMaxOffset):
        * rendering/bidi.cpp:
        (WebCore::RenderBlock::computeHorizontalPositionsForLine):
        (WebCore::RenderBlock::layoutInlineChildren):
        (WebCore::RenderBlock::checkLinesForOverflow):
        * rendering/render_form.cpp:
        (WebCore::RenderLineEdit::setSelectionStart):
        (WebCore::RenderLineEdit::setSelectionEnd):
        (WebCore::RenderLineEdit::setSelectionRange):
        (WebCore::RenderFieldset::layoutLegend):
        (WebCore::RenderFieldset::paintBoxDecorations):
        (WebCore::RenderSelect::layout):
        (WebCore::RenderTextArea::calcMinMaxWidth):
        (WebCore::RenderSlider::updateFromElement):
        * rendering/render_frames.cpp:
        (WebCore::RenderFrameSet::layout):
        * rendering/render_line.cpp:
        (WebCore::InlineFlowBox::placeBoxesHorizontally):
        (WebCore::InlineFlowBox::verticallyAlignBoxes):
        (WebCore::InlineFlowBox::adjustMaxAscentAndDescent):
        (WebCore::InlineFlowBox::placeBoxesVertically):
        (WebCore::InlineFlowBox::paintBackgroundAndBorder):
        * rendering/render_line.h:
        (WebCore::RootInlineBox::selectionHeight):
        * rendering/render_list.cpp:
        (WebCore::RenderListItem::positionListMarker):
        * rendering/render_replaced.cpp:
        (WebCore::RenderReplaced::shouldPaint):
        * rendering/table_layout.cpp:
        (WebCore::FixedTableLayout::calcMinMaxWidth):
        (WebCore::AutoTableLayout::recalcColumn):
        (WebCore::AutoTableLayout::calcMinMaxWidth):
        (WebCore::AutoTableLayout::calcEffectiveWidth):
        (WebCore::AutoTableLayout::layout):
        Use min/max instead of kMin/kMax.

2006-04-12  Darin Adler  <darin@apple.com>

        Rubber-stamped by Anders.

        - get ready for some more de-KWQ-ing done by the renaming script in two ways
            1) stop using forwarding headers for things within WebCore
            2) remove a bit of unused stuff

        * loader/CachedImage.h:
        * loader/CachedImage.cpp:
        * loader/DocLoader.cpp:
        * loader/DocLoader.h:
        * page/Frame.cpp:
        * xml/XSLTProcessor.cpp:
        Removed unused showAnimations functions and data. We can add back later if we need it.
        And if we do, we won't use a typedef from KHTMLSettings.

        * ForwardingHeaders/java: Removed.
        * ForwardingHeaders/java/kjavaappletwidget.h: Removed.
        * ForwardingHeaders/khtml_settings.h: Removed.
        * ForwardingHeaders/kio: Removed.
        * ForwardingHeaders/kio/global.h: Removed.
        * ForwardingHeaders/ksslkeygen.h: Removed.
        * ForwardingHeaders/q3ptrlist.h: Removed.
        * ForwardingHeaders/q3valuelist.h: Removed.
        * ForwardingHeaders/qcombobox.h: Removed.
        * ForwardingHeaders/qfontmetrics.h: Removed.
        * ForwardingHeaders/qlineedit.h: Removed.
        * ForwardingHeaders/qmatrix.h: Removed.
        * ForwardingHeaders/qptrlist.h: Removed.
        * ForwardingHeaders/qptrqueue.h: Removed.
        * ForwardingHeaders/qregexp.h: Removed.
        * ForwardingHeaders/qscrollbar.h: Removed.
        * ForwardingHeaders/qtextedit.h: Removed.
        * ForwardingHeaders/qtextstream.h: Removed.
        * ForwardingHeaders/qvaluelist.h: Removed.
        * ForwardingHeaders/qwmatrix.h: Removed.

        * WebCore+SVG/DOMList.h:
        * bindings/js/kjs_dom.cpp:
        * bindings/js/kjs_dom.h:
        * bindings/js/kjs_window.cpp:
        * css/css_stylesheetimpl.h:
        * css/css_valueimpl.cpp:
        * css/css_valueimpl.h:
        * css/cssstyleselector.cpp:
        * dom/CharacterData.cpp:
        * dom/Document.cpp:
        * dom/Document.h:
        * dom/EventTargetNode.cpp:
        * dom/Node.cpp:
        * editing/BreakBlockquoteCommand.h:
        * editing/htmlediting.cpp:
        * html/FormDataList.h:
        * html/HTMLKeygenElement.cpp:
        * html/HTMLTokenizer.h:
        * html/html_objectimpl.cpp:
        * kcanvas/KCanvasFilters.cpp:
        * kcanvas/KCanvasMatrix.cpp:
        * kcanvas/KCanvasMatrix.h:
        * kcanvas/KCanvasPath.cpp:
        * kcanvas/KCanvasPath.h:
        * kcanvas/KCanvasResources.cpp:
        * kcanvas/KCanvasTreeDebug.h:
        * kcanvas/RenderForeignObject.h:
        * kcanvas/RenderPath.h:
        * kcanvas/RenderSVGImage.h:
        * kcanvas/RenderSVGText.h:
        * kcanvas/device/KRenderingPaintServerGradient.cpp:
        * kcanvas/device/KRenderingPaintServerPattern.cpp:
        * kcanvas/device/KRenderingPaintServerSolid.cpp:
        * kcanvas/device/quartz/KCanvasItemQuartz.h:
        * kcanvas/device/quartz/KCanvasResourcesQuartz.h:
        * ksvg2/svg/SVGColor.cpp:
        * ksvg2/svg/SVGComponentTransferFunctionElement.cpp:
        * ksvg2/svg/SVGDocument.h:
        * ksvg2/svg/SVGFEBlendElement.cpp:
        * ksvg2/svg/SVGFEColorMatrixElement.cpp:
        * ksvg2/svg/SVGFEComponentTransferElement.cpp:
        * ksvg2/svg/SVGFECompositeElement.cpp:
        * ksvg2/svg/SVGFEDiffuseLightingElement.cpp:
        * ksvg2/svg/SVGFEDisplacementMapElement.cpp:
        * ksvg2/svg/SVGFEGaussianBlurElement.cpp:
        * ksvg2/svg/SVGFELightElement.cpp:
        * ksvg2/svg/SVGFEMergeElement.cpp:
        * ksvg2/svg/SVGFEOffsetElement.cpp:
        * ksvg2/svg/SVGFESpecularLightingElement.cpp:
        * ksvg2/svg/SVGFETileElement.cpp:
        * ksvg2/svg/SVGFETurbulenceElement.cpp:
        * ksvg2/svg/SVGFitToViewBox.cpp:
        * ksvg2/svg/SVGLengthList.cpp:
        * ksvg2/svg/SVGMatrix.h:
        * ksvg2/svg/SVGNumberList.cpp:
        * ksvg2/svg/SVGPreserveAspectRatio.cpp:
        * ksvg2/svg/SVGSVGElement.cpp:
        * ksvg2/svg/SVGStringList.cpp:
        * ksvg2/svg/SVGStyledElement.h:
        * ksvg2/svg/SVGStyledTransformableElement.cpp:
        * ksvg2/svg/SVGTransformable.cpp:
        * ksvg2/svg/SVGURIReference.h:
        * ksvg2/svg/svgpathparser.cpp:
        * kwq/KWQKHTMLSettings.h:
        * loader/Cache.h:
        * loader/CachedObject.h:
        * loader/Decoder.cpp:
        * loader/FormData.h:
        * loader/loader.h:
        * page/Frame.h:
        * page/FramePrivate.h:
        * platform/Font.cpp:
        * platform/SegmentedString.h:
        * platform/mac/FontMac.mm:
        * platform/mac/WebCoreTextField.mm:
        * rendering/RenderBlock.cpp:
        * rendering/RenderObject.cpp:
        * rendering/RenderTable.cpp:
        * rendering/RenderTableCell.cpp:
        * rendering/RenderTableCol.cpp:
        * rendering/RenderTableSection.cpp:
        * rendering/bidi.h:
        * rendering/break_lines.cpp:
        * rendering/render_applet.cpp:
        * rendering/render_form.cpp:
        * rendering/render_form.h:
        * rendering/render_frames.cpp:
        * rendering/render_style.h:
        * xml/xmlhttprequest.cpp:
        Updated includes.

        * WebCore.xcodeproj/project.pbxproj: Resorted a couple things.

2006-04-12  Adele Peterson  <adele@apple.com>

        Reviewed by Darin and Tim O.

        WebCore part of fix for:
        http://bugs.webkit.org/show_bug.cgi?id=8061
        REGRESSION: New text fields need to send callbacks used by autocomplete

        Fix for:
        http://bugs.webkit.org/show_bug.cgi?id=8156
        FrameMac::submitForm is busted after Vector changes

        * bindings/objc/DOMHTML.mm:
        (-[DOMHTMLInputElement _rectOnScreen]): Use boundingBox method so this no longer relies on an NSTextField.  
        The old code is no longer needed because this method was used by autocomplete, and that was not enabled for password or search fields.
        (-[DOMHTMLInputElement _replaceCharactersInRange:withString:selectingFromIndex:]): New implementation that uses setValue and setSelectionRange
        instead of NSTextField specific code.
        (-[DOMHTMLInputElement _selectedRange]): Creates range by calling selectionStart and selectionEnd on the input element.
        (-[DOMHTMLInputElement _setAutofilled:]): Provides a way for the autofill code to set a flag on the input element so
         it knows when its value is set by autofill.  This is how we change the background color.
        * bindings/objc/DOMPrivate.h: Removed _displayedValue, _setDisplayedValue, _setBackgroundColor since these are no
         longer needed for the new text field implementation, and aren't used for remaining NSView-style password and search fields.
         Added _setAutofilled method.
        * bridge/mac/FrameMac.h: Added virtual clearRecordedFormValues and recordFormValue.  These were moved into Frame.cpp recently, which broke
        how Safari asked to add form values to the keychain.

        * bridge/mac/FrameMac.mm:
        (WebCore::createNSDictionary): Added. Converts a hashmap to an NSDictionary for m_formValuesAboutToBeSubmitted.  This is needed to fix the submit form bug.
        (WebCore::selectorForKeyEvent): Added.  This helper function converts key events into selectors that the autocomplete code needs to know about.
        (WebCore::FrameMac::FrameMac):
        (WebCore::FrameMac::submitForm): Convert saved form and formValues into DOMElement and NSMutableDictionary.
        (WebCore::FrameMac::textFieldDidBeginEditing): Added so the input element can send this notification over the bridge.
        (WebCore::FrameMac::textFieldDidEndEditing): ditto.
        (WebCore::FrameMac::textDidChangeInTextField): ditto.
        (WebCore::FrameMac::doTextFieldCommandFromEvent): ditto. Also calls selectorForKeyEvent.
        (WebCore::FrameMac::textWillBeDeletedInTextField): ditto.
        * page/Frame.cpp:
        (WebCore::Frame::textFieldDidBeginEditing): ditto.
        (WebCore::Frame::textFieldDidEndEditing): ditto.
        (WebCore::Frame::textDidChangeInTextField): ditto.
        (WebCore::Frame::doTextFieldCommandFromEvent): ditto.
        (WebCore::Frame::textWillBeDeletedInTextField): ditto.
        * page/Frame.h: ditto.
        * platform/PlatformString.h: (WebCore::String::replace): Added to use an existing version of StringImpl::replace.

        * rendering/RenderTextField.cpp:
        (WebCore::RenderTextField::setSelectionRange): Setting the selection here should close the typing command.
        (WebCore::RenderTextField::subtreeHasChanged): Calls textDidChangeInTextField.

        * dom/Document.cpp: (WebCore::Document::setFocusNode): Calls dispatchFocusEvent and dispatchBlurEvent instead of directly dispatching the events.  This gives the node a chance to do other work before dispatching the event.

        * dom/EventTargetNode.cpp:
        (WebCore:: EventTargetNode::dispatchFocusEvent): Added.
        (WebCore:: EventTargetNode::dispatchBlurEvent): Added.
        * dom/EventTargetNode.h:

        * html/HTMLInputElement.cpp:
        (WebCore::HTMLInputElement::init): initializes m_autofilled.
        (WebCore::HTMLInputElement::dispatchFocusEvent): Calls textFieldDidBeginEditing and then calls up to the base class
        (WebCore::HTMLInputElement::dispatchBlurEvent): Calls textFieldDidEndEditing and then calls up to the base class
        (WebCore::HTMLInputElement::defaultEventHandler): For keypress events, calls doTextFieldCommandFromEvent so the form delegate will
        have a chance to say whether or not it is going to handle the event.
       (WebCore::HTMLInputElement::isKeyboardFocusable): Uses isNonWidgetTextField instead of checking the inputType.
        (WebCore::HTMLInputElement::isMouseFocusable): ditto.
        (WebCore::HTMLInputElement::focus): ditto.
        (WebCore::HTMLInputElement::constrainValue): Uses isTextField instead of checking inputType.
        * html/HTMLFormElement.cpp: (WebCore::HTMLFormElement::submit): ditto.
        * html/HTMLInputElement.h:
        (WebCore::HTMLInputElement::isTextField): Added. Checks for TEXT, PASSWORD, and SEARCH
        (WebCore::HTMLInputElement::isNonWidgetTextField): Added.  Checks for all converted controls.
        (WebCore::HTMLInputElement::autofilled): Added.
        (WebCore::HTMLInputElement::setAutofilled): Added.
        * html/HTMLTextFieldInnerElement.cpp: (WebCore::HTMLTextFieldInnerElement::defaultEventHandler): Uses isNonWidgetTextField instead of checking the inputType.

        * editing/DeleteSelectionCommand.cpp: (WebCore::DeleteSelectionCommand::doApply):
         If the deletion is occuring in a text field, call textWillBeDeletedInTextField so the frame can
         call across the bridge to notify the form delegate.

        * css/css_base.cpp: (WebCore::CSSSelector::extractPseudoType): Added autofill string for "-khtml-autofill".
        * css/css_base.h: (WebCore::CSSSelector::): Added PseudoAutofill to enum.
        * css/cssstyleselector.cpp:
        (WebCore::CSSStyleSelector::checkOneSelector): Added case for PseudoAutofill that checks the input element's autofilled flag.
        (WebCore::CSSStyleSelector::getColorFromPrimitiveValue): Changed  -webkit-focus-ring-color to -khtml-focus-ring-color for consistency.
        * css/html4.css: Added background-color and background-image for input:-khtml-autofill style.
         Changed -webkit-focus-ring-color to -khtml-focus-ring-color for consistency.
        * css/CSSValueKeywords.in: ditto.
        * css/cssparser.cpp:
        (WebCore::CSSParser::parseValue): ditto.
        (WebCore::CSSParser::parseShadow): ditto.

2006-04-12  Mitz Pettel  <opendarwin.org@mitzpettel.com>
 
         Reviewed by hyatt
 
         - fix http://bugs.webkit.org/show_bug.cgi?id=4855
           List item's bullets fail to redraw correctly after their style is set with JavaScript
 
         * manual-tests/list-marker-repaint.html: Added.
         * rendering/RenderBlock.cpp:
         (WebCore::RenderBlock::layoutBlock): Call positionListMarker() after laying out
         the children.
         (WebCore::RenderBlock::calcInlineMinMaxWidth): Call calcWidth() on the child
         if we are going to use its marginLeft() or marginRight(), which is if they are
         given as a percentage or if the child is a list marker.
         * rendering/RenderBlock.h:
         (WebCore::RenderBlock::positionListMarker): Added this virtual function which
         RenderListItem implements and which is called from layoutBlock().
         * rendering/RenderFlow.cpp:
         (WebCore::RenderFlow::addFocusRingRects): Avoid adding focus rings around outside list
         markers. Previously it did not matter since the markers had zero width.
         * rendering/bidi.cpp:
         (WebCore::RenderBlock::findNextLineBreak): Outside list markers should not contribute
         to the line width, even now that they have width.
         * rendering/render_line.cpp:
         (WebCore::InlineFlowBox::placeBoxesHorizontally): Skip outside list markers.
         * rendering/render_list.cpp:
         (WebCore::RenderListItem::positionListMarker): Added.
         (WebCore::RenderListMarker::paint): Removed code that was used to right-align outside
         text markers, since that is achieved by margins now.
         (WebCore::RenderListMarker::calcMinMaxWidth): Changed the marker height to be the font height.
         Made the width of outside list markers non-zero and equal to the width of inside markers.
         Changed the width to include only the marker and not any padding. Increased the width of bullets
         by 2 to contain spillage due to antialiasing.
         (WebCore::RenderListMarker::calcWidth): Calculate horizontal margins. Padding that was
         previously included in the width is now part of the margins. 
         (WebCore::RenderListMarker::getRelativeMarkerRect): Adjusted for the changes to width and
         margins.
         * rendering/render_list.h:

2006-04-12  Darin Adler  <darin@apple.com>

        Rubber-stamped by Hyatt.

        - moved some more files out of KWQ to more-permanent homes

        * WebCore.vcproj/WebCore/WebCore.vcproj: Updated for new locations.
        * WebCore.xcodeproj/project.pbxproj: Ditto.

        * kwq/BlockExceptions.h: Removed.
        * kwq/BlockExceptions.mm: Removed.
        * kwq/ClipboardMac.h: Removed.
        * kwq/ClipboardMac.mm: Removed.
        * kwq/DeprecatedPtrList.h: Removed.
        * kwq/DeprecatedPtrListImpl.cpp: Removed.
        * kwq/DeprecatedPtrListImpl.h: Removed.
        * kwq/DeprecatedValueList.h: Removed.
        * kwq/DeprecatedValueListImpl.cpp: Removed.
        * kwq/DeprecatedValueListImpl.h: Removed.
        * kwq/WebCoreTextArea.h: Removed.
        * kwq/WebCoreTextArea.mm: Removed.
        * kwq/WebCoreTextField.h: Removed.
        * kwq/WebCoreTextField.mm: Removed.
        * platform/DeprecatedPtrList.h: Added.
        * platform/DeprecatedPtrListImpl.cpp: Added.
        * platform/DeprecatedPtrListImpl.h: Added.
        * platform/DeprecatedValueList.h: Added.
        * platform/DeprecatedValueListImpl.cpp: Added.
        * platform/DeprecatedValueListImpl.h: Added.
        * platform/mac/BlockExceptions.h: Added.
        * platform/mac/BlockExceptions.mm: Added.
        * platform/mac/ClipboardMac.h: Added.
        * platform/mac/ClipboardMac.mm: Added.
        * platform/mac/WebCoreTextArea.h: Added.
        * platform/mac/WebCoreTextArea.mm: Added.
        * platform/mac/WebCoreTextField.h: Added.
        * platform/mac/WebCoreTextField.mm: Added.

2006-04-12  David Harrison  <harrison@apple.com>

        Reviewed by Darin.

        <rdar://problem/4386640> AX: AXPreviousSentenceStartTextMarkerForTextMarker does not respect paragraph boundary
        <rdar://problem/4414575> AX: Dictionary popup cannot find some words on Dictionary.app

        AXPreviousSentenceStartTextMarkerForTextMarker failed to stop at the beginning a block because
        SimplifiedBackwardsTextIterator::handleNonTextNode() emitted a space when exiting the block.
        Fixed by emitting a newline instead.
        
        Word boundary failed to stop at the beginning of a block because no character at all was emitted
        when leaving the block, because the exitNode was checking specific html tags to decide whether the
        node is block, but the node was xml.  Fixed by using the node's renderer, if present.
        
        (see related changes in WebKit)
        
        Tests added:
        * editing/selection/extend-by-sentence-001.html: Added.
        * fast/dom/inner-text-001.html: Added.
        
        * bridge/mac/WebCoreFrameBridge.h:
        * bridge/mac/WebCoreFrameBridge.mm:
        (-[WebCoreFrameBridge alterCurrentSelection:direction:granularity:]):
        Add sentence navigation/selection.
        
        * editing/Selection.cpp:
        (WebCore::Selection::validate):
        Add sentence navigation/selection.

        * editing/SelectionController.cpp:
        (WebCore::SelectionController::modifyExtendingRightForward):
        (WebCore::SelectionController::modifyMovingRightForward):
        (WebCore::SelectionController::modifyExtendingLeftBackward):
        (WebCore::SelectionController::modifyMovingLeftBackward):
        (WebCore::SelectionController::modify):
        Add sentence navigation/selection.

        * editing/TextGranularity.h:
        (WebCore::):
        Add SentenceGranularity and SentenceBoundary.

        * editing/TextIterator.cpp:
        (WebCore::isTableCell):
        (WebCore::shouldEmitTabBeforeNode):
        (WebCore::shouldEmitNewlineForNode):
        (WebCore::shouldEmitNewlinesBeforeAndAfterNode):
        (WebCore::shouldEmitExtraNewlineForNode):
        New utility functions that prefer renderers over html tag names.

        (WebCore::TextIterator::handleNonTextNode):
        (WebCore::TextIterator::exitNode):
        (WebCore::SimplifiedBackwardsTextIterator::advance):
        Use new utility functions.
        
        (WebCore::SimplifiedBackwardsTextIterator::handleNonTextNode):
        Use new utility functions.  Also emit linefeed instead of space,
        so sentence parsing works across block boundaries.
        
        (WebCore::SimplifiedBackwardsTextIterator::exitNode):
        Use new utility functions.

        (WebCore::SimplifiedBackwardsTextIterator::emitNewline):
        Renamed from emitNewlineForBROrText because it is not always for BR or text.
        
        * editing/TextIterator.h:
        Renamed emitNewlineForBROrText to emitNewline.
        
        * editing/visible_units.cpp:
        * editing/visible_units.h:
        (WebCore::previousBoundary):
        (WebCore::nextBoundary):
        (WebCore::previousSentencePosition):
        (WebCore::nextSentencePosition):
        Add sentence navigation/selection.

2006-04-12  Darin Adler  <darin@apple.com>

        Rubber-stamped by Hyatt.

        - moved Decoder and FormData classes into loader directory
          (Decoder, because it's part of the loading process.
           FormData, because it's used as a parameter when specifying
           what to load. Arguably either could be in page instead.)
        - moved Length.h from css to renderer, cause that's where Hyatt
          says it belongs

        * WebCore.vcproj/WebCore/WebCore.vcproj: Updated for new locations.
        * WebCore.xcodeproj/project.pbxproj: Ditto.

        * khtml: Removed.
        * loader/Decoder.cpp: Added.
        * loader/Decoder.h: Added.
        * loader/FormData.cpp: Added.
        * loader/FormData.h: Added.

        * css/Length.h: Removed.
        * rendering/Length.h: Added.

        * bridge/mac/WebCoreEncodings.mm:
        * dom/Document.h:
        * kwq/KWQFormData.mm:
        * loader/CachedXBLDocument.cpp:
        * loader/CachedXSLStyleSheet.cpp:
        * page/ResourceRequest.h:
        * platform/TransferJobInternal.h:
        * xml/xmlhttprequest.cpp:
        Updated includes.

2006-04-12  Mitz Pettel  <opendarwin.org@mitzpettel.com>

        Reviewed by darin

        - fix http://bugs.webkit.org/show_bug.cgi?id=8337
          Incomplete repaint of inlines' outline during editing

        * manual-tests/inline-outline-repaint.html: Added.
        * rendering/RenderBlock.cpp:
        (WebCore::RenderBlock::layoutBlock): Add the maximal outline width to the
        inlines' repaint rect.

2006-04-12  Justin Garcia  <justin.garcia@apple.com>

        Reviewed by darin
        
        <http://bugs.webkit.org/show_bug.cgi?id=8335>
        Implement execCommand(InsertHorizontalRule)

        * editing/JSEditor.cpp:

2006-04-12  Darin Adler  <darin@apple.com>

        Rubber-stamped by Hyatt.

        - moved xsl files into xml directory, removed xbl files (for now)

        * WebCore.vcproj/WebCore/WebCore.vcproj: Updated for new locations.
        * WebCore.xcodeproj/project.pbxproj: Ditto.
        * khtml/xbl: Removed.
        * khtml/xsl: Removed.
        * xml/XSLStyleSheet.cpp: Added.
        * xml/XSLStyleSheet.h: Added.
        * xml/XSLTProcessor.cpp: Added.
        * xml/XSLTProcessor.h: Added.

2006-04-12  David Hyatt  <hyatt@apple.com>

        Fix for 5283, make sure overflow doesn't paint on top of positioned elements.

        Reviewed by beth

        * kwq/RenderTreeAsText.cpp:
        (writeLayers):
        * rendering/RenderLayer.cpp:
        (WebCore::RenderLayer::RenderLayer):
        (WebCore::RenderLayer::~RenderLayer):
        (WebCore::RenderLayer::addChild):
        (WebCore::RenderLayer::removeChild):
        (WebCore::RenderLayer::paintLayer):
        (WebCore::RenderLayer::hitTestLayer):
        (WebCore::RenderLayer::dirtyOverflowList):
        (WebCore::RenderLayer::updateOverflowList):
        (WebCore::RenderLayer::collectLayers):
        (WebCore::RenderLayer::shouldBeOverflowOnly):
        (WebCore::RenderLayer::styleChanged):
        * rendering/RenderLayer.h:
        (WebCore::RenderLayer::isOverflowOnly):
        (WebCore::RenderLayer::overflowList):

2006-04-12  Darin Adler  <darin@apple.com>

        * WebCore.xcodeproj/project.pbxproj: Turn SVG support back on.
        I accidentally checked in this file with SVG off last night.

2006-04-12  Darin Adler  <darin@apple.com>

        - try to fix Windows build

        * platform/TransferJobInternal.h: Declare HANDLE.
        * platform/image-decoders/gif/GIFImageReader.h: Include GIFImageDecoder.h.
        * rendering/RenderThemeWin.h: Declare HANDLE and HMODULE.

2006-04-12  Darin Adler  <darin@apple.com>

        - another attempt to get things building

        * bindings/js/kjs_proxy.cpp: Add "kjs_events.h" include, needed when not
        building SVG (so for Windows too).
        * editing/TextIterator.h: Add back include of Vector.h.

2006-04-11  Darin Adler  <darin@apple.com>

        - try to fix Windows build

        * html/HTMLCollection.h: Add back include of Vector.h.
        * page/Frame.h: Ditto.
        * platform/Timer.h: Ditto.

        - more changes for no-SVG (not working yet though)

        * editing/CompositeEditCommand.h: Added css_valueimpl.h include.

2006-04-11  Darin Adler  <darin@apple.com>

        - try to fix no-SVG build

        * kwq/RenderTreeAsText.cpp: Added back an include only needed for non-SVG.
        * rendering/RenderObject.h: Ditto.

2006-04-11  Darin Adler  <darin@apple.com>

        - try to fix Windows build

        * ForwardingHeaders/kxmlcore/HashForward.h: Removed.
        * dom/xml_tokenizer.h: Include another header instead of HashForward.h.
        * loader/Cache.h: Ditto.
        * page/Page.h: Ditto.
        * platform/TransferJob.h: Ditto.

2006-04-11  Justin Garcia  <justin.garcia@apple.com>

        Reviewed by harrison
        
        Fixes more instances of:
        <rdar://problem/3950559>
        CrashTracer: 2116 crashes in Mail at com.apple.WebCore: khtml::CompositeEditCommand::insertNodeAfter + 32

        * editing/ReplaceSelectionCommand.cpp:
        (WebCore::ReplaceSelectionCommand::doApply): Do paragraph merging using moveParagraphs.

2006-04-11  Justin Garcia  <justin.garcia@apple.com>

        Reviewed by harrison
        
        Some setup for work on paste performance.

        * editing/CompositeEditCommand.cpp:
        (WebCore::CompositeEditCommand::moveParagraph): 
        Moved code from mergeParagraphs so that it can be used in ReplaceSelectionCommand.
        * editing/CompositeEditCommand.h:
        * editing/DeleteSelectionCommand.cpp:
        (WebCore::DeleteSelectionCommand::mergeParagraphs):
        (WebCore::DeleteSelectionCommand::doApply):
        * editing/VisiblePosition.cpp:
        (WebCore::VisiblePosition::init): Put the code that chooses m_deepPosition into initDeepPosition.
        (WebCore::VisiblePosition::initDeepPosition): 
        Fixed a bug: don't fall through to the code that's only for positions inside unrendered space between blocks when
        downstream() is a candidate.  Added a comment about why the fall through code is necessary.
        * editing/VisiblePosition.h:

2006-04-11  John Sullivan  <sullivan@apple.com>

        Reviewed by Darin Adler.
        
        - fixed <rdar://problem/4509328> highlight all matches hangs when searching for tab character on www.google.com (and others)
        
        For reasons not yet completely understood, searching for a tab character on some pages (Google, Amazon) finds a match
        with a non-collapsed range but then claims that the end visible position of the match is the original start visible 
        position of the search range. This was causing the highlightAllMatches code to loop forever. Fixed the loop by 
        checking for the non-advancing search range explicitly. I'm going to track down a reduction of the bogus 
        search-for-tab issue, and write that up as a separate bug (that bug is not a regression; you can "find" a tab on 
        google in Tiger also).

        * page/Frame.cpp:
        (WebCore::Frame::highlightAllMatchesForString):
        break the loop if the search range hasn't advanced

2006-04-10  Darin Adler  <darin@apple.com>

        Rubber-stamped by John Sullivan (except for pbxproj change).

        - updated to use the new Forward.h and HashForward.h headers
        - moved the showTree debugging functions out of the WebCore
          namespace so they are easier to call from gdb, and renamed
          the showTree member functions so they don't get in the way;
          now you can do "call showTree(x)" in gdb and it just works
        - removed a lot of unneeded includes

        * WebCore.xcodeproj/project.pbxproj: Fixed a lot of paths that
        were not relative to the enclosing group.

        * ForwardingHeaders/kxmlcore/Forward.h: Added.
        * ForwardingHeaders/kxmlcore/HashForward.h: Added.
        * bindings/js/JSCanvasRenderingContext2DBase.cpp:
        * bindings/js/JSXMLHttpRequest.cpp:
        * bindings/js/JSXMLHttpRequest.h:
        * bindings/js/JSXSLTProcessor.h:
        * bindings/js/kjs_binding.h:
        * bindings/js/kjs_dom.cpp:
        * bindings/js/kjs_dom.h:
        * bindings/js/kjs_events.cpp:
        * bindings/js/kjs_events.h:
        * bindings/js/kjs_html.cpp:
        * bindings/js/kjs_navigator.cpp:
        * bindings/js/kjs_navigator.h:
        * bindings/js/kjs_proxy.cpp:
        * bindings/js/kjs_traversal.h:
        * bindings/js/kjs_window.cpp:
        * bindings/js/kjs_window.h:
        * bindings/objc/DOM.mm:
        * bindings/objc/DOMCSS.mm:
        * bindings/objc/DOMCore.h:
        * bindings/objc/DOMEvents.mm:
        * bindings/objc/DOMHTML.mm:
        * bindings/objc/DOMImplementationFront.h:
        * bindings/objc/DOMInternal.mm:
        * bindings/objc/DOMUtility.mm:
        * bindings/objc/DOMViews.mm:
        * bridge/BrowserExtension.h:
        * bridge/mac/BrowserExtensionMac.mm:
        * bridge/mac/FrameMac.h:
        * bridge/mac/FrameMac.mm:
        * bridge/mac/WebCoreFrameBridge.mm:
        * bridge/mac/WebCoreFrameNamespaces.mm:
        * bridge/mac/WebCoreJavaScript.mm:
        * bridge/win/PageWin.cpp:
        * css/CSSComputedStyleDeclaration.cpp:
        * css/css_base.h:
        * css/css_ruleimpl.h:
        * css/css_valueimpl.cpp:
        * css/cssparser.cpp:
        * css/cssparser.h:
        * css/cssstyleselector.cpp:
        * css/cssstyleselector.h:
        * dom/AbstractView.h:
        * dom/AtomicStringList.h:
        * dom/Attribute.cpp:
        * dom/Attribute.h:
        * dom/Comment.cpp:
        * dom/ContainerNode.cpp:
        * dom/DOMImplementation.cpp:
        * dom/DOMImplementation.h:
        * dom/Document.cpp:
        * dom/Document.h:
        * dom/Element.h:
        * dom/EventTargetNode.cpp:
        (WebCore::EventTargetNode::dump):
        (WebCore::forbidEventDispatch):
        (WebCore::allowEventDispatch):
        (WebCore::eventDispatchForbidden):
        * dom/EventTargetNode.h:
        (WebCore::EventTargetNode::postDispatchEventHandler):
        * dom/NamedAttrMap.h:
        * dom/Node.cpp:
        (WebCore::Node::showNode):
        (WebCore::Node::showTree):
        (WebCore::Node::showTreeAndMark):
        (showTree):
        * dom/Node.h:
        * dom/NodeList.cpp:
        * dom/NodeList.h:
        * dom/Position.cpp:
        (showTree):
        * dom/Position.h:
        * dom/Range.cpp:
        * dom/Range.h:
        * dom/StyledElement.cpp:
        * dom/StyledElement.h:
        * dom/dom2_eventsimpl.cpp:
        * dom/dom2_eventsimpl.h:
        * dom/dom2_traversalimpl.h:
        * dom/dom_xmlimpl.cpp:
        * dom/xml_tokenizer.cpp:
        * dom/xml_tokenizer.h:
        * editing/AppendNodeCommand.cpp:
        * editing/ApplyStyleCommand.cpp:
        * editing/ApplyStyleCommand.h:
        * editing/BreakBlockquoteCommand.cpp:
        * editing/CompositeEditCommand.cpp:
        * editing/CreateLinkCommand.cpp:
        * editing/DeleteFromTextNodeCommand.cpp:
        * editing/DeleteFromTextNodeCommand.h:
        * editing/DeleteSelectionCommand.cpp:
        * editing/EditCommand.cpp:
        * editing/EditCommand.h:
        * editing/HTMLInterchange.cpp:
        * editing/InsertIntoTextNodeCommand.cpp:
        * editing/InsertIntoTextNodeCommand.h:
        * editing/InsertLineBreakCommand.cpp:
        * editing/InsertNodeBeforeCommand.cpp:
        * editing/InsertParagraphSeparatorCommand.cpp:
        * editing/InsertTextCommand.cpp:
        * editing/JSEditor.cpp:
        * editing/JoinTextNodesCommand.cpp:
        * editing/MergeIdenticalElementsCommand.cpp:
        * editing/ModifySelectionListLevelCommand.cpp:
        * editing/MoveSelectionCommand.cpp:
        * editing/RebalanceWhitespaceCommand.h:
        * editing/RemoveCSSPropertyCommand.h:
        * editing/ReplaceSelectionCommand.cpp:
        * editing/ReplaceSelectionCommand.h:
        * editing/Selection.cpp:
        (WebCore::Selection::formatForDebugger):
        (WebCore::Selection::showTree):
        (showTree):
        * editing/Selection.h:
        * editing/SelectionController.cpp:
        (WebCore::SelectionController::formatForDebugger):
        (WebCore::SelectionController::showTree):
        (showTree):
        * editing/SelectionController.h:
        * editing/TextIterator.cpp:
        * editing/TextIterator.h:
        * editing/TypingCommand.cpp:
        * editing/TypingCommand.h:
        * editing/UnlinkCommand.cpp:
        * editing/VisiblePosition.cpp:
        (WebCore::isEqualIgnoringAffinity):
        (WebCore::VisiblePosition::formatForDebugger):
        (WebCore::VisiblePosition::showTree):
        (showTree):
        * editing/VisiblePosition.h:
        (WebCore::VisiblePosition::VisiblePosition):
        (WebCore::operator==):
        * editing/WrapContentsInDummySpanCommand.cpp:
        * editing/htmlediting.h:
        * editing/markup.cpp:
        * editing/markup.h:
        (WebCore::):
        * editing/visible_units.cpp:
        * html/CanvasGradient.cpp:
        * html/CanvasRenderingContext2D.h:
        * html/CanvasStyle.cpp:
        * html/CanvasStyle.h:
        * html/FormDataList.cpp:
        * html/FormDataList.h:
        * html/HTMLCollection.cpp:
        * html/HTMLCollection.h:
        * html/HTMLDocument.cpp:
        * html/HTMLDocument.h:
        * html/HTMLElement.cpp:
        * html/HTMLElementFactory.cpp:
        * html/HTMLElementFactory.h:
        * html/HTMLFormCollection.cpp:
        * html/HTMLFormElement.cpp:
        * html/HTMLFormElement.h:
        * html/HTMLInputElement.cpp:
        * html/HTMLParser.cpp:
        * html/HTMLSelectElement.cpp:
        * html/HTMLSelectElement.h:
        * html/HTMLTokenizer.cpp:
        * html/HTMLTokenizer.h:
        * html/html_baseimpl.cpp:
        * html/html_headimpl.h:
        * kcanvas/KCanvasCreator.cpp:
        * kcanvas/KCanvasFilters.h:
        * kcanvas/KCanvasPath.h:
        * kcanvas/KCanvasResources.h:
        * kcanvas/KCanvasTreeDebug.cpp:
        * kcanvas/RenderPath.cpp:
        * kcanvas/RenderPath.h:
        * kcanvas/device/KRenderingDevice.h:
        * kcanvas/device/KRenderingPaintServerGradient.h:
        * kcanvas/device/KRenderingPaintServerPattern.h:
        * kcanvas/device/KRenderingPaintServerSolid.h:
        * kcanvas/device/quartz/KCanvasFilterQuartz.mm:
        * kcanvas/device/quartz/KCanvasMaskerQuartz.h:
        * kcanvas/device/quartz/KCanvasResourcesQuartz.h:
        * kcanvas/device/quartz/KCanvasResourcesQuartz.mm:
        * kcanvas/device/quartz/KRenderingPaintServerQuartz.h:
        * khtml/misc/decoder.cpp:
        * khtml/misc/decoder.h:
        * khtml/xsl/XSLStyleSheet.cpp:
        * khtml/xsl/XSLTProcessor.cpp:
        * khtml/xsl/XSLTProcessor.h:
        * ksvg2/css/SVGRenderStyle.h:
        * ksvg2/ecma/GlobalObject.cpp:
        * ksvg2/misc/KCanvasRenderingStyle.h:
        * ksvg2/misc/SVGDocumentExtensions.h:
        * ksvg2/svg/SVGAngle.h:
        * ksvg2/svg/SVGAnimateColorElement.h:
        * ksvg2/svg/SVGAnimatedColor.h:
        * ksvg2/svg/SVGAnimatedLengthList.h:
        * ksvg2/svg/SVGAnimatedNumberList.h:
        * ksvg2/svg/SVGAnimatedString.h:
        * ksvg2/svg/SVGAnimatedTransformList.h:
        * ksvg2/svg/SVGAnimationElement.h:
        * ksvg2/svg/SVGColor.h:
        * ksvg2/svg/SVGCursorElement.h:
        * ksvg2/svg/SVGHelper.h:
        * ksvg2/svg/SVGLength.h:
        * ksvg2/svg/SVGList.h:
        * ksvg2/svg/SVGPaint.h:
        * ksvg2/svg/SVGPathSeg.h:
        * ksvg2/svg/SVGPatternElement.h:
        * ksvg2/svg/SVGSVGElement.cpp:
        * ksvg2/svg/SVGSVGElement.h:
        * ksvg2/svg/SVGStringList.h:
        * ksvg2/svg/SVGTransform.h:
        * kwq/AccessibilityObjectCache.mm:
        * kwq/ClipboardMac.mm:
        * kwq/JavaAppletWidget.mm:
        * kwq/KWQComboBox.mm:
        * kwq/KWQEditCommand.mm:
        * kwq/KWQFileButton.mm:
        * kwq/KWQKHTMLSettings.h:
        * kwq/KWQKSSLKeyGen.mm:
        * kwq/KWQLoader.mm:
        * kwq/KWQPageState.mm:
        * kwq/KWQTextEdit.mm:
        * kwq/RegularExpression.h:
        * kwq/RenderTreeAsText.cpp:
        * kwq/RenderTreeAsText.h:
        * kwq/WebCoreAXObject.mm:
        * loader/Cache.cpp:
        * loader/Cache.h:
        * loader/CachedCSSStyleSheet.cpp:
        * loader/CachedObject.h:
        * loader/CachedScript.cpp:
        * loader/CachedXBLDocument.cpp:
        * loader/CachedXBLDocument.h:
        * loader/CachedXSLStyleSheet.cpp:
        * loader/CachedXSLStyleSheet.h:
        * loader/DocLoader.cpp:
        * page/Frame.cpp:
        * page/Frame.h:
        * page/FramePrivate.h:
        * page/FrameTree.cpp:
        * page/FrameTree.h:
        * page/FrameView.cpp:
        * page/FrameView.h:
        * page/Page.cpp:
        * page/Page.h:
        * page/Plugin.h:
        (WebCore::Plugin::Plugin):
        (WebCore::Plugin::view):
        * platform/Color.cpp:
        * platform/FloatRect.h:
        * platform/Font.cpp:
        * platform/Font.h:
        * platform/FontFamily.cpp:
        * platform/GraphicsContext.cpp:
        * platform/Image.cpp:
        * platform/Image.h:
        * platform/IntRect.h:
        * platform/KURL.cpp:
        * platform/KURL.h:
        * platform/SegmentedString.h:
        * platform/Shared.h:
        * platform/StreamingTextDecoder.cpp:
        * platform/StringImpl.cpp:
        * platform/StringImpl.h:
        * platform/TextEncoding.h:
        * platform/Timer.cpp:
        * platform/Timer.h:
        * platform/TransferJob.cpp:
        * platform/TransferJob.h:
        * platform/TransferJobInternal.h:
        * platform/cairo/GraphicsContextCairo.cpp:
        * platform/cairo/ImageCairo.cpp:
        * platform/cairo/ImageSourceCairo.cpp:
        * platform/image-decoders/gif/GIFImageReader.cpp:
        * platform/image-decoders/jpeg/JPEGImageDecoder.cpp:
        * platform/mac/FontFamilyMac.mm:
        * platform/mac/FontMac.mm:
        * platform/mac/ImageMac.mm:
        * platform/mac/TextEncodingMac.cpp:
        * platform/mac/TransferJobMac.mm:
        * platform/win/FontPlatformDataWin.cpp:
        * platform/win/TransferJobWin.cpp:
        * rendering/RenderBlock.cpp:
        * rendering/RenderBlock.h:
        * rendering/RenderBox.cpp:
        * rendering/RenderBox.h:
        * rendering/RenderCanvas.cpp:
        * rendering/RenderCanvas.h:
        * rendering/RenderContainer.cpp:
        * rendering/RenderFlexibleBox.h:
        * rendering/RenderFlow.cpp:
        * rendering/RenderFlow.h:
        * rendering/RenderImage.cpp:
        * rendering/RenderImage.h:
        * rendering/RenderLayer.cpp:
        * rendering/RenderLayer.h:
        * rendering/RenderObject.cpp:
        (showTree):
        * rendering/RenderObject.h:
        * rendering/RenderTableCell.h:
        * rendering/RenderTableSection.h:
        * rendering/RenderText.cpp:
        * rendering/RenderText.h:
        * rendering/RenderTextField.cpp:
        * rendering/RenderTextFragment.h:
        * rendering/RenderTheme.h:
        * rendering/RenderThemeMac.mm:
        * rendering/RenderThemeWin.cpp:
        * rendering/bidi.cpp:
        * rendering/render_form.h:
        * rendering/render_line.cpp:
        (showTree):
        * rendering/render_line.h:
        * rendering/render_list.cpp:
        * rendering/render_replaced.cpp:
        * rendering/render_replaced.h:
        * rendering/render_style.cpp:
        * rendering/render_style.h:
        * xml/xmlhttprequest.h:

2006-04-10  Darin Adler  <darin@apple.com>

        - try to fix the Windows build

        * WebCore.vcproj/WebCore/WebCore.vcproj: Fix mistaken bad editing of
        AdditionalIncludeDirectories.

2006-04-10  David Hyatt  <hyatt@apple.com>

        Make focus ring painting respect clips set by WebCore (e.g., overflow).

        Reviewed by darin

        * platform/GraphicsContext.h:
        * platform/mac/GraphicsContextMac.mm:
        (WebCore::GraphicsContextPlatformPrivate::GraphicsContextPlatformPrivate):
        (WebCore::GraphicsContextPlatformPrivate::~GraphicsContextPlatformPrivate):
        (WebCore::GraphicsContext::setFocusRingClip):
        (WebCore::GraphicsContext::clearFocusRingClip):
        (WebCore::GraphicsContext::drawFocusRing):
        * platform/mac/WebCoreGraphicsBridge.h:
        * platform/mac/WebCoreGraphicsBridge.m:
        (-[WebCoreGraphicsBridge drawFocusRingWithPath:radius:color:clipRect:]):
        * rendering/RenderLayer.cpp:
        (WebCore::setClip):
        (WebCore::restoreClip):

2006-04-10  Darin Adler  <darin@apple.com>

        Reviewed by Geoff.

        - death to khtml/ecma, long live bindings/js

        * khtml/ecma: Removed. Moved all files to bindings/js.

        * bindings/js/JSDOMParser.cpp: Added.
        * bindings/js/JSDOMParser.h: Added.
        * bindings/js/JSXMLHttpRequest.cpp: Added.
        * bindings/js/JSXMLHttpRequest.h: Added.
        * bindings/js/JSXMLSerializer.cpp: Added.
        * bindings/js/JSXMLSerializer.h: Added.
        * bindings/js/JSXSLTProcessor.cpp: Added.
        * bindings/js/JSXSLTProcessor.h: Added.
        * bindings/js/kjs_binding.cpp: Added.
        * bindings/js/kjs_binding.h: Added.
        * bindings/js/kjs_css.cpp: Added.
        * bindings/js/kjs_css.h: Added.
        * bindings/js/kjs_dom.cpp: Added.
        * bindings/js/kjs_dom.h: Added.
        * bindings/js/kjs_events.cpp: Added.
        * bindings/js/kjs_events.h: Added.
        * bindings/js/kjs_html.cpp: Added.
        * bindings/js/kjs_html.h: Added.
        * bindings/js/kjs_navigator.cpp: Added.
        * bindings/js/kjs_navigator.h: Added.
        * bindings/js/kjs_proxy.cpp: Added.
        * bindings/js/kjs_proxy.h: Added.
        * bindings/js/kjs_traversal.cpp: Added.
        * bindings/js/kjs_traversal.h: Added.
        * bindings/js/kjs_views.cpp: Added.
        * bindings/js/kjs_views.h: Added.
        * bindings/js/kjs_window.cpp: Added.
        * bindings/js/kjs_window.h: Added.

        * DerivedSources.make: Removed khtml/ecma from directory list.
        * WebCore.vcproj/WebCore/WebCore.vcproj: Moved files from
        khtml/ecma to bindings/js.
        * WebCore.xcodeproj/project.pbxproj: Ditto.

2006-04-10  Darin Adler  <darin@apple.com>

        Reviewed by Geoff.

        - try to fix the Windows build

        * html/HTMLCanvasElement.cpp: (WebCore::HTMLCanvasElement::reset):
        Put code to release m_drawingContext into an __APPLE__ ifdef.

        * platform/win/TemporaryLinkStubs.cpp:

2006-04-10  Mitz Pettel  <opendarwin.org@mitzpettel.com>

        Reviewed by Eric, landed by ap.

        - fix http://bugs.webkit.org/show_bug.cgi?id=8295
          Dictionary pop-up panel targets the wrong word in a scrolled IFRAME

        * kwq/WebCoreAXObject.mm:
        (-[WebCoreAXObject doAXTextMarkerForPosition:]): Removed the addition of scroll
        offsets, which is redundant for scrolled views, then changed the first view
        to be the document's scrolled view instead of its scroll view (all subsequent views were
        already scrolled views).
        * manual-tests/dictionary-scrolled-iframe.html: Added.

2006-04-09  Alexey Proskuryakov  <ap@nypop.com>

        Reviewed by Darin.

        - fix http://bugs.webkit.org/show_bug.cgi?id=7877
        XMLHttpRequest ignores username/password passed to open()

        Test: http/tests/xmlhttprequest/basic-auth.html

        * platform/KURL.cpp:
        (KURL::setUser): Enable a code path that handles non-empty user name -
        it was already present, but commented out and protected with an assertion.
        (KURL::setPass): Ditto.

2006-04-09  Darin Adler  <darin@apple.com>

        Reviewed by Anders.

        - fix http://bugs.webkit.org/show_bug.cgi?id=4884
          Canvas element breaks when RenderObject creation is deferred by external CSS

        Test: fast/canvas/canvas-before-css.html

        This patch makes us match the canvas documentation in Hixie's Web Applications
        draft as far as when the canvas is created and recreated and how it's sized.
        It also gets rid of the compositeOperation attribute of the canvas element.
        We can add that back if we need it. Anders points out that this specifically
        changes behavior for canvas elements where the size is set in CSS and not with
        width and height attributes. The CSS size now determines how big a box the canvas
        is rendered into, but has no effect on the size of the canvas's buffer.

        * html/CanvasRenderingContext2D.h: Added overloads of drawImage that take
        HTMLCanvasElement, which is no longer derived from HTMLImageElement.
        * html/CanvasRenderingContext2D.cpp:
        (WebCore::imageSize): Renamed from imageOrCanvasSize. Now used for images only,
        because canvas is no longer derived from image.
        (WebCore::CanvasRenderingContext2D::drawImage): Split the implementation of this
        for image sources from the implementation for canvas sources.
        (WebCore::CanvasRenderingContext2D::willDraw): Changed to call a new willDraw
        function on the canvas element.
        (WebCore::CanvasRenderingContext2D::drawingContext): Changed to call drawingContext
        on the canvas element rather than the renderer.

        * html/HTMLCanvasElement.h: Changed HTMLCanvasElement to derive from HTMLElement
        instead of HTMLImageElement. Added width, height, setWidth, setHeight, willDraw,
        paint, drawingContext, createDrawingContext, and reset functions. Added m_size,
        m_createdDrawingContext, m_data, and m_drawingContext data members. Removed
        mapToEntry, attach, detach, and isURLAttribute functins.

        * html/HTMLCanvasElement.cpp:
        (WebCore::HTMLCanvasElement::HTMLCanvasElement): Added initializers for new m_size,
        m_createdDrawingContext, m_data, and m_drawingContext data members.
        (WebCore::HTMLCanvasElement::~HTMLCanvasElement): Free m_data and m_drawingContext.
        (WebCore::HTMLCanvasElement::parseMappedAttribute): Got rid of special case for
        srcAttr, which is no longer needed since we aren't deriving from HTMLImageElement.
        Added code that triggers a reset when either width or height is set.
        (WebCore::HTMLCanvasElement::createRenderer): Added code to set the intrinsic
        width and height of the renderer to the size of the element.
        (WebCore::HTMLCanvasElement::setHeight): Added. Sets the height attribute.
        (WebCore::HTMLCanvasElement::setWidth): Added. Sets the width attribute.
        (WebCore::HTMLCanvasElement::willDraw): Added. Tells the renderer to repaint.
        Also has FIXME mentioning we could dirty only the part that has changed in the future.
        (WebCore::HTMLCanvasElement::reset): Added. Sets the size of the canvas and discards
        the old buffer, which is an indirect way of resetting the buffer to transparent black.
        (WebCore::HTMLCanvasElement::paint): Added. Draws the canvas image into the graphics
        context that's passed in.
        (WebCore::HTMLCanvasElement::createDrawingContext): Added. Allocates a buffer for
        the bits, then creates a bitmap context for drawing into the buffer.
        (WebCore::HTMLCanvasElement::drawingContext): Added. Calls createDrawingContext if
        needed, then returns the current drawing context.
        (WebCore::HTMLCanvasElement::createPlatformImage): Changed to always call CGContextFlush
        and to create the image from the context in this class.

        * rendering/RenderHTMLCanvas.h: Remove almost all of the contents of this file.
        Removed ~RenderHTMLCanvas, setNeedsImageUpdate, element, updateDrawnImage, drawingContext,
        createDrawingContext, and drawnImage functions and _drawingContext, _drawingContextData,
        _drawnImage, and _needsImageUpdate booleans. Changed RenderHTMLCanvas to derive from
        RenderReplaced instead of RenderImage.

        * rendering/RenderHTMLCanvas.cpp:
        (WebCore::RenderHTMLCanvas::RenderHTMLCanvas): Changed to only initialize RenderReplaced.
        (WebCore::RenderHTMLCanvas::renderName): Moved this in here, since there's no good reason
        to have this virtual function inlined.
        (WebCore::RenderHTMLCanvas::paint): Changed implementation to use HTMLCanvasElement::paint
        instead ofcalling CGContextDrawImage directly.
        (WebCore::RenderHTMLCanvas::layout): Removed the code that detects changes in width and
        causes the drawing context to be recreated; instead, if the width and height changes we
        scale when we paint the canvas.

        * bindings/js/JSCanvasRenderingContext2DBase.cpp:
        (WebCore::JSCanvasRenderingContext2DBaseProtoFunc::callAsFunction):
        Separated out handling for <canvas> vs. <img> elements in drawRect, since
        HTMLCanvasElement is no longer derived from HTMLImageElement.

2006-04-09  Rob Buis  <buis@kde.org>

        Reviewed by eseidel.  Landed by eseidel.

        Fix for http://bugs.webkit.org/show_bug.cgi?id=6027:
        Dirty rect invalidation issues in mozilla sample

        Make sure the paths calculate the new bounding box and not
        use the cached bbox.

        No automated test case possible.

        * kcanvas/RenderPath.cpp:
        (WebCore::RenderPath::setPath):

2006-04-09  Rob Buis  <buis@kde.org>

        Reviewed by darin.  Landed by eseidel.

        Fix for http://bugs.webkit.org/show_bug.cgi?id=6930:
        % width/height on nested <svg> tags do not work

        Set the context correctly for inner <svg>, so calculation of
        width/height for inner <svg> elements is done against the
        viewport element.

        Test: svg/custom/inner-percent.svg

        * ksvg2/svg/SVGSVGElement.cpp:
        (WebCore::SVGSVGElement::width):
        (WebCore::SVGSVGElement::height):

2006-04-08  Rob Buis  <buis@kde.org>

        Reviewed by eseidel.  Landed by eseidel.

        No automated test case possible.

        Fix for http://bugs.webkit.org/show_bug.cgi?id=7531:
        hang in SVGPolygonElementImpl::toPathData in polygon test case

        Make sure the points list is cleared, just like the path
        list is cleared first before (re)parsing.

        * ksvg2/svg/SVGPolyElement.cpp:
        (SVGPolyElement::parseMappedAttribute):

2006-04-08  Darin Adler  <darin@apple.com>

        Reviewed by Beth.

        - fix http://bugs.webkit.org/show_bug.cgi?id=7622
          REGRESSION: New text fields should compute maxlength considering composed character sequences

        Test: fast/forms/input-text-maxlength.html
        Test: fast/forms/input-text-paste-maxlength.html

        * html/HTMLInputElement.h: Removed all friend classes (not needed any more). Renamed
        typeEnum to InputType. Made init() function private. Tweaked parameter names and formatting
        in many function declarations. Made canHaveSelection, selectionStart, and selectionEnd
        const. Made data members except for m_name private instead of protected. Added private
        functions constrainValue and recheckValue. Removed unused isEditable function.

        * html/HTMLInputElement.cpp:
        (WebCore::numGraphemeClusters): Added.
        (WebCore::numCharactersInGraphemeClusters): Added.
        (WebCore::HTMLInputElement::isKeyboardFocusable): Use inputType() instead of using m_type
        directly.
        (WebCore::HTMLInputElement::isMouseFocusable): Ditto.
        (WebCore::HTMLInputElement::focus): Ditto.
        (WebCore::HTMLInputElement::setInputType): Added code to call constrainValue or recheckValue
        so we will enforce maxLen if changing from a type that doesn't have maxLen to one that does.
        (WebCore::HTMLInputElement::type): More-standard formatting for switch statement. Put
        cases into alphabetical order.
        (WebCore::HTMLInputElement::state): Changed switch statement to include all case values and
        not include a default case to take advantage of gcc's missing case warning.
        (WebCore::HTMLInputElement::restoreState): Ditto.
        (WebCore::HTMLInputElement::canHaveSelection): Ditto.
        (WebCore::HTMLInputElement::selectionStart): Ditto.
        (WebCore::HTMLInputElement::selectionEnd): Ditto.
        (WebCore::HTMLInputElement::setSelectionStart): Ditto.
        (WebCore::HTMLInputElement::setSelectionEnd): Ditto.
        (WebCore::HTMLInputElement::select): Ditto.
        (WebCore::HTMLInputElement::setSelectionRange): Ditto.
        (WebCore::HTMLInputElement::click): Ditto.
        (WebCore::HTMLInputElement::accessKeyAction): Ditto.
        (WebCore::HTMLInputElement::parseMappedAttribute): Use inputType() instead of using m_type
        directly. Added call to recheckValue when parsing a new value for the maxlength attribute.
        (WebCore::HTMLInputElement::rendererIsNeeded): Changed switch statement to include all case
        values and not include a default case to take advantage of gcc's missing case warning.
        (WebCore::HTMLInputElement::createRenderer): Ditto.
        (WebCore::HTMLInputElement::attach): Remove code to condition the value attribute when done
        parsing. This is now all handled by constrainValue and recheckValue as needed.
        (WebCore::HTMLInputElement::isSuccessfulSubmitButton): Use inputType() instead of using
        m_type directly.
        (WebCore::HTMLInputElement::appendFormData): Ditto. Rearranged code a little.
        (WebCore::HTMLInputElement::setChecked): Ditto.
        (WebCore::HTMLInputElement::setIndeterminate): Ditto.
        (WebCore::HTMLInputElement::value): Ditto. Call constrainValue when reading the value out
        of the value attribute.
        (WebCore::HTMLInputElement::valueWithDefault): Use inputType() instead of using
        m_type directly. Changed switch statement to include all case values and not include a
        default case to take advantage of gcc's missing case warning.
        (WebCore::HTMLInputElement::setValue): Ditto. Call constrainValue when storing a value.
        (WebCore::HTMLInputElement::setValueFromRenderer): Added an assertion.
        (WebCore::HTMLInputElement::storesValueSeparateFromAttribute): Use inputType() instead of
        using m_type directly.
        (WebCore::HTMLInputElement::preDispatchEventHandler): Ditto.
        (WebCore::HTMLInputElement::postDispatchEventHandler): Ditto.
        (WebCore::HTMLInputElement::defaultEventHandler): Ditto. Changed code to truncate inserted
        text in a BeforeTextInsertedEvent to use the new constrainValue function and also the
        numGraphemeClusters function, so it's based on grapheme clusters instead of characters and
        shares code.
        (WebCore::HTMLInputElement::constrainValue): Added.
        (WebCore::HTMLInputElement::recheckValue): Added.

        * html/HTMLIsIndexElement.cpp: (WebCore::HTMLIsIndexElement::HTMLIsIndexElement):
        Removed unneeded code to set m_type to TEXT, which is already what it gets set to by
        the base class's constructor.

        * html/HTMLGenericFormElement.h: Removed unused isEditable function.
        * html/HTMLGenericFormElement.cpp: Ditto.
        * html/HTMLTextAreaElement.h: Ditto.
        * html/HTMLTextAreaElement.cpp: Ditto.

        * platform/StringImpl.cpp: (WebCore::StringImpl::truncate): Changed > to >= so that
        truncating to the size of the string does nothing, efficiently.

        * rendering/RenderText.h: Added declaration of characterBreakIterator.
        * rendering/RenderText.cpp:
        (WebCore::characterBreakIterator): Made this public so it can be used in other files.
        Maybe we should also move it to another source file later. Also renamed to remove the
        "get" from the title.
        (WebCore::RenderText::previousOffset): Updated for name change.
        (WebCore::RenderText::nextOffset): Updated for name change.

        * rendering/RenderTextField.cpp: (WebCore::RenderTextField::updateFromElement):
        Removed code to implement maxlength checking. That's handled entirely in the DOM now.
        Also moved down the code to get the value into a string so that it's done only in the
        case where the string is used.

        * rendering/render_form.cpp: (WebCore::RenderFileButton::valueChanged): Use setValueFromRenderer
        instead of setting the value directly in the input element. We changed this for all the other
        types a while ago, and it works just as well for the input element.

        * dom/BeforeTextInsertedEvent.h: Added setText function. Previously, clients changed the text
        by modifying the text object in place, but going forward we'd like to avoid that sort of thing.
 
        * editing/ReplaceSelectionCommand.cpp: (WebCore::ReplacementFragment::ReplacementFragment):
        Changed code to assume clients will change the text in the event rather than mutating the
        text object itself. This is compatible with possible future changes to String to be copy
        on write.
        * editing/TypingCommand.cpp: (WebCore::TypingCommand::insertText): Ditto.

2006-04-07  Darin Adler  <darin@apple.com>

        Reviewed by Hyatt.

        - test for http://bugs.webkit.org/show_bug.cgi?id=8134
          REGRESSION: dragging down from the middle of a text field does not select to end of field

        * editing/Selection.cpp:
        (WebCore::comparePositions): Added. Takes shadow content into account.
        (WebCore::Selection::validate): Changed to call comparePositions instead of calling
        Range::compareBoundaryPoints directly. Also removed unneeded code to redundantly set
        m_start and m_end to null and did a bit of reformatting.

        - some tiny efficiency improvements to the tokenizer -- no measurable speedup, but removes
          a little bit of unneeded code

        * html/HTMLTokenizer.cpp: (WebCore::HTMLTokenizer::parseTag): Changed all the places
        that do "unsigned short x = *c" to "unsigned short x = c->unicode()" when c is a QChar,
        otherwise we do an unnecessary conversion to char (which requires a branch to see if
        the c fits in a char).

2006-04-07  Justin Garcia  <justin.garcia@apple.com>

        Reviewed by harrison
        
        Rolled the fix for 8250 back in and fixed a bug:
        The local variables for the first and last nodes in the fragment
        need to be reset when the fragment is changed for plaintext-only mode
        or a change from the beforetextinserted event handler.

        * editing/ReplaceSelectionCommand.cpp:
        (WebCore::ReplacementFragment::ReplacementFragment):

2006-04-07  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by Darin.
        
        - fixed REGRESSION: offsetParent on element with no offset parent crashes

        * dom/Element.cpp:
        (WebCore::Element::offsetParent): Add missing null check.

2006-04-07  Justin Garcia  <justin.garcia@apple.com>

        Reviewed by adele
        
        maxlength truncation in text fields didn't work if the fragment was a
        single text node.

        * editing/ReplaceSelectionCommand.cpp:
        (WebCore::ReplacementFragment::ReplacementFragment):

2006-04-07  Justin Garcia  <justin.garcia@apple.com>

        Reviewed by harrison
        
        <http://bugs.webkit.org/show_bug.cgi?id=8250>
        REGRESSION: Interchange newlines aren't passed with the khtmlBeforeTextInsertedEvent

        * editing/ReplaceSelectionCommand.cpp:
        (WebCore::ReplacementFragment::ReplacementFragment):
        Interchange content removal happened before khtmlBeforeTextInsertedEvent was sent.

2006-04-07  Justin Garcia  <justin.garcia@apple.com>

        Reviewed by adele
        
        <http://bugs.webkit.org/show_bug.cgi?id=8219>
        REGRESSION: Two extra newlines added when pasting a single styled line into a plaintext-only region

        * editing/ReplaceSelectionCommand.cpp:
        (WebCore::ReplacementFragment::ReplacementFragment):
        Converting the fragment to plaintext introduced an extraneous newline because
        the range passed to plainText ended after the paragraph containing the fragment
        built from the markup that TextEdit put on the paste board.  TextIterator will
        emit a newline when it exits a paragraph.
        Two extra newlines were added because the '\n' in the plaintext string turns
        into an interchange newline, which isn't removed because of 8250, and the
        interchange newline looks like inline content that requires the insertion of
        a paragraph separator during paste.
        Fixed by creating a range using VisiblePositions at the start and the end of 
        the node that holds the fragment during paste's test rendering.

2006-04-06  Justin Garcia  <justin.garcia@apple.com>

        Reviewed by harrison
        
        <http://bugs.webkit.org/show_bug.cgi?id=8145>
        REGRESSION: Pasting text from TextEdit with a bold word into text field results in crash

        * editing/AppendNodeCommand.cpp:
        (WebCore::AppendNodeCommand::doApply): 
        Assert that the node will be placed somewhere that's contenteditable.
        * editing/InsertNodeBeforeCommand.cpp:
        (WebCore::InsertNodeBeforeCommand::doApply): Ditto
        * editing/JSEditor.cpp: 
        Enabled insertHTML for plaintext-only regions since it's useful for debugging rich 
        content pastes into the new text fields.
        * editing/ReplaceSelectionCommand.cpp:
        (WebCore::ReplaceSelectionCommand::doApply):
        1) After the first paragraph of the fragment has been merged with the first part of the
        paragraph where the paste occured, if the next node to be inserted is inline, we put it 
        in a new paragraph because it was at the start of a paragraph in the fragment.  The change
        is to insert a paragraph separator if insertionPos.next() is null or outside of the current 
        editable region.
        2) Before the paste begins, a paragraph separator is inserted in order to avoid 
        nesting blocks from the fragment to be pasted inside the block where the paste will 
        occur.  I made two fixes to the code that decides whether or not to insert the 
        paragraph separator and added testcases for each.  Added a fixme because it appears that
        this code is also used to ensure that the aforementioned insertionPos will be at the end of 
        a paragraph.  This code should only be about preventing nesting.

2006-04-06  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by Anders.

        - Convert Element JS bindings to be almost completely autogenerated
        http://bugs.webkit.org/show_bug.cgi?id=8227

        * dom/Element.idl: Declare full interface in IDL.
        * dom/Element.h:
        (WebCore::Element::tagQName): Renamed from tagName, so the real DOM
        method can be called tagName.
        (WebCore::Element::tagName): inline alias for nodeName.
        * dom/Element.cpp:
        (WebCore::Element::scrollByUnits): Moved logic from JS bindings to
        core DOM.
        (WebCore::Element::scrollByLines): ditto
        (WebCore::Element::scrollByPages): ditto
        (WebCore::Element::offsetLeft): ditto, plus make unrendered elements return 0 not undefined
        (WebCore::Element::offsetTop): ditto, plus make unrendered elements return 0 not undefined
        (WebCore::Element::offsetWidth): ditto, plus make unrendered elements return 0 not undefined
        (WebCore::Element::offsetHeight): ditto, plus make unrendered elements return 0 not undefined
        (WebCore::Element::offsetParent): ditto
        (WebCore::Element::clientWidth): ditto, plus make unrendered elements return 0 not undefined
        (WebCore::Element::clientHeight): ditto, plus make unrendered elements return 0 not undefined
        (WebCore::Element::scrollLeft): ditto
        (WebCore::Element::scrollTop): ditto
        (WebCore::Element::setScrollLeft): ditto
        (WebCore::Element::setScrollTop): ditto
        (WebCore::Element::scrollWidth): ditto, plus make unrendered elements return 0 not undefined
        (WebCore::Element::scrollHeight): ditto, plus make unrendered elements return 0 not undefined

        * bindings/scripts/CodeGeneratorJS.pm: Added support for
        ConvertUndefinedToTrue, for benefit of scroll methods where
        omitted arguments should be treated as true.  However, maybe
        explicit overloading in the IDL would be a better long-term
        approach for optional arguments.

        * khtml/ecma/kjs_binding.cpp:
        (KJS::valueToStringWithNullCheck): fixed formatting
        (KJS::valueToBooleanTreatUndefinedAsTrue): added for binding of scrollIntoView
        (isn't this lame?)
        * khtml/ecma/kjs_binding.h:
        (KJS::toJS): fixed formatting, added new stuff
        * khtml/ecma/kjs_dom.cpp:
        (KJS::DOMElement::getValueProperty): removed most of contents
        (KJS::DOMElement::putValueProperty): ditto
        (KJS::DOMElementProtoFunc::callAsFunction): ditto

        * css/cssstyleselector.cpp:
        (WebCore::CSSStyleSelector::canShareStyleWithElement): updated for rename
        of tagName to tagQName
        (WebCore::CSSStyleSelector::checkOneSelector): ditto
        * dom/Document.cpp:
        (WebCore::Document::importNode): ditto
        * editing/ApplyStyleCommand.cpp:
        (WebCore::ApplyStyleCommand::removeInlineStyle): ditto
        (WebCore::areIdenticalElements): ditto
        * html/HTMLElement.cpp:
        (WebCore::HTMLElement::inEitherTagList): ditto
        (WebCore::HTMLElement::inInlineTagList): ditto
        (WebCore::HTMLElement::inBlockTagList): ditto

2006-04-06  Beth Dakin  <bdakin@apple.com>

        Reviewed by Darin.

        Fix for http://bugs.webkit.org/show_bug.cgi?id=8203 
        REGRESSION: "Invite a friend" text field in GMail page spills out 
        of table

        RenderReplaced::calcMinMaxWidth() sets m_minWidth to 0 when the 
        width is a percent, so this patch copies that behavior into 
        RenderTextField::calcMinMaxWidth().

        * rendering/RenderTextField.cpp:
        (WebCore::RenderTextField::calcMinMaxWidth):

2006-04-06  Darin Adler  <darin@apple.com>

        - try to fix Windows build

        * WebCore.vcproj/WebCore/WebCore.vcproj: Add JSDocument.cpp.

2006-04-05  Darin Adler  <darin@apple.com>

        Reviewed by Adele.

        - fix http://bugs.webkit.org/show_bug.cgi?id=8111
          REGRESSION (NativeTextField): first click in form field on weather.com leaves focus
          but no caret

        Test: fast/forms/input-text-self-emptying-click.html

        * page/MouseEventWithHitTestResults.h: Removed url, target, m_url and m_target,
        replacing them with isOverLink and m_isOverLink. Replaced innerNode with targetNode,
        and added logic to handle the case where the target node is removed from the document
        but the element the target node was in is still inside the document.
        * page/MouseEventWithHitTestResults.cpp: Added.

        * WebCore.xcodeproj/project.pbxproj: Added MouseEventWithHitTestResults.cpp.
        * WebCore.vcproj/WebCore/WebCore.vcproj: Ditto.

        * kwq/RenderTreeAsText.cpp: (nodePosition): Added a call to shadowParentNode so we
        correctly dump positions within shadow trees. This was needed to give a good result
        from my new test for this bug.

        * dom/Document.cpp:
        (WebCore::Document::prepareMouseEvent): Update to pass fewer parameters to the
        constructor for MouseEventWithHitTestResults. Now takes isOverLink boolean, and no
        longer takes href and target parameters.

        * page/Frame.cpp:
        (WebCore::Frame::handleMousePressEventDoubleClick): Use new name targetNode, instead
        of old name innerNode.
        (WebCore::Frame::handleMousePressEventTripleClick): Ditto.
        (WebCore::Frame::handleMousePressEventSingleClick): Ditto. Also change code to check
        if over a link to use !isOverLink instead of url.isNull.
        (WebCore::Frame::handleMousePressEvent): Ditto. Also remove unused "url" local variable.
        (WebCore::Frame::handleMouseMoveEvent): Ditto.
        (WebCore::Frame::handleMouseReleaseEvent): Ditto.
        (WebCore::Frame::passWidgetMouseDownEventToWidget): Ditto.

        * bridge/mac/FrameMac.mm:
        (WebCore::FrameMac::handleMousePressEvent): Use new name targetNode, instead of old
        name innerNode.
        (WebCore::FrameMac::handleMouseMoveEvent): Ditto.
        (WebCore::FrameMac::passSubframeEventToSubframe): Ditto.
        (WebCore::FrameMac::sendContextMenuEvent): Ditto.

        * page/FrameView.cpp:
        (WebCore::subframeForEvent): Use new name targetNode, instead of old name innerNode.
        (WebCore::FrameView::handleMousePressEvent): Ditto.
        (WebCore::FrameView::handleMouseDoubleClickEvent): Ditto.
        (WebCore::selectCursor): Ditto. Also change code to check if over a link to use
        isOverLink instead of !url.isNull.
        (WebCore::FrameView::handleMouseMoveEvent): Ditto.
        (WebCore::FrameView::handleMouseReleaseEvent): Ditto.
        (WebCore::FrameView::updateDragAndDrop): Ditto.

2006-04-05  Mitz Pettel  <opendarwin.org@mitzpettel.com>

        Reviewed and landed by Maciej.

        - fix http://bugs.webkit.org/show_bug.cgi?id=8184
          REGRESSION (r13655): Layer outline not clipped where it should be

        * rendering/RenderLayer.cpp:
        (WebCore::RenderLayer::calculateRects): Reverted this part of the fix for bug 7943.
        The outlineRect should not be inflated.

2006-04-05  Rob Buis  <buis@kde.org>

        Reviewed by Eric, landed by Maciej.

        Fix for http://bugs.webkit.org/show_bug.cgi?id=7627:
        SVG from the W3C SVG 1.1 test suite (cubic01.svg) renders as all black

        Fix this svg stylesheet to use strict-mode, as this makes sure
        class selecting is done correctly.

        * ksvg2/svg/SVGStyleElement.cpp:
        (SVGStyleElement::childrenChanged):

2006-04-05  Justin Garcia  <justin.garcia@apple.com>

        Reviewed by mjs

        I forgot to convert one of the implicit remove/inserts to an explicit remove/insert,
        so we were hitting the assert I just added to InsertNodeBeforeCommand that checked for
        implicit removes.

        * editing/ReplaceSelectionCommand.cpp:
        (WebCore::ReplaceSelectionCommand::doApply):

2006-04-05  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by Anders.

        - autogenerate bindings for all of the methods and properties of Document
        http://bugs.webkit.org/show_bug.cgi?id=8163

        - also removed document.actualEncoding since it is not in any spec
        or implemented by any other browser
        
        * DerivedSources.make: add JSDocument.h to results
        * WebCore.xcodeproj/project.pbxproj: Added new files to project
        * bindings/scripts/CodeGeneratorJS.pm: Support for new stuff needed by Document.
        * dom/Document.cpp:
        (WebCore::Document::readyState): moved impl here from JS bindings
        (WebCore::Document::inputEncoding): ditto
        (WebCore::Document::defaultCharset): ditto
        (WebCore::Document::setCharset): ditto
        * dom/Document.h:
        (WebCore::Document::charset): added, synonym for inputEncoding.
        (WebCore::Document::characterSet): ditto
        * dom/Document.idl: Added. Full interface for the Document object.
        * khtml/ecma/JSXMLHttpRequest.cpp:
        (KJS::JSXMLHttpRequestProtoFunc::callAsFunction): JSDocument, not DOMDocument
        * khtml/ecma/JSXSLTProcessor.cpp:
        (KJS::XSLTProcessorProtoFunc::callAsFunction): ditto
        * khtml/ecma/kjs_binding.cpp:
        (KJS::jsStringOrFalse): Added this convenience for the method on Document
        that bizzarely returns false on failure and a string otherwise.
        * khtml/ecma/kjs_binding.h:
        * khtml/ecma/kjs_css.cpp:
        (KJS::toJS): renamed for consistency
        * khtml/ecma/kjs_css.h:
        * khtml/ecma/kjs_dom.cpp:
        - removed all traces of DOMDocument
        (KJS::toJS): JSDocument, not DOMDocument
        * khtml/ecma/kjs_dom.h:
        * khtml/ecma/kjs_html.cpp:
        (KJS::):
        (KJS::JSHTMLDocument::JSHTMLDocument): inherit from JSDocument
        (KJS::JSHTMLDocument::getOwnPropertySlot): ditto
        (KJS::JSHTMLDocument::put): ditto
        * khtml/ecma/kjs_html.h:
        * khtml/ecma/kjs_traversal.cpp:
        (KJS::toJS): added overloads
        (KJS::toNodeFilter): handle JS functions as well as impl NodeFilter objects
        * khtml/ecma/kjs_traversal.h:
        * platform/AtomicString.h:
        (WebCore::AtomicString::AtomicString): Allow implicit conversion from String.

2006-04-05  Justin Garcia  <justin.garcia@apple.com>

        Reviewed by darin
        
        <http://bugs.webkit.org/show_bug.cgi?id=8198>
        Hitting an assert on undo paste
        
        ReplaceSelectionCommand was doing a combination of undoable and non-undoable 
        removes from the ReplacementFragment.  On Undo Paste, the undoable removes 
        couldn't be undone because the tree was in a different state than it was
        at the time of the remove.  This patch makes all the removes from the fragment 
        non-undoable.  We could make them all undoable, but I can't think of any reason 
        why we'd want the fragment to be reconstructed on an Undo Paste.

        * editing/AppendNodeCommand.cpp:
        (WebCore::AppendNodeCommand::doApply):
        Assert that the node to append isn't already in a tree, since if it is, it will 
        be removed in a non-undoable way.
        * editing/InsertNodeBeforeCommand.cpp:
        (WebCore::InsertNodeBeforeCommand::doApply): Ditto.
        * editing/ReplaceSelectionCommand.cpp:
        (WebCore::ReplaceSelectionCommand::doApply): 
        Nodes were being moved from the fragment to the document with undoable inserts.  
        Undoable inserts implicitly remove the node (in a non-undoable way) from its 
        old location if it is already in a tree.  I now explicitly remove the nodes 
        from the fragment before inserting them into the document to make it clear that 
        they are being removed in a non-non-undoable way.  I also changed the one undoable 
        remove from the fragment to a non-undoable remove.
        * editing/ReplaceSelectionCommand.h: 
        Made ReplacementFragment's non-undoable removeNode public.

2006-04-05  Darin Adler  <darin@apple.com>

        - fixed the build

        * WebCore.xcodeproj/project.pbxproj: Oops! Resolved merge conflict.

2006-04-05  Darin Adler  <darin@apple.com>

        Reviewed by Maciej.

        - fix for http://bugs.webkit.org/show_bug.cgi?id=8049
          StringImpl hash traits deleted value creates an init routine for WebCore
          <rdar://problem/4442248> REGRESSION: WebCore has init routines (8049)

        * platform/StringHash.h: Added. Moved hash functions and such for
        WebCore::String and friends into this file so we don't have to include
        the hash traits header everywhere. Changed hashing for WebCore::StringImpl
        and WebCore::String so that they use a raw pointer for the underlying
        storage type, taking advantage of the new feature added in JavaScriptCore.

        * platform/AtomicString.h: Moved StrHash specialization to StringHash.h.
        * platform/PlatformString.h: Moved StrHash specialization to StringHash.h.
        * platform/StringImpl.h: Moved StrHash, CaseInsensitiveHash, and HashTraits
        to StringHash.h. Left DefaultHash behind so that you can't get the wrong
        hash function by accident if you forget to include "StringHash.h".

        * platform/StringImpl.cpp: Added include of StringHash.h and removed
        RefPtr<StringImpl> HashTraits<RefPtr<StringImpl> >::_deleted, which is
        the object with a global initializer causing all the trouble!

        * kwq/AccessibilityObjectCache.h: Changed hash function to be IntHash
        instead of PtrHash.

        * dom/StyledElement.cpp: Changed MappedAttributeKeyTraits to inherit from
        the generic traits in KXMLCore so we get a StorageType. Also cleaned up a
        tiny bit by adding default values to the MappedAttributeKey constructor.

        * platform/CharsetNames.cpp: Changed hash traits here to be a new
        TextEncodingIDHashTraits struct rather than defining new default traits
        for the integer type since more integer types have default traits in
        HashTraits.h now. Also added a specialization so this class will share
        the underlying implementation (since InvalidEncoding happens to be -1).

        * bridge/mac/FrameMac.h:
        * dom/Document.h:
        * dom/xml_tokenizer.h:
        * khtml/xsl/XSLTProcessor.h:
        * kwq/JavaAppletWidget.h:
        * page/FramePrivate.h:
        * page/Page.cpp:
        * platform/AtomicString.cpp:
        * platform/TransferJob.h:
        * rendering/render_applet.h:
        Added include of StringHash.h.

        * WebCore.xcodeproj/project.pbxproj: Added StringHash.h. Remove unneeded
        CREATE_HASH_TABLE variable in build settings. Re-sorted some file lists.
        Added quotes to the CREATE_HASH_TABLE initialization in the rule that
        builds generated files. Removed various unneeded build settings for that
        target as well.

        * ForwardingHeaders/kxmlcore/HashTraits.h: Added.

        - other minor cleanup

        * bridge/mac/FrameMac.mm: Sorted includes.
        * dom/Node.cpp: Removed bogus symbol after #endif.

        * khtml/xsl/XSLTProcessor.cpp: Sorted includes. Removed redundant using
        namespace WebCore.
        * loader/Cache.cpp: Ditto.

2006-04-05  Beth Dakin  <bdakin@apple.com>

        Reviewed by Darin.

        Fix for <rdar://problem/4502311> text-transform:capitalize needs to 
        treat nbsp as a regular space when ICU changes

        There will be future changes in ICU to match the Unicode 4.1 
        standard which no longer recognizes &nbsp as a word separator. We 
        need to work around this with text-transform:capitalize because 
        words after non-breaking spaces still need to be capitalized.

        No layout tests added because existing layout tests cover this.

        * platform/StringImpl.cpp:
        (WebCore::StringImpl::capitalize): If the character is a non-
        breaking space, add a regular space to our temporary buffer, 
        otherwise, just copy the character in.

2006-04-05  Alexey Proskuryakov  <ap@nypop.com>

        Reviewed by Darin.

        - fix http://bugs.webkit.org/show_bug.cgi?id=8110
          Define navigator.vendorSub (bcms.gov.uk doesn't allow access to login page)

        Test: fast/dom/navigator-vendorSub.html

        * khtml/ecma/kjs_navigator.cpp:
        (KJS::Navigator::getValueProperty): Return an empty string for vendorSub property.
        * khtml/ecma/kjs_navigator.h:

2006-04-04  Darin Adler  <darin@apple.com>

        Reviewed by Justin (editing parts) and Adele (the rest).

        - fix http://bugs.webkit.org/show_bug.cgi?id=8182
          some text-field-related layout tests are failing

        The smart paste code was getting confused and adding extra spaces.

        * editing/ReplaceSelectionCommand.cpp:
        (WebCore::ReplaceSelectionCommand::doApply): Use isStartOfParagraph instead of
        isStartOfLine.
        (WebCore::ReplaceSelectionCommand::removeLinePlaceholderIfNeeded): Ditto.

        * editing/InsertParagraphSeparatorCommand.cpp: (WebCore::enclosingEmptyListItem):
        Change to call isStart/EndOfParagraph instead of Line.

        * editing/InsertTextCommand.cpp: (WebCore::InsertTextCommand::input):
        Add a comment about how isStartOfLine is almost certainly wrong here.

        - clean up some loose ends in the Frame class from the recent renaming

        * page/Frame.h: Removed declarations of deleteMe1, deleteMe2, and
        handleMouseMoveEventPart2.
        * page/Frame.cpp: (WebCore::Frame::handleMouseMoveEvent): Removed
        handleMouseMoveEventPart2 by renaming it to handleMouseMoveEvent and removing
        handleMouseMoveEvent itself.

        - invoke the makefile directly, removing the generate-derived-sources script

        * WebCore.vcproj/WebCore/build-generated-files.sh: Call make directly.
        * WebCore.xcodeproj/project.pbxproj: Ditto.
        * generate-derived-sources: Removed.

2006-04-04  Adele Peterson  <adele@apple.com>

        Reviewed by Justin.

        - Fix for http://bugs.webkit.org/show_bug.cgi?id=8158
        REGRESSION: Clicking past RTL text in a new text field puts the caret on the wrong side of the text

        Tests:
        editing/selection/caret-rtl.html
        editing/selection/caret-rtl-2.html

        * rendering/RenderText.cpp: (WebCore::RenderText::positionForCoordinates):
        When calculating the position for the beginning or end of an InlineTextBox,
        we now use offsetForPosition instead of just using m_start and m_len, because
        offsetForPosition will take rtl text into account.  I also made some formatting
        changes.

2006-04-04  David Hyatt  <hyatt@apple.com>

        Fix for bug 8065, inline blocks incorrectly loses spaces between them.

        Reviewed by beth

        * dom/Text.cpp:
        (WebCore::Text::rendererIsNeeded):

2006-04-04  Adele Peterson  <adele@apple.com>

        Reviewed by Hyatt.

        - Fix for:
        http://bugs.webkit.org/show_bug.cgi?id=8092
        REGRESSION (NativeTextField): table contents misaligned in Netflix queue

        http://bugs.webkit.org/show_bug.cgi?id=8141
        REGRESSION: Native text field fails to wrap inside table

        http://bugs.webkit.org/show_bug.cgi?id=8072
        REGRESSION: text fields at connect.apple.com spill out of the containing box

        Test: fast/forms/input-table.html

        Rewrote calcMinMaxWidth for text fields so it considers width, 
        min-width, and max-width settings as well as the size attribute.

        * rendering/RenderTextField.cpp: (WebCore::RenderTextField::calcMinMaxWidth):

2006-04-04  Beth Dakin  <bdakin@apple.com>

        Reviewed by Darin.

        This is a followup to my fix for <rdar://problem/4493218>
        
        This patch re-names computeIntLength() and computeShortLength() to 
        be computeLengthInt() and computeLengthShort(), respectively, to 
        match the pre-existing computeLengthFloat(). This patch also adds 
        the slightly confusing-ly named computeLengthIntForLength() which 
        uses the max and min values of a 28-bit integer as bounds for 
        overflow. This function is necessary because Length objects expect 
        28-bit integers. 

        * css/css_valueimpl.cpp:
        (WebCore::CSSPrimitiveValue::computeLengthInt):
        (WebCore::CSSPrimitiveValue::computeLengthIntForLength):
        (WebCore::CSSPrimitiveValue::computeLengthShort):
        * css/css_valueimpl.h:
        * css/cssstyleselector.cpp:
        (WebCore::convertToLength):
        (WebCore::CSSStyleSelector::applyProperty):
        (WebCore::CSSStyleSelector::mapBackgroundXPosition):
        (WebCore::CSSStyleSelector::mapBackgroundYPosition):

2006-04-04  Timothy Hatcher  <timothy@apple.com>

        Reviewed by Darin.

        The Debug and Release frameworks are now built with install paths relative to the build products directory.
        This removes the need for other projects to build with -framework WebCore and -framework JavaScriptCore. 

        * WebCore.xcodeproj/project.pbxproj:

2006-04-04  Justin Garcia  <justin.garcia@apple.com>

        Reviewed by darin
        
        <http://bugs.webkit.org/show_bug.cgi?id=6608>
        REGRESSION: Line disappears when deleting
        
        Rewrote moveNodesAfterNode to address these problems:
        It moved nodes without preserving their style. 
        It traversed over siblings looking for a br to know when
        to stop merging.  If the br was burried inside a span, it 
        wouldn't find it.  If the text is whitespace:pre, it wouldn't
        stop.
        In theory it would crash if the "enclosingInlineElements" of the start of the
        selection to delete and the end of the selection to delete were the
        same.  We think that this will fix these:
        <rdar://problems/3950559&4498113>
        CrashTracer: 2116 crashes in Mail at com.apple.WebCore: khtml::CompositeEditCommand::insertNodeAfter + 32
        CrashTracer: 1569 crashes in Mail at com.apple.WebCore: khtml::DeleteSelectionCommand::moveNodesAfterNode + 340
        But we haven't been able to construct a reproducible case.
        
        * editing/CompositeEditCommand.cpp:
        (WebCore::CompositeEditCommand::removeNodeAndPruneAncestors): Moved from ReplaceSelectionCommand.
        (WebCore::CompositeEditCommand::prune): Ditto.
        * editing/CompositeEditCommand.h:
        * editing/DeleteSelectionCommand.cpp:
        (WebCore::DeleteSelectionCommand::mergeParagraphs):
        (WebCore::DeleteSelectionCommand::doApply):
        * editing/DeleteSelectionCommand.h:
        * editing/ReplaceSelectionCommand.cpp:
        (WebCore::ReplaceSelectionCommand::doApply):
        * editing/ReplaceSelectionCommand.h:
        (WebCore::):
        * editing/markup.cpp:
        (WebCore::createMarkup): 
        Was crashing when passed a collapsed range.  I early return an empty string instead.

2006-04-04  John Sullivan  <sullivan@apple.com>

        Reviewed by Adele Peterson.
        
        - WebCore part of <rdar://problem/4498418> "Autosaved" searchterms are saved during private browsing

        * bridge/mac/WebCoreSettings.h:
        * bridge/mac/WebCoreSettings.mm:
        (-[WebCoreSettings setPrivateBrowsingEnabled:]):
        (-[WebCoreSettings privateBrowsingEnabled]):
        Teach WebCoreSettings about private browsing (WebKit knew, but WebCore didn't)
        
        * kwq/KWQKHTMLSettings.h:
        (KHTMLSettings::privateBrowsingEnabled):
        (KHTMLSettings::setPrivateBrowsingEnabled):
        Teach KHTMLSettings about private browsing
        
        * kwq/KWQLineEdit.mm:
        Fix wrong class in a category method declaration; the compiler didn't seem to mind.
        
        * kwq/WebCoreTextField.mm:
        (-[KWQSearchFieldCell _addStringToRecentSearches:]):
        Override this method to bail out if private browsing is enabled.

2006-04-04  Trey Matteson  <trey@usa.net>

        Reviewed by Hyatt.

        http://bugs.webkit.org/show_bug.cgi?id=7951
        REGRESSION: Safari crashes when printing a google map w/directions

        Tests: none, because I believe it only happens when printing, due to the relayouts

        * rendering/RenderTable.cpp:
        (WebCore::RenderTable::recalcSectionsIfNeeded): Add new utility to let the cells
        ensure the sections' grid data is up to date.
        * rendering/RenderTable.h:
        * rendering/RenderTableCell.cpp:
        (WebCore::RenderTableCell::calcMinMaxWidth):  Call above method.

2006-04-03  Justin Haygood <jhaygood@spsu.edu>

        Reviewed by eseidel.  Landed by eseidel.
        
        - WIN32: maximumScroll() is the maximum scroll delta, not the maximum scroll position. Update to use
          the real maximum scroll position.
        http://bugs.webkit.org/show_bug.cgi?id=8160

        * platform/win/ScrollViewWin.cpp:
        (WebCore::ScrollView::updateScrollBars):

2006-04-04  Eric Seidel  <eseidel@apple.com>

        Reviewed by andersca.

        Work-around spaces-in-pathnames issue in gnumake on win32.
        http://bugs.webkit.org/show_bug.cgi?id=8173

        * WebCore.vcproj/WebCore/build-generated-files.sh:

2006-04-03  Darin Adler  <darin@apple.com>

        - tried to fix build again

        * WebCore.xcodeproj/project.pbxproj: Removed JSStyleSheet files.
        * WebCore.vcproj/WebCore/WebCore.vcproj: Ditto.

2006-04-03  Darin Adler  <darin@apple.com>

        - fixed properties on a bunch of files
          (removed allow-tabs and svn:executable from many)

        * css/css_base.cpp:
        * html/html_headimpl.cpp:
        * khtml/ecma/kjs_traversal.cpp:
        * kwq/DeprecatedPtrListImpl.cpp:
        * kwq/DeprecatedValueListImpl.cpp:
        * loader/CachedScript.h:
        * platform/ArrayImpl.cpp:
        * platform/StringImpl.cpp:
        * rendering/DataRef.h:
        * rendering/RenderContainer.cpp:
        * rendering/RenderTableCell.cpp:
        * rendering/bidi.h:
        * rendering/render_list.cpp:
        * rendering/render_style.cpp:
        * rendering/table_layout.h:
        Converted tabs to spaces.

2006-04-03  Alexey Proskuryakov  <ap@nypop.com>

        Reviewed by Darin.

        - fix http://bugs.webkit.org/show_bug.cgi?id=7118
          Property values with extra items do not get treated as invalid (they should)

        Tests: fast/css/invalidation-errors.html
               fast/css/invalidation-errors-2.html
               fast/css/invalidation-errors-3.html

        * css/CSSGrammar.y: Rollback the properties added by parseValue() when it returns false.
        * css/cssparser.h: Moved shorthand counting to ShorthandScope, a new class in cssparser.cpp.
        * css/cssparser.cpp:
        (WebCore::CSSParser::rollbackLastProperties): Added.
        (WebCore::CSSParser::parseValue): Return false if there are too many properties in the list.
        (WebCore::CSSParser::parseBackgroundShorthand): Use ShorthandScope.
        (WebCore::CSSParser::parseShorthand): Ditto.
        (WebCore::CSSParser::parse4Values): Ditto.

2006-04-03  Darin Adler  <darin@apple.com>

        - changed StyleSheet back to hand-generated since the generated toJS
          function was not making the right type of wrapper for CSS style sheets
          (fixes failing layout tests)

        * DerivedSources.make: Removed JSStyleSheet.h.
        * css/StyleSheet.idl: Removed.
        * khtml/ecma/kjs_css.cpp: Added DOMStyleSheet back in.
        * khtml/ecma/kjs_css.h: Ditto.

2006-04-03  Darin Adler  <darin@apple.com>

        - fixed Macintosh build

        * WebCore.xcodeproj/project.pbxproj: Fixed paths of some files that were absolute
        paths from my machine.

2006-04-03  Darin Adler  <darin@apple.com>

        - try to fix Windows build

        * WebCore.vcproj/WebCore/WebCore.vcproj: Add three new generated files as source files.

2006-04-03  Darin Adler  <darin@apple.com>

        Reviewed by Maciej.

        - get RTL right for bug http://bugs.webkit.org/show_bug.cgi?id=8106
          REGRESSION (NativeTextField): New text fields don't scroll to the beginning when losing focus

        * rendering/RenderTextField.cpp: (WebCore::RenderTextField::forwardEvent):
        Scroll to the right if RTL.

2006-04-03  Darin Adler  <darin@apple.com>

        Reviewed by Maciej.

        - http://bugs.webkit.org/show_bug.cgi?id=8147
          convert derived sources script to a Makefile

        * DerivedSources.make: Added.
        * css/CSSPrimitiveValue.idl: Added.
        * css/Counter.idl: Added.
        * css/StyleSheet.idl: Added.

        * WebCore.xcodeproj/project.pbxproj: Added new generated files, IDLs, and the makefile.
        * bindings/scripts/CodeGeneratorJS.pm:

        * generate-derived-sources: Added license header. Removed most of the script, except for
        a single invocation of make.

        * khtml/ecma/kjs_css.h: Removed DOMStyleSheet, DOMCSSPrimitiveValue,
        CSSPrimitiveValueConstructor, and DOMCounter.
        * khtml/ecma/kjs_css.cpp:
        (KJS::DOMCSSStyleSheet::DOMCSSStyleSheet): Changed to use JSStyleSheet as the base class.
        (KJS::DOMCSSStyleSheet::getOwnPropertySlot): Ditto.
        (KJS::DOMCSSValueProtoFunc::callAsFunction): Added.
        (KJS::toJS): Changed to use JSCSSPrimitiveValue.
        (KJS::DOMRGBColor::getValueProperty): Changed to call toJS instead of making a
        DOMCSSPrimitiveValue directly.

2006-04-03  Justin Garcia  <justin.garcia@apple.com>

        Reviewed by harrison
        
        <http://bugs.webkit.org/show_bug.cgi?id=8117>
        REGRESSION (NativeTextField): Drag and drop text within a text input field modifies page
        
        The frame's selection is only set after all sub-commands have been 
        performed.  When we send the khtmlBeforeTextInsertedEvent to the root 
        editable element we were using frame->selection(), which may no longer 
        be in the document.
        
        Had to move the construction of the ReplacementFragment to when the
        replace operation is applied, because endingSelection isn't the 
        endingSelection of the last operation when the replace operation
        is constructed.

        * editing/ReplaceSelectionCommand.cpp:
        (WebCore::ReplacementFragment::ReplacementFragment):
        (WebCore::ReplaceSelectionCommand::ReplaceSelectionCommand):
        (WebCore::ReplaceSelectionCommand::doApply):
        * editing/ReplaceSelectionCommand.h:

2006-04-03  Beth Dakin  <bdakin@apple.com>

        Reviewed by Hyatt.

        Fix for <rdar://problem/4495644> crash when mousing over links at 
        nationalrealestateinvestors.com in 
        WebCore::RenderBlock::findNextLineBreak

        This is a fix for a repro crasher where a rootLineBox had a stale 
        pointer to a render object.

        * rendering/RenderFlow.cpp:
        (WebCore::RenderFlow::dirtyLinesFromChangedChild): Only break from 
        the function because of selfNeedsLayout() if we are not an inline 
        flow, because if we are, we will not re-layout before bad things 
        can happen.

2006-04-03  Timothy Hatcher  <timothy@apple.com>

        Reviewed by Maciej.

        Removing idl files and some scripts from the WebCore target to prevent
        them from being copied into the Resources.

        * WebCore.xcodeproj/project.pbxproj:

2006-04-03  Dave Hyatt  <hyatt@apple.com>

        Implement basic theme support on Win32.  Still much to do, but
        the backgrounds of buttons, textfields, checkboxes and radio
        controls now draw correctly.  Still work to do for the Classic look
        and to get the foreground defaults of the controls correct.

        Reviewed by anders

        * dom/Node.h:
        (WebCore::Node::isReadOnly):
        * html/HTMLInputElement.h:
        (WebCore::HTMLInputElement::isReadOnly):
        * platform/win/IntRectWin.cpp:
        (WebCore::IntRect::operator RECT):
        * rendering/RenderTheme.cpp:
        (WebCore::RenderTheme::isControlStyled):
        (WebCore::RenderTheme::stateChanged):
        (WebCore::RenderTheme::isReadOnly):
        (WebCore::RenderTheme::isHovered):
        * rendering/RenderTheme.h:
        (WebCore::RenderTheme::supportsHover):
        * rendering/RenderThemeMac.h:
        * rendering/RenderThemeMac.mm:
        (WebCore::RenderThemeMac::isControlStyled):
        * rendering/RenderThemeWin.cpp:
        (WebCore::m_textFieldTheme):
        (WebCore::RenderThemeWin::~RenderThemeWin):
        (WebCore::RenderThemeWin::close):
        (WebCore::RenderThemeWin::supportsFocus):
        (WebCore::RenderThemeWin::determineState):
        (WebCore::RenderThemeWin::getThemeData):
        (WebCore::RenderThemeWin::paintButton):
        (WebCore::RenderThemeWin::setCheckboxSize):
        (WebCore::RenderThemeWin::setRadioSize):
        (WebCore::RenderThemeWin::paintTextField):
        * rendering/RenderThemeWin.h:
        (WebCore::ThemeData::m_state):
        (WebCore::RenderThemeWin::supportsHover):
        (WebCore::RenderThemeWin::paintCheckbox):
        (WebCore::RenderThemeWin::paintRadio):

2006-04-03  Mitz Pettel  <opendarwin.org@mitzpettel.com>

        Reviewed by Beth.

        - fix http://bugs.webkit.org/show_bug.cgi?id=8085
          REGRESSION: Main menu positioned incorrectly on eia.org and fedex.com/us

        Test: fast/dom/Element/offsetTop-table-cell.html

        * rendering/RenderObject.cpp:
        (WebCore::RenderObject::offsetTop): Skip table rows when adding up
        the offsets, since a table cell's yPos() is relative to the table
        section, not the row.

2006-04-03  Mitz Pettel  <opendarwin.org@mitzpettel.com>

        Test: fast/repaint/layer-outline.html fast/repaint/layer-outline-horizontal.html

        Reviewed by Darin.

        - fix http://bugs.webkit.org/show_bug.cgi?id=7943
          Layer outline does not repaint

        * rendering/RenderLayer.cpp:
        (WebCore::RenderLayer::paintLayer): Use the outlineRect for the
        outline phase and do it only if the outlineRect isn't empty.
        (WebCore::RenderLayer::calculateRects): Actually add the outline width to the
        outline rect.

2006-04-03  Adele Peterson  <adele@apple.com>

        Reviewed by Justin.

        - Fix for http://bugs.webkit.org/show_bug.cgi?id=8104
        REGRESSION (NativeTextField): New text fields should not allow pasting newlines

        Test: fast/forms/input-truncate-newline.html

        * html/HTMLInputElement.cpp:
        (WebCore::minPosition): Added helper function.
        (WebCore::HTMLInputElement::defaultEventHandler): Searches for /r or /n and 
         truncates the text to be inserted to the earliest newline.

2006-04-03  Alexey Proskuryakov  <ap@nypop.com>

        Fixed a comment (forgot to save the file before the previous commit).

        * xml/xmlhttprequest.cpp:
        (WebCore::XMLHttpRequest::open):

2006-04-03  Alexey Proskuryakov  <ap@nypop.com>

        Reviewed by Darin.

        - fix http://bugs.webkit.org/show_bug.cgi?id=8099
          REGRESSION: XMLHttpRequest lowercase post requests broken

        Test: http/tests/xmlhttprequest/methods-lower-case.html

        * xml/xmlhttprequest.cpp:
        (WebCore::XMLHttpRequest::open): Uppercase some HTTP method names, to match a Firefox quirk.
        (WebCore::XMLHttpRequest::send): Account for the above change.

2006-04-02  Graham Dennis  <Graham.Dennis@gmail.com>

        Reviewed by Darin.

        - fix http://bugs.webkit.org/show_bug.cgi?id=8032
          REGRESSION: Focus ring not completely redrawn after a Delete changes its size

        * rendering/RenderObject.cpp:
        (WebCore::RenderObject::repaintAfterLayoutIfNeeded): When an element changes size, the
        delta rectangles that need to be invalidated must be inflated by the outline size to ensure
        that the previous outline is erased, and the space where the new outline is to be drawn is
        also invalidated. This behaviour is identical to the behaviour of borders that was fixed in
        bug 6301.
        * manual-tests/outline-repaint-glitch.html: Added. Manual testcase.
        This is just an outline version of border-repaint-glitch.html

2006-04-02  Trey Matteson  <trey@usa.net>

        Reviewed by Maciej.

        Support for fixing http://bugs.webkit.org/show_bug.cgi?id=8121
        REGRESSION: 404s are not displayed

        * bridge/mac/WebCoreFrameBridge.mm:
        (-[WebCoreFrameBridge currentForm]): Nuke redundant nil check.
        (-[WebCoreFrameBridge frameElement]): Tweak to not rely on our document, which
        gives a correct result even at the start of our loading process.
        * bindings/objc/DOM.mm:
        (-[DOMDocument _ownerElement]): Nuke redundant nil check.

2006-04-02  David Kilzer  <ddkilzer@kilzer.net>

        Reviewed by Maciej.

        - Fix for http://bugs.webkit.org/show_bug.cgi?id=8079
        REGRESSION: Redraw from page cache does not show visited links

        * page/Frame.cpp: (WebCore::Frame::reparseConfiguration): Added back
        updateStyleSelector call that was removed as part of the patch for bug 7907.

2006-04-02  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by Hyatt.

        - fixed <rdar://problem/4198619> REGRESSION: tabbing through links fails after hitting text field w/ sys's "tab to all controls" off
        - fixed <rdar://problem/4463760> REGRESSION: Can't tab from old text field (like password fields) to new text field (6811)
        (http://bugs.webkit.org/show_bug.cgi?id=6811)
        - fixed tab and shift tab don't select the right things
        http://bugs.webkit.org/show_bug.cgi?id=5685

        * bridge/mac/FrameMac.mm:
        (WebCore::FrameMac::nextKeyViewInFrame):
        * bridge/mac/WebCoreFrameBridge.h:

2006-04-02  Darin Adler  <darin@apple.com>

        - add a few stubs to get Windows closer to building

        * platform/win/TemporaryLinkStubs.cpp:
        (WebCore::focusRingColor):
        (WebCore::setFocusRingColorChangeFunction):
        (Frame::setNeedsReapplyStyles):

2006-04-02  Darin Adler  <darin@apple.com>

        - fix the build

        * WebCore.xcodeproj/project.pbxproj: Removed a bunch of files that should not have been
        mentioned at all, and a bunch of others that should be in the project but not in the target.

2006-04-02  Darin Adler  <darin@apple.com>

        Reviewed by Adele.

        - fix http://bugs.webkit.org/show_bug.cgi?id=8123
          focus ring on new text field doesn't look like the old one

        - fix http://bugs.webkit.org/show_bug.cgi?id=7685
          Focus ring color should change to match graphite when system theme is graphite

        - some cleanup to how we parse user agent style sheets

        * css/CSSValueKeywords.in: Added -webkit-focus-ring-color.

        * css/cssstyleselector.cpp:
        (WebCore::parseUASheet): Parse an array of chars instead of UTF-16.
        Cuts the size of the style sheet in half.
        (WebCore::CSSStyleSelector::applyProperty): Allow negative value for
        outline-offset. Changed shadow parsing to use getColorFromPrimitiveValue
        instead of repeating the same logic.
        (WebCore::CSSStyleSelector::getColorFromPrimitiveValue): Added a case
        for the focus ring color.
        * rendering/render_style.h: (WebCore::RenderStyle::setOutlineOffset):
        Changed to allow negative values.

        * css/html4.css: Removed a lot of excess spaces. Changed color of focus
        to -webkit-focus-ring-color. Changed width of focus to 5px.
        Added an outline-offset for <input type=text> of -2px.

        * css/cssparser.cpp:
        (WebCore::CSSParser::parseValue): Added focus ring color as an outline color all
        the time, and as any other color when not in strict mode. I'm confused about what's
        best for this whole strict mode policy, and I may need advice on Hyatt to perfect
        this one later.
        (WebCore::CSSParser::parseColorFromValue): Removed code to pin r, g, and b because
        the functions in platform already take care of that. Kept the pinning of a, though
        because that's done in floating point before converting to an integer.
        (WebCore::CSSParser::parseShadow): Allow focus ring color when not in strict mode.

        * bridge/mac/FrameMac.h: Eliminated the virtual detachFromView function.
        * bridge/mac/FrameMac.mm:
        (WebCore::FrameMac::FrameMac): Eliminated code to maintain the frame instances list.
        (WebCore::FrameMac::~FrameMac): Ditto.
        (WebCore::Frame::setNeedsReapplyStyles): Added.

        * bridge/mac/WebCoreSettings.mm: (-[WebCoreSettings _updateAllViews]):
        * platform/mac/WebCoreTextRendererFactory.mm:
        (-[WebCoreTextRendererFactory clearCaches]):
        Changed to call the new Page::setNeedsReapplyStylesForSettingsChange instead of using the
        obsolete Frame::instances.

        * page/Frame.h: Removed instances, mutableInstances, and detachFromView.
        * page/Frame.cpp: Ditto.

        * page/FrameTree.cpp:
        (WebCore::FrameTree::~FrameTree): Call setView(0) instead of detachFromView().
        (WebCore::FrameTree::removeChild): Ditto.

        * page/Page.h:
        * page/Page.cpp:
        (WebCore::Page::init): Added a set of pages instead of a page count. Also
        register a function for when the focus ring color changes the first time this
        is called.
        (WebCore::Page::~Page): Call setView(0) instead of detachFromView. Also update
        to manager the set of pages.
        (WebCore::Page::setNeedsReapplyStyles): Call setNeedsReapplyStyles on all frames.
        (WebCore::Page::setNeedsReapplyStylesForSettingsChange): Call setNeedsReapplyStyles
        on all frames with the passed-in settings.

        * css/make-css-file-arrays.pl: Changed to run the C preprocessor on the
        input files and to generate an array of char instead of unsigned short.

        * platform/PlatformString.h: Added a constructor that takes a char* and
        a length.
        * platform/String.cpp: (WebCore::String::String): Ditto.

        * WebCore.xcodeproj/project.pbxproj: Just some tweaks; adding in a few files like
        the user agent style sheets.

        * platform/Color.h: Removed all use of DeprecatedString. Cleaned up a bit.
        Added focusRingColor and setFocusRingColorChangeFunction.
        * platform/Color.cpp:
        (WebCore::makeRGB): Rewrote using max and min.
        (WebCore::makeRGBA): Ditto.
        (WebCore::parseHexColor): Cleaned up a bit; changed partway to String instead of
        DeprecatedString.
        (WebCore::Color::Color): Changed to use String and to call setNamedColor to save code.
        (WebCore::Color::setNamedColor): Changed to use String in the interface.

        * platform/mac/ColorMac.mm:
        (WebCore::observeTheme): Added. Function used to start up the observer.
        (WebCore::setFocusRingColorChangeFunction): Added. Used to get a call back so we can
        update all the views when the color changes (including recomputing style to get the
        color change in).
        (WebCore::setFocusRingColorChangeFunction): Added. Returns one of the two focus
        ring colors. Both of these match what AppKit uses -- neither matches what we used
        to have in the html4.css file.
        (+[WebCoreControlTintObserver controlTintDidChange]): Added. Used to update when
        the appearance is changed from blue to graphite and back. We keep a global so we
        don't have to call over to AppKit every time; that's probably overkill but we need
        the obsever for the color change function anyway.

2006-04-02  Mitz Pettel  <opendarwin.org@mitzpettel.com>

        Test: fast/inline-block/overflow-clip.html

        Reviewed by Darin.

        - fix http://bugs.webkit.org/show_bug.cgi?id=8118
          REGRESSION (r13595): Inline block's clipped overflow increases table row height

        * rendering/render_line.cpp:
        (WebCore::InlineFlowBox::placeBoxesVertically): Don't look at interior overflow
        when calculating the contribution to the inline's vertical overflows.

2006-04-02  Eric Seidel  <eseidel@apple.com>

        Reviewed by andersca.

        Make WebCore safe against KJS::Node in JavaScriptCore private headers.

        * editing/ReplaceSelectionCommand.h:
        * khtml/ecma/JSXMLSerializer.cpp:
        (KJS::XMLSerializerProtoFunc::callAsFunction):
        * khtml/ecma/JSXSLTProcessor.cpp:
        (KJS::XSLTProcessorProtoFunc::callAsFunction):
        * khtml/ecma/kjs_binding.cpp:
        (KJS::ScriptInterpreter::forgetDOMNodeForDocument):
        (KJS::ScriptInterpreter::putDOMNodeForDocument):
        * khtml/ecma/kjs_dom.cpp:
        (KJS::DOMNode::DOMNode):
        (KJS::DOMNode::mark):
        (KJS::DOMNode::getValueProperty):
        (KJS::DOMNode::putValueProperty):
        (KJS::DOMNodeProtoFunc::callAsFunction):
        (KJS::toNode):
        (KJS::DOMEventTargetNode::DOMEventTargetNode):
        (KJS::DOMDocumentProtoFunc::callAsFunction):
        (KJS::DOMElement::putValueProperty):
        (KJS::DOMElementProtoFunc::callAsFunction):
        (KJS::checkNodeSecurity):
        (KJS::toJS):
        (KJS::getRuntimeObject):
        (KJS::DOMNamedNodesCollection::DOMNamedNodesCollection):
        (KJS::DOMNamedNodesCollection::getOwnPropertySlot):
        * khtml/ecma/kjs_events.cpp:
        (KJS::JSLazyEventListener::JSLazyEventListener):
        (KJS::ClipboardProtoFunc::callAsFunction):
        * khtml/ecma/kjs_html.cpp:
        (KJS::JSHTMLDocument::namedItemGetter):
        (KJS::JSHTMLElement::framesetNameGetter):
        (KJS::JSHTMLElement::getOwnPropertySlot):
        (KJS::JSHTMLElement::pushEventHandlerScope):
        (KJS::JSHTMLCollection::callAsFunction):
        (KJS::JSHTMLCollection::getNamedItems):
        (KJS::JSHTMLSelectCollection::put):
        * khtml/ecma/kjs_traversal.cpp:
        (KJS::JSNodeFilterCondition::acceptNode):
        * khtml/ecma/kjs_window.cpp:
        (KJS::Window::put):
        * kwq/KWQPageState.mm:
        (-[KWQPageState WebCore::]):

2006-04-01  Darin Adler  <darin@apple.com>

        Reviewed by Eric.

        - removed a bunch of unneeded ForwardingHeaders and WebCore+SVG headers

        * ForwardingHeaders/kcanvas: Removed.
        * ForwardingHeaders/kcanvas/KCanvas.h: Removed.
        * ForwardingHeaders/kdom: Removed.
        * ForwardingHeaders/kdom/DOMString.h: Removed.
        * ForwardingHeaders/kdom/Helper.h: Removed.
        * ForwardingHeaders/kdom/KDOMSettings.h: Removed.
        * ForwardingHeaders/kdom/Namespace.h: Removed.
        * ForwardingHeaders/kdom/cache: Removed.
        * ForwardingHeaders/kdom/cache/KDOMCachedImage.h: Removed.
        * ForwardingHeaders/kdom/cache/KDOMCachedObject.h: Removed.
        * ForwardingHeaders/kdom/cache/KDOMCachedObjectClient.h: Removed.
        * ForwardingHeaders/kdom/cache/KDOMCachedScript.h: Removed.
        * ForwardingHeaders/kdom/cache/KDOMLoader.h: Removed.
        * ForwardingHeaders/kdom/core: Removed.
        * ForwardingHeaders/kdom/core/DOMConfiguration.h: Removed.
        * ForwardingHeaders/kdom/core/DOMException.h: Removed.
        * ForwardingHeaders/kdom/core/DOMList.h: Removed.
        * ForwardingHeaders/kdom/core/DOMString.h: Removed.
        * ForwardingHeaders/kdom/core/NamedAttrMap.h: Removed.
        * ForwardingHeaders/kdom/core/ProcessingInstruction.h: Removed.
        * ForwardingHeaders/kdom/core/domattrs.h: Removed.
        * ForwardingHeaders/kdom/ecma: Removed.
        * ForwardingHeaders/kdom/ecma/GlobalObject.h: Removed.
        * ForwardingHeaders/kdom/events: Removed.
        * ForwardingHeaders/kdom/events/Event.h: Removed.
        * ForwardingHeaders/kdom/events/EventListener.h: Removed.
        * ForwardingHeaders/kdom/events/EventTarget.h: Removed.
        * ForwardingHeaders/kdom/events/KeyboardEvent.h: Removed.
        * ForwardingHeaders/kdom/events/MouseEvent.h: Removed.
        * ForwardingHeaders/kdom/events/UIEvent.h: Removed.
        * ForwardingHeaders/kdom/events/kdomevents.h: Removed.
        * ForwardingHeaders/kdom/kdom.h: Removed.
        * ForwardingHeaders/kdom/parser: Removed.
        * ForwardingHeaders/kdom/parser/KDOMParser.h: Removed.
        * ForwardingHeaders/ksvg2: Removed.
        * ForwardingHeaders/ksvg2/KSVGPart.h: Removed.
        * ForwardingHeaders/ksvg2/KSVGView.h: Removed.
        * ForwardingHeaders/ksvg2/css: Removed.
        * ForwardingHeaders/ksvg2/css/CSSPropertyNames.h: Removed.
        * ForwardingHeaders/ksvg2/css/CSSValueKeywords.h: Removed.
        * WebCore+SVG/KDOMHeaders.h: Removed.
        * WebCore+SVG/Namespace.h: Removed.
        * WebCore+SVG/kdom.h: Removed.

        * WebCore.xcodeproj/project.pbxproj: Removed headers.

        * kcanvas/KCanvasCreator.cpp:
        * kcanvas/KCanvasResources.cpp:
        * kcanvas/KCanvasTreeDebug.cpp:
        * kcanvas/RenderPath.cpp:
        * kcanvas/RenderSVGImage.cpp:
        * kcanvas/device/quartz/KCanvasItemQuartz.mm:
        * kcanvas/device/quartz/KCanvasMaskerQuartz.mm:
        * kcanvas/device/quartz/KCanvasResourcesQuartz.mm:
        * kcanvas/device/quartz/KRenderingPaintServerGradientQuartz.mm:
        * ksvg2/css/SVGCSSStyleSelector.cpp:
        * ksvg2/events/SVGZoomEvent.h:
        * ksvg2/misc/KCanvasRenderingStyle.cpp:
        * ksvg2/misc/KSVGTimeScheduler.cpp:
        * ksvg2/misc/SVGImageLoader.cpp:
        * ksvg2/svg/SVGAElement.cpp:
        * ksvg2/svg/SVGAnimationElement.cpp:
        * ksvg2/svg/SVGCircleElement.cpp:
        * ksvg2/svg/SVGClipPathElement.cpp:
        * ksvg2/svg/SVGCursorElement.cpp:
        * ksvg2/svg/SVGCursorElement.h:
        * ksvg2/svg/SVGDOMImplementation.cpp:
        * ksvg2/svg/SVGDocument.cpp:
        * ksvg2/svg/SVGDocument.h:
        * ksvg2/svg/SVGElement.cpp:
        * ksvg2/svg/SVGEllipseElement.cpp:
        * ksvg2/svg/SVGExternalResourcesRequired.cpp:
        * ksvg2/svg/SVGExternalResourcesRequired.h:
        * ksvg2/svg/SVGFEBlendElement.cpp:
        * ksvg2/svg/SVGFEColorMatrixElement.cpp:
        * ksvg2/svg/SVGFEComponentTransferElement.cpp:
        * ksvg2/svg/SVGFECompositeElement.cpp:
        * ksvg2/svg/SVGFEDiffuseLightingElement.cpp:
        * ksvg2/svg/SVGFEDisplacementMapElement.cpp:
        * ksvg2/svg/SVGFEFloodElement.cpp:
        * ksvg2/svg/SVGFEGaussianBlurElement.cpp:
        * ksvg2/svg/SVGFEImageElement.cpp:
        * ksvg2/svg/SVGFEImageElement.h:
        * ksvg2/svg/SVGFELightElement.cpp:
        * ksvg2/svg/SVGFEMergeElement.cpp:
        * ksvg2/svg/SVGFEOffsetElement.cpp:
        * ksvg2/svg/SVGFESpecularLightingElement.cpp:
        * ksvg2/svg/SVGFETileElement.cpp:
        * ksvg2/svg/SVGFETurbulenceElement.cpp:
        * ksvg2/svg/SVGFilterElement.cpp:
        * ksvg2/svg/SVGGradientElement.cpp:
        * ksvg2/svg/SVGHelper.cpp:
        * ksvg2/svg/SVGImageElement.cpp:
        * ksvg2/svg/SVGLangSpace.cpp:
        * ksvg2/svg/SVGLength.cpp:
        * ksvg2/svg/SVGLineElement.cpp:
        * ksvg2/svg/SVGLinearGradientElement.cpp:
        * ksvg2/svg/SVGList.h:
        * ksvg2/svg/SVGLocatable.cpp:
        * ksvg2/svg/SVGMarkerElement.cpp:
        * ksvg2/svg/SVGMarkerElement.h:
        * ksvg2/svg/SVGMaskElement.cpp:
        * ksvg2/svg/SVGPathElement.cpp:
        * ksvg2/svg/SVGPatternElement.cpp:
        * ksvg2/svg/SVGPolyElement.cpp:
        * ksvg2/svg/SVGPolygonElement.cpp:
        * ksvg2/svg/SVGPolylineElement.cpp:
        * ksvg2/svg/SVGRadialGradientElement.cpp:
        * ksvg2/svg/SVGRectElement.cpp:
        * ksvg2/svg/SVGSVGElement.cpp:
        * ksvg2/svg/SVGStopElement.cpp:
        * ksvg2/svg/SVGStyleElement.cpp:
        * ksvg2/svg/SVGStyledElement.cpp:
        * ksvg2/svg/SVGStyledLocatableElement.cpp:
        * ksvg2/svg/SVGStyledTransformableElement.cpp:
        * ksvg2/svg/SVGTextElement.cpp:
        * ksvg2/svg/SVGTransformable.cpp:
        * ksvg2/svg/SVGUseElement.cpp:
        * ksvg2/svg/SVGViewElement.cpp:
        Updated includes.

2006-04-01  Darin Adler  <darin@apple.com>

        Reviewed by Maciej.

        - fix http://bugs.webkit.org/show_bug.cgi?id=8089
          REGRESSION: Caret position is off in native text field with text-align:right

        - fix http://bugs.webkit.org/show_bug.cgi?id=8082
          REGRESSION: Empty RTL text fields place the caret on the left side

        Need a way to make a test for this. No obvious way at the moment.

        * rendering/RenderFlow.cpp: (WebCore::RenderFlow::caretRect):
        Consider border, padding, and the width of the caret properly in the
        calculation of the caret's X position.

        * rendering/RenderBox.cpp: (WebCore::RenderBox::caretRect):
        Fixed some similar issues and rewrote this function for clarity.
        However, I suspect this function was and remains broken and is almost
        never called.

2006-04-01  Darin Adler  <darin@apple.com>

        Reviewed by Justin.

        - fix http://bugs.webkit.org/show_bug.cgi?id=8106
          REGRESSION (NativeTextField): New text fields don't scroll to the beginning when losing focus

        Test: fast/forms/input-text-scroll-left-on-blur.html

        * html/HTMLInputElement.cpp: (WebCore::HTMLInputElement::defaultEventHandler): Pass blur events
        through to the RenderTextField, as well as mouse, drag, and wheel events.
        * rendering/RenderTextField.cpp: (WebCore::RenderTextField::forwardEvent): Scroll all the way to
        the left on a blur.

        - unrelated small changes

        * html/HTMLTextFieldInnerElement.cpp: Removed excess includes.
        (WebCore::HTMLTextFieldInnerElement::defaultEventHandler): Tweaked comments a bit.

        * dom/Element.cpp:
        (WebCore::Element::scrollIntoView): Removed unneeded this-> before function call.
        (WebCore::Element::scrollIntoViewIfNeeded): Ditto.

        * page/FrameView.cpp: (WebCore::FrameView::dispatchMouseEvent): Removed obsolete comment.

2006-03-31  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by Adele.
        
        <rdar://problem/4497684> REGRESSION(NativeTextField): After undoing pasted text in a field, the field changes to only a few pixels in height (8096)

        * editing/ReplaceSelectionCommand.cpp:
        (WebCore::ReplaceSelectionCommand::doApply): merge into start block when pasting into
        an empty editable subtree.

2006-04-01  Darin Adler  <darin@apple.com>

        Reviewed by Maciej.

        - fix http://bugs.webkit.org/show_bug.cgi?id=8063
          REGRESSION: double clicking in new text fields won't select whole words

        Test: fast/forms/input-text-double-click.html

        * editing/visible_units.cpp: (WebCore::nextBoundary): Set the end of the range by
        calling selectNodeContents rather than by calling setEndAfter. The problem with
        setEndAfter is that it doesn't do anything when the parent of the node is 0, and
        also it's not really what we want, since the boundary node is one with editable
        contents -- we want to stay inside the boundary node.

        * editing/Selection.cpp: (WebCore::Selection::validate): Fix a tiny formatting glitch
        I noticed at the same time.

2006-03-31  John Sullivan  <sullivan@apple.com>

        Reviewed by Tim Hatcher.
        
        - fixed <rdar://problem/4372842> 10.4.4 Regression: control-clicking on a misspelled word 
        doesn't select it or offer corrections (first click only)

        * bridge/mac/FrameMac.mm:
        (WebCore::FrameMac::sendContextMenuEvent):
        Rolled in this one-line change that Hyatt wrote ages ago.

2006-03-31  Beth Dakin  <bdakin@apple.com>

        Reviewed by John.

        Fix for http://bugs.webkit.org/show_bug.cgi?id=8108
        REGRESSION (r13590-r13593): Floating table's cells don't paint 
        their background

        This is a regression from my painting patch yesterday. Just a silly 
        error I didn't catch.

        * rendering/RenderTable.cpp:
        (WebCore::RenderTable::paint): Change the phase of our new 
        PaintInfo, not our old one.

2006-03-31  Tim Omernick  <timo@apple.com>

        Reviewed by Adele.

        <http://bugs.webkit.org/show_bug.cgi?id=7858>
        <rdar://problem/4483359> REGRESSION: New text field doesn't recognize the read only attribute
        
        * rendering/RenderTextField.cpp:
        (WebCore::RenderTextField::createDivStyle):
        Set user modify based on the form element's readOnly().
        (WebCore::RenderTextField::updateFromElement):
        ditto

2006-03-31  Adele Peterson  <adele@apple.com>

        Reviewed by Tim Omernick.

        Updating shadowAncestorNode so it doesn't check for rootEditableElement.  Now we just walk
        up the tree to look for a shadowNode, and then we find the shadowParent.

        * dom/Node.cpp: (WebCore::Node::shadowAncestorNode):
        * rendering/RenderTextField.cpp: (WebCore::RenderTextField::setSelectionRange):
         Updated assertion to check for shadowAncestorNode instead of rootEditableElement.

2006-03-31  Mitz Pettel  <opendarwin.org@mitzpettel.com>

        Reviewed by John Sullivan.
        
        - fix http://bugs.webkit.org/show_bug.cgi?id=8101
          REGSRESSION: Fix for bug 7031 causes 30 layout tests to fail

        * rendering/render_line.cpp:
        (WebCore::InlineFlowBox::placeBoxesVertically): Change top and bottom positions
        only if childAffectsTopBottomPos is true.
        * rendering/RenderFlow.cpp:
        (WebCore::RenderFlow::paintLines): Redo a part of the patch for bug 7031 that
        wasn't committed with the rest of the patch.

2006-03-31  Mitz Pettel  <opendarwin.org@mitzpettel.com>

        Reviewed by Darin, landed by Beth.

        Fix for http://bugs.webkit.org/show_bug.cgi?id=8081
        REGRESSION: Drop-down menu has gap at top

        * rendering/RenderBox.cpp:
        (WebCore::RenderBox::calcAbsoluteVerticalValues): When calculating 
        the hypothetical vertical position in normal flow, skip table rows 
        in the ancestor chain, since a table cell's Y position is relative 
        to the table section, not the row.

2006-03-31  Dave Hyatt <hyatt@apple.com>

        Fix the border drawing for themes on Win32.

        Reviewed by adele

        * rendering/RenderBox.cpp:
        (WebCore::RenderBox::paintBoxDecorations):
        * rendering/RenderTheme.cpp:
        (WebCore::RenderTheme::paintBorderOnly):
        * rendering/RenderTheme.h:

2006-03-31  Darin Adler  <darin@apple.com>

        Reviewed by John Sullivan.

        * khtml/ecma/kjs_binding.cpp: Added names for VALIDATION_ERR and
        TYPE_MISMATCH_ERR; new DOM Level 3 errors that need to be listed in
        the mapping from error code to error name.

        * dom/Element.idl: Removed comment from bad old days where we had to
        touch these files to make them rebuild.

2006-03-30  Maciej Stachowiak  <mjs@apple.com>

        - fixed Windows build breakage from previous change

        * platform/ScrollView.h:
        * platform/win/FontWin.cpp:
        (WebCore::Font::drawLineForText):
        * platform/win/ScrollViewWin.cpp:
        (WebCore::ScrollView::scrollOffset):
        (WebCore::ScrollView::scrollBy):

2006-03-30  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by Eric.
        
        - various Point / Size related cleanup
        
        First, I clarified the semantics of some operations to keep a
        better distinction between IntPoint and IntSize:
        
        * platform/IntPoint.h:
        (WebCore::IntPoint::move): new convenience to move a point by separate
        x and y deltas.
        (WebCore::operator+=): You can't add a point to a point, you can only add
        a size to a point.
        (WebCore::operator+): ditto
        (WebCore::operator-): point - point = size; point - size = point
        (WebCore::operator-=): only allow subtracting a size for the mutating version
        * platform/IntRect.h:
        (WebCore::IntRect::move): tweaked to use IntPoint::move, also, move by an IntSize,
        not an IntPoint.
        * platform/IntSize.h:
        (WebCore::IntSize::shrunkTo): analog to expandedTo
        (WebCore::IntSize::clampNegativeToZero): a handy helper
        (WebCore::operator-): Added unary minus operator

        Made the same changes for FloatPoint:
        
        * platform/FloatPoint.h:
        (WebCore::FloatPoint::move):
        (WebCore::operator+=):
        (WebCore::operator-=):
        (WebCore::operator+):
        (WebCore::operator-):
        * platform/FloatRect.h:
        (WebCore::FloatRect::move):
        * platform/FloatSize.h:
        (WebCore::operator-):

        Then I changed a bunch of stuff to pass around IntPoint instead of separate x and y
        coordinates. The main one was:
        
        * platform/ScrollView.h:
        * platform/mac/ScrollViewMac.mm:
        (WebCore::ScrollView::scrollOffset): new method, return an IntSize
        (WebCore::ScrollView::contentsToViewport): take and return an IntPoint
        (WebCore::ScrollView::viewportToContents): take and return an IntPoint
        * platform/win/ScrollViewWin.cpp:
        (WebCore::ScrollView::updateContents): handle things in terms of scrollOffset,
        not scrollPoint
        (WebCore::ScrollView::visibleContentRect):
        (WebCore::ScrollView::contentsX):
        (WebCore::ScrollView::contentsY):
        (WebCore::ScrollView::viewportToContents):
        (WebCore::ScrollView::contentsToViewport):
        (WebCore::scrollOffset):
        (WebCore::ScrollView::maximumScroll):
        (WebCore::ScrollView::scrollBy):
        (WebCore::ScrollView::updateScrollBars):

        The rest is mainly updates for these changes.

        * bridge/mac/FrameMac.h:
        * bridge/mac/FrameMac.mm:
        (WebCore::FrameMac::eventMayStartDrag):
        (WebCore::FrameMac::dragHysteresisExceeded):
        (WebCore::FrameMac::handleMouseMoveEvent):
        (WebCore::FrameMac::mouseDown):
        (WebCore::FrameMac::shouldDragAutoNode):
        (WebCore::FrameMac::sendContextMenuEvent):
        * bridge/mac/WebCoreFrameBridge.mm:
        (-[WebCoreFrameBridge isPointInsideSelection:]):
        * dom/EventTargetNode.cpp:
        (WebCore::EventTargetNode::dispatchMouseEvent):
        (WebCore::EventTargetNode::dispatchWheelEvent):
        * khtml/ecma/kjs_window.cpp:
        (KJS::WindowFunc::callAsFunction):
        * page/Frame.cpp:
        (WebCore::Frame::shouldDragAutoNode):
        (WebCore::Frame::isPointInsideSelection):
        (WebCore::Frame::selectClosestWordFromMouseEvent):
        (WebCore::Frame::handleMousePressEventDoubleClick):
        (WebCore::Frame::handleMousePressEventTripleClick):
        (WebCore::Frame::handleMousePressEventSingleClick):
        (WebCore::Frame::handleMouseMoveEventPart2):
        (WebCore::Frame::handleMouseReleaseEvent):
        * page/Frame.h:
        * page/FrameView.cpp:
        (WebCore::FrameView::dispatchDragEvent):
        (WebCore::FrameView::prepareMouseEvent):
        (WebCore::FrameView::handleWheelEvent):
        * rendering/RenderLayer.cpp:
        (WebCore::RenderLayer::scrollRectToVisible):
        * rendering/RenderObject.cpp:
        (WebCore::RenderObject::draggableNode):
        * rendering/RenderObject.h:
        (WebCore::RenderObject::positionForPoint):
        * rendering/render_list.cpp:
        (WebCore::RenderListMarker::paint):

2006-03-30  Maciej Stachowiak  <mjs@apple.com>

        - fixed windows build

        * platform/win/TemporaryLinkStubs.cpp:
        (Widget::unlockDrawingFocus):

2006-03-31  Eric Seidel  <eseidel@apple.com>

        Reviewed by mjs.

        A bit more code cleanup.

        * bridge/mac/WebCoreScriptDebugger.mm:
        (-[WebCoreScriptCallFrame evaluateWebScript:]):
        * html/HTMLFormElement.cpp:
        (WebCore::HTMLFormElement::submit):
        * html/HTMLInputElement.cpp:
        (WebCore::HTMLInputElement::setValue):
        * kwq/WebCoreTextField.mm:
        (-[KWQTextFieldController textView:shouldHandleEvent:]):
        (-[KWQSecureTextField selectText:]):
        * page/Frame.cpp:
        (WebCore::Frame::submitForm):
        * platform/Widget.h:
        * platform/mac/WidgetMac.mm:
        * rendering/render_frames.cpp:
        (WebCore::RenderFrameSet::userResize):

2006-03-30  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by Eric.

        * bridge/mac/FrameMac.mm:
        (WebCore::FrameMac::wheelEvent):
        (WebCore::FrameMac::eventMayStartDrag):
        (WebCore::FrameMac::handleMouseMoveEvent):
        (WebCore::FrameMac::sendContextMenuEvent):
        * bridge/mac/WebCoreFrameBridge.mm:
        (-[WebCoreFrameBridge RenderObject::nodeInfoAtPoint:allowShadowContent:]):
        * dom/Document.cpp:
        (WebCore::Document::elementFromPoint):
        (WebCore::Document::prepareMouseEvent):
        * dom/Document.h:
        * kwq/WebCoreAXObject.mm:
        (-[WebCoreAXObject doAXTextMarkerForPosition:]):
        (-[WebCoreAXObject accessibilityHitTest:]):
        * manual-tests/frame-hover.html: Added.
        * manual-tests/resources/hover-subframe-1.html: Added.
        * manual-tests/resources/hover-subframe-2.html: Added.
        * page/Frame.cpp:
        (WebCore::Frame::isPointInsideSelection):
        * page/FrameView.cpp:
        (WebCore::FrameView::prepareMouseEvent):
        (WebCore::FrameView::handleWheelEvent):
        * platform/IntRect.h:
        (WebCore::IntRect::contains):
        * rendering/RenderLayer.cpp:
        (WebCore::isSubframeCanvas):
        (WebCore::frameVisibleRect):
        (WebCore::RenderLayer::hitTest):
        (WebCore::shouldApplyImplicitCapture):
        (WebCore::RenderLayer::hitTestLayer):
        * rendering/RenderLayer.h:

2006-03-30  Mitz Pettel  <opendarwin.org@mitzpettel.com>

        Tests: fast/repaint/flexible-box-overflow.html fast/repaint/flexible-box-overflow-horizontal.html

        Reviewed by Darin.
        
        - fix http://bugs.webkit.org/show_bug.cgi?id=8056
          Flexible boxes do not repaint their top, left and children's overflows

        * rendering/RenderBlock.cpp:
        (WebCore::RenderBlock::layoutBlockChildren):
        * rendering/RenderFlexibleBox.cpp:
        (WebCore::FlexBoxIterator::next):
        (WebCore::RenderFlexibleBox::layoutHorizontalBox): Update top overflow when
        determining vertical positions. Update horizontal overflows after horizontal
        positions are determined.
        (WebCore::RenderFlexibleBox::layoutVerticalBox):  Update left overflow when
        determining horizontal positions. Update vertical overflows after vertical
        positions are determined.
        (WebCore::RenderFlexibleBox::allowedChildFlex):

2006-03-30  Mitz Pettel  <opendarwin.org@mitzpettel.com>

        Tests: fast/repaint/text-shadow.html fast/repaint/text-shadow-horizontal.html

        Reviewed by Darin.

        - fix http://bugs.webkit.org/show_bug.cgi?id=7301
          Text shadow does not repaint correctly

        * rendering/InlineTextBox.cpp:
        (WebCore::InlineTextBox::paint): Paint the text box if it is within the maximum
        possible horizontal shadow overflow of the damage rect.
        * rendering/InlineTextBox.h: Removed unused function checkVerticalPoint().
        * rendering/RenderFlow.cpp:
        (WebCore::RenderFlow::paintLines): Use the vertical overflows instead of the
        selection vertical bounds.
        (WebCore::RenderFlow::hitTestLines):
        * rendering/render_line.cpp:
        (WebCore::InlineFlowBox::placeBoxesHorizontally): Include overflow due to text shadow
        in leftPosition and rightPosition and keep track of the maximum horizontal shadow
        on the inline.
        (WebCore::InlineFlowBox::verticallyAlignBoxes):
        (WebCore::InlineFlowBox::placeBoxesVertically): Include overflow due to shadow and
        inline-blocks' overflow in topPosition and bottomPosition but not in the selection
        vertical bounds.
        (WebCore::RootInlineBox::selectionTop):
        * rendering/render_line.h:
        (WebCore::InlineFlowBox:::InlineRunBox):
        (WebCore::InlineFlowBox::setVerticalSelectionPositions):
        (WebCore::InlineFlowBox::maxHorizontalShadow):
        (WebCore::RootInlineBox::setVerticalSelectionPositions):
        (WebCore::RootInlineBox::selectionBottom):
        (WebCore::RootInlineBox::selectionHeight):

2006-03-30  Beth Dakin  <bdakin@apple.com>

        Reviewed by Hyatt.

        Fix for <rdar://problem/4472371> REGRESSION(417.9-TOT): Focus ring 
        around link in overflow:auto div isn't clipped to div

        Focus rings around the children off overflow:auto divs were not 
        being appropriately clipped because they were being painted with 
        the div's outlineRect, when they should be painted separately. This 
        patch adds two new PaintPhases -- PaintPhaseSelfOutline and 
        PaintPhaseChildOutlines -- to address this problem.

        This patch also changes the name of PaintAction back to PaintPhase. 
        Because Hyatt said so.

        * kcanvas/KCanvasResources.cpp:
        (WebCore::KCanvasMarker::draw):
        * kcanvas/RenderPath.cpp:
        (WebCore::RenderPath::paint):
        * kcanvas/RenderSVGImage.cpp:
        (WebCore::RenderSVGImage::paint):
        * kcanvas/device/quartz/KCanvasResourcesQuartz.mm:
        (WebCore::KCanvasContainerQuartz::paint):
        * ksvg2/svg/SVGMaskElement.cpp:
        (WebCore::SVGMaskElement::drawMaskerContent):
        * ksvg2/svg/SVGPatternElement.cpp:
        (WebCore::SVGPatternElement::drawPatternContentIntoTile):
        * rendering/InlineTextBox.cpp:
        (WebCore::InlineTextBox::paint):
        * rendering/RenderBlock.cpp:
        (WebCore::RenderBlock::paint):
        (WebCore::RenderBlock::paintChildren):
        (WebCore::RenderBlock::paintObject):
        (WebCore::RenderBlock::paintFloats):
        (WebCore::RenderBlock::paintEllipsisBoxes):
        (WebCore::RenderBlock::paintSelection):
        * rendering/RenderBox.cpp:
        (WebCore::RenderBox::setStyle):
        * rendering/RenderCanvas.cpp:
        (WebCore::RenderCanvas::paint):
        * rendering/RenderFlow.cpp:
        (WebCore::RenderFlow::paintLines):
        * rendering/RenderHTMLCanvas.cpp:
        (WebCore::RenderHTMLCanvas::paint):
        * rendering/RenderImage.cpp:
        (WebCore::RenderImage::paint):
        * rendering/RenderLayer.cpp:
        (WebCore::RenderLayer::paintLayer):
        * rendering/RenderObject.cpp:
        (WebCore::RenderObject::maximalOutlineSize):
        * rendering/RenderObject.h:
        (WebCore::):
        (WebCore::RenderObject::PaintInfo::PaintInfo):
        * rendering/RenderTable.cpp:
        (WebCore::RenderTable::paint):
        * rendering/RenderTableCell.cpp:
        (WebCore::RenderTableCell::paint):
        * rendering/RenderTableRow.cpp:
        (WebCore::RenderTableRow::paint):
        * rendering/RenderTableSection.cpp:
        (WebCore::RenderTableSection::paint):
        * rendering/render_button.cpp:
        (WebCore::RenderButton::paintObject):
        * rendering/render_line.cpp:
        (WebCore::InlineBox::paint):
        (WebCore::InlineFlowBox::paint):
        (WebCore::InlineFlowBox::paintBackgroundAndBorder):
        (WebCore::RootInlineBox::paintEllipsisBox):
        * rendering/render_list.cpp:
        (WebCore::RenderListMarker::paint):
        * rendering/render_replaced.cpp:
        (WebCore::RenderReplaced::shouldPaint):
        (WebCore::RenderWidget::paint):

2006-03-30  Tim Omernick  <timo@apple.com>

        Manual test case for the Java aspect of <rdar://problem/4212626> REGRESSION: LIVECONNECT:
        JavaScript type for Java Strings is function, not object

        * manual-tests/java-string-object-type.html: Added.
        * manual-tests/resources/StringTypeTest.class: Added.
        * manual-tests/resources/StringTypeTest.java: Added.

2006-03-30  Eric Seidel  <eseidel@apple.com>

        Reviewed by hyatt.

        Fix text form controls, and add basic submit support!

        * bridge/win/FrameWin.cpp:
        (WebCore::FrameWin::submitForm):
        * bridge/win/FrameWin.h:
        * platform/win/KeyEventWin.cpp:
        (WebCore::keyIdentifierForWindowsKeyCode):
        (WebCore::PlatformKeyboardEvent::PlatformKeyboardEvent):
        * platform/win/TemporaryLinkStubs.cpp:
        (FrameWin::incomingReferrer):
        * platform/win/TransferJobWin.cpp:
        (WebCore::TransferJob::start):

2006-03-30  Adele Peterson  <adele@apple.com>

        Reviewed by Justin.

        - Fix for http://bugs.webkit.org/show_bug.cgi?id=8083
        REGRESSION: Repro crash when dragging to select over a new text field

        * editing/Selection.cpp: (WebCore::Selection::adjustForEditableContent):
        When searching for non-editable content, if the end of the selection is in a 
        shadow tree, then we need to jump out of that first.

2006-03-30  Justin Garcia  <justin.garcia@apple.com>

        Reviewed by darin
        
        http://bugs.webkit.org/show_bug.cgi?id=6989
        REGRESSION: Plain-text mode needed for contenteditable area used in new text field

        * bridge/mac/WebCoreFrameBridge.h:
        * bridge/mac/WebCoreFrameBridge.mm:
        (-[WebCoreFrameBridge isSelectionEditable]):
        (-[WebCoreFrameBridge isSelectionRichlyEditable]):
        * css/CSSComputedStyleDeclaration.cpp:
        (WebCore::CSSComputedStyleDeclaration::getPropertyCSSValue):
        * css/CSSValueKeywords.in:
        * css/cssparser.cpp:
        (WebCore::CSSParser::parseValue):
        * dom/Node.cpp:
        (WebCore::Node::isContentRichlyEditable):
        * dom/Node.h:
        * editing/EditCommand.cpp:
        (WebCore::EditCommand::apply):
        * editing/JSEditor.cpp:
        * editing/ReplaceSelectionCommand.cpp:
        (WebCore::ReplacementFragment::ReplacementFragment):
        (WebCore::ReplaceSelectionCommand::doApply):
        * editing/Selection.h:
        (WebCore::Selection::rootEditableElement):
        (WebCore::Selection::isContentEditable):
        (WebCore::Selection::isContentRichlyEditable):
        * editing/SelectionController.h:
        (WebCore::SelectionController::rootEditableElement):
        (WebCore::SelectionController::isContentEditable):
        (WebCore::SelectionController::isContentRichlyEditable):
        * html/HTMLElement.cpp:
        (WebCore::HTMLElement::isContentEditable):
        (WebCore::HTMLElement::contentEditable):
        (WebCore::HTMLElement::setContentEditable):
        * rendering/RenderTextField.cpp:
        (WebCore::RenderTextField::createDivStyle):
        * rendering/render_style.h:
        (WebCore::):
        
2006-03-30  David Harrison  <harrison@apple.com>

        Reviewed by Justin.

        <rdar://problem/4444693> REGRESSION: Deleting empty lines causes quoted text to mistakenly get "unquoted"

        * editing/DeleteSelectionCommand.cpp:
        (WebCore::DeleteSelectionCommand::handleGeneralDelete):
        Formatting.
        (WebCore::DeleteSelectionCommand::moveNodesAfterNode):
        Generalize check that preserves nesting when deleting to the beginning of an ancestor block.

        * editing/deleting/delete-block-merge-contents-022.html: Added.
        * editing/deleting/delete-block-merge-contents-023.html: Added.
        * editing/deleting/delete-block-merge-contents-024.html: Added.

2006-03-30  Mitz Pettel  <opendarwin.org@mitzpettel.com>

        Reviewed by Darin.

        - Test for http://bugs.webkit.org/show_bug.cgi?id=8076
          REGRESSION: native text fields are reversed on "visual Hebrew" pages

        * fast/forms/visual-hebrew-text-field-expected.checksum: Added.
        * fast/forms/visual-hebrew-text-field-expected.png: Added.
        * fast/forms/visual-hebrew-text-field-expected.txt: Added.
        * fast/forms/visual-hebrew-text-field.html: Added.

2006-03-30  Alexey Proskuryakov  <ap@nypop.com>

        Reviewed by John Sullivan.

        - fix http://bugs.webkit.org/show_bug.cgi?id=8051
          Empty forms are submitted incorrectly

        Test: fast/forms/empty-get.html

        * platform/KURL.cpp:
        (KURL::setQuery): Add a question mark for empty query strings, too.

2006-03-30  Dave Hyatt <hyatt@apple.com>

        Roll out the fix to 7102 and reopen it to get Spinneret working
        again.

        Reviewed by justin

        * page/Frame.cpp:
        (WebCore::Frame::didOpenURL):
        (WebCore::Frame::receivedFirstData):
        (WebCore::Frame::begin):

2006-03-30  Dave Hyatt <hyatt@apple.com>

        Land support for JPEG image decoding on Win32.

        * WebCore.vcproj/WebCore/WebCore.vcproj:
        * platform/cairo/ImageSourceCairo.cpp:
        (WebCore::createDecoder):
        (WebCore::ImageSource::frameHasAlphaAtIndex):
        * platform/image-decoders/ImageDecoder.h:
        (WebCore::RGBA32Buffer::setRGBA):
        (WebCore::ImageDecoder::supportsAlpha):
        * platform/image-decoders/gif/GIFImageDecoder.cpp:
        (WebCore::GIFImageDecoder::haveDecodedRow):
        * platform/image-decoders/jpeg/JPEGImageDecoder.cpp:
        (WebCore::JPEGImageReader::JPEGImageReader):
        (WebCore::JPEGImageReader::close):
        (WebCore::JPEGImageReader::skipBytes):
        (WebCore::JPEGImageReader::decode):
        (WebCore::JPEGImageReader::info):
        (WebCore::JPEGImageReader::samples):
        (WebCore::JPEGImageReader::decoder):
        (WebCore::error_exit):
        (WebCore::init_source):
        (WebCore::skip_input_data):
        (WebCore::fill_input_buffer):
        (WebCore::term_source):
        (WebCore::JPEGImageDecoder::decode):
        (WebCore::JPEGImageDecoder::outputScanlines):
        (WebCore::JPEGImageDecoder::jpegComplete):
        * platform/image-decoders/jpeg/JPEGImageDecoder.h:
        (WebCore::JPEGImageDecoder::supportsAlpha):
        (WebCore::JPEGImageDecoder::setSize):
        * platform/image-decoders/png/PNGImageDecoder.cpp:
        (WebCore::PNGImageDecoder::rowAvailable):

2006-03-29  Justin Garcia  <justin.garcia@apple.com>

        Reviewed by darin
        
        <http://bugs.webkit.org/show_bug.cgi?id=8067>
        REGRESSION: selectionRect includes next/previous replaced elements
        Also fixes: <rdar://problems/4402375&4474871&4492934>
        
        In the case where a selection starts at the end or ends at the start
        of o, o->selectionState() != SelectionNone, but o isn't really selected.  
        Constraining the selection with upstream and downstream eliminates these
        types of endpoints, but constraining endpoints that occur at the 
        start or end of a paragraph creates positions inside containers - some 
        of which the selection painting code isn't equipped to handle.

        * dom/Document.cpp:
        (WebCore::Document::updateSelection):
        * rendering/render_replaced.cpp:
        (WebCore::RenderReplaced::shouldPaint):
        (WebCore::RenderReplaced::selectionRect):
        (WebCore::RenderReplaced::setSelectionState):
        (WebCore::RenderWidget::setSelectionState):

2006-03-29  Adele Peterson  <adele@apple.com>

        Reviewed by Hyatt.

        - Fix for http://bugs.webkit.org/show_bug.cgi?id=6986
        Switch to use new text field implementation for <input type="text">

        * css/html4.css: Added default style info for new text fields.
        * rendering/RenderTextField.cpp:
        (WebCore::RenderTextField::createDivStyle): Added an extra 1px of padding on the left & right to match Win IE & the latest Mozilla.
        (WebCore::RenderTextField::updateFromElement): Removed some outdated comments.  Cleaned up the way we add text nodes to the div.
        (WebCore::RenderTextField::setSelectionStart): Tweaked selection code to better match Mozilla behavior.
        (WebCore::RenderTextField::setSelectionEnd): ditto.
        (WebCore::RenderTextField::select): Cleaned this up by having it call setSelectionRange.
        (WebCore::RenderTextField::setSelectionRange): Calls updateLayout now in case this is called in an onload handler, and no other layout has occurred.
        (WebCore::RenderTextField::calcMinMaxWidth): Use floatWidth to calculate the width of the "0" character.
        * rendering/RenderTheme.cpp: (WebCore::RenderTheme::isControlStyled): If the text field's specified border is different from 
         the default border, then treat the control as styled, so the engine knows to turn off the aqua appearance.
        * rendering/RenderThemeMac.mm:
        (WebCore::RenderThemeMac::paintTextField): return false so the engine knows not to try to draw the border.
        (WebCore::RenderThemeMac::adjustTextFieldStyle): text field style info has been moved to html4.css. 
         We also add intrinsic margins here if the font size is large enough.
        * html/HTMLTextFieldInnerElement.cpp: (WebCore::HTMLTextFieldInnerElement::defaultEventHandler):
         No longer check for appearance. All text fields with m_type == TEXT will use the new implementation.
        * html/HTMLInputElement.cpp:
        (WebCore::HTMLInputElement::isKeyboardFocusable): ditto.
        (WebCore::HTMLInputElement::focus): ditto.
        (WebCore::HTMLInputElement::selectionStart): ditto.
        (WebCore::HTMLInputElement::selectionEnd): ditto.
        (WebCore::HTMLInputElement::setSelectionStart): ditto.
        (WebCore::HTMLInputElement::setSelectionEnd): ditto.
        (WebCore::HTMLInputElement::select): ditto.
        (WebCore::HTMLInputElement::setSelectionRange): ditto.
        (WebCore::HTMLInputElement::createRenderer): ditto.
        (WebCore::HTMLInputElement::defaultEventHandler): ditto.
        (WebCore::HTMLInputElement::isMouseFocusable): Added.  Old text fields relied on the widget to provide a focus policy.  
         A text field that is focusable should be mouse focusable, and shouldn't need to ask the base class.
        * html/HTMLInputElement.h: Added isMouseFocusable.
        * html/HTMLGenericFormElement.cpp: (WebCore::HTMLGenericFormElement::isMouseFocusable):
         Removed specific text field code since that is now done in HTMLInputElement::isMouseFocusable.
        * dom/Document.cpp: (WebCore::Document::clearSelectionIfNeeded): Check that the new selection is does not have a shadowAncestorNode that is focused.

2006-03-29  Darin Adler  <darin@apple.com>

        Reviewed by Eric.

        - fix http://bugs.webkit.org/show_bug.cgi?id=8026
          A particular animated SVG crashes in filter code
          <rdar://problem/4494775> A particular animated SVG crashes in filter code

        - fix some code that is not handling references correctly for GC

        Test: svg/custom/empty-merge.svg

        * kcanvas/device/quartz/KCanvasFilterQuartz.mm:
        (WebCore::KCanvasFilterQuartz::KCanvasFilterQuartz): Use KWQRetainNSRelease to
        properly retain a reference to an Objective-C object in a C++ class.
        (WebCore::KCanvasFilterQuartz::~KCanvasFilterQuartz): Use KWQRelease instead of
        release.
        (WebCore::KCanvasFilterQuartz::prepareFilter): Use KWQRetain instead of retain.
        (WebCore::KCanvasFilterQuartz::applyFilter): Use KWQRelease instead of release.
        (WebCore::KCanvasFilterQuartz::imageForName): Use objectForKey: instead of
        valueForKey: on the dictionary to sidestep a bug in valueForKey: on empty strings
        and because what we're doing with a dictionary here has nothing to do with
        key value encoding.

        * kcanvas/device/quartz/KRenderingDeviceQuartz.mm:
        (WebCore::KRenderingDeviceContextQuartz::~KRenderingDeviceContextQuartz):
        Use KWQRelease instead of release.
        (WebCore::KRenderingDeviceContextQuartz::nsGraphicsContext): Use KWQRetain
        instead of retain to properly retain a reference to an Objective-C object
        in a C++ class.

        * platform/mac/ImageMac.mm:
        (WebCore::Image::invalidateNativeData): Use CFRelease instead of release.
        (WebCore::Image::getNSImage): Use KWQRetainNSRelease to properly retain
        a reference to an Objective-C object in a C++ class.

2006-03-29  Geoffrey Garen  <ggaren@apple.com>

        Reviewed by Darin.

        - WebCore side of fix for <rdar://problem/4308243> 8F36 Regression: 
        crash in malloc_consolidate if you use a .PAC file

        (1) To ensure thread-safe deallocation, set the "unsafe to destroy on 
        non-main threads" bit in the DOMObject constructor.

        (2) Made all binding objects inherit from DOMObject, because the
        WebCore data structures they wrap are not thread-safe. "DOMObject" is
        a slightly awkward name for things like the Window object, but the 
        DOM spec is considering adding a Window object, and creating a whole
        new base class for this purpose seemed like overkill.

        * khtml/ecma/JSDOMParser.h:
        * khtml/ecma/JSXMLHttpRequest.h:
        * khtml/ecma/JSXMLSerializer.cpp:
        (KJS::XMLSerializerConstructorImp::XMLSerializerConstructorImp):
        * khtml/ecma/JSXMLSerializer.h:
        * khtml/ecma/JSXSLTProcessor.h:
        * khtml/ecma/kjs_binding.h:
        (KJS::DOMObject::DOMObject): Unset the "safe to collect on non-main
        threads bit" to ensure thread-safe deallocation.
        * khtml/ecma/kjs_html.h:
        * khtml/ecma/kjs_navigator.cpp:
        (KJS::Navigator::Navigator):
        (KJS::PluginBase::PluginBase):
        * khtml/ecma/kjs_navigator.h:
        * khtml/ecma/kjs_proxy.cpp:
        * khtml/ecma/kjs_window.cpp:
        (KJS::History::History):
        (KJS::FrameArray::FrameArray):
        (KJS::Screen::Screen):
        (KJS::Window::Window):
        (KJS::BarInfo::BarInfo):
        * khtml/ecma/kjs_window.h:

2006-03-29  Geoffrey Garen  <ggaren@apple.com>

        Reviewed by Darin.

        - Fixed <rdar://problem/4477126> TOT REGRESSION: with release
        build, maps.google.com zoom slider always zooms fully out

        There were 2 problems: (1) A syntax error in the UIEvent IDL file
        prevented some things from showing up in the bindings; (2)
        MouseEvent had a duplicate isSimulated property that shadowed
        MouseRelatedEvent's isSimulated property, and MouseEvent failed to
        initialize MouseRelatedEvent's isSimulated property.

        * dom/UIEvent.idl:
        * dom/dom2_eventsimpl.cpp:
        (WebCore::MouseRelatedEvent::MouseRelatedEvent):
        (WebCore::MouseEvent::MouseEvent):
        * dom/dom2_eventsimpl.h:

2006-03-29  Tim Omernick  <timo@apple.com>

        Reviewed by Darin.

        * html/HTMLInputElement.cpp:
        (WebCore::HTMLInputElement::setInputType):
        If the input type is dynamically changed, reevaluate whether the element maintains its state
        (this decision is based on the input's type).  Fixes an assertion error when leaving a page
        with a text field that had been dynamically changed to a password field.

2006-03-29  Alexey Proskuryakov  <ap@nypop.com>

        Reviewed by Darin.

        - http://bugs.webkit.org/show_bug.cgi?id=8055
          Fix most CSS grammar conflicts.

        Gets the number of shift/reduce and reduce/reduce conflicts down from 37+4 to 7+0.

        I have fixed the reduce/reduce conflicts, then noticed that two of the fixes
        were already made in KDE tree (the other two are different because declaration
        blocks are described in quite different ways). Shift/reduce fixes are just
        merged from KDE, r332845 by Michael Matz.

        * css/CSSGrammar.y:

2006-03-29  Alexey Proskuryakov  <ap@nypop.com>

        Reviewed by Darin.

        - fix http://bugs.webkit.org/show_bug.cgi?id=7157
          An asterisk in a CSS property name breaks CSS handling 
          (Many layout problems at letras.terra.com.br)

        Test: fast/css/error-in-last-decl.html

        * css/CSSGrammar.y: Added a rule for the case when the last CSS rule 
          has a syntax error, and doesn't end with a semicolon.

2006-03-29  Darin Adler  <darin@apple.com>

        Reviewed by Anders.

        - another cut at fixing the buildbot

        * generate-derived-sources: Fix if statement that was always following
        the Windows case. I believe this is the main problem.

        * WebCore.xcodeproj/project.pbxproj: Added CharsetData.h and added CharsetData.cpp
        to the target.
        * WebCore.vcproj/WebCore/WebCore.vcproj: Similar changes.

        * platform/CharsetData.h: Added.
        * platform/CharsetNames.cpp: Moved the actual character set data out into a
        separate source file instead of include a .cpp file.

        * platform/make-charset-table.pl: Changed to generate a file that can stand alone.

2006-03-29  Darin Adler  <darin@apple.com>

        - an attempt to fix the buildbot

        * platform/mac/mac-encodings.txt: Touched this file so the character encodings
        files will be regenerated.

2006-03-29  Darin Adler  <darin@apple.com>

        - a quick cut at fixing the windows build

        * WebCore.vcproj/WebCore/WebCore.vcproj: Added a few recently-added files.

2006-03-29  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by Anders.
        
        - fixed  <rdar://problem/4454976> repro crash in -[NSTextView(NSSharing) setSelectedRanges:affinity:stillSelecting:] when navigating
        
        Also fixed other issues with contains. The problem that caused the bug was:
        - contains should return true for the element itself, unlike isAncestor
        
        Other problems I fixed:
        - contains shouldn't be present on non-Element nodes
        - contains should return false when passed a non-Element node
        - contains should return false when passed a non-Node

        * bindings/scripts/CodeGeneratorJS.pm: Handle Element as a parameter.
        * dom/Element.cpp:
        (WebCore::Element::contains): Added new implementation.
        * dom/Element.h: Added prototype for contains.
        * dom/Element.idl: Added IDL declaration for contains.
        * khtml/ecma/kjs_dom.cpp:
        (KJS::DOMNodeProtoFunc::callAsFunction): Added old wrong contains().

2006-03-28  Beth Dakin  <bdakin@apple.com>

        Reviewed by Maciej

        Fix for <rdar://problem/4493218> repro crash in 
        khtml::RenderBlock::repaintFloatingDescendants with giant 
        cellspacing value

        Some callers of CSSPrimitiveValue::computeLength() expect an int, 
        and others a short. This patch splits computeLength() into 
        computeIntLength() and computeShortLength() so that the appropriate 
        bounds can be checked. 

        * css/css_valueimpl.cpp:
        (WebCore::CSSPrimitiveValue::computeIntLength): Return 0 if not 
        within int bounds.
        (WebCore::CSSPrimitiveValue::computeShortLength): Return 0 if not 
        within short bounds.
        * css/css_valueimpl.h:
        * css/cssstyleselector.cpp:
        (WebCore::convertToLength): Switch to appropriate computeLength() 
        call.
        (WebCore::CSSStyleSelector::applyProperty): Same.
        (WebCore::CSSStyleSelector::mapBackgroundXPosition): Same.
        (WebCore::CSSStyleSelector::mapBackgroundYPosition): Same.
        * rendering/RenderBlock.cpp:
        (WebCore::RenderBlock::repaintFloatingDescendants): Nil check 
        m_floatingObjects and add an assertion. This is not necessary for 
        the fix, it is just because we are not sure that it is safe not to 
        nil-check, and we want to prevent potential problems in release 
        builds, and catch them with the assertion in debug builds.
        (WebCore::RenderBlock::addOverhangingFloats): Same as above.

2006-03-28  Alexey Proskuryakov  <ap@nypop.com>

        Reviewed by Maciej.

        - fix http://bugs.webkit.org/show_bug.cgi?id=4616
          Setting nodeValue on a textnode with collapsed whitespace only has no visual effect

        Test: fast/dom/space-to-text.html

        * dom/CharacterData.cpp:
        (WebCore::CharacterData::setData): Create a renderer if it's needed, but missing.
        (WebCore::CharacterData::appendData): Ditto.
        (WebCore::CharacterData::insertData): Ditto.
        (WebCore::CharacterData::replaceData): Ditto.

2006-03-28  Tim Omernick  <timo@apple.com>

        Reviewed by Maciej.

        <rdar://problem/4454976> repro crash in -[NSTextView(NSSharing) setSelectedRanges:affinity:stillSelecting:] when navigating
        to another page while selecting inside textarea inside iframe

        * kwq/WebCoreTextArea.mm:
        (-[WebCoreTextArea mouseDown:]):
        Guard super's -mouseDown: with calls to Widget::beforeMouseDown() and Widget::afterMouseDown().
        Other widgets do this to protect against being removed from the page and deallocated while handling
        mouse down events.
        (-[WebCoreTextView mouseDown:]):
        ditto

        * manual-tests/textarea-iframe-navigation.html: Added.
        * manual-tests/textarea-iframe-navigation2.html: Added.
        Manual test case for this fix.

2006-03-28  Eric Seidel  <eseidel@apple.com>

        Reviewed by darin.

        <rdar://problem/4402170> CrashTracer: 499 crashes in Safari at com.apple.WebCore: DOM::DocumentImpl::open + 16

        * dom/Document.cpp:
        (WebCore::Document::write): Fix unreproducible infinite recursion.

2006-03-28  Eric Seidel  <eseidel@apple.com>

        Reviewed by darin.

        Remove global initializers.

        * kcanvas/device/quartz/KCanvasFilterQuartz.mm:
        * ksvg2/svg/SVGAngle.cpp:
        * ksvg2/svg/SVGColor.cpp:
        * ksvg2/svg/SVGLength.cpp:

2006-03-28  Eric Seidel  <eseidel@apple.com>

        Reviewed by darin.

        Switch UIEvent, MouseEvent and KeyboardEvent over to
        be new auto-generated bindings.
        http://bugs.webkit.org/show_bug.cgi?id=7928

        Updated test: fast/dom/prototype-chain.html

        * WebCore.xcodeproj/project.pbxproj:
        * bindings/objc/DOMEvents.mm:
        (-[DOMEvent ::]):
        (-[DOMMouseEvent initMouseEvent:::::::::::::::]):
        * bindings/scripts/CodeGeneratorJS.pm:
        * dom/EventTargetNode.cpp:
        (WebCore::EventTargetNode::dispatchMouseEvent):
        * dom/KeyboardEvent.idl: Added.
        * dom/MouseEvent.idl: Added.
        * dom/UIEvent.idl: Added.
        * dom/WheelEvent.idl:
        * dom/dom2_eventsimpl.cpp:
        (WebCore::MouseEvent::MouseEvent):
        (WebCore::MouseEvent::initMouseEvent):
        * dom/dom2_eventsimpl.h:
        (WebCore::MouseEvent::relatedTarget):
        (WebCore::MouseEvent::clipboard):
        * generate-derived-sources:
        * khtml/ecma/kjs_dom.cpp:
        (KJS::toEventTargetNode):
        * khtml/ecma/kjs_dom.h:
        * khtml/ecma/kjs_events.cpp:
        (KJS::toJS):
        * khtml/ecma/kjs_events.h:

2006-03-28  Darin Adler  <darin@apple.com>

        Reviewed by Eric.

        - replace getDocument with document in a few places that Geoff missed

        * WebCore.xcodeproj/project.pbxproj:
        * dom/Attr.cpp:
        (WebCore::Attr::createTextChild):
        (WebCore::Attr::setValue):
        (WebCore::Attr::cloneNode):
        * dom/Attribute.cpp:
        (WebCore::Attribute::createAttrIfNeeded):
        * dom/Element.cpp:
        (WebCore::Element::cloneNode):
        (WebCore::inHTMLDocument):
        (WebCore::Element::setAttribute):
        (WebCore::Element::setAttributeMap):
        (WebCore::Element::createStyleForRenderer):
        (WebCore::Element::createRenderer):
        (WebCore::Element::recalcStyle):
        (WebCore::Element::dispatchAttrRemovalEvent):
        (WebCore::Element::dispatchAttrAdditionEvent):
        (WebCore::Element::updateId):
        (WebCore::Element::removeAttributeNode):
        (WebCore::Element::focus):
        (WebCore::Element::blur):
        * dom/NamedAttrMap.cpp:
        (WebCore::inHTMLDocument):
        (WebCore::NamedAttrMap::setNamedItem):
        * dom/NamedMappedAttrMap.cpp:
        (WebCore::NamedMappedAttrMap::parseClassAttribute):
        * dom/StyledElement.cpp:
        (WebCore::StyledElement::createInlineStyleDecl):
        (WebCore::StyledElement::parseMappedAttribute):
        (WebCore::StyledElement::createMappedDecl):

        - added missing include that seems to be breaking the Windows build

        * platform/String.cpp: Include <stdarg.h>.

2006-03-28  Geoffrey Garen  <ggaren@apple.com>

        Reviewed by Beth.

        - Global replace of getDocument() with document(). Darin suggested this
        in his review of my EventTargetNode patch. It matches the style of
        methods like ownerDocument().

        - Changed getDocument() to document(); changed data member document to
        m_document; changed stack variable document to doc.

        * bindings/objc/DOM.mm:
        (-[DOMNode ownerDocument]):
        (-[DOMNode KJS::Bindings::]):
        (-[DOMElement _getURLAttribute:]):
        * bindings/objc/DOMHTML.mm:
        (-[DOMHTMLElement titleDisplayString]):
        (-[DOMHTMLInputElement altDisplayString]):
        (-[DOMHTMLAnchorElement blur]):
        (-[DOMHTMLAnchorElement focus]):
        (-[DOMHTMLImageElement altDisplayString]):
        (-[DOMHTMLAppletElement altDisplayString]):
        (-[DOMHTMLAreaElement altDisplayString]):
        * bindings/objc/DOMInternal.mm:
        (-[WebScriptObject _initializeScriptDOMNodeImp]):
        * bridge/mac/FrameMac.mm:
        (WebCore::FrameMac::attributedString):
        * bridge/mac/FrameViewMac.mm:
        (WebCore::FrameView::updateDashboardRegions):
        * bridge/mac/WebCoreFrameBridge.mm:
        (-[WebCoreFrameBridge initSubframeWithRenderer:]):
        (-[WebCoreFrameBridge setSelectedDOMRange:affinity:closeTyping:]):
        (-[WebCoreFrameBridge smartDeleteRangeForProposedRange:]):
        * css/CSSComputedStyleDeclaration.cpp:
        (WebCore::CSSComputedStyleDeclaration::getPropertyCSSValue):
        * css/css_base.cpp:
        (WebCore::StyleBase::baseURL):
        * css/css_stylesheetimpl.cpp:
        (WebCore::CSSStyleSheet::CSSStyleSheet):
        * css/cssstyleselector.cpp:
        (WebCore::CSSStyleSelector::initForStyleResolve):
        (WebCore::CSSStyleSelector::canShareStyleWithElement):
        (WebCore::CSSStyleSelector::locateSharedStyle):
        (WebCore::CSSStyleSelector::createStyleForElement):
        (WebCore::CSSStyleSelector::createPseudoStyleForElement):
        (WebCore::CSSStyleSelector::adjustRenderStyle):
        (WebCore::CSSStyleSelector::styleRulesForElement):
        (WebCore::CSSStyleSelector::checkOneSelector):
        (WebCore::CSSStyleSelector::applyProperty):
        (WebCore::CSSStyleSelector::mapBackgroundImage):
        (WebCore::CSSStyleSelector::getColorFromPrimitiveValue):
        * dom/AbstractView.cpp:
        (WebCore::AbstractView::AbstractView):
        * dom/CDATASection.cpp:
        (WebCore::CDATASection::cloneNode):
        (WebCore::CDATASection::createNew):
        * dom/CharacterData.cpp:
        (WebCore::CharacterData::setData):
        (WebCore::CharacterData::insertData):
        (WebCore::CharacterData::deleteData):
        (WebCore::CharacterData::replaceData):
        (WebCore::CharacterData::dispatchModifiedEvent):
        * dom/Comment.cpp:
        (WebCore::Comment::cloneNode):
        * dom/ContainerNode.cpp:
        (WebCore::ContainerNode::insertBefore):
        (WebCore::ContainerNode::replaceChild):
        (WebCore::ContainerNode::removeChild):
        (WebCore::ContainerNode::appendChild):
        (WebCore::ContainerNode::addChild):
        (WebCore::ContainerNode::getUpperLeftCorner):
        (WebCore::dispatchChildInsertionEvents):
        (WebCore::dispatchChildRemovalEvents):
        * dom/DOMImplementation.cpp:
        (WebCore::DOMImplementation::createDocument):
        * dom/Document.cpp:
        (WebCore::Document::Document):
        (WebCore::Document::~Document):
        (WebCore::Document::createDocumentFragment):
        (WebCore::Document::adoptNode):
        (WebCore::Document::createElementNS):
        (WebCore::Document::nodeAbsIndex):
        (WebCore::Document::setFocusNode):
        (WebCore::Document::topDocument):
        * dom/DocumentFragment.cpp:
        (WebCore::DocumentFragment::cloneNode):
        * dom/EventTargetNode.cpp:
        (WebCore::EventTargetNode::~EventTargetNode):
        (WebCore::EventTargetNode::insertedIntoDocument):
        (WebCore::EventTargetNode::removedFromDocument):
        (WebCore::EventTargetNode::addEventListener):
        (WebCore::EventTargetNode::removeEventListener):
        (WebCore::EventTargetNode::dispatchGenericEvent):
        (WebCore::EventTargetNode::dispatchEvent):
        (WebCore::EventTargetNode::dispatchSubtreeModifiedEvent):
        (WebCore::EventTargetNode::dispatchWindowEvent):
        (WebCore::EventTargetNode::dispatchUIEvent):
        (WebCore::EventTargetNode::dispatchKeyEvent):
        (WebCore::EventTargetNode::dispatchMouseEvent):
        (WebCore::EventTargetNode::dispatchWheelEvent):
        (WebCore::EventTargetNode::removeHTMLEventListener):
        * dom/Node.cpp:
        (WebCore::Node::Node):
        (WebCore::Node::setDocument):
        (WebCore::Node::setChanged):
        (WebCore::Node::checkSetPrefix):
        (WebCore::Node::checkAddChild):
        (WebCore::Node::attach):
        (WebCore::Node::detach):
        (WebCore::Node::createRendererIfNeeded):
        (WebCore::Node::rendererIsNeeded):
        (WebCore::Node::getElementsByTagNameNS):
        (WebCore::Node::ownerDocument):
        (WebCore::Node::setTextContent):
        * dom/Node.h:
        (WebCore::Node::document):
        (WebCore::Node::inDocument):
        * dom/NodeList.cpp:
        (WebCore::NodeList::itemById):
        * dom/Position.cpp:
        (WebCore::Position::documentElement):
        * dom/Range.cpp:
        (WebCore::Range::commonAncestorContainer):
        (WebCore::Range::setStart):
        (WebCore::Range::setEnd):
        (WebCore::Range::compareBoundaryPoints):
        (WebCore::Range::insertNode):
        (WebCore::Range::text):
        (WebCore::Range::setStartAfter):
        (WebCore::Range::setEndBefore):
        (WebCore::Range::setEndAfter):
        (WebCore::Range::surroundContents):
        (WebCore::Range::setStartBefore):
        (WebCore::rangeOfContents):
        * dom/Text.cpp:
        (WebCore::Text::cloneNode):
        (WebCore::Text::createNew):
        * dom/dom2_eventsimpl.cpp:
        (WebCore::MouseRelatedEvent::receivedTarget):
        * dom/dom2_traversalimpl.cpp:
        (WebCore::NodeIterator::NodeIterator):
        * dom/dom_elementimpl.cpp:
        (WebCore::Attribute::createAttrIfNeeded):
        (WebCore::Attr::createTextChild):
        (WebCore::Attr::setValue):
        (WebCore::Attr::cloneNode):
        (WebCore::Element::cloneNode):
        (WebCore::inHTMLDocument):
        (WebCore::Element::setAttribute):
        (WebCore::Element::setAttributeMap):
        (WebCore::Element::createStyleForRenderer):
        (WebCore::Element::createRenderer):
        (WebCore::Element::recalcStyle):
        (WebCore::Element::dispatchAttrRemovalEvent):
        (WebCore::Element::dispatchAttrAdditionEvent):
        (WebCore::Element::updateId):
        (WebCore::Element::removeAttributeNode):
        (WebCore::Element::focus):
        (WebCore::Element::blur):
        (WebCore::NamedAttrMap::setNamedItem):
        (WebCore::NamedMappedAttrMap::parseClassAttribute):
        (WebCore::StyledElement::createInlineStyleDecl):
        (WebCore::StyledElement::parseMappedAttribute):
        (WebCore::StyledElement::createMappedDecl):
        * dom/dom_xmlimpl.cpp:
        (WebCore::EntityReference::cloneNode):
        (WebCore::ProcessingInstruction::cloneNode):
        (WebCore::ProcessingInstruction::checkStyleSheet):
        (WebCore::ProcessingInstruction::sheetLoaded):
        (WebCore::ProcessingInstruction::setStyleSheet):
        * dom/xml_tokenizer.cpp:
        (WebCore::XMLTokenizer::XMLTokenizer):
        * editing/ReplaceSelectionCommand.cpp:
        (WebCore::ReplacementFragment::ReplacementFragment):
        (WebCore::ReplaceSelectionCommand::fixupNodeStyles):
        (WebCore::styleForNode):
        * editing/Selection.cpp:
        (WebCore::Selection::toRange):
        * editing/SelectionController.cpp:
        (WebCore::SelectionController::~SelectionController):
        (WebCore::SelectionController::setSelection):
        (WebCore::SelectionController::xPosForVerticalArrowNavigation):
        (WebCore::SelectionController::frame):
        (WebCore::SelectionController::layout):
        (WebCore::SelectionController::needsCaretRepaint):
        * editing/TextIterator.cpp:
        (WebCore::TextIterator::range):
        (WebCore::SimplifiedBackwardsTextIterator::range):
        * editing/VisiblePosition.cpp:
        (WebCore::VisiblePosition::init):
        (WebCore::makeRange):
        * editing/markup.cpp:
        (WebCore::startMarkup):
        (WebCore::shouldSelfClose):
        (WebCore::markup):
        (WebCore::createMarkup):
        * editing/visible_units.cpp:
        (WebCore::previousBoundary):
        (WebCore::nextBoundary):
        (WebCore::previousLinePosition):
        (WebCore::nextLinePosition):
        (WebCore::inSameDocument):
        * html/HTMLCollection.cpp:
        (WebCore::HTMLCollection::HTMLCollection):
        (WebCore::HTMLCollection::resetCollectionInfo):
        * html/HTMLElement.cpp:
        (WebCore::HTMLElement::nodeName):
        (WebCore::HTMLElement::cloneNode):
        (WebCore::HTMLElement::innerText):
        (WebCore::HTMLElement::createContextualFragment):
        (WebCore::HTMLElement::setInnerText):
        (WebCore::HTMLElement::setOuterText):
        (WebCore::HTMLElement::isContentEditable):
        (WebCore::HTMLElement::contentEditable):
        (WebCore::HTMLElement::toString):
        (WebCore::HTMLElement::childAllowed):
        (WebCore::HTMLElement::setHTMLEventListener):
        * html/HTMLFormElement.cpp:
        (WebCore::HTMLFormElement::formWouldHaveSecureSubmission):
        (WebCore::HTMLFormElement::attach):
        (WebCore::HTMLFormElement::insertedIntoDocument):
        (WebCore::HTMLFormElement::removedFromDocument):
        (WebCore::HTMLFormElement::formData):
        (WebCore::HTMLFormElement::prepareSubmit):
        (WebCore::HTMLFormElement::submit):
        (WebCore::HTMLFormElement::reset):
        (WebCore::HTMLFormElement::parseMappedAttribute):
        (WebCore::HTMLFormElement::registerFormElement):
        (WebCore::HTMLFormElement::removeFormElement):
        * html/HTMLGenericFormElement.cpp:
        (WebCore::HTMLGenericFormElement::attach):
        (WebCore::HTMLGenericFormElement::insertedIntoTree):
        (WebCore::HTMLGenericFormElement::isKeyboardFocusable):
        * html/HTMLInputElement.cpp:
        (WebCore::HTMLInputElement::~HTMLInputElement):
        (WebCore::HTMLInputElement::isKeyboardFocusable):
        (WebCore::HTMLInputElement::focus):
        (WebCore::HTMLInputElement::setInputType):
        (WebCore::HTMLInputElement::parseMappedAttribute):
        (WebCore::HTMLInputElement::attach):
        (WebCore::HTMLInputElement::setChecked):
        (WebCore::HTMLInputElement::preDispatchEventHandler):
        (WebCore::HTMLInputElement::defaultEventHandler):
        (WebCore::HTMLInputElement::src):
        * html/HTMLKeygenElement.cpp:
        (WebCore::HTMLKeygenElement::appendFormData):
        * html/HTMLLabelElement.cpp:
        (WebCore::HTMLLabelElement::formElement):
        * html/HTMLOptionElement.cpp:
        (WebCore::HTMLOptionElement::text):
        (WebCore::HTMLOptionElement::setText):
        * html/HTMLParser.cpp:
        (WebCore::HTMLParser::HTMLParser):
        * html/HTMLSelectElement.cpp:
        (WebCore::HTMLSelectElement::~HTMLSelectElement):
        * html/HTMLTextAreaElement.cpp:
        (WebCore::HTMLTextAreaElement::~HTMLTextAreaElement):
        (WebCore::HTMLTextAreaElement::setDefaultValue):
        * html/HTMLTokenizer.cpp:
        (WebCore::HTMLTokenizer::HTMLTokenizer):
        * html/html_baseimpl.cpp:
        (WebCore::HTMLBodyElement::createLinkDecl):
        (WebCore::HTMLBodyElement::mapToEntry):
        (WebCore::HTMLBodyElement::parseMappedAttribute):
        (WebCore::HTMLBodyElement::insertedIntoDocument):
        (WebCore::HTMLFrameElement::isURLAllowed):
        (WebCore::HTMLFrameElement::openURL):
        (WebCore::HTMLFrameElement::attach):
        (WebCore::HTMLFrameElement::close):
        (WebCore::HTMLFrameElement::contentFrame):
        (WebCore::HTMLFrameElement::frameWidth):
        (WebCore::HTMLFrameElement::frameHeight):
        (WebCore::HTMLFrameSetElement::parseMappedAttribute):
        (WebCore::HTMLIFrameElement::parseMappedAttribute):
        (WebCore::HTMLIFrameElement::insertedIntoDocument):
        (WebCore::HTMLIFrameElement::removedFromDocument):
        (WebCore::HTMLIFrameElement::attach):
        (WebCore::HTMLIFrameElement::src):
        * html/html_blockimpl.cpp:
        (WebCore::HTMLParagraphElement::checkDTD):
        * html/html_headimpl.cpp:
        (WebCore::HTMLBaseElement::removedFromDocument):
        (WebCore::HTMLBaseElement::process):
        (WebCore::HTMLLinkElement::setDisabledState):
        (WebCore::HTMLLinkElement::parseMappedAttribute):
        (WebCore::HTMLLinkElement::process):
        (WebCore::HTMLLinkElement::setStyleSheet):
        (WebCore::HTMLLinkElement::sheetLoaded):
        (WebCore::HTMLLinkElement::href):
        (WebCore::HTMLMetaElement::process):
        (WebCore::HTMLScriptElement::childrenChanged):
        (WebCore::HTMLScriptElement::parseMappedAttribute):
        (WebCore::HTMLScriptElement::insertedIntoDocument):
        (WebCore::HTMLScriptElement::evaluateScript):
        (WebCore::HTMLScriptElement::setText):
        (WebCore::HTMLScriptElement::src):
        (WebCore::HTMLStyleElement::insertedIntoDocument):
        (WebCore::HTMLStyleElement::removedFromDocument):
        (WebCore::HTMLStyleElement::childrenChanged):
        (WebCore::HTMLStyleElement::sheetLoaded):
        (WebCore::HTMLTitleElement::insertedIntoDocument):
        (WebCore::HTMLTitleElement::removedFromDocument):
        (WebCore::HTMLTitleElement::childrenChanged):
        (WebCore::HTMLTitleElement::setText):
        * html/html_imageimpl.cpp:
        (WebCore::HTMLImageLoader::~HTMLImageLoader):
        (WebCore::HTMLImageLoader::updateFromElement):
        (WebCore::HTMLImageLoader::notifyFinished):
        (WebCore::HTMLImageElement::parseMappedAttribute):
        (WebCore::HTMLImageElement::insertedIntoDocument):
        (WebCore::HTMLImageElement::removedFromDocument):
        (WebCore::HTMLImageElement::width):
        (WebCore::HTMLImageElement::height):
        (WebCore::HTMLImageElement::src):
        (WebCore::HTMLMapElement::~HTMLMapElement):
        (WebCore::HTMLMapElement::parseMappedAttribute):
        (WebCore::HTMLAreaElement::href):
        * html/html_inlineimpl.cpp:
        (WebCore::HTMLAnchorElement::isKeyboardFocusable):
        (WebCore::HTMLAnchorElement::defaultEventHandler):
        (WebCore::HTMLAnchorElement::href):
        (WebCore::HTMLAnchorElement::blur):
        (WebCore::HTMLAnchorElement::focus):
        * html/html_objectimpl.cpp:
        (WebCore::HTMLAppletElement::parseMappedAttribute):
        (WebCore::HTMLAppletElement::insertedIntoDocument):
        (WebCore::HTMLAppletElement::removedFromDocument):
        (WebCore::HTMLAppletElement::createRenderer):
        (WebCore::HTMLAppletElement::getAppletInstance):
        (WebCore::HTMLEmbedElement::getEmbedInstance):
        (WebCore::HTMLEmbedElement::parseMappedAttribute):
        (WebCore::HTMLEmbedElement::rendererIsNeeded):
        (WebCore::HTMLEmbedElement::insertedIntoDocument):
        (WebCore::HTMLEmbedElement::removedFromDocument):
        (WebCore::HTMLObjectElement::getObjectInstance):
        (WebCore::HTMLObjectElement::parseMappedAttribute):
        (WebCore::HTMLObjectElement::rendererIsNeeded):
        (WebCore::HTMLObjectElement::insertedIntoDocument):
        (WebCore::HTMLObjectElement::removedFromDocument):
        (WebCore::HTMLObjectElement::updateDocNamedItem):
        (WebCore::HTMLParamElement::parseMappedAttribute):
        * html/html_tableimpl.cpp:
        (WebCore::HTMLTableElement::createTHead):
        (WebCore::HTMLTableElement::createTFoot):
        (WebCore::HTMLTableElement::createCaption):
        (WebCore::HTMLTableElement::insertRow):
        (WebCore::HTMLTableElement::addChild):
        (WebCore::HTMLTableElement::mapToEntry):
        (WebCore::HTMLTableElement::parseMappedAttribute):
        (WebCore::HTMLTableElement::additionalAttributeStyleDecl):
        (WebCore::HTMLTableElement::getSharedCellDecl):
        (WebCore::HTMLTablePartElement::mapToEntry):
        (WebCore::HTMLTablePartElement::parseMappedAttribute):
        (WebCore::HTMLTableSectionElement::insertRow):
        (WebCore::HTMLTableRowElement::insertCell):
        * khtml/ecma/kjs_dom.cpp:
        (KJS::DOMNode::~DOMNode):
        (KJS::DOMNode::mark):
        (KJS::DOMElement::getValueProperty):
        (KJS::DOMElementProtoFunc::callAsFunction):
        (KJS::checkNodeSecurity):
        (KJS::toJS):
        * khtml/ecma/kjs_html.cpp:
        (KJS::JSHTMLElement::implementsCall):
        (KJS::JSHTMLElement::bodyGetter):
        (KJS::JSHTMLElement::anchorGetter):
        (KJS::JSHTMLElement::getValueProperty):
        (KJS::JSHTMLElement::bodySetter):
        * khtml/ecma/kjs_traversal.cpp:
        (KJS::JSNodeFilterCondition::acceptNode):
        * khtml/ecma/kjs_views.cpp:
        (KJS::DOMAbstractViewProtoFunc::callAsFunction):
        * khtml/xbl/xbl_binding.cpp:
        (XBL::XBLBindingChain::failed):
        (XBL::m_nextBinding):
        (XBL::XBLBinding::setXBLDocument):
        * khtml/xbl/xbl_protobinding.cpp:
        (XBL::XBLPrototypeBinding::document):
        * khtml/xsl/XSLStyleSheet.cpp:
        (WebCore::XSLStyleSheet::XSLStyleSheet):
        * khtml/xsl/XSLTProcessor.cpp:
        (WebCore::XSLTProcessor::createDocumentFromSource):
        (WebCore::xmlDocPtrFromNode):
        (WebCore::XSLTProcessor::transformToString):
        * ksvg2/svg/SVGAElement.cpp:
        (SVGAElement::defaultEventHandler):
        * ksvg2/svg/SVGAnimateColorElement.cpp:
        (SVGAnimateColorElement::handleTimerEvent):
        * ksvg2/svg/SVGAnimateElement.cpp:
        (SVGAnimateElement::handleTimerEvent):
        * ksvg2/svg/SVGAnimateTransformElement.cpp:
        (SVGAnimateTransformElement::handleTimerEvent):
        * ksvg2/svg/SVGAnimationElement.cpp:
        (SVGAnimationElement::closeRenderer):
        * ksvg2/svg/SVGClipPathElement.cpp:
        (SVGClipPathElement::canvasResource):
        * ksvg2/svg/SVGElement.cpp:
        (WebCore::SVGElement::addSVGEventListener):
        * ksvg2/svg/SVGGradientElement.cpp:
        (SVGGradientElement::rebuildStops):
        * ksvg2/svg/SVGHelper.cpp:
        (SVGHelper::PercentageOfViewport):
        * ksvg2/svg/SVGLinearGradientElement.cpp:
        (SVGLinearGradientElement::buildGradient):
        * ksvg2/svg/SVGPatternElement.cpp:
        (WebCore::SVGPatternElement::fillAttributesFromReferencePattern):
        * ksvg2/svg/SVGRadialGradientElement.cpp:
        (WebCore::SVGRadialGradientElement::buildGradient):
        * ksvg2/svg/SVGSVGElement.cpp:
        (WebCore::SVGSVGElement::setCurrentScale):
        (WebCore::SVGSVGElement::addSVGWindowEventListner):
        * ksvg2/svg/SVGSetElement.cpp:
        (SVGSetElement::handleTimerEvent):
        * ksvg2/svg/SVGStyleElement.cpp:
        (SVGStyleElement::childrenChanged):
        * ksvg2/svg/SVGStyledElement.cpp:
        (WebCore::SVGStyledElement::canvas):
        * ksvg2/svg/SVGTitleElement.cpp:
        (WebCore::SVGTitleElement::closeRenderer):
        (WebCore::SVGTitleElement::insertedIntoDocument):
        (WebCore::SVGTitleElement::removedFromDocument):
        (WebCore::SVGTitleElement::childrenChanged):
        * ksvg2/svg/SVGUseElement.cpp:
        (SVGUseElement::closeRenderer):
        * kwq/WebCoreAXObject.mm:
        (-[WebCoreAXObject accessibilityPerformAction:]):
        (-[WebCoreAXObject accessibilityAttributeValue:]):
        * page/Frame.cpp:
        (WebCore::parentFromOwnerRenderer):
        (WebCore::Frame::frameForNode):
        (WebCore::Frame::clearDocumentFocus):
        * page/FrameView.cpp:
        (WebCore::FrameView::dispatchMouseEvent):
        * rendering/RenderBox.cpp:
        (WebCore::RenderBox::setStyle):
        * rendering/RenderCanvas.cpp:
        (WebCore::RenderCanvas::RenderCanvas):
        (WebCore::RenderCanvas::paintBoxDecorations):
        (WebCore::RenderCanvas::repaintViewRectangle):
        * rendering/RenderImage.cpp:
        (WebCore::RenderImage::imageMap):
        * rendering/RenderLayer.cpp:
        (WebCore::RenderLayer::setHasHorizontalScrollbar):
        (WebCore::RenderLayer::setHasVerticalScrollbar):
        * rendering/RenderObject.cpp:
        (WebCore::RenderObject::createObject):
        (WebCore::RenderObject::RenderObject):
        (WebCore::RenderObject::isRoot):
        (WebCore::RenderObject::backslashAsCurrencySymbol):
        * rendering/RenderObject.h:
        (WebCore::RenderObject::document):
        * rendering/RenderTheme.cpp:
        (WebCore::RenderTheme::isFocused):
        * rendering/render_applet.cpp:
        (WebCore::RenderApplet::createWidgetIfNecessary):
        * rendering/render_replaced.cpp:
        (WebCore::RenderWidget::RenderWidget):
        (WebCore::RenderWidget::focusIn):
        (WebCore::RenderWidget::focusOut):

2006-03-28  Darin Adler  <darin@apple.com>

        Reviewed by Geoff.

        - added a build step that checks for init routines

        * WebCore.xcodeproj/project.pbxproj: Deleted now-unused custom build rule that
        was replaced by the generate-derived-sources script a while back. Added a custom
        build phase that invokes the check-for-global-initializers script.

2006-03-28  Timothy Hatcher  <timothy@apple.com>

        Reviewed by Maciej.

        Moved the derived sources script to an agregate target. Fixes internal builds.

        * WebCore.xcodeproj/project.pbxproj:
        * generate-derived-sources: was missing a use of $CREATE_HASH_TABLE

2006-03-28  Eric Seidel  <eseidel@apple.com>

        Reviewed by hyatt.
        
        Build fix.

        * dom/xml_tokenizer.cpp:
        (WebCore::XMLTokenizer::error):

2006-03-28  Michael Emmel  <mike.emmel@gmail.com>

        Reviewed, tweaked, landed by Darin.

        - fix http://bugs.webkit.org/show_bug.cgi?id=8023
          Attribute.h missing class predeclaration

        * dom/Attribute.h: Add declarations for classes so that the friend
        declaration is not the only one. There's an issue with either an earlier
        or later version of gcc, which is why we see this only on certain platforms.

        * dom/Attr.cpp:
        (WebCore::Attr::Attr):
        (WebCore::Attr::~Attr):
        * dom/NamedAttrMap.cpp:
        (WebCore::NamedAttrMap::clearAttributes):
        (WebCore::NamedAttrMap::addAttribute):
        (WebCore::NamedAttrMap::removeAttribute):
        Change places where practical to use attr() instead of m_impl in the vain
        hope of removing the need for the friend declarations.

2006-03-27  Eric Seidel  <eseidel@apple.com>

        Reviewed by darin.

        Replace more DeprecatedString with String.
        Add String::sprintf() and String::number()
        http://bugs.webkit.org/show_bug.cgi?id=8009

        * bindings/objc/DOMHTML.mm:
        (-[DOMHTMLTextAreaElement setCols:]):
        (-[DOMHTMLTextAreaElement setRows:]):
        (-[DOMHTMLOListElement setStart:]):
        (-[DOMHTMLPreElement setWidth:]):
        (-[DOMHTMLImageElement setHeight:]):
        (-[DOMHTMLImageElement setHspace:]):
        (-[DOMHTMLImageElement setVspace:]):
        (-[DOMHTMLImageElement setWidth:]):
        (-[DOMHTMLObjectElement setHspace:]):
        (-[DOMHTMLObjectElement setTabIndex:]):
        (-[DOMHTMLObjectElement setVspace:]):
        (-[DOMHTMLAppletElement setHspace:]):
        (-[DOMHTMLAppletElement setVspace:]):
        (-[DOMHTMLAreaElement setTabIndex:]):
        (-[DOMHTMLTableColElement setSpan:]):
        (-[DOMHTMLTableCellElement setColSpan:]):
        (-[DOMHTMLTableCellElement setRowSpan:]):
        (-[DOMHTMLEmbedElement setHeight:]):
        (-[DOMHTMLEmbedElement setWidth:]):
        * bindings/objc/DOMInternal.mm:
        (String::String):
        * css/CSSComputedStyleDeclaration.cpp:
        (WebCore::numberAsString):
        (WebCore::CSSComputedStyleDeclaration::getPropertyCSSValue):
        * css/css_valueimpl.cpp:
        (WebCore::CSSMutableStyleDeclaration::getPropertyValue):
        (WebCore::CSSPrimitiveValue::cssText):
        * dom/Position.cpp:
        (WebCore::Position::formatForDebugger):
        * dom/Range.cpp:
        (WebCore::Range::formatForDebugger):
        * dom/StyledElement.cpp:
        (WebCore::StyledElement::addCSSColor):
        * dom/xml_tokenizer.cpp:
        (WebCore::XMLTokenizer::error):
        * editing/ApplyStyleCommand.cpp:
        (WebCore::ApplyStyleCommand::applyRelativeFontStyleChange):
        * html/HTMLGenericFormElement.cpp:
        (WebCore::HTMLGenericFormElement::findMatchingState):
        (WebCore::HTMLGenericFormElement::setTabIndex):
        * html/HTMLInputElement.cpp:
        (WebCore::HTMLInputElement::setMaxLength):
        (WebCore::HTMLInputElement::setSize):
        * html/HTMLSelectElement.cpp:
        (WebCore::HTMLSelectElement::setSize):
        * html/HTMLTextAreaElement.cpp:
        (WebCore::HTMLTextAreaElement::setCols):
        (WebCore::HTMLTextAreaElement::setRows):
        * html/html_baseimpl.cpp:
        (WebCore::HTMLBodyElement::insertedIntoDocument):
        * html/html_blockimpl.cpp:
        (WebCore::HTMLHRElement::parseMappedAttribute):
        (WebCore::HTMLPreElement::setWidth):
        * html/html_imageimpl.cpp:
        (WebCore::HTMLImageElement::width):
        (WebCore::HTMLImageElement::height):
        (WebCore::HTMLImageElement::setBorder):
        (WebCore::HTMLImageElement::setHeight):
        (WebCore::HTMLImageElement::setHspace):
        (WebCore::HTMLImageElement::setVspace):
        (WebCore::HTMLImageElement::setWidth):
        (WebCore::HTMLAreaElement::setTabIndex):
        * html/html_inlineimpl.cpp:
        (WebCore::HTMLAnchorElement::setTabIndex):
        * html/html_listimpl.cpp:
        (WebCore::HTMLOListElement::setStart):
        (WebCore::HTMLLIElement::setValue):
        * html/html_objectimpl.cpp:
        (WebCore::HTMLObjectElement::setTabIndex):
        * html/html_tableimpl.cpp:
        (WebCore::HTMLTableElement::parseMappedAttribute):
        (WebCore::HTMLTableCellElement::setColSpan):
        (WebCore::HTMLTableCellElement::setRowSpan):
        (WebCore::HTMLTableColElement::setSpan):
        * khtml/ecma/kjs_window.cpp:
        (KJS::Window::isSafeScript):
        (KJS::Location::getValueProperty):
        * ksvg2/css/SVGCSSParser.cpp:
        (WebCore::CSSParser::parseSVGPaint):
        (WebCore::CSSParser::parseSVGColor):
        * ksvg2/svg/SVGAngle.cpp:
        (SVGAngle::setValueAsString):
        (SVGAngle::valueAsString):
        * ksvg2/svg/SVGAngle.h:
        * ksvg2/svg/SVGLength.cpp:
        (SVGLength::setValueAsString):
        (SVGLength::valueAsString):
        * ksvg2/svg/SVGLength.h:
        * ksvg2/svg/SVGPathSeg.h:
        (WebCore::SVGPathSeg::pathSegTypeAsLetter):
        (WebCore::SVGPathSeg::toString):
        * ksvg2/svg/SVGPathSegArc.h:
        (WebCore::SVGPathSegArcAbs::pathSegTypeAsLetter):
        (WebCore::SVGPathSegArcAbs::toString):
        (WebCore::SVGPathSegArcRel::pathSegTypeAsLetter):
        (WebCore::SVGPathSegArcRel::toString):
        * ksvg2/svg/SVGPathSegClosePath.h:
        (WebCore::SVGPathSegClosePath::pathSegTypeAsLetter):
        (WebCore::SVGPathSegClosePath::toString):
        * ksvg2/svg/SVGPathSegCurvetoCubic.h:
        (WebCore::SVGPathSegCurvetoCubicAbs::pathSegTypeAsLetter):
        (WebCore::SVGPathSegCurvetoCubicAbs::toString):
        (WebCore::SVGPathSegCurvetoCubicRel::pathSegTypeAsLetter):
        (WebCore::SVGPathSegCurvetoCubicRel::toString):
        * ksvg2/svg/SVGPathSegCurvetoCubicSmooth.h:
        (WebCore::SVGPathSegCurvetoCubicSmoothAbs::pathSegTypeAsLetter):
        (WebCore::SVGPathSegCurvetoCubicSmoothAbs::toString):
        (WebCore::SVGPathSegCurvetoCubicSmoothRel::pathSegTypeAsLetter):
        (WebCore::SVGPathSegCurvetoCubicSmoothRel::toString):
        * ksvg2/svg/SVGPathSegCurvetoQuadratic.h:
        (WebCore::SVGPathSegCurvetoQuadraticAbs::pathSegTypeAsLetter):
        (WebCore::SVGPathSegCurvetoQuadraticAbs::toString):
        (WebCore::SVGPathSegCurvetoQuadraticRel::pathSegTypeAsLetter):
        (WebCore::SVGPathSegCurvetoQuadraticRel::toString):
        * ksvg2/svg/SVGPathSegCurvetoQuadraticSmooth.h:
        (WebCore::SVGPathSegCurvetoQuadraticSmoothAbs::pathSegTypeAsLetter):
        (WebCore::SVGPathSegCurvetoQuadraticSmoothAbs::toString):
        (WebCore::SVGPathSegCurvetoQuadraticSmoothRel::pathSegTypeAsLetter):
        (WebCore::SVGPathSegCurvetoQuadraticSmoothRel::toString):
        * ksvg2/svg/SVGPathSegLineto.h:
        (WebCore::SVGPathSegLinetoAbs::pathSegTypeAsLetter):
        (WebCore::SVGPathSegLinetoAbs::toString):
        (WebCore::SVGPathSegLinetoRel::pathSegTypeAsLetter):
        (WebCore::SVGPathSegLinetoRel::toString):
        * ksvg2/svg/SVGPathSegLinetoHorizontal.h:
        (WebCore::SVGPathSegLinetoHorizontalAbs::pathSegTypeAsLetter):
        (WebCore::SVGPathSegLinetoHorizontalAbs::toString):
        (WebCore::SVGPathSegLinetoHorizontalRel::pathSegTypeAsLetter):
        (WebCore::SVGPathSegLinetoHorizontalRel::toString):
        * ksvg2/svg/SVGPathSegLinetoVertical.h:
        (WebCore::SVGPathSegLinetoVerticalAbs::pathSegTypeAsLetter):
        (WebCore::SVGPathSegLinetoVerticalAbs::toString):
        (WebCore::SVGPathSegLinetoVerticalRel::pathSegTypeAsLetter):
        (WebCore::SVGPathSegLinetoVerticalRel::toString):
        * ksvg2/svg/SVGPathSegMoveto.h:
        (WebCore::SVGPathSegMovetoAbs::pathSegTypeAsLetter):
        (WebCore::SVGPathSegMovetoAbs::toString):
        (WebCore::SVGPathSegMovetoRel::pathSegTypeAsLetter):
        (WebCore::SVGPathSegMovetoRel::toString):
        * ksvg2/svg/SVGPolyElement.cpp:
        (SVGPolyElement::notifyAttributeChange):
        * ksvg2/svg/SVGStopElement.cpp:
        (SVGStopElement::parseMappedAttribute):
        * ksvg2/svg/SVGUseElement.cpp:
        (SVGUseElement::closeRenderer):
        * platform/AtomicString.h:
        (WebCore::AtomicString::toInt):
        * platform/Color.cpp:
        (WebCore::Color::name):
        * platform/Color.h:
        * platform/PlatformString.h:
        * platform/String.cpp:
        (WebCore::String::sprintf):
        (WebCore::String::number):
        * platform/StringImpl.cpp:
        (WebCore::StringImpl::StringImpl):
        (WebCore::StringImpl::initWithChar):
        (WebCore::StringImpl::initWithQChar):
        (WebCore::StringImpl::containsOnlyWhitespace):
        * platform/mac/KeyEventMac.mm:
        (WebCore::keyIdentifierForKeyEvent):
        * rendering/render_form.cpp:
        (WebCore::RenderSlider::updateFromElement):
        (WebCore::RenderSlider::valueChanged):

2006-03-28  Justin Garcia  <justin.garcia@apple.com>

        Reviewed by mjs
        
        <http://bugs.webkit.org/attachment.cgi?id=7322>
        REGRESSION: Select All does not highlight table if it's last in the document
        
        * rendering/RenderCanvas.cpp:
        (WebCore::rendererAfterPosition): 
        Added, returns the render object that a pre-order traversal over a range 
        of render objects ending at the input position should stop at.
        (WebCore::RenderCanvas::selectionRect): 
        Stop at rendererAfterPosition(m_selectionEnd, m_selectionEndPos), moved code 
        for traversal to nextInPreOrder. Also, the travesal doesn't need to fetch the
        next object before doing work, since the work it does will never change what 
        the next object in the traversal will be.
        (WebCore::RenderCanvas::setSelection): Ditto.
        * rendering/RenderObject.cpp:
        (WebCore::RenderObject::nextInPreOrder): Renamed from nextRenderer, cleaned up the logic a little.
        (WebCore::RenderObject::nextInPreOrderAfterChildren): Added.
        (WebCore::RenderObject::previousInPreOrder): Renamed from previousRenderer.
        (WebCore::RenderObject::childAt): Added.
        * rendering/RenderObject.h:
        * rendering/RenderText.cpp:
        (WebCore::RenderText::setText):

2006-03-28  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by Justin.
        
        - fixed <rdar://problem/4483851> REGRESSION: parse mode gets set to strict after going back from non-HTML content (7102)

        Reshuffled things to arrange for m_doc to be cleared somewhat earlier than before.
        
        * page/Frame.cpp:
        (WebCore::Frame::didOpenURL):
        (WebCore::Frame::receivedFirstData):
        (WebCore::Frame::begin):
        (WebCore::Frame::endIfNotLoading): 
        * manual-tests/accidental-strict-mode.html: Added. I don't think an
        automated test is possible.

2006-03-28  Eric Seidel  <eseidel@apple.com>

        Reviewed by mjs.

        Convert a couple DeprecatedPtrList<T> to Vector<T*> and HashSet<T*>

        * bridge/mac/FrameMac.h:
        * bridge/mac/FrameMac.mm:
        (WebCore::regExpForLabels):
        (WebCore::FrameMac::addPluginRootObject):
        (WebCore::FrameMac::cleanupPluginRootObjects):
        * loader/Cache.cpp:
        (WebCore::Cache::init):
        (WebCore::Cache::clear):
        (WebCore::Cache::remove):
        * loader/Cache.h:
        * loader/DocLoader.cpp:
        (WebCore::DocLoader::DocLoader):
        (WebCore::DocLoader::~DocLoader):

2006-03-27  Eric Seidel  <eseidel@apple.com>

        Reviewed by mjs.

        Give StringImpl a little privacy.
        http://bugs.webkit.org/show_bug.cgi?id=8022

        * dom/CharacterData.cpp:
        (WebCore::CharacterData::length):
        (WebCore::CharacterData::appendData):
        (WebCore::CharacterData::replaceData):
        (WebCore::CharacterData::checkCharDataOperation):
        (WebCore::CharacterData::rendererIsNeeded):
        * dom/Range.cpp:
        (WebCore::Range::compareBoundaryPoints):
        * dom/Text.cpp:
        (WebCore::Text::splitText):
        * html/HTMLTokenizer.cpp:
        (WebCore::HTMLTokenizer::processToken):
        * platform/AtomicString.cpp:
        (WebCore::operator==):
        * platform/String.cpp:
        (WebCore::String::operator[]):
        (WebCore::String::length):
        (WebCore::String::percentage):
        (WebCore::String::unicode):
        (WebCore::String::deprecatedString):
        (WebCore::String::isEmpty):
        * platform/StringImpl.cpp:
        (WebCore::equal):
        (WebCore::equalIgnoringCase):
        * platform/StringImpl.h:
        * rendering/InlineTextBox.cpp:
        (WebCore::InlineTextBox::selectionRect):
        (WebCore::InlineTextBox::paint):
        (WebCore::InlineTextBox::paintSelection):
        (WebCore::InlineTextBox::paintMarkedTextBackground):
        (WebCore::InlineTextBox::paintTextMatchMarker):
        (WebCore::InlineTextBox::offsetForPosition):
        (WebCore::InlineTextBox::positionForOffset):
        * rendering/RenderText.cpp:
        (WebCore::RenderText::widthFromCache):
        (WebCore::RenderText::calcMinMaxWidth):
        (WebCore::RenderText::width):

2006-03-27  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by Beth.

        - fixed <rdar://problem/4279765> REGRESSION: "More..." links on flickr groups pages have hover issues (flickr.com)

        * rendering/RenderBlock.cpp:
        (WebCore::RenderBlock::floatRect): Rewrote in terms of rects, and made it consider child floatRects
        as well as their overflowRects.
        * platform/IntRect.h:
        (WebCore::unionRect): useful helper
        * platform/FloatRect.h:
        (WebCore::unionRect): added same for FloatRect just because

2006-03-27  Darin Adler  <darin@apple.com>

        Based on a patch by Michael Emmel <mike.emmel@gmail.com>.

        - fix http://bugs.webkit.org/show_bug.cgi?id=8012
          TransferJob.cpp includes non-existent "String.h" (capital S)

        * platform/TransferJob.cpp: Remove unneeded include of "String.h".

2006-03-27  David Harrison  <harrison@apple.com>

        Reviewed by Darin.

        <rdar://problem/4427002> REGRESSION: VoiceOver doesn't read heading level text in Safari (Range selectNodeContents broken)

        Better fix than previous checkin, since maxDeepOffset is really an editing hack.

        * editing/selection/selectNodeContents-textNode.html: Added.

        * dom/Range.cpp:
        (WebCore::Range::selectNodeContents):
        Use maxOffset if offsetInCharacters, otherwise use childNodeCount.

2006-03-27  Darin Adler  <darin@apple.com>

        Based on a patch by Michael Emmel <mike.emmel@gmail.com>.

        - fix compilation for Linux
          http://bugs.webkit.org/show_bug.cgi?id=8013

        * rendering/render_style.h: Add declaration of CSSStyleSelector. Also tweaked
        formatting a bit and removed some extraneous WebCore:: prefixes.

2006-03-27  John Sullivan  <sullivan@apple.com>

        Reviewed by Darin Adler and Tim Omernick
        
        - fixed <rdar://problem/4406505> REGRESSION: (japanese text) Clauses is unexpectedly 
        confirmed while typing on Safari.

        * bindings/objc/DOMHTML.mm:
        (-[DOMHTMLInputElement _displayedValue]):
        Avoid calling stringValue on the focused NSTextField. This will soon be obsolete, but
        for now it fixes this regression.

2006-03-27  Alexander Kellett  <lypanov@kde.org>

        Reviewed by darin

        Implement the IE extension insertAdjacentElement
        http://bugs.webkit.org/show_bug.cgi?id=6520

        * bindings/scripts/CodeGeneratorJS.pm:
        * dom/Element.cpp:
        (WebCore::ElementImpl::insertAdjacentElement):
        * dom/Element.h:
        * dom/Element.idl:

2006-03-27  David Harrison  <harrison@apple.com>

        Reviewed by Tim Hatcher.

        <rdar://problem/4427002> REGRESSION: VoiceOver doesn't read heading level text in Safari (Range selectNodeContents broken)

        Range::selectNodeContents() was erroneously using childNodeCount, which is always 0 for text
        nodes.  Turns out that [WebCoreAXObject textUnderElement] is the only code that ends up calling
        selectNodeContents on a text node.

        Test cases added: None.  Manual AX testing is way too awkward, and automated testing
        is not possible.  See following bug...
            <rdar://problem/4256882> Need automated testing support for accessibility APIs

        * dom/Range.cpp:
        (WebCore::Range::selectNodeContents):
        Use maxDeepOffset instead of childNodeCount, so that text node content is selected.

2006-03-27  Graham Dennis  <Graham.Dennis@gmail.com>

        Reviewed by darin
        
        <http://bugs.webkit.org/show_bug.cgi?id=7868>
        REGRESSION: Extraneous focus ring drawn at the end of the page
        
        * platform/GraphicsContext.cpp:
        (WebCore::GraphicsContext::addFocusRingRect): Don't add a focus ring for an empty rect.

2006-03-27  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by Anders.
        
        - fixed <rdar://problem/4489745> REGRESSION: Safari crashes at to display http://www.lgphilips-lcd.com/

        * manual-tests/empty-script-crash.html: Added.

2006-03-27  Maciej Stachowiak  <mjs@apple.com>

        Build fix:
        
        - reverted fix for <rdar://problem/4362396> capturing listeners do not fire on the target node
        It turns out that the behavior we had was standards-compliant and
        Moz will be changing to match.
        
        Also added a note so this doesn't get reverted again.

        * dom/EventTargetNode.cpp:
        (WebCore::EventTargetNode::dispatchGenericEvent):

2006-03-26  Justin Garcia  <justin.garcia@apple.com>

        Reviewed by darn
        
        <http://bugs.webkit.org/show_bug.cgi?id=7974>
        Add EditActions and WebUndoActions for CreateLink and Unlink

        * bridge/mac/WebCoreFrameBridge.h:
        * editing/CreateLinkCommand.h:
        (WebCore::CreateLinkCommand::editingAction):
        * editing/EditAction.h:
        * editing/UnlinkCommand.h:
        (WebCore::UnlinkCommand::editingAction):

2006-03-26  Eric Seidel  <eseidel@apple.com>

        Reviewed by mjs.

        Fix win32 build.

        * WebCore.vcproj/WebCore/WebCore.vcproj:
        * editing/CompositeEditCommand.cpp:
        * editing/InsertTextCommand.cpp:
        * generate-derived-sources:

2006-03-26  Eric Seidel  <eseidel@apple.com>

        * dom/Element.cpp: fix include case, fixing build.

2006-03-25  Mitz Pettel  <opendarwin.org@mitzpettel.com>

        Reviewed by darin.  Landed by eseidel.

        - fix http://bugs.webkit.org/show_bug.cgi?id=7916
          Box repaint rect does not include the left overflow

        * manual-tests/left-overflow-repaint.html: Added.
        * rendering/RenderBlock.cpp:
        (WebCore::RenderBlock::overflowRect): Changed m_overflowWidth and m_overflowHeight
        to overflowWidth() and overflowHeight() since RenderTable overrides the latter.
        * rendering/RenderBox.cpp:
        (WebCore::RenderBox::getAbsoluteRepaintRect): Include top and left overflows.
        * rendering/RenderFlow.cpp:
        (WebCore::RenderFlow::getAbsoluteRepaintRect): Removed redundant code.
        * rendering/RenderTableCell.cpp: Removed subclass implementation of
        getAbsoluteRepaintRect().
        * rendering/RenderTableCell.h:
        * rendering/bidi.cpp:
        (WebCore::RenderBlock::layoutInlineChildren): Include left overflow in repaint rect.

2006-03-25  Eric Seidel  <eseidel@apple.com>

        Reviewed by andersca.

        Build fix.

        * bindings/scripts/CodeGeneratorJS.pm: include Element.h

2006-03-25  Eric Seidel  <eseidel@apple.com>

        Reviewed by andersca.

        Split dom_elementimpl.* into multiple files (one per class).
        http://bugs.webkit.org/show_bug.cgi?id=7978

        * ForwardingHeaders/kdom/core/Attr.h: Removed.
        * ForwardingHeaders/kdom/core/Element.h: Removed.
        * ForwardingHeaders/kdom/core/XMLElement.h: Removed.
        * WebCore.xcodeproj/project.pbxproj:
        * bindings/objc/DOM.mm:
        * bindings/objc/DOMHTML.mm:
        * bindings/scripts/CodeGeneratorJS.pm:
        * dom/AbstractView.cpp:
        * dom/Attr.cpp: Added.
        * dom/Attr.h: Added.
        * dom/Attribute.cpp: Added.
        * dom/Attribute.h: Added.
        * dom/CSSMappedAttributeDeclaration.cpp: Added.
        * dom/CSSMappedAttributeDeclaration.h: Added.
        * dom/DOMImplementation.cpp:
        * dom/Document.h:
        * dom/DocumentType.cpp:
        * dom/Element.cpp: Added.
        (WebCore::Element::Element):
        (WebCore::Element::~Element):
        * dom/Element.h: Added.
        * dom/EventNames.cpp:
        * dom/EventTargetNode.cpp:
        * dom/MappedAttribute.cpp: Added.
        * dom/MappedAttribute.h: Added.
        * dom/MappedAttributeEntry.h: Added.
        (WebCore::):
        * dom/NameNodeList.cpp:
        (WebCore::NameNodeList::NameNodeList):
        (WebCore::NameNodeList::item):
        (WebCore::NameNodeList::nodeMatches):
        * dom/NamedAttrMap.cpp: Added.
        * dom/NamedAttrMap.h: Added.
        * dom/NamedMappedAttrMap.cpp: Added.
        (WebCore::NamedMappedAttrMap::NamedMappedAttrMap):
        * dom/NamedMappedAttrMap.h: Added.
        * dom/Node.cpp:
        * dom/NodeList.cpp:
        * dom/Position.cpp:
        * dom/StyledElement.cpp: Added.
        * dom/StyledElement.h: Added.
        * dom/dom_elementimpl.cpp: Removed.
        * dom/dom_elementimpl.h: Removed.
        * editing/BreakBlockquoteCommand.cpp:
        * editing/CompositeEditCommand.cpp:
        * editing/DeleteFromTextNodeCommand.cpp:
        * editing/DeleteSelectionCommand.cpp:
        * editing/InsertLineBreakCommand.cpp:
        * editing/InsertParagraphSeparatorCommand.cpp:
        * editing/InsertTextCommand.cpp:
        * editing/MergeIdenticalElementsCommand.cpp:
        * editing/ModifySelectionListLevelCommand.cpp:
        * editing/MoveSelectionCommand.cpp:
        * editing/RemoveCSSPropertyCommand.cpp:
        * editing/RemoveNodeAttributeCommand.cpp:
        * editing/Selection.cpp:
        * editing/SelectionController.cpp:
        * editing/SetNodeAttributeCommand.cpp:
        * editing/SplitElementCommand.cpp:
        * editing/SplitTextNodeContainingElementCommand.cpp:
        * editing/TextIterator.cpp:
        * editing/TypingCommand.cpp:
        * editing/VisiblePosition.cpp:
        * editing/visible_units.cpp:
        * html/HTMLElement.h:
        * html/HTMLTokenizer.h:
        * html/html_baseimpl.cpp:
        * kcanvas/RenderSVGImage.cpp:
        * khtml/ecma/kjs_views.cpp:
        * khtml/ecma/kjs_window.cpp:
        (KJS::Window::getValueProperty):
        * khtml/xbl/xbl_binding_manager.cpp:
        * khtml/xbl/xbl_tokenizer.cpp:
        * ksvg2/misc/SVGImageLoader.cpp:
        * ksvg2/svg/SVGAElement.cpp:
        * ksvg2/svg/SVGAnimateTransformElement.cpp:
        * ksvg2/svg/SVGAnimationElement.cpp:
        * ksvg2/svg/SVGCircleElement.cpp:
        * ksvg2/svg/SVGClipPathElement.cpp:
        * ksvg2/svg/SVGComponentTransferFunctionElement.cpp:
        * ksvg2/svg/SVGCursorElement.cpp:
        * ksvg2/svg/SVGElement.cpp:
        (WebCore::SVGElement::SVGElement):
        * ksvg2/svg/SVGElement.h:
        * ksvg2/svg/SVGEllipseElement.cpp:
        * ksvg2/svg/SVGExternalResourcesRequired.cpp:
        * ksvg2/svg/SVGFEBlendElement.cpp:
        * ksvg2/svg/SVGFEColorMatrixElement.cpp:
        * ksvg2/svg/SVGFEComponentTransferElement.cpp:
        * ksvg2/svg/SVGFECompositeElement.cpp:
        * ksvg2/svg/SVGFEDiffuseLightingElement.cpp:
        * ksvg2/svg/SVGFEDisplacementMapElement.cpp:
        * ksvg2/svg/SVGFEFloodElement.cpp:
        * ksvg2/svg/SVGFEGaussianBlurElement.cpp:
        * ksvg2/svg/SVGFEImageElement.cpp:
        * ksvg2/svg/SVGFELightElement.cpp:
        * ksvg2/svg/SVGFEMergeElement.cpp:
        * ksvg2/svg/SVGFEMergeNodeElement.cpp:
        * ksvg2/svg/SVGFEOffsetElement.cpp:
        * ksvg2/svg/SVGFESpecularLightingElement.cpp:
        * ksvg2/svg/SVGFETileElement.cpp:
        * ksvg2/svg/SVGFETurbulenceElement.cpp:
        * ksvg2/svg/SVGFilterElement.cpp:
        * ksvg2/svg/SVGFilterPrimitiveStandardAttributes.cpp:
        * ksvg2/svg/SVGFitToViewBox.cpp:
        * ksvg2/svg/SVGGradientElement.cpp:
        * ksvg2/svg/SVGImageElement.cpp:
        * ksvg2/svg/SVGLangSpace.cpp:
        * ksvg2/svg/SVGLineElement.cpp:
        * ksvg2/svg/SVGLinearGradientElement.cpp:
        * ksvg2/svg/SVGMarkerElement.cpp:
        * ksvg2/svg/SVGMaskElement.cpp:
        * ksvg2/svg/SVGPathElement.cpp:
        * ksvg2/svg/SVGPatternElement.cpp:
        * ksvg2/svg/SVGPolyElement.cpp:
        * ksvg2/svg/SVGRadialGradientElement.cpp:
        * ksvg2/svg/SVGRectElement.cpp:
        * ksvg2/svg/SVGSVGElement.cpp:
        * ksvg2/svg/SVGScriptElement.cpp:
        * ksvg2/svg/SVGStopElement.cpp:
        * ksvg2/svg/SVGStyledElement.cpp:
        * ksvg2/svg/SVGStyledTransformableElement.cpp:
        * ksvg2/svg/SVGSwitchElement.cpp:
        * ksvg2/svg/SVGTests.cpp:
        * ksvg2/svg/SVGTextContentElement.cpp:
        * ksvg2/svg/SVGTextPositioningElement.cpp:
        * ksvg2/svg/SVGTransformable.cpp:
        * ksvg2/svg/SVGURIReference.cpp:
        * ksvg2/svg/SVGUseElement.cpp:
        * ksvg2/svg/SVGViewElement.cpp:
        * ksvg2/svg/SVGZoomAndPan.cpp:
        * kwq/WebCoreTextArea.mm:
        * platform/Widget.h:
        * rendering/RenderBlock.cpp:
        * rendering/RenderCanvas.cpp:
        * rendering/RenderContainer.cpp:
        * rendering/RenderObject.cpp:
        * rendering/RenderTextField.cpp:
        * rendering/RenderThemeMac.mm:
        * rendering/bidi.cpp:
        * rendering/render_replaced.cpp:

2006-03-25  Eric Seidel  <eseidel@apple.com>

        Reviewed by mjs.

        Fix RenderStyle creation to avoid floating RenderStyle objects.
        This also fixes a bug, were SVG to ever start sharing RenderStyles
        between elements, code would have crashed as there were improperly
        paired style->deref() statements in SVG code.
        http://bugs.webkit.org/show_bug.cgi?id=7976

        No test possible (no functionality change).

        * css/cssstyleselector.cpp:
        (WebCore::CSSStyleSelector::createStyleForElement):
        (WebCore::CSSStyleSelector::createPseudoStyleForElement):
        * css/cssstyleselector.h:
        * dom/Node.cpp:
        (WebCore::Node::createRendererIfNeeded):
        (WebCore::Node::createStyleForRenderer):
        * dom/Node.h:
        * dom/dom_elementimpl.cpp:
        (WebCore::Element::createStyleForRenderer):
        (WebCore::Element::recalcStyle):
        * dom/dom_elementimpl.h:
        * ksvg2/svg/SVGClipPathElement.cpp:
        (SVGClipPathElement::canvasResource):
        * ksvg2/svg/SVGFEFloodElement.cpp:
        (SVGFEFloodElement::filterEffect):
        * ksvg2/svg/SVGGradientElement.cpp:
        (SVGGradientElement::rebuildStops):
        * rendering/RenderObject.cpp:
        (WebCore::RenderObject::createObject):
        (WebCore::RenderObject::RenderObject):
        (WebCore::selectStartNode):
        (WebCore::RenderObject::draggableNode):
        (WebCore::RenderObject::getPseudoStyle):

2006-03-23  Eric Seidel  <eseidel@apple.com>

        Reviewed by mjs.

        Shave .2% on PLT by removing bogus strcmp.
        http://bugs.webkit.org/show_bug.cgi?id=7938

        Test: fast/parser/tag-with-exclamation-point.html

        * html/HTMLTokenizer.cpp:
        (WebCore::HTMLTokenizer::parseTag): remove bogus strcmp

2006-03-25  Justin Garcia  <justin.garcia@apple.com>

        Reviewed by harrison
        
        <http://bugs.webkit.org/show_bug.cgi?id=7683>
        TinyMCE: execCommand("Unlink") unimplemented
        
        Added code to push partially selected anchor elements down before 
        creating or removing links to create fully selected chunks that can be removed.
        Changed __create_link_command_h__ to CreateLinkCommand_h
        Gave styled element application/removal its own ApplyStyleCommand constructor.
        Still need to add new EditActions (7974).
        
        * WebCore.xcodeproj/project.pbxproj:
        * editing/ApplyStyleCommand.cpp:
        (WebCore::ApplyStyleCommand::ApplyStyleCommand):
        (WebCore::ApplyStyleCommand::applyBlockStyle):
        (WebCore::ApplyStyleCommand::addInlineStyleIfNeeded):
        * editing/ApplyStyleCommand.h:
        * editing/CompositeEditCommand.cpp:
        (WebCore::CompositeEditCommand::applyStyle):
        (WebCore::CompositeEditCommand::applyStyledElement):
        (WebCore::CompositeEditCommand::removeStyledElement):
        (WebCore::enclosingAnchorElement):
        (WebCore::CompositeEditCommand::pushAnchorElementDown):
        (WebCore::CompositeEditCommand::pushPartiallySelectedAnchorElementsDown):
        * editing/CompositeEditCommand.h:
        * editing/CreateLinkCommand.cpp:
        (WebCore::CreateLinkCommand::doApply):
        * editing/CreateLinkCommand.h:
        * editing/JSEditor.cpp:
        * editing/Selection.cpp:
        (WebCore::Selection::selectionFromContentsOfNode):
        * editing/Selection.h:
        * editing/UnlinkCommand.cpp: Added.
        (WebCore::UnlinkCommand::UnlinkCommand):
        (WebCore::UnlinkCommand::doApply):
        * editing/UnlinkCommand.h: Added.
        * page/Frame.cpp:
        (WebCore::Frame::selectContentsOfNode):
        (WebCore::Frame::computeAndSetTypingStyle):
        (WebCore::Frame::applyStyle):
        (WebCore::Frame::applyParagraphStyle):

2006-03-24  Justin Garcia  <justin.garcia@apple.com>

        Reviewed by harrison
        
        <http://bugs.webkit.org/show_bug.cgi?id=7955>
        REGRESSION: Content with an interchange newline lost when pasted at the end of the document
        
        There's no safe place in the document to keep the fragment while pasting, so I avoid
        isProbablyBlock by saving whether or not something was blockFlow during the test 
        insertion.

        * editing/ReplaceSelectionCommand.cpp:
        (WebCore::ReplacementFragment::ReplacementFragment):
        (WebCore::ReplacementFragment::~ReplacementFragment):
        (WebCore::ReplacementFragment::firstChild):
        (WebCore::ReplacementFragment::lastChild):
        (WebCore::ReplacementFragment::mergeStartNode):
        (WebCore::ReplacementFragment::enclosingBlock):
        (WebCore::ReplacementFragment::insertFragmentForTestRendering):
        (WebCore::ReplacementFragment::restoreTestRenderingNodesToFragment):
        (WebCore::ReplacementFragment::isBlockFlow):
        (WebCore::ReplaceSelectionCommand::fixupNodeStyles):
        (WebCore::styleForNode):
        (WebCore::ReplacementFragment::saveRenderingInfo):
        (WebCore::ReplacementFragment::removeUnrenderedNodes):
        (WebCore::ReplacementFragment::renderedBlocks):
        (WebCore::ReplacementFragment::removeStyleNodes):
        (WebCore::RenderingInfo::RenderingInfo):
        (WebCore::ReplaceSelectionCommand::ReplaceSelectionCommand):
        (WebCore::ReplaceSelectionCommand::doApply):
        * editing/ReplaceSelectionCommand.h:
        (WebCore::RenderingInfo::isBlockFlow):
        (WebCore::ReplacementFragment::renderingInfo):
        (WebCore::ReplacementFragment::nodes):
        
2006-03-24  Eric Seidel  <eseidel@apple.com>

        Reviewed by justing.

        * generate-derived-sources: fix clean builds on mac.
        
2006-03-24  Darin Adler  <darin@apple.com>

        Reviewed by Dave Harrison.

        - fix http://bugs.webkit.org/show_bug.cgi?id=7942
          nightlies after r13387 break js createcontextualfragment

        Test: fast/dom/Range/create-contextual-fragment.html

        * dom/Range.idl: Add createContextualFragment.

2006-03-24  Eric Seidel  <eseidel@apple.com>

        Reviewed by mjs.

        Fix win32 build.
        Unify mac/win dependency handling.
        Fix class vs. struct linker problem for win32.

        * WebCore.vcproj/WebCore/WebCore.vcproj: Add DerivedSources
        * WebCore.vcproj/WebCore/build-generated-files.sh:
        * bridge/win/BrowserExtensionWin.h:
        * bridge/win/FrameWin.h:
        * generate-derived-sources:
        * kwq/AccessibilityObjectCache.h:
        * platform/GraphicsContext.cpp:
        (WebCore::GraphicsContext::createGraphicsContextPrivate):
        (WebCore::GraphicsContext::destroyGraphicsContextPrivate):
        * platform/GraphicsContext.h:
        * platform/cairo/GraphicsContextCairo.cpp:
        * platform/mac/GraphicsContextMac.mm:
        * platform/win/TemporaryLinkStubs.cpp:
        (QLineEdit::selectedText):
        (FrameWin::createPlugin):
        (BrowserExtensionWin::setTypedIconURL):

2006-03-23  Darin Adler  <darin@apple.com>

        Reviewed by Adele.

        - fix <rdar://problem/4484787> KWQAccObject dangles under GC

        * kwq/AccessibilityObjectCache.h: Moved AccessibilityObjectCache into the WebCore
        namespace. Renamed accObject to get, removed setAccObject, renamed removeAccObject
        to remove, removed getAccObjectID, renamed removeAXObjectID to removeAXID, change
        from CF dictionaries to HashMap and HashSet.
        * kwq/AccessibilityObjectCache.mm:
        (WebCore::AccessibilityObjectCache::~AccessibilityObjectCache): Detach all objects
        and call CFRelease on all of them.
        (WebCore::AccessibilityObjectCache::get): Call CFRetain on objects before putting
        them in the HashMap, rather than assuming that retain == CFRetain. This is what
        fixes the GC issue.
        (WebCore::AccessibilityObjectCache::remove): Detach and call CFRelease when removing.
        (WebCore::AccessibilityObjectCache::getAXID): Change to use a single global variable
        for the AXIDs, which makes it so we won't reuse the same AXID as much as we did before.
        (WebCore::AccessibilityObjectCache::removeAXID): Updated to use HashSet.
        (WebCore::AccessibilityObjectCache::textMarkerForVisiblePosition): Updated for other changes.
        (WebCore::AccessibilityObjectCache::visiblePositionForTextMarker): Ditto.
        (WebCore::AccessibilityObjectCache::childrenChanged): Ditto.
        (WebCore::AccessibilityObjectCache::postNotificationToTopWebArea): Ditto.
        (WebCore::AccessibilityObjectCache::postNotification): Ditto.

        * bridge/mac/WebCoreFrameBridge.mm: (-[WebCoreFrameBridge accessibilityTree]):
        Change to use functions by new names.

        * dom/Document.h: AccessibilityObjectCache is now in the WebCore namespace.
        getAccObjectCache and ownerElement are const member functions, and m_accCache
        is a mutable data member.
        * dom/Document.cpp:
        (WebCore::Document::getAccObjectCache): Make const.
        (WebCore::Document::ownerElement): Make const.

        * kwq/WebCoreAXObject.h: Changed WebCoreAXID to WebCore::AXID.
        * kwq/WebCoreAXObject.mm:
        (-[WebCoreAXObject anchorElement]): Update for function name change.
        (-[WebCoreAXObject firstChild]): Ditto.
        (-[WebCoreAXObject lastChild]): Ditto.
        (-[WebCoreAXObject previousSibling]): Ditto.
        (-[WebCoreAXObject nextSibling]): Ditto.
        (-[WebCoreAXObject parentObject]): Ditto.
        (-[WebCoreAXObject accessibilityAttributeValue:]): Ditto.
        (-[WebCoreAXObject doAXUIElementForTextMarker:]): Ditto.
        (AXLinkElementForNode): Ditto.
        (AXAttributedStringAppendReplaced): Ditto.
        (-[WebCoreAXObject accessibilityHitTest:]): Ditto.
        (-[WebCoreAXObject _accessibilityParentForSubview:]): Ditto.
        (-[WebCoreAXObject accessibilityFocusedUIElement]): Ditto.
        (-[WebCoreAXObject axObjectID]): Change field name to m_id.
        (-[WebCoreAXObject setAXObjectID:]): Ditto.
        (-[WebCoreAXObject removeAXObjectID]): Ditto.

        * rendering/RenderContainer.cpp:
        (WebCore::RenderContainer::removeChildNode): Remove ifdefs.
        (WebCore::RenderContainer::appendChildNode): Ditto.
        (WebCore::RenderContainer::insertChildNode): Ditto.
        * rendering/RenderObject.cpp: (WebCore::RenderObject::remove): Ditto.

2006-03-23  Darin Adler  <darin@apple.com>

        Reviewed by Maciej.

        - fix http://bugs.webkit.org/show_bug.cgi?id=7726
          REGRESSION: orbitz calendar fails (JavaScript function serialization/parsing)

        Test: fast/js/function-names.html

        * dom/Document.h: Add function name parameter to createHTMLEventListener.
        * dom/Document.cpp:
        (WebCore::Document::createHTMLEventListener): Pass function name when calling
        createHTMLEventHandler.
        (WebCore::Document::setHTMLWindowEventListener): Pass attribute name as function name
        when calling createHTMLEventListener.

        * html/HTMLElement.cpp: (WebCore::HTMLElement::setHTMLEventListener): Pass attribute
        name as function name when calling createHTMLEventListener.

        * khtml/ecma/kjs_events.h: Add a function name parameter to JSLazyEventListener.
        * khtml/ecma/kjs_events.cpp:
        (KJS::JSLazyEventListener::JSLazyEventListener): Take and store a function name.
        (KJS::JSLazyEventListener::parseCode): Pass function name when constructing the function.

        * khtml/ecma/kjs_proxy.h: Add a function name parameter to createHTMLEventHandler and
        createSVGEventHandler.
        * khtml/ecma/kjs_proxy.cpp:
        (WebCore::KJSProxy::createHTMLEventHandler): Pass function name when creating
        a JSLazyEventListener.
        (WebCore::KJSProxy::createSVGEventHandler): Ditto.

        * ksvg2/events/JSSVGLazyEventListener.h: Add a function name parameter to
        JSSVGLazyEventListener.
        * ksvg2/events/JSSVGLazyEventListener.cpp:
        (WebCore::JSSVGLazyEventListener::JSSVGLazyEventListener): Pass the function name
        on to the base class constructor.

        * ksvg2/misc/SVGDocumentExtensions.h: Add function name parameter to createSVGEventListener.
        * ksvg2/misc/SVGDocumentExtensions.cpp:
        (WebCore::SVGDocumentExtensions::createSVGEventListener): Pass function name when
        calling createSVGEventHandler.

        * ksvg2/svg/SVGElement.cpp: (WebCore::SVGElement::addSVGEventListener):
        * ksvg2/svg/SVGSVGElement.cpp: (WebCore::SVGSVGElement::addSVGWindowEventListner):
        Pass attribute name as function name when calling createSVGEventListener.

        * WebCore.xcodeproj/project.pbxproj: Moved generation script to the top.

2006-03-23  Tim Omernick  <timo@apple.com>

        Reviewed by Darin.

        <http://bugs.webkit.org/show_bug.cgi?id=7691>
        REGRESSION: imdb.com search button looks wrong because "Submit" is drawn

        * html/HTMLInputElement.cpp:
        (WebCore::HTMLInputElement::valueWithDefault):
        Only use the default button title if no title was specified; previously we'd use the default
        button title if the specified title was empty, which is not what Firefox does.
        
2006-03-23  Darin Adler  <darin@apple.com>

        Reviewed by Beth.

        - fix <rdar://problem/4335038> REGRESSION: when max-height is none, height value is ignored

        * css/cssstyleselector.cpp: (WebCore::CSSStyleSelector::applyProperty):
        For max-height of none, set it to Length(undefinedLength, Fixed), which
        is the correct value (same as the default). Also did some formatting fixes
        to the height section.

2006-03-23  Beth Dakin  <bdakin@apple.com>

        Reviewed by Darin

        Fix for http://bugs.webkit.org/show_bug.cgi?id=6431 
        REGRESSION: style change where :hover changes only an :after style 
        doesn't work

        * dom/Node.cpp:
        (WebCore::Node::diff): Need to call diff() on the before and after 
        styles if we have them.

2006-03-23  Adele Peterson  <adele@apple.com>

        Reviewed by Hyatt.

        - Fix for http://bugs.webkit.org/show_bug.cgi?id=7935
        <rdar://problem/4489010>
        Infinite recursion in table code when button or new text fields get display:table-row

        Test:
        fast/forms/button-table-styles.html

        * rendering/RenderTheme.cpp: (WebCore::RenderTheme::adjustStyle):
        The theme should disallow table display styles form elements. 

2006-03-23  Darin Adler  <darin@apple.com>

        * generate-derived-sources: Tweaked formatting a tiny bit and removed a stray
        touch that was left in here.

2006-03-23  Eric Seidel  <eseidel@apple.com>

        Reviewed by mjs.

        REGRESSION: Dashed borders paint with the wrong phase
        http://bugs.webkit.org/show_bug.cgi?id=7879

        Test: Already covered by css1/box_properties/border_style.html

        * platform/cairo/GraphicsContextCairo.cpp:
        (WebCore::GraphicsContext::drawLine):
        * platform/mac/GraphicsContextMac.mm:
        (WebCore::GraphicsContext::drawLine):

2006-03-22  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by Eric.
        
        * generate-derived-sources: Suppress warning.

2006-03-22  Maciej Stachowiak  <mjs@apple.com>

        * generate-derived-sources: Added svn:executable property.

2006-03-22  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by Eric.
        
        Handle dependencies for derived sources properly.

        - Made a new generate-derived-sources script that does all the dependency checking
        and source generation.
        - Put this script in a subtarget instead of a phase.
        - Made derived sources go in the build root, not a source root.
        - Added derived sources to the project.
        - Removed files whose sole purpose was to include and compile derived sources,
        just compile those directly now.
        - Tweaked the IDL code generator so it can handle one IDL at a time, to make
        it easier to get the dependencies right.
        
        * generate-derived-sources: Added.
        * WebCore.xcodeproj/project.pbxproj:
        * bindings/js/JSDOMCore.cpp: Removed.
        * bindings/js/JSDOMEvents.cpp: Removed.
        * bindings/js/JSDOMHTML.cpp: Removed.
        * bindings/scripts/CodeGenerator.pm:
        * bindings/scripts/CodeGeneratorJS.pm:
        * bindings/scripts/generate-bindings.pl:
        * css/UserAgentStyleSheets.cpp: Removed.
        * dom/Range.cpp:
        (WebCore::Range::~Range):
        * dom/Range.h:
        * khtml/ecma/kjs_css.cpp:
        (KJS::DOMStyleSheet::DOMStyleSheet):
        (KJS::DOMStyleSheetList::DOMStyleSheetList):
        (KJS::DOMCSSRuleList::DOMCSSRuleList):
        (KJS::DOMCSSRule::DOMCSSRule):
        * khtml/ecma/kjs_css.h:

2006-03-22  Justin Garcia  <justin.garcia@apple.com>

        Reviewed by harrison
        
        <http://bugs.webkit.org/show_bug.cgi?id=7904>
        Avoid a layout after test insertion and remove isProbablyBlock

        * editing/ReplaceSelectionCommand.cpp:
        (WebCore::ReplacementFragment::ReplacementFragment):
        (WebCore::ReplacementFragment::~ReplacementFragment):
        (WebCore::ReplacementFragment::firstChild):
        (WebCore::ReplacementFragment::lastChild):
        (WebCore::ReplacementFragment::mergeStartNode):
        (WebCore::ReplacementFragment::enclosingBlock):
        (WebCore::ReplacementFragment::insertFragmentForTestRendering):
        (WebCore::ReplacementFragment::computeAndStoreNodeStyles):
        (WebCore::ReplacementFragment::removeUnrenderedNodes):
        (WebCore::ReplacementFragment::renderedBlocks):
        (WebCore::ReplacementFragment::removeStyleNodes):
        (WebCore::ReplaceSelectionCommand::ReplaceSelectionCommand):
        (WebCore::ReplaceSelectionCommand::doApply):
        * editing/ReplaceSelectionCommand.h:
        (WebCore::ReplacementFragment::root):

2006-03-22  Eric Seidel  <eseidel@apple.com>

        Reviewed by hyatt.

        Fix attribute mutation events to not fire for "style" attributes.
        We lazily update style attributes, so sending mutation events for them makes no sense anymore.
        <rdar://problem/4474910> repro assertion failure @ apple.com/store: !eventDispatchForbidden()

        Test: fast/events/delayed-style-mutation-event-crash.html

        * dom/dom_elementimpl.cpp:
        (WebCore::Element::dispatchAttrRemovalEvent): add assert
        (WebCore::Element::dispatchAttrAdditionEvent): add assert
        (WebCore::NamedAttrMap::addAttribute):

2006-03-22  Eric Seidel  <eseidel@apple.com>

        Reviewed by darin.

        Remove more DeprecatedString usage.
        http://bugs.webkit.org/show_bug.cgi?id=7882

        * bridge/mac/FrameMac.mm:
        (WebCore::FrameMac::attributedString):
        (WebCore::FrameMac::fontForSelection):
        (WebCore::FrameMac::tokenizerProcessedData):
        (WebCore::FrameMac::registerCommandForUndoOrRedo):
        (WebCore::FrameMac::markMisspellings):
        (WebCore::FrameMac::respondToChangedSelection):
        (WebCore::FrameMac::dashboardRegionsDictionary):
        (WebCore::FrameMac::dragSourceMovedTo):
        * css/CSSGrammar.y:
        * css/css_valueimpl.h:
        * css/cssparser.cpp:
        (WebCore::CSSParser::CSSParser):
        (WebCore::CSSParser::parseValue):
        (WebCore::CSSParser::parseColor):
        (WebCore::CSSParser::parseDeclaration):
        (WebCore::CSSParser::validUnit):
        (WebCore::CSSParser::parseShorthand):
        (WebCore::CSSParser::parseContent):
        (WebCore::skipCommaInDashboardRegion):
        (WebCore::CSSParser::parseDashboardRegions):
        (WebCore::CSSParser::parseShape):
        (WebCore::CSSParser::parseFont):
        (WebCore::CSSParser::parseFontFamily):
        (WebCore::CSSParser::parseColorFromValue):
        (WebCore::yyerror):
        (WebCore::CSSParser::lex):
        (WebCore::CSSParser::text):
        * css/cssparser.h:
        (WebCore::deprecatedString):
        * css/cssstyleselector.cpp:
        (WebCore::CSSStyleSelector::applyProperty):
        * khtml/ecma/kjs_dom.cpp:
        (KJS::DOMDocument::getValueProperty):
        * ksvg2/css/SVGCSSParser.cpp:
        (WebCore::CSSParser::parseSVGPaint):
        (WebCore::CSSParser::parseSVGColor):
        * ksvg2/svg/SVGAnimationElement.cpp:
        (SVGAnimationElement::parseMappedAttribute):
        * rendering/RenderBlock.cpp:
        (WebCore::RenderBlock::layoutPositionedObjects):
        (WebCore::RenderBlock::positionNewFloats):
        (WebCore::RenderBlock::newLine):
        * rendering/RenderCanvas.cpp:
        (WebCore::RenderCanvas::absolutePosition):
        (WebCore::RenderCanvas::paint):
        * rendering/RenderFlexibleBox.cpp:
        (WebCore::RenderFlexibleBox::layoutBlock):
        * rendering/RenderObject.h:
        * rendering/bidi.cpp:
        (WebCore::RenderBlock::bidiReorderLine):
        (WebCore::RenderBlock::layoutInlineChildren):
        * rendering/render_form.cpp:
        (WebCore::RenderFieldset::paintBoxDecorations):
        * rendering/render_style.h:
        (WebCore::RenderStyle::setDashboardRegion):
        * rendering/table_layout.cpp:
        (WebCore::AutoTableLayout::calcEffectiveWidth):
        (WebCore::AutoTableLayout::insertSpanCell):
        (WebCore::AutoTableLayout::layout):
        (WebCore::AutoTableLayout::calcPercentages):

2006-03-22  Tim Omernick  <timo@apple.com>

        Reviewed by Kevin Decker.

        Part of <rdar://problem/4351664> REGRESSION (420+): extra URL in b/f list - navigating back to previous page fails at apple.com/retail/)
        This also fixes <rdar://problem/4477821> REGRESSION (10.4.5-TOT): meta tag specifying refresh is being added to history.

        * bridge/mac/FrameMac.h:
        * bridge/mac/FrameMac.mm:
        Removed redirectionTimerFired().  This was added as attempt to fix <http://bugs.webkit.org/show_bug.cgi?id=7058>.  The
        aim was to cause Safari and WebKit to update their loading status after a redirect.  Unfortunately, the fix had a bad side
        effect.  Calling -reportClientRedirectCancelled: on a successful redirect causes WebKit to forget that the redirect was supposed
        to lock history (i.e. reuse the current back/forward entry for the new page).  The end result was that intermediate "quick" redirects
        were creating back/forward entries when they should not have been.  See 4351664.  That fix was almost correct, in that we do need to
        notify the frame load delegate when a redirect ends, either because it succeeded or because it was cancelled.  However, this is the
        wrong place to do it.  WebCore's redirect notification logic did not need to change to fix 7058.  The never-ending spinning indicators
        problem was actually caused by a bug at the WebKit level.

        * manual-tests/redirectHistory: Added.
        * manual-tests/redirectHistory/redir-1.html: Added.
        * manual-tests/redirectHistory/redir-2.html: Added.
        * manual-tests/redirectHistory/redir-3.html: Added.
        Manual test case.  I couldn't figure out how to create a layout test for this, because it involves navigation through history and
        it was unclear how/when to tell DumpRenderTree to dump its output.

2006-03-22  Eric Seidel  <eseidel@apple.com>

        Reviewed by darin.

        Replace more DeprecatedString with String.
        http://bugs.webkit.org/show_bug.cgi?id=7907

        * WebCore+SVG/kdom.h:
        * bindings/objc/DOMHTML.mm:
        (-[DOMHTMLDocument _createDocumentFragmentWithMarkupString:baseURLString:]):
        * bridge/BrowserExtension.h:
        * bridge/mac/BrowserExtensionMac.h:
        * bridge/mac/BrowserExtensionMac.mm:
        (WebCore::BrowserExtensionMac::setTypedIconURL):
        * bridge/mac/FrameMac.h:
        * bridge/mac/FrameMac.mm:
        (WebCore::FrameMac::searchForLabelsBeforeElement):
        (WebCore::nsArray):
        (WebCore::FrameMac::createPlugin):
        (WebCore::FrameMac::bindingRootObject):
        (WebCore::FrameMac::windowScriptObject):
        (WebCore::FrameMac::windowScriptNPObject):
        (WebCore::FrameMac::partClearedInBegin):
        (WebCore::FrameMac::openURLFromPageCache):
        * bridge/mac/WebCoreFrameBridge.mm:
        (-[WebCoreFrameBridge openURL:reload:contentType:refresh:lastModified:pageCache:]):
        (-[WebCoreFrameBridge scrollToAnchor:]):
        (-[WebCoreFrameBridge URLWithAttributeString:]):
        (-[WebCoreFrameBridge highlightAllMatchesForString:caseSensitive:]):
        * bridge/mac/WebCoreScriptDebugger.mm:
        (-[WebCoreScriptCallFrame evaluateWebScript:]):
        * bridge/mac/WebCoreSettings.mm:
        (-[WebCoreSettings _updateAllViews]):
        (-[WebCoreSettings setStandardFontFamily:]):
        (-[WebCoreSettings setMinimumFontSize:]):
        (-[WebCoreSettings setMinimumLogicalFontSize:]):
        (-[WebCoreSettings setDefaultFontSize:]):
        (-[WebCoreSettings setDefaultFixedFontSize:]):
        (-[WebCoreSettings setUserStyleSheetLocation:]):
        * css/CSSComputedStyleDeclaration.cpp:
        (WebCore::CSSComputedStyleDeclaration::getPropertyCSSValue):
        * css/CSSGrammar.y:
        * css/css_stylesheetimpl.cpp:
        (WebCore::MediaList::setMediaText):
        * css/css_valueimpl.cpp:
        (WebCore::quoteStringIfNeeded):
        * css/cssparser.cpp:
        (WebCore::CSSParser::parseColor):
        * css/cssstyleselector.cpp:
        (WebCore::CSSStyleSelector::CSSStyleSelector):
        * css/cssstyleselector.h:
        * dom/Document.cpp:
        (WebCore::Document::resetActiveLinkColor):
        (WebCore::Document::nextState):
        (WebCore::Document::setUserStyleSheet):
        (WebCore::Document::processHttpEquiv):
        (WebCore::Document::recalcStyleSelector):
        * dom/Document.h:
        (WebCore::Document::userStyleSheet):
        (WebCore::Document::setPrintStyleSheet):
        (WebCore::Document::printStyleSheet):
        * editing/markup.cpp:
        (WebCore::createMarkup):
        (WebCore::createFragmentFromMarkup):
        (WebCore::createFragmentFromText):
        * editing/markup.h:
        * html/CanvasRenderingContext2D.cpp:
        (WebCore::CanvasRenderingContext2D::setGlobalCompositeOperation):
        * html/HTMLTokenizer.cpp:
        (WebCore::HTMLTokenizer::scriptHandler):
        * html/html_baseimpl.cpp:
        (WebCore::HTMLFrameElement::openURL):
        (WebCore::HTMLFrameElement::attach):
        * html/html_headimpl.cpp:
        (WebCore::HTMLLinkElement::process):
        (WebCore::HTMLLinkElement::setStyleSheet):
        * html/html_headimpl.h:
        * html/html_imageimpl.cpp:
        (WebCore::HTMLImageElement::parseMappedAttribute):
        * html/html_imageimpl.h:
        (WebCore::HTMLImageElement::compositeOperator):
        * html/html_objectimpl.cpp:
        (WebCore::HTMLAppletElement::createRenderer):
        * ksvg2/svg/SVGStringList.cpp:
        (SVGStringList::reset):
        * kwq/AccessibilityObjectCache.h:
        * kwq/AccessibilityObjectCache.mm:
        (AccessibilityObjectCache::textMarkerForVisiblePosition):
        (AccessibilityObjectCache::postNotificationToTopWebArea):
        (AccessibilityObjectCache::postNotification):
        * kwq/ClipboardMac.mm:
        (WebCore::cocoaTypeFromMIMEType):
        * kwq/KWQKHTMLSettings.h:
        (KHTMLSettings::userStyleSheetLocation):
        (KHTMLSettings::setUserStyleSheetLocation):
        * kwq/KWQLineEdit.h:
        * kwq/KWQLineEdit.mm:
        (QLineEdit::selectedText):
        * loader/CachedCSSStyleSheet.cpp:
        (WebCore::CachedCSSStyleSheet::ref):
        * page/Frame.cpp:
        (WebCore::UserStyleSheetLoader::setStyleSheet):
        (WebCore::Frame::jScriptEnabled):
        (WebCore::Frame::javaEnabled):
        (WebCore::Frame::pluginsEnabled):
        (WebCore::Frame::receivedFirstData):
        (WebCore::Frame::begin):
        (WebCore::Frame::setUserStyleSheet):
        (WebCore::Frame::requestObject):
        (WebCore::Frame::loadPlugin):
        (WebCore::Frame::referrer):
        (WebCore::Frame::lastModified):
        (WebCore::Frame::reparseConfiguration):
        (WebCore::Frame::handleMousePressEventSingleClick):
        (WebCore::Frame::appliedEditing):
        (WebCore::Frame::unappliedEditing):
        (WebCore::Frame::reappliedEditing):
        * page/Frame.h:
        * page/FramePrivate.h:
        (WebCore::FramePrivate::FramePrivate):
        * platform/AtomicString.h:
        (WebCore::AtomicString::AtomicString):
        * platform/DeprecatedString.cpp:
        (DeprecatedString::replace):
        * platform/GraphicsContext.h:
        * platform/Image.h:
        * platform/KURL.cpp:
        * platform/KURL.h:
        * platform/PlatformString.h:
        (WebCore::String::String):
        (WebCore::String::replace):
        * platform/String.cpp:
        (WebCore::operator+):
        * platform/StringImpl.cpp:
        (WebCore::StringImpl::remove):
        (WebCore::parseLength):
        (WebCore::StringImpl::replace):
        * platform/StringImpl.h:
        * platform/mac/GraphicsContextMac.mm:
        (WebCore::GraphicsContext::setCompositeOperation):
        * rendering/RenderHTMLCanvas.cpp:
        (WebCore::RenderHTMLCanvas::paint):
        * rendering/render_form.cpp:
        (WebCore::RenderSelect::updateFromElement):
        * rendering/render_frames.cpp:
        (WebCore::isURLAllowed):
        (WebCore::mapClassIdToServiceType):
        (WebCore::RenderPartObject::updateWidget):
        * rendering/render_style.h:
        (WebCore::RenderStyle::setDashboardRegion):
        * xml/xmlhttprequest.cpp:
        (WebCore::getCharset):
        (WebCore::XMLHttpRequest::send):
        (WebCore::XMLHttpRequest::overrideMIMEType):

2006-03-22  Beth Dakin  <bdakin@apple.com>

        Reviewed by Hyatt

        Fix for <rdar://problem/4471984> repro crash CSS position for html/
        table=relative causes crash when hiding table

        * css/cssstyleselector.cpp:
        (WebCore::CSSStyleSelector::adjustRenderStyle): If an object is 
        positioned, relatively positioned, or transparent, it should always 
        have auto indexing. Auto z-index for the root should always be 0.
        * rendering/RenderLayer.cpp:
        (WebCore::RenderLayer::removeChild): This is not part of the bug 
        fix; just using a local variable that was created for the stacking 
        context instead of recalculating it.

2006-03-22  David Hyatt  <hyatt@apple.com>

        Fix for residual style problem where form elements lose their connection
        to a degenerate table form because of a residual style fixup.  This is
        Radar bug #4330765.

        Reviewed by eric

        * khtml/html/HTMLFormElement.cpp:
        (WebCore::HTMLFormElement::HTMLFormElement):
        * khtml/html/HTMLFormElement.h:
        (WebCore::HTMLFormElement::setPreserveFormConnectionAcrossRemove):
        (WebCore::HTMLFormElement::preserveFormConnectionAcrossRemove):
        * khtml/html/HTMLGenericFormElement.cpp:
        (WebCore::HTMLGenericFormElement::removedFromTree):
        * khtml/html/htmlparser.cpp:
        (WebCore::HTMLParser::handleResidualStyleCloseTagAcrossBlocks):

2006-03-22  Mitz Pettel  <opendarwin.org@mitzpettel.com>

        Reviewed by Adele.

        - fix http://bugs.webkit.org/show_bug.cgi?id=7747
          REGRESSION: Background tab/window auto-refresh in GMail will take focus.

        * manual-tests/named-window-blank-target.html: Added.
        * manual-tests/resources/named-window-blank-target-step2.html: Added.
        * manual-tests/resources/named-window-blank-target-step3.html: Added.
        * manual-tests/resources/named-window-blank-target-step4.html: Added.
        * page/FrameTree.cpp:
        (WebCore::FrameTree::find): If the given name is empty, just return our frame,
        even if it has a name.

2006-03-22  Darin Adler  <darin@apple.com>

        Reviewed by Adele.

        - fix http://bugs.webkit.org/show_bug.cgi?id=7143
          <rdar://problem/4483856> REGRESSION (417.8-TOT): onclick handler cannot call a function named OnClick (7143)

        Test: fast/dom/Element/onclick-case.html

        We discussed this with Maciej. In the long run we may need to remove the "all attributes
        show up as properties in JavaScript" feature entirely. Gecko does not do it, and it's
        not really the same thing IE does either.

        * khtml/ecma/kjs_dom.cpp:
        (KJS::DOMElement::attributeGetter): Use getAttributeNS so we're case sensitive.
        (KJS::DOMElement::getOwnPropertySlot): Ditto.

2006-03-22  Eric Seidel  <eseidel@apple.com>

        Reviewed by beth.

        <rdar://problem/4486417> REGRESSION: Mail linked against TOT WebKit crashes when composing a message

        No test possible.

        * bridge/mac/WebCoreSettings.mm:
        (-[WebCoreSettings init]): call AtomicString::init()

2006-03-21  Darin Adler  <darin@apple.com>

        - fix buildbot (and everyone else)

        * bindings/js/JSDOMCore.cpp: Touch, because Adele's change adds a virtual function,
        and Xcode doesn't know this needs recompiling.
        * bindings/js/JSDOMEvents.cpp: Ditto.
        * bindings/js/JSDOMHTML.cpp: Ditto.

2006-03-21  Justin Haygood and Bjoern Graf  <jhaygood@spsu.edu> <bjoern.graf@gmail.com>

        Reviewed by Eric and Darin.

        - get Windows building again

        * WebCore.vcproj/WebCore/WebCore.vcproj:
        * bridge/win/FrameWin.cpp:
        (WebCore::FrameWin::userAgent):
        * bridge/win/FrameWin.h:
        * platform/GraphicsContext.h:
        * platform/cairo/ImageCairo.cpp:
        (WebCore::Image::supportsType):
        * platform/win/TemporaryLinkStubs.cpp:
        (FrameWin::mimeTypeForFileName):
        (FrameWin::objectContentType):
        (FrameWin::createPlugin):
        (FrameWin::overrideMediaType):
        (FrameWin::passSubframeEventToSubframe):
        (FrameWin::createFrame):
        (FrameWin::incomingReferrer):

2006-03-21  Mitz Pettel  <opendarwin.org@mitzpettel.com>

        Reviewed by Darin.

        - fix http://bugs.webkit.org/show_bug.cgi?id=7884
          REGRESSION: Selecting a custom style sheet crashes 20/3 nightly

        * page/Frame.cpp:
        (WebCore::UserStyleSheetLoader::setStyleSheet): This was calling the function
        that sets the stylesheet URL, passing it the actual stylesheet.
        (WebCore::Frame::begin):
        (WebCore::Frame::setUserStyleSheetLocation): Renamed the version of
        setUserStyleSheet() that takes a URL to this.
        (WebCore::Frame::reparseConfiguration):
        * page/Frame.h:

2006-03-21  Adele Peterson  <adele@apple.com>

        Reviewed by Darin.

        - Fix for
        http://bugs.webkit.org/show_bug.cgi?id=6813
        elementAtPoint needs to return input element when clicking on new text field
        http://bugs.webkit.org/show_bug.cgi?id=7799
        New text fields don't respect the disabled attribute

        - Tests:
        fast/forms/input-appearance-disabled.html
        fast/forms/input-appearance-elementFromPoint.html
        fast/forms/input-appearance-preventDefault.html

        * bridge/mac/WebCoreFrameBridge.h: Added allowShadowContent parameter to getInnerNonSharedNode so new elementAtPoint method in WebKit can call this.
        * bridge/mac/WebCoreFrameBridge.mm:
        (-[WebCoreFrameBridge getInnerNonSharedNode:innerNode:URLElement:atPoint:allowShadowContent:]): Passes allowShadowContent parameter to nodeInfoAtPoint.
        (-[WebCoreFrameBridge _visiblePositionForPoint:]): Updated to call nodeInfoAtPoint allowing shadow content.
        (-[WebCoreFrameBridge RenderObject::nodeInfoAtPoint:allowShadowContent:]): Added allowShadowContent parameter.

        * dom/Node.h:
        (WebCore::Node::isShadowNode): Added.
        (WebCore::Node::shadowParentNode): Added.
        * dom/Node.cpp: (WebCore::Node::shadowAncestorNode): Added.  If an ancestor is a shadow node, return its shadow parent node.
        * html/HTMLTextFieldInnerElement.h: (WebCore::HTMLTextFieldInnerElement::isShadowNode): Added.

        * dom/Document.cpp: (WebCore::Document::elementFromPoint): Gets the shadowAncestorNode (so we get the input element, and not the inner div).
        * html/HTMLInputElement.cpp:
        (WebCore::HTMLInputElement::isKeyboardFocusable): If text fields are focusable, then they should be keyboard focusable.  This works for the
        old text fields because HTMLGenericFormElement::isKeyboardFocusable does the right thing for RenderWidgets.  That's not needed for the new form
        elements.
        (WebCore::HTMLInputElement::defaultEventHandler): let the renderer forward drag, mouse, and wheel events.

        * page/FrameView.cpp:
        (WebCore::FrameView::updateDragAndDrop): Send drag events to the shadowAncestorNode.
        (WebCore::FrameView::dispatchMouseEvent): Send mouse events to the shadowAncestorNode.
        (WebCore::FrameView::handleWheelEvent): Send wheel events to the shadowAncestorNode.

        * rendering/RenderTextField.cpp: (WebCore::RenderTextField::forwardEvent): forwards events to the inner div element.
        * rendering/RenderTextField.h: Added forwardEvent method.

        * kwq/WebCoreAXObject.mm:
        (-[WebCoreAXObject accessibilityHitTest:]): Gets the  shadowAncestorNode (so we get the input element, and not the inner div).
        (-[WebCoreAXObject role]): Gets the right role for text fields, since we no longer get that from AppKit.
        (-[WebCoreAXObject roleDescription]): Gets the right description for text fields.

2006-03-21  Darin Adler  <darin@apple.com>

        Reviewed by Tim O.

        - fixed <rdar://problem/4251515> REGRESSION: listing tag broken in TOT

        Test: fast/html/listing.html

        * html/HTMLNames.h: Add listing tag.

        * bindings/objc/DOM.mm: (+[DOMNode _nodeWith:]):
        * bridge/mac/FrameMac.mm: (WebCore::FrameMac::attributedString):
        * css/html4.css:
        * editing/ReplaceSelectionCommand.cpp: (WebCore::isProbablyBlock):
        * editing/TextIterator.cpp:
        (WebCore::TextIterator::handleNonTextNode):
        (WebCore::TextIterator::exitNode):
        (WebCore::SimplifiedBackwardsTextIterator::handleNonTextNode):
        * editing/markup.cpp:
        (WebCore::startMarkup):
        (WebCore::createMarkup):
        * html/HTMLElement.cpp: (WebCore::blockTagList):
        * html/HTMLElementFactory.cpp:
        (WebCore::addTag):
        (WebCore::createFunctionMap):
        (WebCore::HTMLElementFactory::createHTMLElement):
        * html/HTMLParser.cpp: (WebCore::HTMLParser::isAffectedByResidualStyle):
        * html/HTMLTokenizer.cpp: (WebCore::HTMLTokenizer::parseTag):
        * khtml/ecma/kjs_html.cpp:
        (KJS::JSHTMLElement::classInfo):
        (KJS::JSHTMLElement::accessors):
        Add listing tags everywhere pre tags are listed.

2006-03-21  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by Darin.
        
        - fix horrible build fallout from my attr fix

        * bindings/js/JSCanvasRenderingContext2DBase.cpp:
        * bindings/js/JSDOMCore.cpp:
        * bindings/js/JSDOMEvents.cpp:
        * bindings/js/JSDOMHTML.cpp:
        * bindings/scripts/CodeGeneratorJS.pm:

2006-03-21  Beth Dakin  <bdakin@apple.com>

        Reviewed by Maciej

        Fix for http://bugs.webkit.org/show_bug.cgi?id=7223 
        Reproducible crash when tabbing to a frame that has not been loaded

        * bridge/mac/FrameMac.mm:
        (WebCore::FrameMac::nextKeyViewInFrame): When a renderer doesn't 
        have a widget, skip it in the focus loop.

2006-03-20  Eric Seidel  <eseidel@apple.com>

        Reviewed by mjs.

        Fix a unsafe static cast causing intermittent crashes.
        <rdar://problem/4411663> crash at KXMLCore::RefPtr<WebCore::DOMStringImpl>::get() const + 20 (RefPtr.h:45)

        Test: fast/dom/NodeList/item-by-id-with-no-document.html

        * dom/NodeList.cpp:
        (WebCore::NodeList::itemById): fix unsafe static cast.

2006-03-20  Maciej Stachowiak  <mjs@apple.com>

        - touch this file in hopes of fixing build

        * bindings/js/JSDOMCore.cpp:

2006-03-20  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by Anders.
        
        - fixed <rdar://problem/4446749> 10.4.4: safari crash in DOM::NamedAttrMapImpl::setNamedItem

        * bindings/scripts/CodeGeneratorJS.pm: Add a framework for typechecking method
        arguments. For now only use it for parameters of type Attr.
        * dom/Element.idl: Arbitrary change to make it regenerate.
        * dom/dom_elementimpl.cpp:
        (WebCore::Element::setAttributeNode): ASSERT that attr is not null
        * khtml/ecma/kjs_dom.cpp:
        (KJS::toAttr): add bool ok parameter
        * khtml/ecma/kjs_dom.h:

2006-03-20  Eric Seidel  <eseidel@apple.com>

        * ksvg2/css/SVGCSSParser.h: Removed unused file.

2006-03-20  Eric Seidel  <eseidel@apple.com>

        Reviewed by mjs.

        Fix tokenizer crash when document.open() is called from an external script:
        <rdar://problem/4483882> REGRESSION (417.8-TOT): crash at yourmovies.com.au in WebCore::HTMLTokenizer::reset() + 92 (7818)

        * dom/Document.cpp:
        (WebCore::Document::open): Check to make sure the current tokenizer isn't executing a script
        * dom/xml_tokenizer.h:
        (WebCore::Tokenizer::executingScript): Add a way for others to know if scripts are executing.
        * html/HTMLTokenizer.cpp:
        (WebCore::HTMLTokenizer::scriptExecution): Wire into existing m_executingScript member var.
        * html/HTMLTokenizer.h:
        (WebCore::HTMLTokenizer::executingScript):
        * kcanvas/device/quartz/KCanvasFilterQuartz.mm:
        (WebCore::KCanvasFilterQuartz::prepareFilter): Unrelated code cleanup.

2006-03-20  Justin Garcia  <justin.garcia@apple.com>

        Reviewed by darin
        
        <rdar://problem/3997958> 
        REGRESSION (Mail): Mail takes half of forever to paste >1500 lines - replaceSelectionWithNode

        * dom/Position.cpp:
        (WebCore::Position::upstream): Avoid calling previous() when we know that 
        it will 1) end the search and 2) be expensive to compute.
        (WebCore::Position::downstream): Removed some dead code.
        (WebCore::Position::inRenderedText): Return false for offsets inside composed characters.
        * dom/Position.h:
        * editing/VisiblePosition.cpp:
        (WebCore::VisiblePosition::init): If there are two visually equivalent candidates, we choose
        the one that occurs first in document order.  Using upstream() to find the one that occurs first is
        much faster than the old code.

2006-03-20  Eric Seidel  <eseidel@apple.com>

        Reviewed by adele & ggaren.

        Added new cachePluginDataIfNecessary function to update
        plugins and mimes arrays.  Made sure to call this in
        constructor as well as refresh.  The crash was caused by
        a refresh rendering a "plugins" object invalid.
        Changed existing test case to depend on this new correct behavior.
        
        <rdar://problem/4480571> Safari crashed at exit at KXMLCore::deleteAllValues + 24

        * khtml/ecma/kjs_navigator.cpp:
        (KJS::PluginBase::cachePluginDataIfNecessary):
        (KJS::PluginBase::PluginBase):
        (KJS::PluginBase::~PluginBase):
        (KJS::PluginBase::refresh):

2006-03-20  Adele Peterson  <adele@apple.com>

        Reviewed by Justin.

        * rendering/RenderTextField.cpp: (WebCore::RenderTextField::visiblePositionForIndex):
        When calculating the VisiblePosition for the first position in the text field, it
        makes more sense for the position to have a downstream affinity.

2006-03-20  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by Adele.
        
        <rdar://problem/4362396> REGRESSION: (417-420) stopPropagation is not working for click event listener (onclick works fine)

        * dom/EventTargetNode.cpp:
        (WebCore::EventTargetNode::dispatchGenericEvent): make sure to fire capturing listeners
        as well as bubbling ones on the target.

2006-03-20  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by Darin.
        
        <rdar://problem/4458568> WebCore should not disclose https referrers

        * bridge/mac/WebCoreFrameBridge.mm:
        (-[WebCoreFrameBridge canLoadURL:fromReferrer:hideReferrer:]):
        Don't send https URLs as referrers to non-secure http sites.

2006-03-20  Darin Adler  <darin@apple.com>

        Reviewed by Geoff.

        - http://bugs.webkit.org/show_bug.cgi?id=7867
          get rid of macro hacks for DOM, KDOM, KSVG, khtml, DOMString, QString

        * config.h: Remove the defines for DOM, KDOM, KSVG, khtml, DOMString, QString,
        and qstring().

        * WebCore.xcodeproj/project.pbxproj: Pass in WebCore instead of KSVG as the
        namespace for SVG names.
        * ksvg2/scripts/make_names.pl: Made a couple changes to trick the SVG names into
        recompiling, since they are in a different namespace now.

        * ForwardingHeaders/kjs/identifier.h: Added.

        * dom/PlatformWheelEvent.idl: Removed.
        * dom/WheelEvent.idl: Added. This file was renamed by accident.

        * bindings/js/JSDOMCore.cpp:
        * bindings/js/JSDOMEvents.cpp:
        * bindings/js/JSDOMHTML.cpp:
        * dom/Attr.idl:
        * dom/CharacterData.idl:
        * dom/DOMImplementation.idl:
        * dom/DocumentType.idl:
        * dom/Element.idl:
        * dom/Entity.idl:
        * dom/MutationEvent.idl:
        * dom/Notation.idl:
        * dom/ProcessingInstruction.idl:
        * dom/Text.idl:
        * html/CanvasGradient.idl:
        * html/CanvasPattern.idl:
        * html/CanvasRenderingContext2D.idl:
        Touched, to get CodeGeneratorJS.pm changes to take effect.
 
        * css/CSSGrammar.y:
        * css/css_valueimpl.cpp: (WebCore::propertyID):
        Changed calls to get CSS property values to use an explicit SVG:: namespace,
        to match what the script writes out.

        * khtml/ecma/kjs_binding.h: Added forward declaration of WebCore::String.

        * ksvg2/scripts/cssmakeget rid of macro hacks for DOM, KDOM, KSVG, khtml, DOMString, QString
          props: Made this compile with warnings and strict turned on.
        Really just a trick to get properties to recompile, which turned out to be unneeded.
        * ksvg2/scripts/cssmakevalues: Ditto.

        * ksvg2/svg/SVGAElement.cpp:
        (SVGAElement::parseMappedAttribute):
        (SVGAElement::defaultEventHandler):
        * ksvg2/svg/SVGAnimateTransformElement.cpp:
        (SVGAnimateTransformElement::parseMappedAttribute):
        * ksvg2/svg/SVGAnimationElement.cpp:
        (SVGAnimationElement::parseMappedAttribute):
        * ksvg2/svg/SVGClipPathElement.cpp:
        (SVGClipPathElement::parseMappedAttribute):
        * ksvg2/svg/SVGComponentTransferFunctionElement.cpp:
        (SVGComponentTransferFunctionElement::parseMappedAttribute):
        * ksvg2/svg/SVGExternalResourcesRequired.cpp:
        (SVGExternalResourcesRequired::parseMappedAttribute):
        * ksvg2/svg/SVGFEBlendElement.cpp:
        (SVGFEBlendElement::parseMappedAttribute):
        * ksvg2/svg/SVGFEColorMatrixElement.cpp:
        (SVGFEColorMatrixElement::parseMappedAttribute):
        * ksvg2/svg/SVGFEComponentTransferElement.cpp:
        (SVGFEComponentTransferElement::parseMappedAttribute):
        * ksvg2/svg/SVGFECompositeElement.cpp:
        (SVGFECompositeElement::parseMappedAttribute):
        * ksvg2/svg/SVGFEDiffuseLightingElement.cpp:
        (WebCore::SVGFEDiffuseLightingElement::parseMappedAttribute):
        * ksvg2/svg/SVGFEDisplacementMapElement.cpp:
        (SVGFEDisplacementMapElement::SVGFEDisplacementMapElement):
        (SVGFEDisplacementMapElement::stringToChannel):
        (SVGFEDisplacementMapElement::parseMappedAttribute):
        (SVGFEDisplacementMapElement::filterEffect):
        * ksvg2/svg/SVGFEDisplacementMapElement.h:
        * ksvg2/svg/SVGFEFloodElement.cpp:
        (SVGFEFloodElement::parseMappedAttribute):
        * ksvg2/svg/SVGFEGaussianBlurElement.cpp:
        (SVGFEGaussianBlurElement::parseMappedAttribute):
        * ksvg2/svg/SVGFEImageElement.cpp:
        (SVGFEImageElement::parseMappedAttribute):
        * ksvg2/svg/SVGFELightElement.cpp:
        (SVGFELightElement::parseMappedAttribute):
        * ksvg2/svg/SVGFEMergeNodeElement.cpp:
        (SVGFEMergeNodeElement::parseMappedAttribute):
        * ksvg2/svg/SVGFEOffsetElement.cpp:
        (SVGFEOffsetElement::parseMappedAttribute):
        * ksvg2/svg/SVGFESpecularLightingElement.cpp:
        (SVGFESpecularLightingElement::parseMappedAttribute):
        * ksvg2/svg/SVGFETileElement.cpp:
        (SVGFETileElement::parseMappedAttribute):
        * ksvg2/svg/SVGFETurbulenceElement.cpp:
        (SVGFETurbulenceElement::parseMappedAttribute):
        * ksvg2/svg/SVGFilterElement.cpp:
        (SVGFilterElement::parseMappedAttribute):
        * ksvg2/svg/SVGGradientElement.cpp:
        (SVGGradientElement::parseMappedAttribute):
        * ksvg2/svg/SVGMaskElement.cpp:
        (WebCore::SVGMaskElement::parseMappedAttribute):
        * ksvg2/svg/SVGPolyElement.cpp:
        (SVGPolyElement::parseMappedAttribute):
        * ksvg2/svg/SVGStopElement.cpp:
        (SVGStopElement::parseMappedAttribute):
        * ksvg2/svg/SVGStyledElement.cpp:
        (WebCore::SVGStyledElement::parseMappedAttribute):
        * ksvg2/svg/SVGTests.cpp:
        (WebCore::SVGTests::parseMappedAttribute):
        * ksvg2/svg/SVGTextContentElement.cpp:
        (SVGTextContentElement::parseMappedAttribute):
        * ksvg2/svg/SVGTextPositioningElement.cpp:
        (SVGTextPositioningElement::parseMappedAttribute):
        * ksvg2/svg/SVGViewElement.cpp:
        (SVGViewElement::parseMappedAttribute):
        * ksvg2/svg/SVGZoomAndPan.cpp:
        (SVGZoomAndPan::parseMappedAttribute):
        Changed code that converts an AtomicString to a String to do it in a
        more-efficient fashion that works even with all the new conversions.

        * page/Frame.cpp:
        (WebCore::getString): Removed unneeded .deprecatedString().
        (WebCore::Frame::begin): Removed the only use of QSTRING_NULL.

        * platform/AtomicString.h: Added conversion to and from KJS::Identifier
        and KJS::UString.
        * platform/AtomicString.cpp:
        (WebCore::AtomicString::add): Added overloads for Identifier and UString.
        (WebCore::AtomicString::operator Identifier): Added.
        (WebCore::AtomicString::operator UString): Added.

        * platform/DeprecatedString.h: Added conversion to and from KJS::Identifier
        and KJS::UString.
        * platform/DeprecatedString.cpp:
        (DeprecatedString::DeprecatedString): Added overloads for Identifier and UString.
        (DeprecatedString::operator Identifier): Added.
        (DeprecatedString::operator UString): Added.

        * platform/PlatformString.h: Added conversion to and from KJS::Identifier
        and KJS::UString.
        * platform/String.cpp:
        (WebCore::String::String): Added overloads for Identifier and UString.
        (WebCore::String::operator Identifier): Added.
        (WebCore::String::operator UString): Added.

        * platform/StringImpl.h: Added constructors that take KJS::Identifier
        and KJS::UString
        * platform/StringImpl.cpp:
        (WebCore::getWordBreakIterator): Changed a use of UChar to say ::UChar
        instead because of ambiguity with KJS::UChar.
        (WebCore::StringImpl::StringImpl): Added overloads for Identifier and String.

        * bindings/js/JSCanvasRenderingContext2DBase.cpp:
        (WebCore::JSCanvasRenderingContext2DBaseProtoFunc::callAsFunction):
        (WebCore::toHTMLCanvasStyle):
        * bindings/scripts/CodeGeneratorJS.pm:
        * bridge/mac/WebCoreFrameBridge.mm:
        (aeDescFromJSValue):
        (-[WebCoreFrameBridge stringByEvaluatingJavaScriptFromString:forceUserGesture:]):
        * dom/QualifiedName.cpp:
        (WebCore::QualifiedName::toString):
        * khtml/ecma/JSDOMParser.cpp:
        (KJS::DOMParserProtoFunc::callAsFunction):
        * khtml/ecma/JSXMLHttpRequest.cpp:
        (KJS::JSXMLHttpRequestProtoFunc::callAsFunction):
        * khtml/ecma/JSXSLTProcessor.cpp:
        (KJS::XSLTProcessorProtoFunc::callAsFunction):
        * khtml/ecma/kjs_binding.cpp:
        (KJS::valueToStringWithNullCheck):
        * khtml/ecma/kjs_css.cpp:
        (KJS::cssPropertyName):
        (KJS::DOMCSSStyleDeclaration::put):
        (KJS::DOMCSSStyleDeclarationProtoFunc::callAsFunction):
        (KJS::DOMStyleSheetList::nameGetter):
        (KJS::DOMStyleSheetList::getOwnPropertySlot):
        (KJS::DOMMediaList::put):
        (KJS::KJS::DOMMediaListProtoFunc::callAsFunction):
        (KJS::DOMCSSStyleSheetProtoFunc::callAsFunction):
        (KJS::DOMCSSRule::putValueProperty):
        (KJS::DOMCSSRuleFunc::callAsFunction):
        (KJS::DOMCSSValue::put):
        (KJS::DOMCSSPrimitiveValueProtoFunc::callAsFunction):
        * khtml/ecma/kjs_dom.cpp:
        (KJS::DOMNode::putValueProperty):
        (KJS::DOMNode::toString):
        (KJS::DOMNodeProtoFunc::callAsFunction):
        (KJS::DOMEventTargetNodeProtoFunc::callAsFunction):
        (KJS::DOMNodeList::nameGetter):
        (KJS::DOMNodeList::getOwnPropertySlot):
        (KJS::DOMDocument::putValueProperty):
        (KJS::DOMDocumentProtoFunc::callAsFunction):
        (KJS::DOMElement::attributeGetter):
        (KJS::DOMElement::getOwnPropertySlot):
        (KJS::DOMNamedNodeMap::nameGetter):
        (KJS::DOMNamedNodeMap::getOwnPropertySlot):
        (KJS::DOMNamedNodeMapProtoFunc::callAsFunction):
        (KJS::DOMNamedNodesCollection::getOwnPropertySlot):
        * khtml/ecma/kjs_events.cpp:
        (KJS::JSAbstractEventListener::handleEvent):
        (KJS::DOMEvent::getValueProperty):
        (KJS::DOMEventProtoFunc::callAsFunction):
        (KJS::DOMUIEventProtoFunc::callAsFunction):
        (KJS::DOMMouseEventProtoFunc::callAsFunction):
        (KJS::DOMKeyboardEventProtoFunc::callAsFunction):
        (KJS::Clipboard::putValueProperty):
        (KJS::ClipboardProtoFunc::callAsFunction):
        * khtml/ecma/kjs_html.cpp:
        (KJS::HTMLDocFunction::callAsFunction):
        (KJS::JSHTMLDocument::namedItemGetter):
        (KJS::JSHTMLDocument::getOwnPropertySlot):
        (KJS::JSHTMLDocument::putValueProperty):
        (KJS::JSHTMLElement::framesetNameGetter):
        (KJS::JSHTMLElement::getOwnPropertySlot):
        (KJS::HTMLElementFunction::callAsFunction):
        (KJS::JSHTMLElement::putValueProperty):
        (KJS::JSHTMLCollection::callAsFunction):
        (KJS::JSHTMLCollection::getNamedItems):
        (KJS::HTMLCollectionProtoFunc::callAsFunction):
        (KJS::OptionConstructorImp::construct):
        * khtml/ecma/kjs_navigator.cpp:
        (KJS::Plugins::nameGetter):
        (KJS::Plugins::getOwnPropertySlot):
        (KJS::MimeTypes::nameGetter):
        (KJS::MimeTypes::getOwnPropertySlot):
        (KJS::Plugin::nameGetter):
        (KJS::Plugin::getOwnPropertySlot):
        * khtml/ecma/kjs_proxy.cpp:
        (WebCore::KJSProxy::evaluate):
        * khtml/ecma/kjs_range.cpp:
        (KJS::DOMRangeProtoFunc::callAsFunction):
        * khtml/ecma/kjs_views.cpp:
        (KJS::DOMAbstractViewProtoFunc::callAsFunction):
        * khtml/ecma/kjs_window.cpp:
        (KJS::parseModalDialogFeatures):
        (KJS::showModalDialog):
        (KJS::Window::childFrameGetter):
        (KJS::Window::namedFrameGetter):
        (KJS::Window::namedItemGetter):
        (KJS::Window::getOwnPropertySlot):
        (KJS::Window::put):
        (KJS::WindowFunc::callAsFunction):
        (KJS::ScheduledAction::execute):
        (KJS::Window::installTimeout):
        (KJS::FrameArray::nameGetter):
        (KJS::FrameArray::getOwnPropertySlot):
        (KJS::Location::put):
        (KJS::LocationFunc::callAsFunction):
        (KJS::SelectionFunc::callAsFunction):
        Removed explicit calls to domString(), sometimes replacing with explicit calls to the
        String() constructor. Other similar changes for AtomicString and DeprecatedString use.

2006-03-20  Eric Seidel  <eseidel@apple.com>

        Reviewed by darin.

        Remove many, many uses of DeprecatedString.
        Fix various style issues throughout the touched code.

        * bindings/objc/DOM.mm:
        (-[DOMRange _text]):
        * bridge/mac/BrowserExtensionMac.mm:
        (WebCore::BrowserExtensionMac::createNewWindow):
        * bridge/mac/FrameMac.h:
        (WebCore::FrameMac::bridge):
        (WebCore::FrameMac::markedTextRange):
        (WebCore::Mac):
        * bridge/mac/FrameMac.mm:
        (WebCore::FrameMac::openURLRequest):
        (WebCore::FrameMac::searchForLabelsAboveCell):
        (WebCore::FrameMac::searchForLabelsBeforeElement):
        (WebCore::FrameMac::matchLabelsAgainstElement):
        (WebCore::FrameMac::findString):
        (WebCore::FrameMac::submitForm):
        (WebCore::FrameMac::urlSelected):
        (WebCore::FrameMac::objectContentType):
        (WebCore::FrameMac::createPlugin):
        (WebCore::FrameMac::createFrame):
        (WebCore::FrameMac::setTitle):
        (WebCore::FrameMac::setStatusBarText):
        (WebCore::FrameMac::advanceToNextMisspelling):
        (WebCore::FrameMac::userAgent):
        (WebCore::FrameMac::mimeTypeForFileName):
        (WebCore::FrameMac::openURLFromPageCache):
        (WebCore::FrameMac::incomingReferrer):
        (WebCore::FrameMac::attributedString):
        (WebCore::FrameMac::overrideMediaType):
        (WebCore::FrameMac::shouldClose):
        * bridge/mac/WebCoreFrameBridge.mm:
        (-[WebCoreFrameBridge _documentTypeString]):
        (-[WebCoreFrameBridge selectedString]):
        (-[WebCoreFrameBridge stringForRange:]):
        (-[WebCoreFrameBridge advanceToNextMisspelling]):
        (-[WebCoreFrameBridge advanceToNextMisspellingStartingJustBeforeSelection]):
        (-[WebCoreFrameBridge domain]):
        * bridge/mac/WebCoreSettings.mm:
        (-[WebCoreSettings setStandardFontFamily:]):
        (-[WebCoreSettings setFixedFontFamily:]):
        (-[WebCoreSettings setSerifFontFamily:]):
        (-[WebCoreSettings setSansSerifFontFamily:]):
        (-[WebCoreSettings setCursiveFontFamily:]):
        (-[WebCoreSettings setFantasyFontFamily:]):
        (-[WebCoreSettings setUserStyleSheetLocation:]):
        (-[WebCoreSettings setDefaultTextEncoding:]):
        * css/css_valueimpl.cpp:
        (WebCore::quoteStringIfNeeded):
        * css/cssstyleselector.cpp:
        (WebCore::CSSStyleSelector::CSSStyleSelector):
        (WebCore::CSSStyleSelector::setEncodedURL):
        (WebCore::cleanpath):
        (WebCore::checkPseudoState):
        (WebCore::CSSStyleSelector::styleForElement):
        (WebCore::CSSStyleSelector::styleRulesForElement):
        (WebCore::convertToLength):
        (WebCore::colorForCSSValue):
        (WebCore::CSSStyleSelector::applyProperty):
        (WebCore::CSSStyleSelector::getColorFromPrimitiveValue):
        * css/cssstyleselector.h:
        * dom/CDATASection.cpp:
        (WebCore::CDATASection::toString):
        * dom/Document.cpp:
        (WebCore::Document::recalcStyle):
        * dom/Document.h:
        (WebCore::Document::baseTarget):
        (WebCore::Document::setBaseTarget):
        * dom/dom_elementimpl.cpp:
        (WebCore::Element::openTagStartToString):
        * dom/xml_tokenizer.cpp:
        (WebCore::handleElementAttributes):
        (WebCore::XMLTokenizer::startElementNs):
        * editing/SelectionController.cpp:
        (WebCore::SelectionController::type):
        * editing/TextIterator.cpp:
        (WebCore::TextIterator::advance):
        (WebCore::TextIterator::handleTextBox):
        (WebCore::TextIterator::handleNonTextNode):
        (WebCore::TextIterator::exitNode):
        (WebCore::SimplifiedBackwardsTextIterator::advance):
        (WebCore::SimplifiedBackwardsTextIterator::handleTextNode):
        (WebCore::CharacterIterator::advance):
        (WebCore::WordAwareIterator::advance):
        (WebCore::WordAwareIterator::length):
        (WebCore::WordAwareIterator::characters):
        (WebCore::CircularSearchBuffer::CircularSearchBuffer):
        (WebCore::CircularSearchBuffer::append):
        (WebCore::TextIterator::rangeFromLocationAndLength):
        (WebCore::findPlainText):
        * editing/TextIterator.h:
        * html/HTMLFormElement.cpp:
        (WebCore::HTMLFormElement::formData):
        * khtml/ecma/kjs_navigator.cpp:
        (KJS::Navigator::getValueProperty):
        * khtml/ecma/kjs_proxy.cpp:
        (WebCore::KJSProxy::initScriptIfNeeded):
        * khtml/ecma/kjs_window.cpp:
        (KJS::Location::getValueProperty):
        * ksvg2/misc/KCanvasRenderingStyle.cpp:
        (WebCore::KSVGPainterFactory::fillPaintServer):
        (WebCore::KSVGPainterFactory::strokePaintServer):
        * ksvg2/svg/SVGAngle.cpp:
        (SVGAngle::calculate):
        (SVGAngle::setValueAsString):
        (SVGAngle::valueAsString):
        (SVGAngle::convertToSpecifiedUnits):
        (SVGAngle::shortestArcBisector):
        * ksvg2/svg/SVGAngle.h:
        * ksvg2/svg/SVGAnimationElement.cpp:
        (SVGAnimationElement::targetElement):
        (SVGAnimationElement::parseMappedAttribute):
        (SVGAnimationElement::parseClockValue):
        (SVGAnimationElement::targetAttribute):
        (SVGAnimationElement::setTargetAttribute):
        (SVGAnimationElement::detectAnimationMode):
        (SVGAnimationElement::calculateCurrentValueItem):
        (SVGAnimationElement::calculateRelativeTimePercentage):
        * ksvg2/svg/SVGColor.cpp:
        (SVGColor::setRGBColor):
        * ksvg2/svg/SVGDOMImplementation.cpp:
        (svgFeatureSet):
        (SVGDOMImplementation::self):
        (SVGDOMImplementation::hasFeature):
        (SVGDOMImplementation::createDocumentType):
        (SVGDOMImplementation::createDocument):
        * ksvg2/svg/SVGDOMImplementation.h:
        * ksvg2/svg/SVGPaint.cpp:
        (SVGPaint::cssText):
        * ksvg2/svg/SVGPathSegClosePath.h:
        (WebCore::SVGPathSegClosePath::toString):
        * ksvg2/svg/SVGPreserveAspectRatio.cpp:
        (SVGPreserveAspectRatio::parsePreserveAspectRatio):
        (SVGPreserveAspectRatio::getCTM):
        * ksvg2/svg/SVGStopElement.cpp:
        (SVGStopElement::parseMappedAttribute):
        * ksvg2/svg/SVGStyleElement.cpp:
        (SVGStyleElement::childrenChanged):
        * ksvg2/svg/SVGURIReference.cpp:
        (SVGURIReference::getTarget):
        * kwq/ClipboardMac.mm:
        (WebCore::ClipboardMac::setData):
        (WebCore::ClipboardMac::types):
        (WebCore::ClipboardMac::setEffectAllowed):
        (WebCore::cocoaOpFromIEOp):
        (WebCore::IEOpFromCocoaOp):
        (WebCore::ClipboardMac::sourceOperation):
        (WebCore::ClipboardMac::destinationOperation):
        * kwq/KWQCString.cpp:
        (DeprecatedCString::append):
        * kwq/KWQKHTMLSettings.h:
        (KHTMLSettings::stdFontName):
        (KHTMLSettings::fixedFontName):
        (KHTMLSettings::serifFontName):
        (KHTMLSettings::sansSerifFontName):
        (KHTMLSettings::cursiveFontName):
        (KHTMLSettings::fantasyFontName):
        (KHTMLSettings::minFontSize):
        (KHTMLSettings::minLogicalFontSize):
        (KHTMLSettings::mediumFontSize):
        (KHTMLSettings::mediumFixedFontSize):
        (KHTMLSettings::autoLoadImages):
        (KHTMLSettings::isJavaScriptEnabled):
        (KHTMLSettings::JavaScriptCanOpenWindowsAutomatically):
        (KHTMLSettings::isJavaEnabled):
        (KHTMLSettings::isPluginsEnabled):
        (KHTMLSettings::encoding):
        (KHTMLSettings::userStyleSheet):
        (KHTMLSettings::shouldPrintBackgrounds):
        (KHTMLSettings::textAreasAreResizable):
        (KHTMLSettings::setStdFontName):
        (KHTMLSettings::setFixedFontName):
        (KHTMLSettings::setSerifFontName):
        (KHTMLSettings::setSansSerifFontName):
        (KHTMLSettings::setCursiveFontName):
        (KHTMLSettings::setFantasyFontName):
        (KHTMLSettings::setMinFontSize):
        (KHTMLSettings::setMinLogicalFontSize):
        (KHTMLSettings::setMediumFontSize):
        (KHTMLSettings::setMediumFixedFontSize):
        (KHTMLSettings::setAutoLoadImages):
        (KHTMLSettings::setIsJavaScriptEnabled):
        (KHTMLSettings::setIsJavaEnabled):
        (KHTMLSettings::setArePluginsEnabled):
        (KHTMLSettings::setJavaScriptCanOpenWindowsAutomatically):
        (KHTMLSettings::setEncoding):
        (KHTMLSettings::setUserStyleSheet):
        (KHTMLSettings::setShouldPrintBackgrounds):
        (KHTMLSettings::setTextAreasAreResizable):
        * kwq/KWQLoader.mm:
        (KWQServeSynchronousRequest):
        * kwq/KWQTextStream.cpp:
        (QTextStream::QTextStream):
        (QTextStream::operator<<):
        (QTextStream::precision):
        * kwq/KWQTextStream.h:
        * kwq/RenderTreeAsText.cpp:
        (operator<<):
        (quoteAndEscapeNonPrintables):
        (writeTextRun):
        (write):
        (writeSelection):
        * loader/Cache.cpp:
        (WebCore::Cache::init):
        (WebCore::Cache::requestImage):
        (WebCore::Cache::requestStyleSheet):
        (WebCore::Cache::preloadStyleSheet):
        (WebCore::Cache::requestScript):
        (WebCore::Cache::preloadScript):
        (WebCore::Cache::requestXSLStyleSheet):
        (WebCore::Cache::requestXBLDocument):
        (WebCore::Cache::remove):
        * loader/Cache.h:
        * loader/CachedCSSStyleSheet.cpp:
        (WebCore::CachedCSSStyleSheet::error):
        * loader/CachedCSSStyleSheet.h:
        * loader/CachedImage.cpp:
        (WebCore::CachedImage::error):
        * loader/CachedImage.h:
        * loader/CachedObject.h:
        * loader/CachedScript.cpp:
        (WebCore::CachedScript::checkNotify):
        (WebCore::CachedScript::error):
        * loader/CachedScript.h:
        * loader/CachedXBLDocument.cpp:
        (WebCore::CachedXBLDocument::error):
        * loader/CachedXBLDocument.h:
        * loader/CachedXSLStyleSheet.cpp:
        (WebCore::CachedXSLStyleSheet::error):
        * loader/CachedXSLStyleSheet.h:
        * loader/DocLoader.cpp:
        (WebCore::DocLoader::DocLoader):
        (WebCore::DocLoader::~DocLoader):
        (WebCore::DocLoader::needReload):
        (WebCore::DocLoader::requestImage):
        (WebCore::DocLoader::requestStyleSheet):
        (WebCore::DocLoader::requestScript):
        (WebCore::DocLoader::requestXSLStyleSheet):
        (WebCore::DocLoader::requestXBLDocument):
        (WebCore::DocLoader::setAutoloadImages):
        (WebCore::DocLoader::setShowAnimations):
        (WebCore::DocLoader::removeCachedObject):
        * loader/loader.cpp:
        (WebCore::Loader::receivedAllData):
        (WebCore::Loader::receivedResponse):
        * page/Frame.cpp:
        (WebCore::UserStyleSheetLoader::setStyleSheet):
        (WebCore::Frame::didOpenURL):
        (WebCore::Frame::setMetaRefreshEnabled):
        (WebCore::Frame::setAutoloadImages):
        (WebCore::Frame::autoloadImages):
        (WebCore::Frame::clear):
        (WebCore::Frame::receivedFirstData):
        (WebCore::Frame::begin):
        (WebCore::Frame::write):
        (WebCore::Frame::baseTarget):
        (WebCore::Frame::completeURL):
        (WebCore::Frame::scheduleRedirection):
        (WebCore::Frame::scheduleLocationChange):
        (WebCore::Frame::scheduleHistoryNavigation):
        (WebCore::Frame::changeLocation):
        (WebCore::Frame::redirectionTimerFired):
        (WebCore::Frame::encoding):
        (WebCore::Frame::gotoAnchor):
        (WebCore::Frame::setStandardFont):
        (WebCore::Frame::setFixedFont):
        (WebCore::Frame::selectedText):
        (WebCore::Frame::selection):
        (WebCore::Frame::dragCaret):
        (WebCore::Frame::setSelection):
        (WebCore::Frame::setDragCaret):
        (WebCore::Frame::paintCaret):
        (WebCore::Frame::paintDragCaret):
        (WebCore::Frame::urlSelected):
        (WebCore::Frame::requestFrame):
        (WebCore::Frame::requestObject):
        (WebCore::Frame::shouldUsePlugin):
        (WebCore::Frame::loadPlugin):
        (WebCore::Frame::loadSubframe):
        (WebCore::Frame::submitForm):
        (WebCore::Frame::lastModified):
        (WebCore::Frame::reparseConfiguration):
        (WebCore::Frame::shouldChangeSelection):
        (WebCore::Frame::appliedEditing):
        (WebCore::Frame::unappliedEditing):
        (WebCore::Frame::reappliedEditing):
        (WebCore::Frame::executeScript):
        (WebCore::updateState):
        (WebCore::Frame::isCharacterSmartReplaceExempt):
        (WebCore::Frame::openURL):
        (WebCore::Frame::didNotOpenURL):
        (WebCore::Frame::setEncoding):
        (WebCore::Frame::saveInterpreterBuiltins):
        (WebCore::Frame::restoreInterpreterBuiltins):
        (WebCore::Frame::mutableInstances):
        (WebCore::Frame::setPolicyBaseURL):
        (WebCore::Frame::addMetaData):
        (WebCore::Frame::scrollToAnchor):
        (WebCore::Frame::setMediaType):
        (WebCore::Frame::highlightAllMatchesForString):
        (WebCore::Frame::tree):
        * page/Frame.h:
        (WebCore::Frame::instances):
        * page/FramePrivate.h:
        * page/FrameView.cpp:
        (WebCore::FrameViewPrivate::FrameViewPrivate):
        (WebCore::FrameView::FrameView):
        (WebCore::FrameView::~FrameView):
        (WebCore::FrameView::init):
        (WebCore::FrameView::setMarginWidth):
        (WebCore::FrameView::setMarginHeight):
        (WebCore::FrameView::adjustViewSize):
        (WebCore::FrameView::layout):
        (WebCore::FrameView::dispatchDragEvent):
        (WebCore::FrameView::scrollTo):
        (WebCore::FrameView::setMediaType):
        (WebCore::FrameView::mediaType):
        (WebCore::FrameView::setResizingFrameSet):
        (WebCore::FrameView::setIgnoreWheelEvents):
        * page/FrameView.h:
        (WebCore::FrameView::frameWidth):
        (WebCore::FrameView::marginWidth):
        (WebCore::FrameView::marginHeight):
        (WebCore::FrameView::ref):
        (WebCore::FrameView::deref):
        * page/ResourceRequest.h:
        (WebCore::ResourceRequest::contentType):
        (WebCore::ResourceRequest::setContentType):
        * platform/FontFamily.h:
        * platform/Image.h:
        * platform/KURL.cpp:
        (KURL::KURL):
        (KURL::parse):
        (urlcmp):
        (KURL::encode_string):
        (encodeHostname):
        * platform/KURL.h:
        * platform/PlatformString.h:
        (WebCore::String::left):
        (WebCore::String::right):
        * platform/String.cpp:
        (WebCore::String::toInt):
        * platform/StringImpl.cpp:
        (WebCore::StringImpl::toInt):
        * platform/TransferJob.cpp:
        (WebCore::TransferJob::queryMetaData):
        (WebCore::TransferJob::addMetaData):
        * platform/TransferJob.h:
        * platform/mac/ImageMac.mm:
        (WebCore::Image::supportsType):
        * platform/mac/TransferJobMac.mm:
        (WebCore::TransferJob::start):
        * rendering/RenderObject.cpp:
        (WebCore::RenderObject::information):
        * rendering/RenderTextField.cpp:
        (WebCore::RenderTextField::updateFromElement):
        * xml/xmlhttprequest.cpp:
        (WebCore::getMIMEType):
        (WebCore::getCharset):
        (WebCore::XMLHttpRequest::getReadyState):
        (WebCore::XMLHttpRequest::getResponseText):
        (WebCore::XMLHttpRequest::getResponseXML):
        (WebCore::XMLHttpRequest::XMLHttpRequest):
        (WebCore::XMLHttpRequest::~XMLHttpRequest):
        (WebCore::XMLHttpRequest::changeState):
        (WebCore::XMLHttpRequest::callReadyStateChangeListener):
        (WebCore::XMLHttpRequest::urlMatchesDocumentDomain):
        (WebCore::XMLHttpRequest::open):
        (WebCore::XMLHttpRequest::send):
        (WebCore::XMLHttpRequest::abort):
        (WebCore::XMLHttpRequest::overrideMIMEType):
        (WebCore::XMLHttpRequest::setRequestHeader):
        (WebCore::XMLHttpRequest::getRequestHeader):
        (WebCore::XMLHttpRequest::getAllResponseHeaders):
        (WebCore::XMLHttpRequest::getResponseHeader):
        (WebCore::XMLHttpRequest::responseIsXML):
        (WebCore::XMLHttpRequest::getStatus):
        (WebCore::XMLHttpRequest::getStatusText):
        (WebCore::XMLHttpRequest::processSyncLoadResults):
        (WebCore::XMLHttpRequest::receivedAllData):
        (WebCore::XMLHttpRequest::receivedRedirect):
        (WebCore::XMLHttpRequest::receivedData):
        (WebCore::XMLHttpRequest::cancelRequests):
        (WebCore::XMLHttpRequest::detachRequests):
        * xml/xmlhttprequest.h:

2006-03-20  Alexey Proskuryakov  <ap@nypop.com>

        Reviewed by Darin.

        - http://bugs.webkit.org/show_bug.cgi?id=3439
         mouseover effects can get stuck sometimes due to missing events
        - http://bugs.webkit.org/show_bug.cgi?id=7701
         mouseout sent to the wrong element when layout changes simultaneously
        
        Implemented saving the previous node under the mouse, so that we don't need to 
        recalculate it, which is slow and even not really possible. This has fixed a number 
        of issues with mouse event dispatching when the content changes.
        The code still needs refactoring and cleanup, see bug 3439 for comments.

        Tests (both files perform multiple checks):
        - fast/events/mouseover-mouseout.html
        - fast/events/mouseover-mouseout2.html

        * page/Frame.h: Added a Frame parameter to passSubframeEventToSubframe(),
        used for mouseMoved events.
        * bridge/mac/FrameMac.h: Ditto.
        * bridge/mac/FrameMac.mm: 
        (WebCore::FrameMac::passSubframeEventToSubframe): Use the passed subframe to target 
        NSMouseMoved events.
        * page/FrameView.h: Added a prepareMouseEvent() helper that does viewportToContents translation.
        * page/FrameView.cpp: Added data members for storing the previous node and subframe 
        under the mouse to FrameViewPrivate. Removed the now unused prevMouseX/prevMouseY.
        (WebCore::FrameViewPrivate::reset): Reset the new data members.
        (WebCore::subframeForEvent): A temporary place for the code that extracts a subframe
        pointer from MouseEventWithHitTestResults, moved from FrameMac::passSubframeEventToSubframe().
        (WebCore::FrameView::prepareMouseEvent): The new helper.
        (WebCore::FrameView::handleMousePressEvent): Use the new helper.
        (WebCore::FrameView::handleMouseDoubleClickEvent): Ditto.
        (WebCore::FrameView::handleMouseReleaseEvent): Ditto.
        (WebCore::FrameView::updateDragAndDrop): Ditto.
        (WebCore::FrameView::hoverTimerFired): Ditto.
        (WebCore::FrameView::dispatchMouseEvent): Store and use the oldUnder node, don't store 
        or use prevMouseX/Y.
        (WebCore::FrameView::handleMouseMoveEvent): Rewrote dispatching events to subframes using 
        a stored oldSubframe reference. Protect "this" from being removed while in this function.

2006-03-20  Darin Adler  <darin@apple.com>

        Reviewed by Anders.

        - http://bugs.webkit.org/show_bug.cgi?id=7875
          autogenerate bindings for Range

        * dom/Range.idl: Added.
        * khtml/ecma/kjs_range.cpp: Removed.
        * khtml/ecma/kjs_range.h: Removed.

        * WebCore.vcproj/WebCore/build-generated-files.sh: Removed code to generate
        kjs_range.lut.h.

        * WebCore.xcodeproj/project.pbxproj: Added Range.idl source file.
        Removed kjs_range.h and kjs_range.cpp source files. Sorted the "dom" group.
        Removed rule to generate kjs_range.lut.h.

        * bindings/js/JSDOMCore.cpp: Added include of JSRange.cpp.

        * bindings/scripts/CodeGeneratorJS.pm: Added DocumentFragment, Range, CompareHow,
        and short to the types this script can handle. Added code to generate toRange
        functions and the like. Added separate code to handle exceptions for getters
        vs. setters for attributes. Changed return values for the "bad ID" case to 0
        -- there's no need to generate the extra code to return jsUndefined() in such
        cases, which should be unreachable. Changed exception handling to use setDOMException
        directly instead of DOMExceptionTranslator; DOMExceptionTranslator was a trick
        to make it easier to convert existing bindings and shouldn't be used going
        forward. Fixed names of constructors to use the JavaScript class name (the
        interface name), not the name of the C++ implementation class. Fixed generation
        of code for functions that have no parameters but do raise exceptions.

        * bindings/scripts/IDLParser.pm: Added parsing for separate getter and setter
        exceptions in attributes. The syntax is not real IDL, but real IDL doesn't support
        declaring exceptions on attributes at all. We'll probably want to revisit our
        syntax for this some day.

        * bindings/scripts/IDLStructure.pm: Removed unused exceptionName field from
        domAttribute, and replaced raisesExceptions field with getterExceptions and
        setterExceptions. Added regular expressions for parsing getter/setter syntax.
        We'll probably have to redo this whole thing parse in a better way at some
        point -- the regular expressions allow any invalid syntax in between them.

        * dom/Attr.idl: Change exception declaration for setting the value attribute
        to use setter-specific exception syntax.
        * dom/CharacterData.idl: Change exception declaration for setting the data
        attribute to use setter-specific exception syntax.
        * dom/ProcessingInstruction.idl: Change exception declaration for setting the
        data attribute to use setter-specific exception syntax.

        * khtml/ecma/kjs_dom.cpp: Include JSRange.h instead of kjs_range.h.
        * khtml/ecma/kjs_window.cpp: Include JSRange.h instead of kjs_range.h.
        (KJS::Window::getValueProperty): Use JSRange::getConstructor instead of
        getRangeConstructor.

2006-03-20  Eric Seidel  <eseidel@apple.com>

        Reviewed by hyatt.

        Fix win32 compile.

        * Viewer/ImageView.cpp:
        * platform/GraphicsContext.cpp:
        (WebCore::WebCore::GraphicsContext::createGraphicsContextPrivate):
        (WebCore::WebCore::GraphicsContext::destroyGraphicsContextPrivate):
        * platform/cairo/GraphicsContextCairo.cpp:
        (WebCore::fillRectSourceOver):
        (WebCore::GraphicsContext::drawLine):
        (WebCore::GraphicsContext::drawFocusRing):
        * platform/win/FontWin.cpp:
        (WebCore::Font::drawHighlightForText):
        (WebCore::Font::drawLineForText):

2006-03-19  Darin Adler  <darin@apple.com>

        Rubber stamped by Eric.

        - moved khtml/html files all into html directory

        * WebCore.vcproj/WebCore/WebCore.vcproj: Updated for new paths.
        * WebCore.vcproj/WebCore/build-generated-files.sh: Ditto.
        * WebCore.xcodeproj/project.pbxproj: Ditto.

        * khtml/html: Removed.

        * html/DocTypeStrings.gperf: Moved.
        * html/FormDataList.cpp: Ditto.
        * html/FormDataList.h: Ditto.
        * html/HTMLBaseFontElement.cpp: Ditto.
        * html/HTMLBaseFontElement.h: Ditto.
        * html/HTMLButtonElement.cpp: Ditto.
        * html/HTMLButtonElement.h: Ditto.
        * html/HTMLCanvasElement.cpp: Ditto.
        * html/HTMLCanvasElement.h: Ditto.
        * html/HTMLCollection.cpp: Ditto.
        * html/HTMLCollection.h: Ditto.
        * html/HTMLDocument.cpp: Ditto.
        * html/HTMLDocument.h: Ditto.
        * html/HTMLElement.cpp: Ditto.
        * html/HTMLElement.h: Ditto.
        * html/HTMLElementFactory.cpp: Ditto.
        * html/HTMLElementFactory.h: Ditto.
        * html/HTMLEntityNames.gperf: Ditto.
        * html/HTMLFieldSetElement.cpp: Ditto.
        * html/HTMLFieldSetElement.h: Ditto.
        * html/HTMLFormCollection.cpp: Ditto.
        * html/HTMLFormCollection.h: Ditto.
        * html/HTMLFormElement.cpp: Ditto.
        * html/HTMLFormElement.h: Ditto.
        * html/HTMLGenericFormElement.cpp: Ditto.
        * html/HTMLGenericFormElement.h: Ditto.
        * html/HTMLInputElement.cpp: Ditto.
        * html/HTMLInputElement.h: Ditto.
        * html/HTMLIsIndexElement.cpp: Ditto.
        * html/HTMLIsIndexElement.h: Ditto.
        * html/HTMLKeygenElement.cpp: Ditto.
        * html/HTMLKeygenElement.h: Ditto.
        * html/HTMLLabelElement.cpp: Ditto.
        * html/HTMLLabelElement.h: Ditto.
        * html/HTMLLegendElement.cpp: Ditto.
        * html/HTMLLegendElement.h: Ditto.
        * html/HTMLNameCollection.cpp: Ditto.
        * html/HTMLNameCollection.h: Ditto.
        * html/HTMLNames.cpp: Ditto.
        * html/HTMLNames.h: Ditto.
        * html/HTMLOptGroupElement.cpp: Ditto.
        * html/HTMLOptGroupElement.h: Ditto.
        * html/HTMLOptionElement.cpp: Ditto.
        * html/HTMLOptionElement.h: Ditto.
        * html/HTMLOptionsCollection.cpp: Ditto.
        * html/HTMLOptionsCollection.h: Ditto.
        * html/HTMLParser.cpp: Ditto.
        * html/HTMLParser.h: Ditto.
        * html/HTMLSelectElement.cpp: Ditto.
        * html/HTMLSelectElement.h: Ditto.
        * html/HTMLTextAreaElement.cpp: Ditto.
        * html/HTMLTextAreaElement.h: Ditto.
        * html/HTMLTextFieldInnerElement.cpp: Ditto.
        * html/HTMLTextFieldInnerElement.h: Ditto.
        * html/HTMLTokenizer.cpp: Ditto.
        * html/HTMLTokenizer.h: Ditto.
        * html/html_baseimpl.cpp: Ditto.
        * html/html_baseimpl.h: Ditto.
        * html/html_blockimpl.cpp: Ditto.
        * html/html_blockimpl.h: Ditto.
        * html/html_headimpl.cpp: Ditto.
        * html/html_headimpl.h: Ditto.
        * html/html_imageimpl.cpp: Ditto.
        * html/html_imageimpl.h: Ditto.
        * html/html_inlineimpl.cpp: Ditto.
        * html/html_inlineimpl.h: Ditto.
        * html/html_listimpl.cpp: Ditto.
        * html/html_listimpl.h: Ditto.
        * html/html_objectimpl.cpp: Ditto.
        * html/html_objectimpl.h: Ditto.
        * html/html_tableimpl.cpp: Ditto.
        * html/html_tableimpl.h: Ditto.

        * bindings/objc/DOM.mm:
        * bridge/mac/WebCoreEncodings.mm:
        * bridge/mac/WebCoreFrameBridge.mm:
        * css/CSSGrammar.y:
        * css/cssstyleselector.cpp:
        * dom/Document.cpp:
        * dom/EventTargetNode.cpp:
        * dom/NameNodeList.cpp:
        * dom/Node.cpp:
        * dom/Position.cpp:
        * dom/dom_elementimpl.cpp:
        * dom/xml_tokenizer.cpp:
        * editing/ApplyStyleCommand.cpp:
        * editing/BreakBlockquoteCommand.cpp:
        * editing/CompositeEditCommand.cpp:
        * editing/DeleteSelectionCommand.cpp:
        * editing/InsertLineBreakCommand.cpp:
        * editing/InsertParagraphSeparatorCommand.cpp:
        * editing/JSEditor.cpp:
        * editing/ReplaceSelectionCommand.cpp:
        * editing/TextIterator.cpp:
        * editing/VisiblePosition.cpp:
        * editing/htmlediting.cpp:
        * editing/markup.cpp:
        * editing/visible_units.cpp:
        * html/CanvasRenderingContext2D.cpp:
        * kcanvas/KCanvasTreeDebug.cpp:
        * khtml/ecma/JSDOMParser.cpp:
        * khtml/ecma/kjs_css.cpp:
        * khtml/ecma/kjs_dom.cpp:
        * khtml/ecma/kjs_events.cpp:
        * khtml/misc/decoder.cpp:
        * khtml/xsl/XSLStyleSheet.cpp:
        * khtml/xsl/XSLTProcessor.cpp:
        * ksvg2/misc/SVGImageLoader.h:
        * ksvg2/svg/SVGElement.cpp:
        * ksvg2/svg/SVGSVGElement.cpp:
        * kwq/WebCoreAXObject.mm:
        * page/Frame.cpp:
        * page/FrameView.cpp:
        * rendering/RenderBlock.cpp:
        * rendering/RenderBox.cpp:
        * rendering/RenderFlow.cpp:
        * rendering/RenderHTMLCanvas.cpp:
        * rendering/RenderImage.cpp:
        * rendering/RenderLayer.cpp:
        * rendering/RenderObject.cpp:
        * rendering/RenderTable.cpp:
        * rendering/RenderTableCell.cpp:
        * rendering/RenderTableCol.cpp:
        * rendering/RenderTableRow.cpp:
        * rendering/RenderTableSection.cpp:
        * rendering/RenderTextField.cpp:
        * rendering/RenderTheme.cpp:
        * rendering/render_applet.cpp:
        * rendering/render_button.cpp:
        * rendering/render_frames.cpp:
        * rendering/render_list.cpp:
        Updated includes.

2006-03-17  Eric Seidel  <eseidel@apple.com>

        Reviewed by darin.

        Move Form code from MacFrame to Frame.
        Move GraphicsContext code from GraphicsContextMac to GraphicsContext.
        Use IntRect, FloatRect in more places throughout the code.
        http://bugs.webkit.org/show_bug.cgi?id=7824

        * bridge/mac/MacFrame.h:
        * bridge/mac/MacFrame.mm:
        (WebCore::MacFrame::MacFrame):
        (WebCore::MacFrame::searchForLabelsAboveCell):
        (WebCore::MacFrame::searchForLabelsBeforeElement):
        (WebCore::dictionaryFromHashMap):
        (WebCore::MacFrame::submitForm):
        (WebCore::MacFrame::setView):
        (WebCore::MacFrame::currentEventIsMouseDownInWidget):
        (WebCore::MacFrame::currentEventIsKeyboardOptionTab):
        (WebCore::MacFrame::handleKeyboardOptionTabInView):
        (WebCore::MacFrame::tabsToAllControls):
        (WebCore::MacFrame::shouldDragAutoNode):
        (WebCore::MacFrame::selectionImage):
        (WebCore::MacFrame::snapshotDragImage):
        * bridge/mac/WebCoreFrameBridge.mm:
        (-[WebCoreFrameBridge nextKeyView]):
        (-[WebCoreFrameBridge previousKeyView]):
        (-[WebCoreFrameBridge nextKeyViewInsideWebFrameViews]):
        (-[WebCoreFrameBridge previousKeyViewInsideWebFrameViews]):
        * kcanvas/RenderSVGImage.cpp:
        (WebCore::RenderSVGImage::paint):
        * page/Frame.cpp:
        (WebCore::Frame::Frame):
        (WebCore::Frame::clearRecordedFormValues):
        (WebCore::Frame::recordFormValue):
        (WebCore::Frame::didNotOpenURL):
        (WebCore::scanForForm):
        (WebCore::Frame::paint):
        (WebCore::Frame::prepareForUserAction):
        * page/Frame.h:
        * platform/GraphicsContext.cpp:
        (WebCore::GraphicsContextState::GraphicsContextState):
        (WebCore::GraphicsContextPrivate::GraphicsContextPrivate):
        (WebCore::GraphicsContextPrivate::~GraphicsContextPrivate):
        (WebCore::GraphicsContext::save):
        (WebCore::GraphicsContext::restore):
        (WebCore::GraphicsContext::font):
        (WebCore::GraphicsContext::setFont):
        (WebCore::GraphicsContext::pen):
        (WebCore::GraphicsContext::setPen):
        (WebCore::GraphicsContext::setBrush):
        (WebCore::GraphicsContext::brush):
        (WebCore::GraphicsContext::setUsesInactiveTextBackgroundColor):
        (WebCore::GraphicsContext::usesInactiveTextBackgroundColor):
        (WebCore::GraphicsContext::updatingControlTints):
        (WebCore::GraphicsContext::setUpdatingControlTints):
        (WebCore::GraphicsContext::setPaintingDisabled):
        (WebCore::GraphicsContext::paintingDisabled):
        (WebCore::GraphicsContext::printing):
        (WebCore::GraphicsContext::drawImageAtPoint):
        (WebCore::GraphicsContext::drawImageInRect):
        (WebCore::GraphicsContext::drawImage):
        (WebCore::GraphicsContext::initFocusRing):
        (WebCore::GraphicsContext::clearFocusRing):
        (WebCore::GraphicsContext::addFocusRingRect):
        (WebCore::GraphicsContext::focusRingWidth):
        (WebCore::GraphicsContext::focusRingOffset):
        (WebCore::GraphicsContext::focusRingRects):
        * platform/GraphicsContext.h:
        * platform/mac/GraphicsContextMac.mm:
        (WebCore::fillRectSourceOver):
        (WebCore::GraphicsContextPlatformPrivate::GraphicsContextPlatformPrivate):
        (WebCore::GraphicsContextPlatformPrivate::~GraphicsContextPlatformPrivate):
        (WebCore::GraphicsContext::GraphicsContext):
        (WebCore::GraphicsContext::~GraphicsContext):
        (WebCore::GraphicsContext::savePlatformState):
        (WebCore::GraphicsContext::restorePlatformState):
        (WebCore::GraphicsContext::drawRect):
        (WebCore::GraphicsContext::setColorFromBrush):
        (WebCore::GraphicsContext::setColorFromPen):
        (WebCore::GraphicsContext::drawLine):
        (WebCore::GraphicsContext::drawEllipse):
        (WebCore::GraphicsContext::drawArc):
        (WebCore::GraphicsContext::drawConvexPolygon):
        (WebCore::GraphicsContext::drawFloatImage):
        (WebCore::GraphicsContext::drawTiledImage):
        (WebCore::GraphicsContext::drawScaledAndTiledImage):
        (WebCore::GraphicsContext::selectedTextBackgroundColor):
        (WebCore::GraphicsContext::fillRect):
        (WebCore::GraphicsContext::addClip):
        (WebCore::GraphicsContext::addRoundedRectClip):
        (WebCore::GraphicsContext::beginTransparencyLayer):
        (WebCore::GraphicsContext::endTransparencyLayer):
        (WebCore::GraphicsContext::setShadow):
        (WebCore::GraphicsContext::clearShadow):
        (WebCore::GraphicsContext::drawFocusRing):
        * rendering/render_box.cpp:
        (WebCore::RenderBox::paintBackgroundExtended):
        (WebCore::RenderBox::outlineBox):
        * rendering/render_frames.cpp:
        (WebCore::RenderFrameSet::userResize):
        * rendering/render_image.cpp:
        (WebCore::RenderImage::paint):
        * rendering/render_list.cpp:
        (WebCore::RenderListMarker::paint):
        * rendering/render_object.cpp:
        (WebCore::RenderObject::drawBorder):
        (WebCore::RenderObject::paintBorderImage):

2006-03-19  Darin Adler  <darin@apple.com>

        Reviewed by Eric.

        - fix http://bugs.webkit.org/show_bug.cgi?id=7854
          CanvasGradient leaks

        * html/CanvasGradient.cpp: (WebCore::CanvasGradient::platformShading):
        Don't make the CG shading object keep a reference to the DOM gradient object.
        I got confused because in the case of a CanvasPattern, the pattern does need
        to keep a reference to the DOM pattern object, but the object lifetime is
        handled differently here. The CG shading object is used right away, not set
        in a graphics context.

2006-03-19  Darin Adler  <darin@apple.com>

        Reviewed by Eric.

        - attempt to fix the buildbot by handling DOMImplementation another way

        * WebCore.xcodeproj/project.pbxproj: Added DOMImplementationFront.h/cpp.

        * bindings/objc/DOMImplementationFront.cpp: Added.
        * bindings/objc/DOMImplementationFront.h: Added.

        * bindings/objc/DOMInternal.h: Use DOMImplementationFront, not DOMImplementation.
        * bindings/objc/DOM.mm:
        (-[DOMImplementation dealloc]): Ditto.
        (-[DOMImplementation finalize]): Ditto.
        (-[DOMImplementation _initWithDOMImplementation:]): Ditto.
        (+[DOMImplementation _DOMImplementationWith:]): Ditto.
        (-[DOMImplementation _DOMImplementation]): Ditto.
        (-[DOMDocument implementation]): Call implementationFront from the
        DOMImplementationFront header instead of using the real implementation
        function on the Document.

2006-03-19  Darin Adler  <darin@apple.com>

        - global rename, done by script

        * <lots of files>: Renamed XXXImpl to XXX, and a number of other renames.
        See WebKitTools/Scripts/do-webcore-rename version 13392 for details.

2006-03-19  Darin Adler  <darin@apple.com>

        - roll out fix for http://bugs.webkit.org/show_bug.cgi?id=6314
          Unclosed <style> element in <head> makes page completely blank

        This fix was breaking major sites -- details in the bug report.

        * khtml/html/htmltokenizer.cpp: (WebCore::HTMLTokenizer::parseTag):
        Removed the bug fix, added a FIXME about the <title> code that has
        the same problem.

2006-03-18  David Carson  <dacarson@gmail.com>

        Test: fast/canvas/patternfill-repeat.html

        Reviewed by Darin.

        - fix http://bugs.webkit.org/show_bug.cgi?id=7830
          <canvas> createPattern 'repeat' options fail

        * CanvasPattern.cpp (CanvasPattern::createPattern)
        Change stepping so that repeat-x, repeat-y, and no-repeat repeat 
        outside the view area by using large values for repeat interval.

2006-03-18  Mitz Pettel  <opendarwin.org@mitzpettel.com>

        Test: fast/dom/Element/class-attribute-whitespace.html

        Reviewed by Darin.

        - fix http://bugs.webkit.org/show_bug.cgi?id=7761
          Tabs in class attribute not treated as whitespace

        * dom/dom_elementimpl.cpp:
        (WebCore::isClassWhitespace): Helper function to check if a character
        in the class attribute should be treated as whitespace. Added \r and \t.
        (WebCore::NamedMappedAttrMapImpl::parseClassAttribute): Instead of creating
        a QStringList and iterating it, do everything in one pass over the string.

2006-03-18  Mitz Pettel  <opendarwin.org@mitzpettel.com>

        Test: fast/block/float/vertical-move-relayout.html

        Reviewed by Hyatt.

        - fix http://bugs.webkit.org/show_bug.cgi?id=6795
          Slow image load causes render problem

        * rendering/RenderBlock.cpp:
        (WebCore::RenderBlock::layoutBlockChildren): Call markAllDescendantsWithFloatsForLayout
        when the child's vertical position changes.

2006-03-18  David Kilzer  <ddkilzer@kilzer.net>

        Reviewed by Darin.

        - Fix for http://bugs.webkit.org/show_bug.cgi?id=6314
        Unclosed <style> element in <head> makes page completely blank

        Test: fast/js/exception-linenums-in-html-3.html
        Test: fast/js/missing-style-end-tag-js.html
        Test: fast/tokenizer/missing-style-end-tag-1.html
        Test: fast/tokenizer/missing-style-end-tag-2.html

        * khtml/html/htmlparser.cpp:
        (WebCore::HTMLParser::handleError): Add check for missing </style> tag and handle
        this condition if identified.
        * khtml/html/htmltokenizer.cpp:
        (WebCore::HTMLTokenizer::parseTag): If parseSpecial() consumes the rest of the
        document looking for a </style> tag, reset the state of the tokenizer and
        retokenize with no special handling for <style>.  The parser will handle the
        missing </style> tag in HTMLParser::handleError().

2006-03-18  Rob Buis  <buis@kde.org>

        Reviewed by Darin.

        Fix for http://bugs.webkit.org/show_bug.cgi?id=5351:
        SVG: Safari ignores <title> elements

        Make SVGTitleElementImpl act the same as HTMLTitleElementImpl,
        in the process setting the title on the right triggers.

        * ksvg2/svg/SVGTitleElementImpl.cpp:
        (SVGTitleElementImpl::SVGTitleElementImpl):
        (SVGTitleElementImpl::title):
        (SVGTitleElementImpl::closeRenderer):
        (SVGTitleElementImpl::insertedIntoDocument):
        (SVGTitleElementImpl::removedFromDocument):
        (SVGTitleElementImpl::childrenChanged):
        * ksvg2/svg/SVGTitleElementImpl.h:

2006-03-18  Darin Adler  <darin@apple.com>

        - another try at fixing Windows build

        * WebCore.vcproj/WebCore/WebCore.vcproj: Added EventTargetNodeImpl.h and .cpp.

2006-03-18  Darin Adler  <darin@apple.com>

        - another try at fixing Windows build

        * bridge/win/FrameWin.cpp: (WebCore::FrameWin::keyPress): Added EventTargetNodeCast.

2006-03-18  Darin Adler  <darin@apple.com>

        - try to fix Windows build

        * bridge/win/FrameWin.h: Remove KURL parameter.
        * bridge/win/FrameWin.cpp: (WebCore::FrameWin::urlSelected): Ditto.
        * platform/win/TemporaryLinkStubs.cpp: (BrowserExtensionWin::canRunModal): Ditto.

2006-03-18  Mitz Pettel  <opendarwin.org@mitzpettel.com>

        Reviewed by Darin.

        - fix leaks caused by the fix for Bugzilla bug 3560

        * rendering/RenderContainer.cpp:
        (WebCore::RenderContainer::destroyLeftoverChildren): Text renderers with
        first-letter pseudo style are children of an existing first-letter inline
        that has been updated, and should be destroyed.

2006-03-18  David Hyatt  <hyatt@apple.com>

        Fix for bug 7841, tables, table rows, and table row groups should
        all support overflow:hidden.

        Reviewed by eric

        * css/cssstyleselector.cpp:
        (WebCore::CSSStyleSelector::adjustRenderStyle):
        * rendering/RenderTable.cpp:
        (WebCore::RenderTable::layout):
        (WebCore::RenderTable::paint):
        (WebCore::RenderTable::getOverflowClipRect):
        * rendering/RenderTable.h:
        * rendering/RenderTableCol.h:
        (WebCore::RenderTableCol::requiresLayer):
        * rendering/RenderTableRow.h:
        (WebCore::RenderTableRow::requiresLayer):
        * rendering/render_box.cpp:
        (WebCore::RenderBox::setStyle):
        * rendering/render_layer.cpp:
        (WebCore::RenderLayer::paintLayer):

2006-03-17  Alice Liu  <alice.liu@apple.com>

        Reviewed by Hyatt.

        - fixed http://bugs.webkit.org/show_bug.cgi?id=6999
          "Dynamically added link-tag disables the use of change styles 
           dynamically"

        * khtml/html/html_headimpl.cpp:
        (WebCore::HTMLLinkElementImpl::process):
        - dynamically added link-tags for stylesheets were messing up the
          counting of pending stylesheets.  If a head link element 
          specifies a new stylesheet but the previously specified 
          stylesheet is still loading, tell the document that stylesheets 
          are loaded so that there are no remaining requests for it to be 
          loaded.

2006-03-17  Geoffrey Garen  <ggaren@apple.com>

        Reviewed by Darin.

        - Fixed some crashes in event dispatch and settled the question of 
        when getDocument() can return NULL, removing superfluous NULL checks.

        I promise to check in a test case soon, but I need to land this before
        the global rename happens, and I left the test file on my other machine.

        Here's what I did:

        (1) Removed NULL checks for getDocument() in cases where we know it
        should not return NULL (which turned out to be all but one). Replaced 
        with ASSERT inside getDocument(). Tested to ensure there was no 
        regression @ albertsons.com.

        (2) Added the EventTargetNode class, which represents Nodes that
        implement the DOM EventTarget interface. Discussed this design with
        Maciej and Hyatt. The previous dsign -- assuming that all Nodes were 
        EventTargets -- made it possible to crash WebKit by, for example, 
        dispatching a mouse event to a documentType node that was not 
        associated with a document.

        (3) Reflected (2) into the JS bindings and touched JSDOMCore.cpp to 
        force a re-build.

        (4) Using classInfo checking, strengthened type constraints on 
        JavaScript method dispatch so that you can't finagle JavaScript into, 
        for example, invoking a document-dependent method belonging to a
        node type that's guaranteed to have a document on a node type that may
        not have one. 

        (5) Pushed some IE-specific JS bindings that depend on a node having a 
        document down from DOMNode to DOMElement. (An element always has a 
        document.) Tested that Firefox's behavior matched. Confirmed with MSDN.

        (6) Updated Objc bindigns to throw an exception if you try to use
        the event interface on a node that doesn't support it. Discussed this
        design with Maciej and TimH.

        (7) Consolidated repeated documentElement-finding code in the Position 
        class into the Position::documentElement() method. Did the same for
        repeated top-level document finding and DocumentImpl::topDocument().
        
        * WebCore+SVG/KDOMHeaders.h:
        * WebCore.xcodeproj/project.pbxproj:
        * bindings/js/JSDOMCore.cpp:
        * bindings/objc/DOM.mm:
        (-[DOMNode addEventListener:::]):
        (-[DOMNode removeEventListener:::]):
        (-[DOMNode dispatchEvent:]):
        (-[DOMNode KJS::Bindings::]):
        * bridge/mac/MacFrame.mm:
        (WebCore::MacFrame::keyEvent):
        (WebCore::MacFrame::dispatchCPPEvent):
        * bridge/mac/WebCoreFrameBridge.mm:
        (-[WebCoreFrameBridge setSelectedDOMRange:affinity:closeTyping:]):
        (-[WebCoreFrameBridge smartDeleteRangeForProposedRange:]):
        * css/css_base.cpp:
        (WebCore::StyleBaseImpl::baseURL):
        * css/css_computedstyle.cpp:
        (WebCore::CSSComputedStyleDeclarationImpl::getPropertyCSSValue):
        * css/css_valueimpl.cpp:
        (WebCore::CSSMutableStyleDeclarationImpl::removeProperty):
        (WebCore::CSSMutableStyleDeclarationImpl::setProperty):
        * css/cssstyleselector.cpp:
        (WebCore::CSSStyleSelector::applyProperty):
        * dom/Attr.idl:
        * dom/CharacterData.idl:
        * dom/CharacterDataImpl.cpp:
        (WebCore::CharacterDataImpl::CharacterDataImpl):
        (WebCore::CharacterDataImpl::rendererIsNeeded):
        (WebCore::CharacterDataImpl::dump):
        * dom/CharacterDataImpl.h:
        * dom/ContainerNodeImpl.cpp:
        (WebCore::ContainerNodeImpl::ContainerNodeImpl):
        (WebCore::ContainerNodeImpl::removeChild):
        (WebCore::ContainerNodeImpl::attach):
        (WebCore::ContainerNodeImpl::detach):
        (WebCore::ContainerNodeImpl::insertedIntoDocument):
        (WebCore::ContainerNodeImpl::removedFromDocument):
        (WebCore::ContainerNodeImpl::insertedIntoTree):
        (WebCore::ContainerNodeImpl::removedFromTree):
        (WebCore::ContainerNodeImpl::setFocus):
        (WebCore::ContainerNodeImpl::setActive):
        (WebCore::ContainerNodeImpl::setHovered):
        (WebCore::dispatchChildInsertionEvents):
        (WebCore::dispatchChildRemovalEvents):
        * dom/ContainerNodeImpl.h:
        * dom/DOMImplementationImpl.cpp:
        (WebCore::DOMImplementationImpl::createDocument):
        * dom/DocumentImpl.cpp:
        (WebCore::DocumentImpl::removeAllEventListenersFromAllNodes):
        (WebCore::DocumentImpl::removeAllDisconnectedNodeEventListeners):
        (WebCore::DocumentImpl::getAccObjectCache):
        (WebCore::DocumentImpl::setFocusNode):
        (WebCore::DocumentImpl::topDocument):
        * dom/Element.idl:
        * dom/EventTargetNodeImpl.cpp: Added.
        (WebCore::EventTargetNodeImpl::EventTargetNodeImpl):
        (WebCore::EventTargetNodeImpl::~EventTargetNodeImpl):
        (WebCore::EventTargetNodeImpl::insertedIntoDocument):
        (WebCore::EventTargetNodeImpl::removedFromDocument):
        (WebCore::EventTargetNodeImpl::addEventListener):
        (WebCore::EventTargetNodeImpl::removeEventListener):
        (WebCore::EventTargetNodeImpl::removeAllEventListeners):
        (WebCore::EventTargetNodeImpl::handleLocalEvents):
        (WebCore::EventTargetNodeImpl::dispatchGenericEvent):
        (WebCore::EventTargetNodeImpl::dispatchEvent):
        (WebCore::EventTargetNodeImpl::dispatchSubtreeModifiedEvent):
        (WebCore::EventTargetNodeImpl::dispatchWindowEvent):
        (WebCore::EventTargetNodeImpl::dispatchUIEvent):
        (WebCore::EventTargetNodeImpl::dispatchKeyEvent):
        (WebCore::EventTargetNodeImpl::dispatchMouseEvent):
        (WebCore::EventTargetNodeImpl::dispatchSimulatedMouseEvent):
        (WebCore::EventTargetNodeImpl::dispatchWheelEvent):
        (WebCore::EventTargetNodeImpl::dispatchHTMLEvent):
        (WebCore::EventTargetNodeImpl::removeHTMLEventListener):
        (WebCore::EventTargetNodeImpl::setHTMLEventListener):
        (WebCore::EventTargetNodeImpl::getHTMLEventListener):
        (WebCore::EventTargetNodeImpl::disabled):
        (WebCore::EventTargetNodeImpl::defaultEventHandler):
        (WebCore::EventTargetNodeImpl::dump):
        * dom/EventTargetNodeImpl.h: Added.
        (WebCore::EventTargetNodeImpl::isEventTargetNode):
        (WebCore::EventTargetNodeImpl::preDispatchEventHandler):
        (WebCore::EventTargetNodeImpl::postDispatchEventHandler):
        (WebCore::EventTarget):
        (WebCore::forbidEventDispatch):
        (WebCore::allowEventDispatch):
        (WebCore::eventDispatchForbidden):
        * dom/NodeImpl.cpp:
        (WebCore::NodeImpl::NodeImpl):
        (WebCore::NodeImpl::~NodeImpl):
        (WebCore::NodeImpl::dump):
        (WebCore::NodeImpl::detach):
        (WebCore::NodeImpl::insertedIntoDocument):
        (WebCore::NodeImpl::removedFromDocument):
        * dom/NodeImpl.h:
        (WebCore::NodeImpl::isEventTargetNode):
        (WebCore::NodeImpl::isLink):
        (WebCore::NodeImpl::getDocument):
        (WebCore::NodeImpl::inDocument):
        * dom/dom2_eventsimpl.cpp:
        (WebCore::MouseRelatedEventImpl::receivedTarget):
        * dom/dom2_rangeimpl.cpp:
        (WebCore::RangeImpl::commonAncestorContainer):
        * dom/dom_elementimpl.cpp:
        (WebCore::inHTMLDocument):
        (WebCore::ElementImpl::focus):
        (WebCore::ElementImpl::blur):
        (WebCore::StyledElementImpl::parseMappedAttribute):
        * dom/dom_position.cpp:
        (WebCore::Position::documentElement):
        * dom/dom_position.h:
        * editing/ReplaceSelectionCommand.cpp:
        (WebCore::computeAndStoreNodeDesiredStyle):
        * editing/SelectionController.cpp:
        (WebCore::SelectionController::needsCaretRepaint):
        * editing/visible_units.cpp:
        (WebCore::previousBoundary):
        (WebCore::nextBoundary):
        (WebCore::previousLinePosition):
        (WebCore::nextLinePosition):
        (WebCore::startOfDocument):
        (WebCore::endOfDocument):
        * khtml/ecma/kjs_dom.cpp:
        (KJS::DOMNode::mark):
        (KJS::DOMNode::getValueProperty):
        (KJS::DOMNode::putValueProperty):
        (KJS::DOMNodeProtoFunc::callAsFunction):
        (KJS::DOMEventTargetNode::DOMEventTargetNode):
        (KJS::DOMEventTargetNode::getOwnPropertySlot):
        (KJS::DOMEventTargetNode::getValueProperty):
        (KJS::DOMEventTargetNode::put):
        (KJS::DOMEventTargetNode::putValueProperty):
        (KJS::DOMEventTargetNode::setListener):
        (KJS::DOMEventTargetNode::getListener):
        (KJS::DOMEventTargetNode::pushEventHandlerScope):
        (KJS::DOMEventTargetNodeProtoFunc::callAsFunction):
        (KJS::):
        (KJS::DOMDocument::DOMDocument):
        (KJS::DOMDocument::getOwnPropertySlot):
        (KJS::DOMDocument::put):
        (KJS::DOMDocument::putValueProperty):
        (KJS::DOMDocumentProtoFunc::callAsFunction):
        (KJS::DOMElement::DOMElement):
        (KJS::DOMElement::getValueProperty):
        (KJS::DOMElement::put):
        (KJS::DOMElement::putValueProperty):
        (KJS::DOMElement::getOwnPropertySlot):
        (KJS::DOMElementProtoFunc::callAsFunction):
        (KJS::checkNodeSecurity):
        * khtml/ecma/kjs_dom.h:
        (KJS::DOMNode::):
        (KJS::DOMEventTargetNode::):
        (KJS::DOMElement::):
        * khtml/ecma/kjs_events.cpp:
        (KJS::JSLazyEventListener::parseCode):
        (KJS::getNodeEventListener):
        * khtml/ecma/kjs_html.cpp:
        (KJS::HTMLElement::bodyGetter):
        (KJS::HTMLElement::anchorGetter):
        (KJS::HTMLElement::getValueProperty):
        (KJS::HTMLElement::bodySetter):
        * khtml/ecma/kjs_views.cpp:
        (KJS::DOMAbstractViewProtoFunc::callAsFunction):
        * khtml/html/HTMLFormElementImpl.cpp:
        (WebCore::HTMLFormElementImpl::registerFormElement):
        (WebCore::HTMLFormElementImpl::removeFormElement):
        * khtml/html/HTMLGenericFormElementImpl.cpp:
        (WebCore::HTMLGenericFormElementImpl::insertedIntoTree):
        * khtml/html/HTMLInputElementImpl.cpp:
        (WebCore::HTMLInputElementImpl::~HTMLInputElementImpl):
        (WebCore::HTMLInputElementImpl::focus):
        * khtml/html/HTMLOptionElementImpl.cpp:
        (WebCore::HTMLOptionElementImpl::text):
        * khtml/html/HTMLSelectElementImpl.cpp:
        (WebCore::HTMLSelectElementImpl::~HTMLSelectElementImpl):
        * khtml/html/HTMLTextAreaElementImpl.cpp:
        (WebCore::HTMLTextAreaElementImpl::~HTMLTextAreaElementImpl):
        * khtml/html/html_baseimpl.cpp:
        (WebCore::HTMLBodyElementImpl::insertedIntoDocument):
        (WebCore::HTMLFrameElementImpl::isURLAllowed):
        (WebCore::HTMLFrameElementImpl::openURL):
        (WebCore::HTMLFrameElementImpl::frameWidth):
        (WebCore::HTMLFrameElementImpl::frameHeight):
        * khtml/html/html_imageimpl.cpp:
        (WebCore::HTMLImageLoader::~HTMLImageLoader):
        (WebCore::HTMLImageLoader::updateFromElement):
        (WebCore::HTMLImageLoader::notifyFinished):
        (WebCore::HTMLImageElementImpl::width):
        (WebCore::HTMLImageElementImpl::height):
        (WebCore::HTMLMapElementImpl::~HTMLMapElementImpl):
        * khtml/html/html_inlineimpl.cpp:
        (WebCore::HTMLAnchorElementImpl::defaultEventHandler):
        * khtml/html/htmltokenizer.cpp:
        (WebCore::HTMLTokenizer::notifyFinished):
        * ksvg2/svg/SVGAnimateColorElementImpl.cpp:
        (SVGAnimateColorElementImpl::handleTimerEvent):
        * ksvg2/svg/SVGAnimateElementImpl.cpp:
        (SVGAnimateElementImpl::handleTimerEvent):
        * ksvg2/svg/SVGAnimateTransformElementImpl.cpp:
        (SVGAnimateTransformElementImpl::handleTimerEvent):
        * ksvg2/svg/SVGAnimationElementImpl.cpp:
        (SVGAnimationElementImpl::closeRenderer):
        * ksvg2/svg/SVGDOMImplementationImpl.cpp:
        * ksvg2/svg/SVGDocumentImpl.cpp:
        (WebCore::SVGDocumentImpl::dispatchRecursiveEvent):
        * ksvg2/svg/SVGDocumentImpl.h:
        * ksvg2/svg/SVGImageElementImpl.cpp:
        * ksvg2/svg/SVGSetElementImpl.cpp:
        (SVGSetElementImpl::handleTimerEvent):
        * kwq/KWQAccObject.mm:
        (-[KWQAccObject mouseButtonListener]):
        (-[KWQAccObject accessibilityPerformAction:]):
        * kwq/KWQTextArea.mm:
        (-[KWQTextAreaTextView dispatchHTMLEvent:]):
        * page/Frame.cpp:
        (WebCore::dispatchKHTMLEditableContentChanged):
        * page/FrameView.cpp:
        (WebCore::FrameView::dispatchDragEvent):
        (WebCore::FrameView::dispatchMouseEvent):
        (WebCore::FrameView::viewportWheelEvent):
        * rendering/render_layer.cpp:
        (WebCore::RenderLayer::scrollToOffset):
        * rendering/render_object.cpp:
        (WebCore::RenderObject::shouldSelect):
        (WebCore::RenderObject::backslashAsCurrencySymbol):
        * rendering/render_replaced.cpp:
        (WebCore::RenderWidget::sendConsumedMouseUp):

2006-03-17  David Hyatt  <hyatt@apple.com>

        Fix for 7837, make opacity work with table rows.  Make transparent backgrounds
        stack properly in cells (so that the layers behind can show through like they
        should).

        Reviewed by beth

        * rendering/RenderTableCell.cpp:
        (WebCore::RenderTableCell::requiresLayer):
        (WebCore::RenderTableCell::paintBackgroundsBehindCell):
        (WebCore::RenderTableCell::paintBoxDecorations):
        * rendering/RenderTableCell.h:
        * rendering/RenderTableRow.cpp:
        (WebCore::RenderTableRow::paint):
        * rendering/RenderTableRow.h:
        (WebCore::RenderTableRow::requiresLayer):
        * rendering/RenderTableSection.cpp:
        (WebCore::RenderTableSection::paint):
        * rendering/render_layer.cpp:
        (WebCore::RenderLayer::updateLayerPosition):
        (WebCore::RenderLayer::isTransparent):
        (WebCore::RenderLayer::transparentAncestor):
        (WebCore::RenderLayer::beginTransparencyLayers):
        (WebCore::RenderLayer::paintLayer):
        (WebCore::RenderLayer::absoluteBoundingBox):
        * rendering/render_object.cpp:
        (WebCore::RenderObject::requiresLayer):
        * rendering/render_object.h:
        (WebCore::RenderObject::isTransparent):
        (WebCore::RenderObject::opacity):

2006-03-17  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by Adele.

        - clean up ResourceRequest to be closer to a proper request interface

        * page/ResourceRequest.h: folded URL into ResourceRequest, other cleanup
        (WebCore::ResourceRequest::ResourceRequest): Add new explicit constructor
        that takes a KURL.
        (WebCore::ResourceRequest::url): getter for KURL
        (WebCore::ResourceRequest::setURL): corresponding setter
        (WebCore::ResourceRequest::referrer): new getter for referrer, instead
        of storing it in m_metaData (it was the only remaining real use of it)
        (WebCore::ResourceRequest::setReferrer): corresponding setter
        * bridge/BrowserExtension.h: 
        - removed unused openURLRequest and openURLNotify methods
        - folded KURL parameter into ResourceRequest
        * bridge/mac/BrowserExtensionMac.h: remove KURL args from methods that
        also take a ResourceRequest
        * bridge/mac/BrowserExtensionMac.mm:
        (WebCore::BrowserExtensionMac::createNewWindow): adjust for ResourceRequest
        changes.
        * bridge/mac/MacFrame.h: remove KURL args from methods that also take a
        ResourceRequest
        * bridge/mac/MacFrame.mm:
        (WebCore::MacFrame::openURLRequest): adjust for ResourceRequest changes
        (WebCore::MacFrame::submitForm): ditto
        (WebCore::MacFrame::urlSelected): ditto
        * bridge/mac/WebCoreFrameBridge.mm:
        (-[WebCoreFrameBridge openURL:reload:contentType:refresh:lastModified:pageCache:]): 
        adjust for ResourceRequest changes
        * bridge/win/BrowserExtensionWin.h:
        * khtml/ecma/kjs_window.cpp:
        (KJS::createNewWindow): adjust for ResourceRequest changes
        (KJS::WindowFunc::callAsFunction): ditto
        * page/Frame.cpp:
        (WebCore::Frame::didOpenURL): adjust for ResourceRequest changes
        (WebCore::Frame::receivedFirstData): ditto
        (WebCore::Frame::begin): ditto
        (WebCore::Frame::completeURL): ditto
        (WebCore::Frame::changeLocation): ditto
        (WebCore::Frame::urlSelected): ditto
        (WebCore::Frame::requestFrame): ditto
        (WebCore::Frame::submitForm): ditto
        * page/Frame.h:
        * platform/win/TemporaryLinkStubs.cpp:
        (BrowserExtensionWin::createNewWindow): ditto

2006-03-17  Adele Peterson  <adele@apple.com>

        Reviewed by Tim H.

        Make default backgrounds for new text fields white
        instead of transparent.  This will move to html4.css
        when we flip the switch.

        Test added:
        * fast/forms/input-appearance-default-bkcolor.html

        * rendering/render_theme_mac.mm:
        (WebCore::RenderThemeMac::adjustTextFieldStyle):

2006-03-17  David Hyatt  <hyatt@apple.com>

        Make table sections and table captions support opacity.

        Reviewed by darin

        Covered by some of the new Mozilla table tests.

        * rendering/RenderTable.cpp:
        (WebCore::RenderTable::paint):

2006-03-17  Mitz Pettel  <opendarwin.org@mitzpettel.com>

        Reviewed by Maciej, landed by Beth.

        fix http://bugs.webkit.org/show_bug.cgi?id=3560
        page with use of first-letter crashes reproducibly in 
        RenderObject::renderArena()

        * rendering/RenderBlock.cpp:
        (WebCore::RenderBlock::updateFirstLetter): Pass the first-leter 
        renderer to the remaining text fragment.
        * rendering/RenderContainer.cpp:
        (WebCore::RenderContainer::destroyLeftoverChildren): Do not destroy 
        first-letter renderers since they are destroyed by their remaining 
        text now.
        * rendering/RenderTextFragment.cpp:
        (khtml::RenderTextFragment::RenderTextFragment):
        (khtml::RenderTextFragment::destroy): Destroy the first-letter 
        renderer.
        * rendering/RenderTextFragment.h:
        (khtml::RenderTextFragment::firstLetter):

2006-03-17  Adele Peterson  <adele@apple.com>

        Reviewed by Eric.

        - Fix for http://bugs.webkit.org/show_bug.cgi?id=7798 
        New text fields are much wider than they should be for a specified size

        I changed the character we use to calculate the width from "w" back to "0", 
        which matches our old behavior.  The original change was intentional, to try
        to better match other browsers, but "w" is a little too wide.  For now, lets
        go back to the old behavior.

        I also set the minWidth = maxWidth.  We were trying to match a WinIE quirk,
        but that caused some odd behavior with growth of the text field in table cells.

        * rendering/RenderTextField.cpp: (WebCore::RenderTextField::calcMinMaxWidth):

2006-03-17  Eric Seidel  <eseidel@apple.com>

        Reviewed by adele.

        Fix win32 build.
        Add PageWin class.
        Add previously forgotten KeyEventWin class.
        Pass MouseEvent() instead of 0 in a couple places to make compiler happy.

        * WebCore.vcproj/WebCore/WebCore.vcproj:
        * bridge/win/BrowserExtensionWin.h:
        * bridge/win/FrameWin.cpp:
        (WebCore::FrameWin::urlSelected):
        (WebCore::FrameWin::keyPress):
        * bridge/win/FrameWin.h:
        * bridge/win/PageWin.cpp: Added.
        (WebCore::rootWindowForFrame):
        (WebCore::Page::windowRect):
        (WebCore::Page::setWindowRect):
        * page/FrameView.cpp:
        (WebCore::FrameView::updateDragAndDrop):
        (WebCore::FrameView::hoverTimerFired):
        * page/Page.h:
        (WebCore::Page::mainFrame):
        * platform/win/KeyEventWin.cpp: Added.
        (WebCore::KeyEvent::KeyEvent):
        * platform/win/TemporaryLinkStubs.cpp:
        (WebCore::findNextWordFromIndex):
        (FrameWin::passMouseDownEventToWidget):
        (FrameWin::scheduleClose):
        (BrowserExtensionWin::createNewWindow):
        (WebCore::findWordBoundary):
        (FrameWin::registerCommandForUndo):
        (FrameWin::markMisspellingsInAdjacentWords):
        (FrameWin::respondToChangedContents):

2006-03-17  David Hyatt  <hyatt@apple.com>

        Fix pixel test regression in fast/table/overflowHidden.html.  There was
        a borderTopExtra error made in the new boundingBox code for layers that
        caused the bottom half of cells with opacity set to be clipped out.

        Reviewed by andersca

        * rendering/render_layer.cpp:
        (WebCore::RenderLayer::absoluteBoundingBox):

2006-03-17  David Hyatt  <hyatt@apple.com>

        Give table rows and sections accurate dimensions.  Fix absolutePosition
        to work for table cells properly.  Add an absolutePositionForContent method
        to make sure callers that want to deal with the content of a cell handle
        the cell's extra space correctly.

        Reviewed by darin

        Existing layout tests cover this change.

        * bridge/mac/WebCoreFrameBridge.mm:
        (-[WebCoreFrameBridge copyRenderNode:copier:]):
        * dom/ContainerNodeImpl.cpp:
        (WebCore::ContainerNodeImpl::getUpperLeftCorner):
        (WebCore::ContainerNodeImpl::getLowerRightCorner):
        * dom/NodeImpl.cpp:
        (WebCore::NodeImpl::getRect):
        * editing/SelectionController.cpp:
        (WebCore::SelectionController::layout):
        (WebCore::SelectionController::caretRect):
        * editing/visible_units.cpp:
        (WebCore::previousLinePosition):
        (WebCore::nextLinePosition):
        * khtml/html/HTMLInputElementImpl.cpp:
        (WebCore::HTMLInputElementImpl::defaultEventHandler):
        * kwq/KWQRenderTreeDebug.cpp:
        (operator<<):
        * rendering/RenderBlock.cpp:
        (WebCore::RenderBlock::selectionGapRects):
        (WebCore::RenderBlock::positionForCoordinates):
        * rendering/RenderContainer.cpp:
        (WebCore::RenderContainer::positionForCoordinates):
        (WebCore::RenderContainer::lineBoxRects):
        * rendering/RenderTableCell.cpp:
        (WebCore::RenderTableCell::computeAbsoluteRepaintRect):
        (WebCore::RenderTableCell::absolutePosition):
        * rendering/RenderTableRow.cpp:
        (WebCore::RenderTableRow::addChild):
        (WebCore::RenderTableRow::getAbsoluteRepaintRect):
        (WebCore::RenderTableRow::nodeAtPoint):
        * rendering/RenderTableRow.h:
        * rendering/RenderTableSection.cpp:
        (WebCore::RenderTableSection::ensureRows):
        (WebCore::RenderTableSection::addCell):
        (WebCore::RenderTableSection::layoutRows):
        (WebCore::RenderTableSection::recalcCells):
        (WebCore::RenderTableSection::nodeAtPoint):
        * rendering/RenderTableSection.h:
        * rendering/RenderText.cpp:
        (WebCore::RenderText::lineBoxRects):
        (WebCore::RenderText::positionForCoordinates):
        (WebCore::RenderText::caretRect):
        (WebCore::RenderText::posOfChar):
        (WebCore::RenderText::selectionRect):
        * rendering/render_box.cpp:
        (WebCore::RenderBox::absolutePosition):
        (WebCore::RenderBox::caretRect):
        * rendering/render_br.cpp:
        (WebCore::RenderBR::caretRect):
        * rendering/render_canvas.h:
        * rendering/render_flow.cpp:
        (WebCore::RenderFlow::caretRect):
        * rendering/render_frames.cpp:
        (WebCore::RenderPart::updateWidgetPosition):
        * rendering/render_layer.cpp:
        (WebCore::RenderLayer::updateLayerPosition):
        * rendering/render_object.cpp:
        (WebCore::RenderObject::absoluteRects):
        (WebCore::RenderObject::absoluteBoundingBoxRect):
        (WebCore::RenderObject::absolutePosition):
        * rendering/render_object.h:
        (WebCore::RenderObject::absolutePositionForContent):
        (WebCore::RenderObject::offsetHeight):
        * rendering/render_replaced.cpp:
        (WebCore::RenderWidget::updateWidgetPosition):

2006-03-17  Adele Peterson  <adele@apple.com>

        Reviewed by Hyatt.

        WebCore part of fix for:
        http://bugs.webkit.org/show_bug.cgi?id=7797 
        Can't set background color on new text fields

        Bezeled NSTextFieldCells always draw a background, so instead we'll use a new 
        WebKitSystemInterface function to just draw the border of the cell.

        Since the theme is drawing the border and the engine is drawing the background 
        (which is different from the other form controls), we have to make sure we let the 
        theme paint the border after the engine paints the background.

        * platform/mac/WebCoreGraphicsBridge.h:
        * platform/mac/WebCoreGraphicsBridge.m:
        (-[WebCoreGraphicsBridge drawBezeledTextFieldCell:enabled:]):
        * rendering/render_box.cpp: (WebCore::RenderBox::paintBoxDecorations):
        * rendering/render_theme.cpp:
        (WebCore::RenderTheme::paint):
        (WebCore::RenderTheme::paintBorder):
        (WebCore::RenderTheme::shouldPaintBorder):
        * rendering/render_theme.h:
        * rendering/render_theme_mac.mm:
        (WebCore::RenderThemeMac::paintTextField):
        (WebCore::RenderThemeMac::setTextFieldCellState):

2006-03-16  Darin Adler  <darin@apple.com>

        Reviewed by Eric.

        - removed KWQWindowWidget
        - changed most event handling to use references instead of pointers
        - chagned PageMac to no longer be a subclass of Page

        Yes, I know there's no detail in this ChangeLog entry.
        No, I don't plan to make a habit of doing things this way.
        Yes, this will probably break the Windows build again.

        * WebCore.xcodeproj/project.pbxproj:
        * bridge/mac/BrowserExtensionMac.mm:
        (WebCore::BrowserExtensionMac::createNewWindow):
        * bridge/mac/FrameViewMac.mm:
        * bridge/mac/MacFrame.h:
        * bridge/mac/MacFrame.mm:
        (WebCore::MacFrame::MacFrame):
        (WebCore::MacFrame::~MacFrame):
        (WebCore::MacFrame::wheelEvent):
        (WebCore::MacFrame::keyEvent):
        (WebCore::MacFrame::khtmlMousePressEvent):
        (WebCore::MacFrame::khtmlMouseMoveEvent):
        (WebCore::MacFrame::khtmlMouseReleaseEvent):
        (WebCore::MacFrame::mouseDown):
        (WebCore::MacFrame::mouseDragged):
        (WebCore::MacFrame::mouseUp):
        (WebCore::MacFrame::mouseMoved):
        (WebCore::MacFrame::sendContextMenuEvent):
        (WebCore::MacFrame::setBridge):
        (WebCore::MacFrame::dragSourceMovedTo):
        (WebCore::MacFrame::dragSourceEndedAt):
        (WebCore::MacFrame::dispatchDragSrcEvent):
        * bridge/mac/PageMac.h: Removed.
        * bridge/mac/PageMac.mm: Added.
        (WebCore::Page::Page):
        (WebCore::Page::windowRect):
        (WebCore::Page::setWindowRect):
        * bridge/mac/WebCoreFrameBridge.h:
        * bridge/mac/WebCoreFrameBridge.mm:
        (-[WebCoreFrameBridge page]):
        (-[WebCoreFrameBridge initializeSettings:]):
        (globalPoint):
        (createMouseEventFromDraggingInfo):
        (-[WebCoreFrameBridge dragOperationForDraggingInfo:]):
        (-[WebCoreFrameBridge dragExitedWithDraggingInfo:]):
        (-[WebCoreFrameBridge concludeDragForDraggingInfo:]):
        (-[WebCoreFrameBridge dragSourceMovedTo:]):
        (-[WebCoreFrameBridge dragSourceEndedAt:operation:]):
        * bridge/mac/WebCoreFrameNamespaces.mm:
        (WebCore::):
        * bridge/mac/WebCorePageBridge.h:
        * bridge/mac/WebCorePageBridge.mm:
        (-[WebCorePageBridge init]):
        * dom/DocumentImpl.cpp:
        (WebCore::DocumentImpl::prepareMouseEvent):
        (WebCore::DocumentImpl::defaultEventHandler):
        * dom/DocumentImpl.h:
        * dom/NodeImpl.cpp:
        (WebCore::NodeImpl::dispatchMouseEvent):
        (WebCore::NodeImpl::dispatchKeyEvent):
        (WebCore::NodeImpl::dispatchWheelEvent):
        * dom/NodeImpl.h:
        * dom/dom2_eventsimpl.cpp:
        (WebCore::KeyboardEventImpl::KeyboardEventImpl):
        * dom/dom2_eventsimpl.h:
        (WebCore::KeyboardEventImpl::keyEvent):
        * khtml/ecma/kjs_window.cpp:
        (KJS::Window::getValueProperty):
        (KJS::WindowFunc::callAsFunction):
        * khtml/html/html_inlineimpl.cpp:
        (WebCore::HTMLAnchorElementImpl::defaultEventHandler):
        * ksvg2/svg/SVGDocumentImpl.cpp:
        * ksvg2/svg/SVGDocumentImpl.h:
        * kwq/KWQWindowWidget.h:
        * kwq/KWQWindowWidget.mm: Removed.
        * page/Frame.cpp:
        (WebCore::Frame::selectClosestWordFromMouseEvent):
        (WebCore::Frame::handleMousePressEventDoubleClick):
        (WebCore::Frame::handleMousePressEventTripleClick):
        (WebCore::Frame::handleMousePressEventSingleClick):
        (WebCore::Frame::khtmlMousePressEvent):
        (WebCore::Frame::handleMouseMoveEventSelection):
        (WebCore::Frame::khtmlMouseMoveEvent):
        (WebCore::Frame::khtmlMouseReleaseEvent):
        (WebCore::Frame::khtmlMouseDoubleClickEvent):
        (WebCore::Frame::passWidgetMouseDownEventToWidget):
        * page/Frame.h:
        * page/FrameView.cpp:
        (WebCore::FrameView::viewportMousePressEvent):
        (WebCore::FrameView::viewportMouseDoubleClickEvent):
        (WebCore::FrameView::viewportMouseMoveEvent):
        (WebCore::FrameView::viewportMouseReleaseEvent):
        (WebCore::FrameView::dispatchDragEvent):
        (WebCore::FrameView::updateDragAndDrop):
        (WebCore::FrameView::cancelDragAndDrop):
        (WebCore::FrameView::performDragAndDrop):
        (WebCore::FrameView::dispatchMouseEvent):
        (WebCore::FrameView::viewportWheelEvent):
        * page/FrameView.h:
        * page/MouseEventWithHitTestResults.h:
        (WebCore::MouseEventWithHitTestResults::MouseEventWithHitTestResults):
        (WebCore::MouseEventWithHitTestResults::event):
        * page/Page.cpp:
        (WebCore::Page::init):
        * page/Page.h:
        (WebCore::Page::bridge):
        * platform/KeyEvent.h:
        (WebCore::KeyEvent::isAutoRepeat):
        * platform/MouseEvent.h:
        (WebCore::MouseEvent::MouseEvent):
        * platform/mac/KeyEventMac.mm:
        (WebCore::KeyEvent::KeyEvent):
        * platform/win/TemporaryLinkStubs.cpp:
        (FrameView::isFrameView):
        * rendering/render_form.cpp:
        (WebCore::RenderFormElement::clicked):

2006-03-16  Eric Seidel  <eseidel@apple.com>

        Reviewed by darin.

        Add additional hackish Font, focusring and caret code.
        http://bugs.webkit.org/show_bug.cgi?id=7803

        * WebCore.vcproj/WebCore/WebCore.vcproj:
        * WebCore.vcproj/WebCore/build-generated-files.sh:
        * bindings/js/JSCanvasRenderingContext2DBase.cpp:
        * bridge/win/FrameWin.cpp:
        (WebCore::FrameWin::keyPress):
        * bridge/win/FrameWin.h:
        * html/CanvasRenderingContext2D.h:
        * platform/IntSize.h:
        * platform/KeyEvent.h:
        * platform/cairo/GraphicsContextCairo.cpp:
        (WebCore::GraphicsContext::drawArc):
        (WebCore::GraphicsContext::drawFocusRing):
        * platform/win/FontWin.cpp:
        (WebCore::hackishExtentForString):
        (WebCore::Font::floatWidth):
        (WebCore::convertRange):
        (WebCore::Font::drawText):
        (WebCore::Font::drawHighlightForText):
        (WebCore::Font::selectionRectForText):
        (WebCore::Font::checkSelectionPoint):
        (WebCore::Font::drawLineForText):
        (WebCore::Font::misspellingLineThickness):
        * platform/win/IntSizeWin.cpp: Added.
        (WebCore::IntSize::IntSize):
        (WebCore::IntSize::operator SIZE):
        * platform/win/ScrollViewWin.cpp:
        (WebCore::ScrollView::visibleContentRect):
        * platform/win/TemporaryLinkStubs.cpp:
        (Widget::disableFlushDrawing):
        (GraphicsContext::GraphicsContext):
        (QListBox::setSelected):
        (QListBox::sizeForNumberOfLines):
        (QListBox::isSelected):
        (QListBox::appendItem):
        (QListBox::doneAppendingItems):
        (FrameWin::locationbarVisible):
        (FrameWin::canUndo):
        (FrameWin::mimeTypeForFileName):
        (FrameWin::issueTransposeCommand):
        (RenderCanvasImage::setNeedsImageUpdate):
        (FrameWin::shouldChangeSelection):
        (FrameWin::respondToChangedSelection):
        (FrameWin::clearRecordedFormValues):
        (FrameWin::recordFormValue):
        (BrowserExtensionWin::getHistoryLength):
        (Widget::setIsSelected):
        (GraphicsContext::selectedTextBackgroundColor):
        (GraphicsContext::addRoundedRectClip):
        (QScrollBar::QScrollBar):
        (QScrollBar::~QScrollBar):
        (QScrollBar::setSteps):
        (QScrollBar::scroll):
        (QScrollBar::setValue):
        (QScrollBar::setKnobProportion):
        (QListBox::QListBox):
        (QListBox::~QListBox):
        (QListBox::setSelectionMode):
        (QListBox::setFont):
        * rendering/render_canvasimage.h:

2006-03-16  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by Eric.

        - renamed URLArgs to ResourceRequest, split it into its own header
        - moved methods to get and set ResourceRequest to Frame

        * WebCore.xcodeproj/project.pbxproj:
        * bridge/BrowserExtension.h:
        * bridge/mac/BrowserExtensionMac.h:
        * bridge/mac/BrowserExtensionMac.mm:
        (WebCore::BrowserExtensionMac::openURLRequest):
        (WebCore::BrowserExtensionMac::createNewWindow):
        * bridge/mac/MacFrame.h:
        * bridge/mac/MacFrame.mm:
        (WebCore::MacFrame::openURLRequest):
        (WebCore::MacFrame::submitForm):
        (WebCore::MacFrame::urlSelected):
        * bridge/mac/WebCoreFrameBridge.mm:
        (-[WebCoreFrameBridge openURL:reload:contentType:refresh:lastModified:pageCache:]):
        * khtml/ecma/kjs_window.cpp:
        (KJS::createNewWindow):
        (KJS::WindowFunc::callAsFunction):
        * page/Frame.cpp:
        (WebCore::Frame::didOpenURL):
        (WebCore::Frame::receivedFirstData):
        (WebCore::Frame::setResourceRequest):
        (WebCore::Frame::resourceRequest):
        (WebCore::Frame::begin):
        (WebCore::Frame::changeLocation):
        (WebCore::Frame::urlSelected):
        (WebCore::Frame::requestFrame):
        (WebCore::Frame::submitForm):
        * page/Frame.h:
        * page/FramePrivate.h:
        * page/ResourceRequest.h: Added.
        (WebCore::ResourceRequest::ResourceRequest):
        (WebCore::ResourceRequest::contentType):
        (WebCore::ResourceRequest::setContentType):
        (WebCore::ResourceRequest::doPost):
        (WebCore::ResourceRequest::setDoPost):
        (WebCore::ResourceRequest::lockHistory):
        (WebCore::ResourceRequest::setLockHistory):
        (WebCore::ResourceRequest::metaData):

2006-03-16  Darin Adler  <darin@apple.com>

        - need to touch one more file to fix the build
          (Darn the lack of dependencies for autogenerated bindings!)

        * dom/Element.idl: Touch. (Really this time.)

2006-03-16  Eric Seidel  <eseidel@apple.com>

        Reviewed by darin.

        Pushed focus ring handling down into GraphicsContext.cpp

        * bridge/mac/MacFrame.mm:
        (WebCore::MacFrame::mouseDown):
        * platform/GraphicsContext.cpp:
        (WebCore::GraphicsContext::initFocusRing):
        (WebCore::GraphicsContext::clearFocusRing):
        (WebCore::GraphicsContext::addFocusRingRect):
        * platform/GraphicsContext.h:
        * platform/mac/GraphicsContextMac.mm:
        (WebCore::GraphicsContextPrivate::GraphicsContextPrivate):
        (WebCore::GraphicsContextPrivate::~GraphicsContextPrivate):
        (WebCore::GraphicsContext::GraphicsContext):
        (WebCore::GraphicsContext::drawFocusRing):
        * rendering/render_flow.cpp:
        (WebCore::RenderFlow::addFocusRingRects):
        * rendering/render_object.cpp:
        (WebCore::RenderObject::addFocusRingRects):

2006-03-15  Darin Adler  <darin@apple.com>

        Reviewed by Hyatt.

        - fix http://bugs.webkit.org/show_bug.cgi?id=7749
          canvas should be in DOM, not implemented in the JS bindings

        * WebCore.xcodeproj/project.pbxproj: Added new files.
        Changed bindings-generation code to work on the new html directory
        as well as the dom one.

        * bindings/js/JSCanvasRenderingContext2DBase.cpp: Added.
        * bindings/js/JSCanvasRenderingContext2DBase.h: Added.
        * bindings/js/JSDOMHTML.cpp: Added.
        * html: Added.
        * html/CanvasGradient.cpp: Added.
        * html/CanvasGradient.h: Added.
        * html/CanvasGradient.idl: Added.
        * html/CanvasPattern.cpp: Added.
        * html/CanvasPattern.h: Added.
        * html/CanvasPattern.idl: Added.
        * html/CanvasRenderingContext2D.cpp: Added.
        * html/CanvasRenderingContext2D.h: Added.
        * html/CanvasRenderingContext2D.idl: Added.
        * html/CanvasStyle.cpp: Added.
        * html/CanvasStyle.h: Added.

        * bindings/js/JSDOMCore.cpp: Touched so that it will recompile.
        * bindings/js/JSDOMEvents.cpp: Ditto.
        * dom/Attr.idl: Ditto.
        * dom/DOMImplementation.idl: Ditto.
        * dom/DocumentType.idl: Ditto.
        * dom/MutationEvent.idl: Ditto.
        * dom/ProcessingInstruction.idl: Ditto.
        * dom/Text.idl: Ditto.

        * khtml/ecma/kjs_binding.h: (KJS::toJS): Added. Template so that you can call
        toJS on a PassRefPtr as well as on a raw pointer.

        * bindings/scripts/CodeGeneratorJS.pm: Fixed handling of a class that has only
        a legacy parent, no conventional parents. Added JSCanvasRenderingContext2DBase
        as a legacy parent, and html as a legacy module. Added CanvasRenderingContext2D,
        CanvasGradient, and CanvasPattern to the "waht to include". Added a special
        case for strings beginning with Canvas to not add an "Impl" suffix. Made the
        generated impl() function be a const member function. Made m_mimpl be private
        instead of protected. Generate a toJS function for each class. Added flaot as
        a type. Generate String, not DOMString. Made the HashTable const.

        * bindings/scripts/IDLParser.pm: Fix a couple small things. I had started to
        try to make a missing semicolon trigger an error, but ended up giving up on
        that for now.

        * khtml/html/html_canvasimpl.h:
        * khtml/html/html_canvasimpl.cpp:
        (WebCore::HTMLCanvasElementImpl::HTMLCanvasElementImpl): Set m_2DContext to 0.
        (WebCore::HTMLCanvasElementImpl::~HTMLCanvasElementImpl): Call detachCanvas
        on m_2DContext, if any.
        (WebCore::HTMLCanvasElementImpl::detach): Call reset on m_2DContext, if any.
        (WebCore::HTMLCanvasElementImpl::getContext): Added.
        (WebCore::HTMLCanvasElementImpl::size): Added.
        (WebCore::HTMLCanvasElementImpl::createPlatformImage): Added.

        * platform/Image.h:
        * platform/Image.cpp: (WebCore::Image::compositeOperatorFromString):
        Changed to take a String instead of a const char*.

        * khtml/html/html_imageimpl.h:
        * khtml/html/html_imageimpl.cpp: (WebCore::HTMLMapElementImpl::areas):
        Tweaked formatting. Changed to use PassRefPtr.

        * bindings/objc/DOMInternal.mm: (-[WebScriptObject _initializeScriptDOMNodeImp]):
        * khtml/ecma/JSXMLHttpRequest.cpp: (KJS::JSXMLHttpRequest::getValueProperty):
        * khtml/ecma/XSLTProcessor.cpp: (KJS::XSLTProcessorProtoFunc::callAsFunction):
        * khtml/ecma/domparser.cpp: (KJS::DOMParserProtoFunc::callAsFunction):
        * khtml/ecma/kjs_css.cpp:
        (KJS::DOMCSSStyleDeclaration::getValueProperty):
        (KJS::DOMCSSStyleDeclarationProtoFunc::callAsFunction):
        (KJS::toJS):
        (KJS::DOMStyleSheet::getValueProperty):
        (KJS::DOMStyleSheetList::indexGetter):
        (KJS::DOMStyleSheetList::nameGetter):
        (KJS::DOMStyleSheetListFunc::callAsFunction):
        (KJS::DOMCSSStyleSheet::getValueProperty):
        (KJS::DOMCSSRuleList::indexGetter):
        (KJS::DOMCSSRuleListFunc::callAsFunction):
        (KJS::DOMCSSRule::getValueProperty):
        (KJS::DOMCSSPrimitiveValueProtoFunc::callAsFunction):
        (KJS::DOMCSSValueList::indexGetter):
        (KJS::DOMCSSValueListFunc::callAsFunction):
        (KJS::DOMRect::getValueProperty):
        * khtml/ecma/kjs_css.h:
        * khtml/ecma/kjs_dom.cpp:
        (KJS::DOMNode::getValueProperty):
        (KJS::DOMNodeProtoFunc::callAsFunction):
        (KJS::DOMNodeList::indexGetter):
        (KJS::DOMNodeList::nameGetter):
        (KJS::DOMNodeList::callAsFunction):
        (KJS::DOMNodeListFunc::callAsFunction):
        (KJS::DOMDocument::getValueProperty):
        (KJS::DOMDocumentProtoFunc::callAsFunction):
        (KJS::DOMNamedNodeMap::indexGetter):
        (KJS::DOMNamedNodeMap::nameGetter):
        (KJS::DOMNamedNodeMapProtoFunc::callAsFunction):
        (KJS::toJS):
        (KJS::DOMNamedNodesCollection::indexGetter):
        * khtml/ecma/kjs_dom.h:
        * khtml/ecma/kjs_events.cpp:
        (KJS::JSAbstractEventListener::handleEvent):
        (KJS::JSLazyEventListener::parseCode):
        (KJS::DOMEvent::getValueProperty):
        (KJS::toJS):
        (KJS::DOMUIEvent::getValueProperty):
        (KJS::DOMMouseEvent::getValueProperty):
        * khtml/ecma/kjs_events.h:
        * khtml/ecma/kjs_html.cpp:
        (KJS::HTMLDocFunction::callAsFunction):
        (KJS::HTMLDocument::namedItemGetter):
        (KJS::HTMLDocument::getValueProperty):
        (KJS::HTMLDocument::put):
        (KJS::HTMLDocument::putValueProperty):
        (KJS::HTMLElement::classInfo):
        (KJS::HTMLElement::formIndexGetter):
        (KJS::HTMLElement::selectIndexGetter):
        (KJS::HTMLElement::implementsCall):
        (KJS::HTMLElement::callAsFunction):
        (KJS::HTMLElement::linkGetter):
        (KJS::HTMLElement::isIndexGetter):
        (KJS::HTMLElement::styleGetter):
        (KJS::HTMLElement::selectGetter):
        (KJS::HTMLElement::optionGetter):
        (KJS::HTMLElement::inputGetter):
        (KJS::HTMLElement::textAreaGetter):
        (KJS::HTMLElement::buttonGetter):
        (KJS::HTMLElement::labelGetter):
        (KJS::HTMLElement::fieldSetGetter):
        (KJS::HTMLElement::legendGetter):
        (KJS::HTMLElement::objectGetter):
        (KJS::HTMLElement::tableGetter):
        (KJS::HTMLElement::frameGetter):
        (KJS::HTMLElement::iFrameGetter):
        (KJS::HTMLElement::getValueProperty):
        (KJS::HTMLElement::toString):
        (KJS::HTMLElement::pushEventHandlerScope):
        (KJS::toJS):
        (KJS::HTMLElementFunction::callAsFunction):
        (KJS::HTMLElement::put):
        (KJS::HTMLCollection::indexGetter):
        (KJS::HTMLCollection::callAsFunction):
        (KJS::HTMLCollection::getNamedItems):
        (KJS::HTMLCollectionProtoFunc::callAsFunction):
        (KJS::HTMLSelectCollection::put):
        (KJS::OptionConstructorImp::construct):
        (KJS::ImageConstructorImp::construct):
        * khtml/ecma/kjs_html.h:
        * khtml/ecma/kjs_proxy.cpp: (WebCore::KJSProxyImpl::evaluate):
        * khtml/ecma/kjs_range.cpp:
        (KJS::DOMRange::getValueProperty):
        (KJS::DOMRangeProtoFunc::callAsFunction):
        (KJS::toJS):
        * khtml/ecma/kjs_range.h:
        * khtml/ecma/kjs_traversal.cpp:
        (KJS::DOMNodeIterator::getValueProperty):
        (KJS::DOMNodeIteratorProtoFunc::callAsFunction):
        (KJS::toJS):
        (KJS::DOMTreeWalker::getValueProperty):
        (KJS::DOMTreeWalkerProtoFunc::callAsFunction):
        (KJS::JSNodeFilterCondition::acceptNode):
        * khtml/ecma/kjs_traversal.h:
        * khtml/ecma/kjs_views.cpp:
        (KJS::DOMAbstractView::getValueProperty):
        (KJS::DOMAbstractViewProtoFunc::callAsFunction):
        (KJS::toJS):
        * khtml/ecma/kjs_views.h:
        * khtml/ecma/kjs_window.cpp:
        (KJS::Window::getValueProperty):
        (KJS::Window::namedItemGetter):
        (KJS::Selection::getValueProperty):
        (KJS::SelectionFunc::callAsFunction):
        Rename uses and definitions of all the various converstions to JavaScript
        wrappers to the new common overloaded name: "toJS".

2006-03-15  Eric Seidel  <eseidel@apple.com>

        Reviewed by darin.

        Push more of MacFrame down into Frame.
        Add visibleContentRect method to ScrollView.

        * bridge/mac/MacFrame.h:
        * bridge/mac/MacFrame.mm:
        (WebCore::MacFrame::imageFromRect):
        (WebCore::MacFrame::setDisplaysWithFocusAttributes):
        (WebCore::MacFrame::bodyBackgroundColor):
        * bridge/mac/WebCoreFrameBridge.mm:
        * page/Frame.cpp:
        (WebCore::Frame::visibleSelectionRect):
        (WebCore::Frame::setDisplaysWithFocusAttributes):
        * page/Frame.h:
        * platform/ScrollView.h:
        * platform/mac/ScrollViewMac.mm:
        (WebCore::ScrollView::visibleWidth):
        (WebCore::ScrollView::visibleHeight):
        (WebCore::ScrollView::visibleContentRect):
        (WebCore::ScrollView::contentsWidth):
        (WebCore::ScrollView::contentsHeight):
        (WebCore::ScrollView::contentsX):
        (WebCore::ScrollView::contentsY):
        (WebCore::ScrollView::scrollXOffset):
        (WebCore::ScrollView::scrollYOffset):
        (WebCore::ScrollView::inWindow):

2006-03-15  Eric Seidel  <eseidel@apple.com>

        Reviewed by darin.

        Remove unused code and clean-up style.

        * bridge/mac/MacFrame.mm:
        (WebCore::MacFrame::advanceToNextMisspelling):
        (WebCore::MacFrame::wheelEvent):
        (WebCore::MacFrame::nextKeyViewInFrame):
        (WebCore::MacFrame::nextKeyViewInFrameHierarchy):
        (WebCore::MacFrame::nextKeyView):
        * page/Frame.cpp:
        * page/Frame.h:
        * page/FrameView.cpp:
        (WebCore::FrameView::dispatchMouseEvent):

2006-03-15  Eric Seidel  <eseidel@apple.com>

        Reviewed by mjs.

        http://bugs.webkit.org/show_bug.cgi?id=7790
        addEventListener does not work with "dblclick" event.
        Renamed khtmlDblclickEvent to dblclickEvent to fix.

        Test: fast/events/dblclick-addEventListener.html

        * WebCore.xcodeproj/project.pbxproj:
        * bridge/mac/MacFrame.mm:
        (WebCore::MacFrame::mouseUp):
        (WebCore::MacFrame::mouseMoved):
        (WebCore::MacFrame::shouldDragAutoNode):
        (WebCore::MacFrame::sendContextMenuEvent):
        * dom/EventNames.h:
        * dom/NodeImpl.cpp:
        (WebCore::NodeImpl::dispatchMouseEvent):
        * dom/NodeImpl.h:
        * khtml/ecma/kjs_binding.cpp:
        (KJS::ScriptInterpreter::wasRunByUserGesture):
        * khtml/ecma/kjs_dom.cpp:
        (KJS::DOMNode::getValueProperty):
        (KJS::DOMNode::putValueProperty):
        * khtml/ecma/kjs_window.cpp:
        (KJS::Window::getValueProperty):
        (KJS::Window::put):
        * khtml/html/HTMLElementImpl.cpp:
        (WebCore::HTMLElementImpl::parseMappedAttribute):
        * page/FrameView.cpp:
        (WebCore::FrameView::dispatchMouseEvent):
        * page/FrameView.h:

2006-03-16  Alexey Proskuryakov  <ap@nypop.com>

        Reviewed by Maciej.

        - fix http://bugs.webkit.org/show_bug.cgi?id=4395
         REGRESSION: document.open doesn't clear the document

        Test: fast/dom/Document/document-reopen.html
        Test: fast/dom/Document/doc-open-while-parsing.html

        * dom/DocumentImpl.cpp:
        (WebCore::DocumentImpl::open): Only ignore open() while the frame is still loading the main resource.
        * page/Frame.cpp:
        (WebCore::Frame::isComplete): Added const specifier.
        (WebCore::Frame::isLoadingMainResource): New function.
        * page/Frame.h:

2006-03-15  Adele Peterson  <adele@apple.com>

        Reviewed by Eric.

        - Fixes win32 build.

        * page/Frame.cpp: (WebCore::Frame::autoscrollTimerFired): Calls isMouseButtonDown instead of CG function.
        * platform/MouseEvent.h: Added isMouseButtonDown
        * platform/mac/MouseEventMac.mm: (WebCore::MouseEvent::isMouseButtonDown): Calls CG function to get state of mouse button.
        * platform/win/TemporaryLinkStubs.cpp: (MouseEvent::isMouseButtonDown): Added stub.

2006-03-15  Eric Seidel  <eseidel@apple.com>

        Reviewed by geoff.

        * platform/KeyEvent.h: Fix #define from QEvent_H to KeyEvent_H

2006-03-15  David Hyatt  <hyatt@apple.com>

        Fix the box-sizing layout test by stopping integer overflowing from
        occurring in the flexbox code.

        Reviewed by beth

        * rendering/render_flexbox.cpp:
        (khtml::RenderFlexibleBox::allowedChildFlex):

2006-03-15  Beth Dakin  <bdakin@apple.com>

        Reviewed by Eric

        Fix for some leaks and intermittent broken pipes in the layout 
        tests after check-in for http://bugs.webkit.org/
        show_bug.cgi?id=4171.  

        * platform/StringImpl.cpp:
        (WebCore::StringImpl::capitalize): Call deleteQCharVector() for 
        stringWithPrevious and make sure we don't walk off the end of 
        stringWithPrevious when copying to capitalizedString.

2006-03-15  Adele Peterson  <adele@apple.com>

       Reviewed by Maciej.

       Followup fix for previous checkin.
       http://bugs.webkit.org/show_bug.cgi?id=7114
       <rdar://problem/3695120> dragging to scroll doesn't work with overflow:auto/scroll/overlay areas 

       Many of the bugs related to the Radar bug have to do with autoscrolling in the RSS View.  
       This fix walks the layer tree to find the first scrollable layer, so that autoscrolling will 
       also work with nested layers, like those in the RSS View.

       * bridge/mac/MacFrame.mm: (WebCore::MacFrame::khtmlMouseMoveEvent):

2006-03-15  Adele Peterson  <adele@apple.com>

        Reviewed by Maciej.

        - Fix for http://bugs.webkit.org/show_bug.cgi?id=7114
        Dragging to scroll doesn't work for overflow areas

        No test case.  There doesn't appear to be a way to trigger the autoscroll with the EventSender.

        * bridge/mac/MacFrame.mm:
        (WebCore::MacFrame::khtmlMouseMoveEvent):  If we have a layer that can scroll, let the layer handle its autoscroll.  
         Otherwise, call over the bridge to let AppKit scroll the view.
        (WebCore::MacFrame::khtmlMouseReleaseEvent): Stops the autoscroll timer.
        * page/Frame.cpp:
        (WebCore::Frame::khtmlMouseReleaseEvent): Stops the autoscroll timer.
        (WebCore::Frame::handleAutoscroll): Added. Saves the layer, and starts the timer.
        (WebCore::Frame::autoscrollTimerFired): Added. Calls autoscroll() on the layer.
        (WebCore::Frame::startAutoscrollTimer): Added.
        (WebCore::Frame::stopAutoscrollTimer): Added.
        * page/Frame.h: Added new autoscroll methods.
        * page/FramePrivate.h: (WebCore::FramePrivate::FramePrivate): Initialize m_autoscrollTimer and m_autoscrollLayer.
        * rendering/render_layer.cpp:
        (WebCore::RenderLayer::autoscroll): Calculates how much the layer should scroll, and actually scrolls.
        (WebCore::RenderLayer::shouldAutoscroll): If the layer has overflow then it should be able to scroll.  
         Except for overflow:hidden areas that aren't editable.  
         In the future, we may want to have a css property that indicates an overflow:hidden style that should also scroll.
        * rendering/render_layer.h: Added new autoscroll methods.

2006-03-14  Justin Garcia  <justin.garcia@apple.com>

        Reviewed by mjs
        
        <http://bugs.webkit.org/show_bug.cgi?id=7578>
        TinyMCE: Implement execCommand CreateLink
        
        Used ApplyStyleCommand so that creating a link from
        a selection doesn't change document structure.

        * WebCore.xcodeproj/project.pbxproj:
        * editing/ApplyStyleCommand.cpp:
        (WebCore::ApplyStyleCommand::ApplyStyleCommand):
        (WebCore::ApplyStyleCommand::doApply):
        (WebCore::ApplyStyleCommand::removeInlineStyle):
        (WebCore::ApplyStyleCommand::addInlineStyleIfNeeded):
        * editing/ApplyStyleCommand.h:
        * editing/CompositeEditCommand.cpp:
        (WebCore::CompositeEditCommand::applyStyle):
        * editing/CreateLinkCommand.cpp: Added.
        (WebCore::CreateLinkCommand::CreateLinkCommand):
        (WebCore::CreateLinkCommand::doApply):
        * editing/CreateLinkCommand.h: Added.
        * editing/jsediting.cpp:
        * page/Frame.cpp:
        (WebCore::Frame::computeAndSetTypingStyle):
        (WebCore::Frame::applyStyle):
        (WebCore::Frame::applyParagraphStyle):

2006-03-14  Beth Dakin  <bdakin@apple.com>

        Reviewed by Maciej

        Fix for http://bugs.webkit.org/show_bug.cgi?id=4171
        This patch changes the word-break algorithm used to apply text-
        transform:capitalize to use a UBreakIterator. This fixes some 
        existing edge cases we have in our text-transform:capitalize 
        support and generally makes our results more consistent.

        * platform/StringImpl.cpp:
        (WebCore::getWordBreakIterator): Returns a UBreakIterator for a 
        given string of a given length.
        (WebCore::StringImpl::capitalize): Now uses the UBreakIterator to 
        step between words and requires the previous character as input.
        * platform/StringImpl.h: Change the declaration of capitalize() to 
        take the previous character as a parameter. 
        * rendering/RenderText.cpp:
        (WebCore::RenderText::setText): Find the previous character and 
        send it to StringImpl::capitalize()

2006-03-14  Justin Garcia  <justin.garcia@apple.com>

        Reviewed by adele
        
        <http://bugs.webkit.org/show_bug.cgi?id=7770>
        Should only dispatch the khtmlTextInsertedEvent for high level editing operations

        Dispatching this event for low level editing operations 
        isn't necessary and causes a big performance regression. 
        Also renamed the event because it's dispatched for changes
        other than just text insertion.

        * dom/EventNames.h: 
        * editing/EditCommand.cpp:
        (WebCore::EditCommand::apply):
        (WebCore::EditCommand::unapply):
        (WebCore::EditCommand::reapply):
        * khtml/html/HTMLTextFieldInnerElementImpl.cpp:
        (WebCore::HTMLTextFieldInnerElementImpl::defaultEventHandler):
        * page/Frame.cpp:
        (WebCore::dispatchKHTMLEditableContentChanged):
        (WebCore::Frame::appliedEditing):
        (WebCore::Frame::unappliedEditing):
        (WebCore::Frame::reappliedEditing):

2006-03-14  Darin Adler  <darin@apple.com>

        Reviewed by Eric.

        - fix <rdar://problem/4478121> -[WebCoreFrameBridge finalize] crashes under GC

        * bridge/mac/WebCoreFrameBridge.mm: (-[WebCoreFrameBridge finalize]):
        Don't call setBridge(nil).

2006-03-14  Darin Adler  <darin@apple.com>

        - oops, didn't mean to check this in

        * dom/dom_elementimpl.cpp: (WebCore::StyledElementImpl::parseMappedAttribute):
        Reverted nil-document check that I didn't mean to remove.

2006-03-14  Beth Dakin  <bdakin@apple.com>

        Reviewed by Hyatt

        Fix for http://bugs.webkit.org/show_bug.cgi?id=6796
        This fix prevents infinite recursion when a block with overflow: 
        auto can't decide if it needs scrollbars or not. This fix puts a 
        guard in place in updateScrollInforAfterLayout that only allows you 
        to re-layout if you are not currently laying out.  

        * rendering/render_layer.cpp:
        (WebCore::RenderLayer::RenderLayer): Initialize 
        m_inOverflowRelayout to false. Fixed spacing too.
        (WebCore::RenderLayer::updateScrollInfoAfterLayout): Place guard 
        around layout calls in overflow:auto case.
        * rendering/render_layer.h: Add m_inOverflowRelayout.

2006-03-14  Darin Adler  <darin@apple.com>

        Reviewed by Geoff and Eric.

        - fix <http://bugs.webkit.org/show_bug.cgi?id=7765>, <rdar://problem/4474884>
          hasAttribute always returns false for uppercase attribute names like "STYLE"
        - re-add missing JavaScript binding for getAttributeNS
        - fixed handling of null namespace parameters in getAttributeNS and friends

        Test: fast/dom/Element/attribute-uppercase.html

        To match Gecko's behavior, the magic "lowercasing" of all attribute names
        is only done when calling DOM Level 1 functions that lack an NS suffix.
        The functions with an NS suffix are case sensitive, even in HTML documents.

        * dom/NamedNodeMapImpl.h: Changed getNamedItem and removeNamedItem to be pure virtual
        functions instead of calling through to getNamedItemNS and removeNamedItemNS.

        * dom/dom_elementimpl.h: Eliminated inline versions of non-NS functions that called
        the NS functions. They can't work that way any more since the lowercasing behavior
        is different.
        * dom/dom_elementimpl.cpp:
        (WebCore::ElementImpl::getAttribute): Added. Lowercases the name if the document
        is an HTML document, and then calls through to the qualified name version. Removed
        the null check since getDocument is guaranteed to never return 0 now that nodes
        hold a reference to their document.
        (WebCore::ElementImpl::getAttributeNS): Removed the lowercasing code.
        (WebCore::ElementImpl::setAttribute): More of the same.
        (WebCore::ElementImpl::setAttributeNS): Ditto.
        (WebCore::ElementImpl::removeAttribute): Ditto.
        (WebCore::ElementImpl::removeAttributeNS): Ditto.
        (WebCore::ElementImpl::getAttributeNode): Ditto.
        (WebCore::ElementImpl::getAttributeNodeNS): Ditto.
        (WebCore::ElementImpl::hasAttribute): Ditto.
        (WebCore::ElementImpl::hasAttributeNS): Ditto.
        (WebCore::NamedAttrMapImpl::getNamedItem): Ditto.
        (WebCore::NamedAttrMapImpl::getNamedItemNS): Ditto.
        (WebCore::NamedAttrMapImpl::removeNamedItem): Ditto.
        (WebCore::NamedAttrMapImpl::removeNamedItemNS): Ditto.
        (WebCore::StyledElementImpl::parseMappedAttribute): Removed another unneeded null
        check like the one mentioned above.

        * dom/Element.idl: Set ConvertNullToNullString for all the namespaceURI
        parameters, since we don't want null to turn into "null". Added a semicolon
        to the end of the hasAttributeNS line -- was causing the next declaration to
        be eaten up (so getAttributeNS was completely broken).

        * khtml/ecma/kjs_dom.cpp: (KJS::DOMNamedNodeMapProtoFunc::callAsFunction):
        Call valueToStringWithNullCheck to do the equivalent of ConvertNullToNullString
        for both getNamedItemNS and removeNamedItemNS.

        * bindings/js/JSDOMCore.cpp: Touched so that the changes above will take effect.

2006-03-14  David Hyatt  <hyatt@apple.com>

        Fix for bug 7259, opacity performs badly.

        Reviewed by mjs

        Adding some tests in fast/opacity.

        * rendering/RenderTableRow.h:
        (WebCore::RenderTableRow::requiresLayer):
        * rendering/render_layer.cpp:
        (WebCore::transparencyClipBox):
        (WebCore::RenderLayer::beginTransparencyLayers):
        (WebCore::RenderLayer::paintLayer):
        (WebCore::RenderLayer::intersectsDamageRect):
        (WebCore::RenderLayer::absoluteBoundingBox):
        * rendering/render_layer.h:
        (WebCore::RenderLayer::root):

2006-03-14  Eric Seidel  <eseidel@apple.com>

        Reviewed by mjs.

        Fix Gif crasher.

        * platform/image-decoders/gif/GIFImageReader.cpp:
        (GIFImageReader::do_lzw): Initialize array after new.

2006-03-14  Eric Seidel  <eseidel@apple.com>

        Reviewed by mjs.

        Make MouseEvents aware of current scroll position.

        * platform/win/ScrollViewWin.cpp:
        (WebCore::ScrollView::viewportToContents):
        (WebCore::ScrollView::contentsToViewport):

2006-03-13  Eric Seidel  <eseidel@apple.com>

        Reviewed by mjs.

        Fix mouse events to be window-relative.

        * platform/win/MouseEventWin.cpp:
        (WebCore::positionForEvent):
        (WebCore::globalPositionForEvent):
        (WebCore::MouseEvent::MouseEvent):

2006-03-13  Eric Seidel  <eseidel@apple.com>

        Reviewed by mjs.

        Close DeviceContext leaks in Font code.
        Also add moveCursor stub to make maps.google.com not crash.

        * platform/win/FontWin.cpp:
        (WebCore::getFontData):
        (WebCore::Font::floatWidth):
        (WebCore::Font::drawText):
        * platform/win/TemporaryLinkStubs.cpp:
        (Cursor::Cursor):
        (WebCore::moveCursor):

2006-03-13  Eric Seidel  <eseidel@apple.com>

        Reviewed by ggaren & TimH.

        <rdar://problem/4473288> XSL file containing <xsl:include href="../Styles/EscapeString.xsl" /> fails to load file
        XML_DTD_NODE objects in the tree were causing loadChildSheets to 
        fail to preload child stylesheets, this patch causes us to 
        correctly ignore all nodes besides the first XML_ELEMENT_NODE at 
        the root level when searching the tree for xsl:include statements 
        to pre-load.

        Test: fast/xsl/xslt-second-level-import.xml

        * khtml/xsl/xsl_stylesheetimpl.cpp:
        (WebCore::XSLStyleSheetImpl::loadChildSheets):

2006-03-10  Rob Buis  <buis@kde.org>

        Reviewed by darin.  Landed by eseidel.

        Fix for http://bugs.webkit.org/show_bug.cgi?id=7666:
        dasharray on rounded rectangles is broken

        Make sure the rounded rectangle is drawn clockwise, as outlined
        in the specification.

        Test: svg/custom/dashArrayOrigin.svg

        * kcanvas/KCanvasCreator.cpp:
        (WebCore::KCanvasCreator::createRoundedRectangle):

2006-03-12  Mitz Pettel  <opendarwin.org@mitzpettel.com>

        Reviewed by Maciej, landed by ap.

        - fix http://bugs.webkit.org/show_bug.cgi?id=5923
          REGRESSION: scrolling on Google maps continues after the mouse is 
          released outside the window

        Test: fast/events/drag-outside-window.html

        * rendering/render_layer.cpp:
        (WebCore::RenderLayer::containsPoint): Always return true for the root
        object to ensure that mouse events occurring outside the window target
        the document.

2006-03-12  Alexey Proskuryakov  <ap@nypop.com>

        Reviewed by Maciej.

        - Fix for http://bugs.webkit.org/show_bug.cgi?id=7735
        REGRESSION: crash on importing bookmarks

        No test - only reproducible when Safari imports the bookmarks.

        * dom/EventNames.cpp:
        (WebCore::EventNames::init): Initialize AtomicString before using it.
        * dom/QualifiedName.cpp:
        (WebCore::QualifiedName::init): Ditto.
        * khtml/html/htmlnames.cpp:
        (WebCore::HTMLNames::init): Ditto.
        * ksvg2/scripts/make_names.pl: Ditto.

2006-03-12  David Kilzer  <ddkilzer@kilzer.net>

        Reviewed by Darin, landed by ap.

        - Fix for http://bugs.webkit.org/show_bug.cgi?id=7724
        Minor refactoring to HTMLParser::handleError() to remove duplicate code

        Test: fast/invalid/missing-address-end-tag.html
        Test: fast/invalid/missing-dl-end-tag.html
        Test: fast/invalid/missing-dt-end-tag.html
        Test: fast/invalid/missing-font-end-tag.html

        * khtml/html/htmlparser.cpp:
        (WebCore::HTMLParser::handleError): Refactored code.

2006-03-10  Darin Adler  <darin@apple.com>

        - fix Windows build

        * bridge/win/FrameWin.h: Removed declaration of generateFrameName.

2006-03-10  Darin Adler  <darin@apple.com>

        Reviewed by Adele.

        - removed some unused stuff from Frame and MacFrame

        * page/Frame.h: Removed autoloadImages (the setter), enableMetaRefresh,
        setCharset, backgroundURL, findTextBegin, findTextNext, preloadStyleSheet,
        preloadScript, restored, onURL, selectionChanged, htmlError, openFile,
        updateActions, openURLInFrame, overURL, checkLinkSecurity, and cacheId.
        * page/FramePrivate.h: Removed m_restored, m_frameNameId, m_strSelectedURL,
        m_strSelectedURLTarget, m_bDnd, m_bClearing, m_bSecurityInQuestion,
        m_focusNodeRestored, m_focusNodeNumber, and m_newJSInterpreterExists.
        * page/Frame.cpp:
        (WebCore::Frame::didOpenURL): Removed use of m_restored, code to set
        m_bClearing.
        (WebCore::Frame::clear): Removed code to set m_bClearing and m_frameNameId.
        (WebCore::Frame::khtmlMousePressEvent): Removed code to set m_strSelectedURL
        and m_strSelectedURLTarget.

        * bridge/mac/MacFrame.h: Removed scheduleHistoryNavigation and
        requestedURLString.
        * bridge/mac/MacFrame.mm:
        (WebCore::MacFrame::openURLFromPageCache): Removed use of m_restored.
        Removed unused requestedURLString.

        * bridge/mac/WebCoreFrameBridge.h: Removed requestedURLString.

2006-03-10  Darin Adler  <darin@apple.com>

        - fix Windows build

        * page/FrameTree.cpp: Add include of <stdarg.h>.

2006-03-10  Darin Adler  <darin@apple.com>

        Reviewed by Geoff.

        - fix http://bugs.webkit.org/show_bug.cgi?id=3308
          Pop-up blocking blocks window.open for already open windows

        - fix http://bugs.webkit.org/show_bug.cgi?id=7422
          Setting a frame name to the same value resets it to a generated one

        - refactor frame-name-related functions into the FrameTree object

        * WebCore.xcodeproj/project.pbxproj: Update for rename.
        * bridge/mac/MacFrame.h: Remove generateFrameName.
        * bridge/mac/MacFrame.mm: Ditto.
        * bridge/mac/PageMac.h: Added a declaration for WebCorePageBridge.

        * bridge/mac/WebCoreFrameBridge.h: Remove _frameNamespace, generateFrameName,
        setFrameNamespace, frameNamespace.
        * bridge/mac/WebCoreFrameBridge.mm:
        (-[WebCoreFrameBridge childFrameNamed:]): Change to call the new child
        function on the FrameTree.
        (-[WebCoreFrameBridge findFrameNamed:]): Change to call the new find
        function on the FrameTree.
        (-[WebCoreFrameBridge RenderObject::nodeInfoAtPoint:]): Change since the
        contentPart function has been renamed to contentFrame.

        * bridge/mac/WebCoreFrameNamespaces.h: Removed everything except for the
        one method still used on the WebKit side, framesInNamespace:.
        * bridge/mac/WebCoreFrameNamespaces.m: Renamed.
        * bridge/mac/WebCoreFrameNamespaces.mm: Added. Reimplemented the
        framesInNamespace method to use the namespace in WebCore::Page.

        * bridge/mac/WebCorePageBridge.h: Added setGroupName and groupName.
        * bridge/mac/WebCorePageBridge.mm:
        (-[WebCorePageBridge setGroupName:]): Added. Calls through to Page.
        (-[WebCorePageBridge groupName]): Ditto.

        * khtml/ecma/kjs_html.cpp:
        (KJS::HTMLDocument::namedItemGetter): Changed to call contentFrame by its new name.
        (KJS::HTMLElement::frameGetter): Ditto.
        (KJS::HTMLElement::iFrameGetter): Ditto.

        * khtml/ecma/kjs_window.cpp:
        (KJS::Window::getValueProperty): Changed to call FrameTree::childCount
        instead of Frame::frames.
        (KJS::Window::childFrameGetter): Changed to call FrameTree::child
        instead of Frame::childFrameNamed.
        (KJS::Window::namedFrameGetter): Changed to call FrameTree::find
        instead of Frame::findFrame.
        (KJS::Window::indexGetter): Changed to call FrameTree::child
        instead of Frame::frames.
        (KJS::Window::getOwnPropertySlot): Changed to call FrameTree::child,
        FrameTree::find, and FrameTree::childCount instead of Frame::childFrameNamed,
        and Frame::findFrame, and Frame::frames.
        (KJS::WindowFunc::callAsFunction): Call FrameTree::find to check if the window
        is already open when considering whether to block a pop-up.
        (KJS::FrameArray::getValueProperty): Changed to call FrameTree::childCount
        instead of Frame::frames.
        (KJS::FrameArray::indexGetter): Changed to call FrameTree::child
        instead of Frame::frames.
        (KJS::FrameArray::nameGetter): Changed to call FrameTree::child
        instead of Frame::findFrame.
        (KJS::FrameArray::getOwnPropertySlot): Changed to call FrameTree::child,
        and FrameTree::childCount instead of Frame::findFrame and Frame::frames.

        * khtml/html/html_baseimpl.h:
        * khtml/html/html_baseimpl.cpp:
        (WebCore::HTMLFrameElementImpl::isURLAllowed): Changed to call Page::frameCount
        instead of Frame::topLevelFrameCount.
        (WebCore::HTMLFrameElementImpl::openURL): Changed to call FrameTree::child
        instead of Frame::findFrame.
        (WebCore::HTMLFrameElementImpl::attach): Changed to call Page::incrementFrameCount
        instead of Frame::incrementFrameCount. Changed to call FrameTree::uniqueChildName
        instead of Frame::requestFrameName.
        (WebCore::HTMLFrameElementImpl::close): Changed to call Page::decrementFrameCount
        instead of Frame::decrementFrameCount. Changed to call FrameTree::child
        instead of Frame::findFrame.
        (WebCore::HTMLFrameElementImpl::contentFrame): Renamed from contentPart. Also
        changed to call FrameTree::child instead of Frame::findFrame.
        (WebCore::HTMLFrameElementImpl::contentDocument): Updated for name change of
        contentFrame from contentPart.
        (WebCore::HTMLIFrameElementImpl::attach): Changed to call Page::incrementFrameCount
        instead of Frame::incrementFrameCount. Changed to call FrameTree::uniqueChildName
        instead of Frame::requestFrameName.

        * rendering/render_frames.cpp: (WebCore::isURLAllowed): Changed to call Page::frameCount
        instead of Frame::topLevelFrameCount.

        * page/Frame.h: Removed frameNames, frames, childFrameNamed, findFrame, currentFrame,
        frameExists, incrementFrameCount, decrementFrameCount, topLevelFrameCount,
        generateFrameName, and requestFrameName functions.
        * page/Frame.cpp: (WebCore::Frame::requestFrame): Changed to use FrameTree::child
        instead of Frame::childFrameNamed.

        * page/FrameTree.h: Changed name to an atomic string. Changed childCount to unsigned.
        Added isDescendantOf, traverseNext, child, find, uniqueChildName.
        * page/FrameTree.cpp:
        (WebCore::FrameTree::setName): Changed to call uniqueChildName to handle name
        duplication logic.
        (WebCore::FrameTree::uniqueChildName): Added. Checks for duplication and generates
        an appropriate frame name if there is a duplicate.
        (WebCore::FrameTree::child): Added.
        (WebCore::FrameTree::find): Added.
        (WebCore::FrameTree::isDescendantOf): Added.
        (WebCore::FrameTree::traverseNext): Added.

        * page/Page.h: Added setGroupName, groupName, frameNamespace, incrementFrameCount,
        decrementFrameCount, and frameCount.
        * page/Page.cpp:
        (WebCore::Page::Page): Initialize m_frameCount to 0.
        (WebCore::Page::~Page): Call setGroupName to remove the page from any group it's in.
        (WebCore::Page::setGroupName): Added.
        (WebCore::Page::frameNamespace): Added.

        * platform/win/TemporaryLinkStubs.cpp: Removed FrameWin::generateFrameName.

2006-03-10  Justin Garcia  <justin.garcia@apple.com>
        
        Reviewed by darin, harrison
        
        ~3x speedup pasting plain text from the console

        * dom/dom_position.cpp:
        (WebCore::Position::next): 
        (WebCore::Position::atEnd): 

2006-03-10  David Hyatt <hyatt@apple.com>

        More refactoring.  Split the FontData into cross-platform and
        platform-specific components.

        Reviewed by eric

        * WebCore.vcproj/WebCore/WebCore.vcproj:
        * platform/FontData.h: Added.
        (WebCore::FontData:::m_platformData):
        (WebCore::FontData::platformData):
        (WebCore::FontData::setMetrics):
        (WebCore::FontData::ascent):
        (WebCore::FontData::descent):
        (WebCore::FontData::xHeight):
        (WebCore::FontData::lineSpacing):
        * platform/FontPlatformData.h: Added.
        (WebCore::FontPlatformData::hfont):
        (WebCore::FontPlatformData::scaledFont):
        * platform/win/FontPlatformDataWin.cpp: Added.
        (WebCore::FontPlatformData::FontPlatformData):
        (WebCore::FontPlatformData::~FontPlatformData):
        * platform/win/FontWin.cpp:
        (WebCore::Font::floatWidth):
        (WebCore::Font::drawText):

2006-03-10  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by Eric.

        - fix win32 networking to properly use async load API

        * platform/win/TransferJobWin.cpp:
        (WebCore::TransferJobWndProc):
        (WebCore::TransferJob::start):

2006-03-10  Eric Seidel  <eseidel@apple.com>

        Fix build.

        * platform/win/FontWin.cpp:
        (WebCore::getFontData):
        * platform/win/TemporaryLinkStubs.cpp:

2006-03-10  Adele Peterson  <adele@apple.com>

        Reviewed by Tim Hatcher.

        - fix for <rdar://problem/4469419> 
        REGRESSION: RadioButtons are not checked in Safari when name attribute comes after checked attribute

        Test: fast/forms/radio-attr-order.html

        * khtml/html/HTMLInputElementImpl.cpp: (WebCore::HTMLInputElementImpl::parseMappedAttribute):
        When the name attribute gets parsed for radio buttons, if its supposed to be checked by default, call setChecked.
        Also, when the name changes on a checked button, we don't need to check that 
        there's a form before removing it as the checked button for that group.  
        That was an old check from when we required a form to keep track of checked buttons.

2006-03-10  Eric Seidel  <eseidel@apple.com>

        Reviewed by darin.

        Add real ScrollViewWin implementation (fixes redraw bugs, adds ScrollBar support.)

        * platform/ScrollView.h:
        * platform/Widget.h:
        * platform/win/FontWin.cpp:
        (WebCore::getCairoFont): Fix crasher.
        * platform/win/ScrollViewWin.cpp:
        (WebCore::ScrollView::ScrollViewPrivate::ScrollViewPrivate):
        (WebCore::ScrollView::ScrollView):
        (WebCore::ScrollView::~ScrollView):
        (WebCore::ScrollView::updateContents):
        (WebCore::ScrollView::visibleWidth):
        (WebCore::ScrollView::visibleHeight):
        (WebCore::ScrollView::setContentsPos):
        (WebCore::ScrollView::resizeContents):
        (WebCore::ScrollView::contentsX):
        (WebCore::ScrollView::contentsY):
        (WebCore::ScrollView::contentsWidth):
        (WebCore::ScrollView::contentsHeight):
        (WebCore::ScrollView::viewportToContents):
        (WebCore::ScrollView::contentsToViewport):
        (WebCore::ScrollView::scrollXOffset):
        (WebCore::ScrollView::scrollYOffset):
        (WebCore::ScrollView::scrollBy):
        (WebCore::ScrollView::hScrollBarMode):
        (WebCore::ScrollView::vScrollBarMode):
        (WebCore::ScrollView::suppressScrollBars):
        (WebCore::ScrollView::setHScrollBarMode):
        (WebCore::ScrollView::setVScrollBarMode):
        (WebCore::ScrollView::setScrollBarsMode):
        (WebCore::ScrollView::setStaticBackground):
        (WebCore::ScrollView::updateScrollInfo):
        (WebCore::ScrollView::updateScrollBars):
        * platform/win/TemporaryLinkStubs.cpp:
        (BrowserExtensionWin::goBackOrForward):
        (BrowserExtensionWin::setIconURL):
        (ScrollView::scrollPointRecursively):
        * platform/win/WidgetWin.cpp:
        (WebCore::Widget::windowHandle): mark as const

2006-03-10  David Hyatt  <hyatt@apple.com>

        Rename the m_renderer variable to m_dataSet now that the class name
        has changed.

        Reviewed by adele

        * platform/Font.cpp:
        (WebCore::m_wordSpacing):
        (WebCore::Font::Font):
        (WebCore::Font::operator=):
        (WebCore::Font::update):
        * platform/Font.h:
        * platform/FontDataSet.h:
        * platform/mac/FontMac.mm:
        (WebCore::Font::getWebCoreFont):
        (WebCore::Font::ascent):
        (WebCore::Font::descent):
        (WebCore::Font::lineSpacing):
        (WebCore::Font::xHeight):
        (WebCore::Font::isFixedPitch):
        (WebCore::Font::selectionRectForText):
        (WebCore::Font::drawText):
        (WebCore::Font::drawHighlightForText):
        (WebCore::Font::drawLineForText):
        (WebCore::Font::drawLineForMisspelling):
        (WebCore::Font::misspellingLineThickness):
        (WebCore::Font::floatWidth):
        (WebCore::Font::checkSelectionPoint):
        * platform/win/FontWin.cpp:
        (WebCore::FontData::FontData):
        (WebCore::FontData::~FontData):
        (WebCore::getFontData):
        (WebCore::FontDataSet::primaryFont):
        (WebCore::Font::floatWidth):
        (WebCore::Font::ascent):
        (WebCore::Font::descent):
        (WebCore::Font::xHeight):
        (WebCore::Font::lineSpacing):
        (WebCore::Font::isFixedPitch):
        (WebCore::Font::drawText):

2006-03-10  David Hyatt  <hyatt@apple.com>

        Rename FontRenderer to FontDataSet.

        Reviewed by adele

        * WebCore.xcodeproj/project.pbxproj:
        * platform/Font.cpp:
        (WebCore::Font::update):
        * platform/Font.h:
        * platform/FontDataSet.h: Added.
        * platform/FontRenderer.h: Removed.
        * platform/mac/FontMac.mm:
        (WebCore::FontDataSet::~FontDataSet):
        (WebCore::FontDataSet::getWebCoreFont):
        (WebCore::FontDataSet::getRenderer):
        (WebCore::FontDataSet::determinePitch):
        (WebCore::FontDataSet::invalidate):
        * platform/win/FontWin.cpp:
        (WebCore::getCairoFont):
        (WebCore::FontDataSet::~FontDataSet):
        (WebCore::FontDataSet::determinePitch):
        (WebCore::FontDataSet::invalidate):
        (WebCore::FontDataSet::primaryCairoFont):

2006-03-09  Justin Garcia  <justin.garcia@apple.com>

        Reviewed by adele
        
        <http://bugs.webkit.org/show_bug.cgi?id=7692>
        Should use an iterator in CompositeEditCommand::doUnapply()
        
        ~30% speedup of a big undo

        * editing/CompositeEditCommand.cpp:
        (WebCore::CompositeEditCommand::doUnapply):
        (WebCore::CompositeEditCommand::doReapply):

2006-03-09  Adele Peterson  <adele@apple.com>

        Reviewed by Tim O.

        Removed unnecessary alerts in TextIterator advance methods.  
        We want to be able to use advance() even if the iterator is already at the end.

        * editing/visible_text.cpp:
        (khtml::TextIterator::advance): remove assert since TextIterator will just do nothing if its already at the end.
        (khtml::CharacterIterator::advance): ditto.
        * rendering/RenderTextField.cpp: (WebCore::RenderTextField::visiblePositionForIndex):
        Since the asserts in the iterator are removed, we don't have to check for it.atEnd() before calling advance.

2006-03-09  David Hyatt <hyatt@apple.com>

        Make text paint with the correct foreground color on Windows.
        Make the face validation check case insensitive.
        Force ClearType to be on for font rendering.

        Reviewed by Tim Hatcher

        * platform/win/FontWin.cpp:
        (WebCore::getCairoFont):
        (WebCore::Font::drawText):

2006-03-09  Adele Peterson  <adele@apple.com>

        Reviewed by Hyatt.

        - Fix for http://bugs.webkit.org/show_bug.cgi?id=7675
        When new text fields change from visibility:hidden to visibility:visible, value doesn't display

        Test: fast/forms/input-appearance-visibility.html

        * rendering/RenderTextField.cpp: (WebCore::RenderTextField::setStyle):
        Sets the style directly on the children of the inner div.

2006-03-09  David Hyatt <hyatt@apple.com>

        Make basic text rendering work on Win32.

        Reviewed by eric

        * WebCore.vcproj/WebCore/WebCore.vcproj:
        Add FontDescription.h to the Visual Studio project.

        * bridge/win/FrameWin.cpp:
        (WebCore::FrameWin::FrameWin):
        Add some good default font settings to KHTMLSettings.

        * platform/Font.cpp:
        (WebCore::Font::update):
        Renamed the FontRenderer method to invalidate, so that's what
        update calls now.

        * platform/FontRenderer.h:
        * platform/mac/FontMac.mm:
        (WebCore::FontRenderer::~FontRenderer):
        (WebCore::FontRenderer::invalidate):
        Rename the update method to invalidate.  Make sure the Mac
        font renderer releases its resources when it gets destroyed.

        * platform/win/FontWin.cpp:
        (WebCore::CairoFont::CairoFont):
        (WebCore::CairoFont::~CairoFont):
        (WebCore::CairoFont::hfont):
        (WebCore::CairoFont::scaledFont):
        (WebCore::CairoFont::setMetrics):
        (WebCore::CairoFont::ascent):
        (WebCore::CairoFont::descent):
        (WebCore::CairoFont::xHeight):
        (WebCore::CairoFont::lineSpacing):
        Implement a new class called CairoFont that encapsulates
        the windows HFONT, the cairo font face, and the cairo scaled
        font.

        (WebCore::getCairoFont):
        The method to look up a Cairo font.  This will eventually use
        a hash, but for now it just always makes the fonts over and
        over again.

        (WebCore:::m_pitch):
        (WebCore::FontRenderer::~FontRenderer):
        (WebCore::FontRenderer::determinePitch):
        (WebCore::FontRenderer::invalidate):
        More of the FontRenderer plumbing.

        (WebCore::FontRenderer::primaryCairoFont):
        Returns the primary Cairo font for a family list.  This is basically
        the first family that is present on the system.

        (WebCore::Font::floatWidth):
        The width method uses GetTextExtentPoint32W for now.  This
        is totally wrong and will eventually be replaced by Cairo
        code.

        (WebCore::Font::ascent):
        (WebCore::Font::descent):
        (WebCore::Font::xHeight):
        (WebCore::Font::lineSpacing):
        (WebCore::Font::isFixedPitch):
        Accessors for the metrics and pitch info.

        (WebCore::Font::drawText):
        Drawing of text.  Uses TextOut and is also basically throwaway
        code.

        * platform/win/TemporaryLinkStubs.cpp:
        (Font::checkSelectionPoint):
        Move the checkSelectionPoint method back to the link stubs.

2006-03-09  Justin Garcia  <justin.garcia@apple.com>

        Reviewed by harrison
    
        Fixed formatting and changed functions to take in 
        a const Selection& instead of a Selection.

        * editing/ModifySelectionListLevelCommand.cpp:
        (WebCore::ModifySelectionListLevelCommand::canIncreaseSelectionListLevel):
        (WebCore::ModifySelectionListLevelCommand::canDecreaseSelectionListLevel):
        (WebCore::ModifySelectionListLevelCommand::increaseSelectionListLevel):
        (WebCore::ModifySelectionListLevelCommand::decreaseSelectionListLevel):
        (WebCore::modifySelectionListLevel):
        (WebCore::getStartEndListChildren):
        (WebCore::canIncreaseListLevel):
        (WebCore::canDecreaseListLevel):
        (WebCore::ModifySelectionListLevelCommand::increaseListLevel):
        (WebCore::ModifySelectionListLevelCommand::decreaseListLevel):
        * editing/ModifySelectionListLevelCommand.h:

2006-03-09  Adele Peterson  <adele@apple.com>

        Reviewed by Darin.

        - Fix for http://bugs.webkit.org/show_bug.cgi?id=6814
        Implement selection methods for RenderTextField

        Test: fast/forms/input-appearance-selection.html

        * rendering/RenderTextField.cpp:
        (WebCore::RenderTextField::createDivStyle): removed extra space.
        (WebCore::RenderTextField::select): Removed checks for document and m_div since there should always be a document and 
         m_div will be initialized as the renderer gets attached.
        (WebCore::RenderTextField::selectionStart): Calls indexForVisiblePosition.
        (WebCore::RenderTextField::selectionEnd): ditto.
        (WebCore::RenderTextField::setSelectionStart): calls setSelectionRange.
        (WebCore::RenderTextField::setSelectionEnd): ditto.
        (WebCore::RenderTextField::setSelectionRange): gets VisiblePositions for both indices, and sets the selection.
        (WebCore::RenderTextField::visiblePositionForIndex): Added helper method.
        (WebCore::RenderTextField::indexForVisiblePosition): Added helper method.
        * rendering/RenderTextField.h: Added new helper methods for selection.

2006-03-09  David Carson  <dacarson@gmail.com>

        Test: fast/canvas/fillrect_gradient.html

        Reviewed by Darin.

        - fix http://bugs.webkit.org/show_bug.cgi?id=6103
          Rectangles are not filled according to the Web Applications Working Draft

        * khtml/ecma/kjs_html.cpp: (KJS::Context2DFunction::callAsFunction):
        Modified fillrect function to check and use a gradient if set.
        Builds a path to fill rects with a gradient.

2006-03-09  Mitz Pettel  <opendarwin.org@mitzpettel.com>

        No test because this fixes an existing pixel test (and does not affect
        the render tree).

        Reviewed by Maciej.

        - fix http://bugs.webkit.org/show_bug.cgi?id=7664
          REGRESSION: tests that include numeric list markers fail in pixel mode

        * platform/GraphicsContext.cpp:
        (WebCore::GraphicsContext::drawText): Restored AlignRight behavior.

2006-03-09  Mitz Pettel  <opendarwin.org@mitzpettel.com>

        No test because we couldn't figure out how to write one.

        Reviewed by Darin.

        - fix http://bugs.webkit.org/show_bug.cgi?id=7680
          REGRESSION: Ellipsis painted over the chrome and in invalid contexts

        * rendering/render_line.cpp:
        (WebCore::EllipsisBox::paint): Replaced call to Font::drawText with
        GraphicsContext::drawText, which checks the paintingDisabled flag.

2006-03-09  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by Eric.

        - make link clicks work by propagating them up to a client

        * Viewer/ImageView.cpp:
        * bridge/win/FrameWin.cpp:
        * bridge/win/FrameWin.h:
        * platform/win/TemporaryLinkStubs.cpp:
        (FrameWin::incomingReferrer):

2006-03-09  Eric Seidel  <eseidel@apple.com>

        Reviewed by mjs.

        Add support for Timers under 10ms.
        Fix random crashers due to multi-threaded loading.

        * platform/TransferJob.h:
        * platform/TransferJobInternal.h:
        (WebCore::TransferJobInternal::TransferJobInternal):
        * platform/Widget.h:
        * platform/win/SharedTimerWin.cpp:
        (WebCore::TimerWindowWndProc):
        (WebCore::initializeOffScreenTimerWindow):
        (WebCore::setSharedTimerFireTime):
        * platform/win/TemporaryLinkStubs.cpp:
        (WebCore::TransferJob::assembleResponseHeaders):
        (WebCore::TransferJob::retrieveCharset):
        * platform/win/TransferJobWin.cpp:
        (WebCore::addToOutstandingJobs):
        (WebCore::removeFromOutstandingJobs):
        (WebCore::lookupTransferJob):
        (WebCore::TransferJobWndProc):
        (WebCore::initializeOffScreenTransferJobWindow):
        (WebCore::TransferJob::~TransferJob):
        (WebCore::transferJobStatusCallback):
        (WebCore::TransferJob::start):
        (WebCore::TransferJob::cancel):
        * platform/win/WidgetWin.cpp:

2006-03-08  Justin Garcia  <justin.garcia@apple.com>

        Reviewed by darin
        
        <http://bugs.webkit.org/show_bug.cgi?id=7579>
        TinyMCE: Implement execCommand(insertImage, ...)
        
        Implemented InsertImage and also changed paste to use a single 
        rule for when to remove junk that remains after node removal. 

        * editing/ReplaceSelectionCommand.cpp:
        (WebCore::ReplaceSelectionCommand::removeNodeAndPruneAncestors):
        (WebCore::ReplaceSelectionCommand::doApply):
        (WebCore::ReplaceSelectionCommand::removeLinePlaceholderIfNeeded):
        * editing/ReplaceSelectionCommand.h:
        * editing/htmlediting.cpp:
        * editing/jsediting.cpp:

2006-03-08  Eric Seidel  <eseidel@apple.com>

        Reviewed by hyatt.

        Fix build script to properly copy dll files.

        * WebCore.vcproj/WebCore/build-generated-files.sh:

2006-03-08  Rob Buis  <buis@kde.org>

        Reviewed by eseidel.

        Fix for http://bugs.webkit.org/show_bug.cgi?id=6899 SVG <rect> does not respect display: none

        For svg elements that can render, call StyledElementImpl::rendererIsNeeded
        to decide whether the element should render. In particular this way
        any setting of display="none" is handled.

        * ksvg2/svg/SVGAElementImpl.h:
        (WebCore::SVGAElementImpl::rendererIsNeeded):
        * ksvg2/svg/SVGCircleElementImpl.h:
        (WebCore::SVGCircleElementImpl::rendererIsNeeded):
        * ksvg2/svg/SVGEllipseElementImpl.h:
        (WebCore::SVGEllipseElementImpl::rendererIsNeeded):
        * ksvg2/svg/SVGForeignObjectElementImpl.h:
        (WebCore::SVGForeignObjectElementImpl::rendererIsNeeded):
        * ksvg2/svg/SVGGElementImpl.h:
        (WebCore::SVGGElementImpl::rendererIsNeeded):
        * ksvg2/svg/SVGImageElementImpl.h:
        (WebCore::SVGImageElementImpl::rendererIsNeeded):
        * ksvg2/svg/SVGLineElementImpl.h:
        (WebCore::SVGLineElementImpl::rendererIsNeeded):
        * ksvg2/svg/SVGMarkerElementImpl.h:
        (WebCore::SVGMarkerElementImpl::rendererIsNeeded):
        * ksvg2/svg/SVGMaskElementImpl.h:
        (WebCore::SVGMaskElementImpl::rendererIsNeeded):
        * ksvg2/svg/SVGPathElementImpl.h:
        (WebCore::SVGPathElementImpl::rendererIsNeeded):
        * ksvg2/svg/SVGPatternElementImpl.h:
        (WebCore::SVGPatternElementImpl::rendererIsNeeded):
        * ksvg2/svg/SVGPolyElementImpl.h:
        (WebCore::SVGPolyElementImpl::rendererIsNeeded):
        * ksvg2/svg/SVGRectElementImpl.h:
        (WebCore::SVGRectElementImpl::rendererIsNeeded):
        * ksvg2/svg/SVGSVGElementImpl.h:
        (WebCore::SVGSVGElementImpl::rendererIsNeeded):
        * ksvg2/svg/SVGSwitchElementImpl.h:
        (WebCore::SVGSwitchElementImpl::rendererIsNeeded):
        * ksvg2/svg/SVGTSpanElementImpl.h:
        (WebCore::SVGTSpanElementImpl::rendererIsNeeded):
        * ksvg2/svg/SVGTextElementImpl.h:
        (WebCore::SVGTextElementImpl::rendererIsNeeded):
        * ksvg2/svg/SVGUseElementImpl.h:
        (WebCore::SVGUseElementImpl::rendererIsNeeded):

2006-03-08  Eric Seidel  <eseidel@apple.com>

        Reviewed by mjs.

        Add stubs to allow JavaScript-enabled WebCore to not crash.
        Add ScreenWin implementation.
        Add alert() support.

        * WebCore.vcproj/WebCore/WebCore.vcproj:
        * bridge/win/FrameWin.cpp:
        (WebCore::FrameWin::runJavaScriptAlert):
        (WebCore::FrameWin::runJavaScriptConfirm):
        * platform/win/ScreenWin.cpp: Added.
        (WebCore::monitorInfoForWidget):
        (WebCore::WebCore::screenRect):
        (WebCore::WebCore::screenDepth):
        (WebCore::WebCore::usableScreenRect):
        * platform/win/TemporaryLinkStubs.cpp:
        (FrameWin::canUndo):
        (FrameWin::runJavaScriptPrompt):
        (FrameWin::canPaste):
        (WebCore::setCookies):
        (WebCore::cookies):
        (WebCore::cookiesEnabled):
        (PlugInInfoStore::createPluginInfoForPluginAtIndex):
        (PlugInInfoStore::pluginCount):
        (WebCore::refreshPlugins):
        (FrameWin::clearUndoRedoOperations):
        (FrameWin::incomingReferrer):

2006-03-08  Darin Adler  <darin@apple.com>

        Reviewed by Maciej.

        - fix another instance of the bug I just fixed in the Macintosh-specific code path

        * platform/image-decoders/gif/GIFImageReader.h: Remove not-so-useful 100ms constant.
        * platform/image-decoders/gif/GIFImageReader.cpp: (GIFImageReader::read):
        Use the correct rule for minimum frame durations.

2006-03-08  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by Eric.

        - very rough implementation of networking in TransferJob for windows

        * platform/TransferJob.h:
        * platform/TransferJobInternal.h:
        (WebCore::TransferJobInternal::TransferJobInternal):
        * platform/win/TransferJobWin.cpp:
        (WebCore::transferJobStatusCallback):
        (WebCore::TransferJob::start):

2006-03-08  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by Darin.

        - fix win32 build

        * platform/win/FontWin.cpp:
        (WebCore::Font::drawText):
        (WebCore::Font::drawHighlightForText):
        * platform/win/TemporaryLinkStubs.cpp:
        (GraphicsContext::clearFocusRing):
        (GraphicsContext::selectedTextBackgroundColor):
        (Font::selectionRectForText):

2006-03-08  Darin Adler  <darin@apple.com>

        Reviewed by Maciej.

        - fix one more thing from http://bugs.webkit.org/show_bug.cgi?id=7528
          REGRESSION: GIF animation speeds are wrong on a page with many animated GIFs

        No layout test because I don't know how to test animated GIF speed.

        * platform/mac/ImageSourceMac.cpp: (WebCore::ImageSource::frameDurationAtIndex):
        Use the correct rule for minimum frame durations. It's a bit non-intuitive, so
        I made the comment more explicit. The old code in WebKit had this rule.

2006-03-08  David Hyatt  <hyatt@apple.com>

        Make GraphicsContext call into Font to draw all text and eliminate
        all knowledge of WebTextRenderers from it.

        Reviewed by darin

        * platform/Font.h:
        * platform/GraphicsContext.cpp:
        (WebCore::GraphicsContext::drawText):
        (WebCore::GraphicsContext::drawHighlightForText):
        (WebCore::GraphicsContext::drawLineForText):
        (WebCore::GraphicsContext::drawLineForMisspelling):
        (WebCore::GraphicsContext::misspellingLineThickness):
        * platform/GraphicsContext.h:
        (WebCore::GraphicsContext::platformContext):
        * platform/cairo/GraphicsContextCairo.cpp:
        (WebCore::GraphicsContext::platformContext):
        * platform/mac/FontMac.mm:
        (WebCore::Font::drawText):
        (WebCore::Font::drawHighlightForText):
        (WebCore::Font::drawLineForText):
        (WebCore::Font::drawLineForMisspelling):
        (WebCore::Font::misspellingLineThickness):
        * platform/mac/GraphicsContextMac.mm:
        * platform/win/FontWin.cpp:
        (WebCore::Font::drawText):
        * rendering/InlineTextBox.cpp:
        (WebCore::InlineTextBox::paint):
        (WebCore::InlineTextBox::paintSelection):
        (WebCore::InlineTextBox::paintMarkedTextBackground):
        (WebCore::InlineTextBox::paintTextMatchMarker):

2006-03-08  Darin Adler  <darin@apple.com>

        Reviewed by Hyatt.

        - fixed super-fast animation of many animated GIFs

        No layout test because I don't know how to test animated GIF speed.

        * platform/mac/ImageSourceMac.cpp: (WebCore::ImageSource::frameDurationAtIndex):
        Always take the minimum duration into account, even if there's some kind of failure
        getting the duration from the GIF.

2006-03-07  Darin Adler  <darin@apple.com>

        Reviewed by Anders.

        - fix http://bugs.webkit.org/show_bug.cgi?id=7655
          unwanted output while running layout tests

        * khtml/xsl/xsl_stylesheetimpl.cpp: (WebCore::XSLStyleSheetImpl::parseString):
        Pass XML_PARSE_NOERROR and XML_PARSE_NOWARNING. We don't want errors and warnings
        to be logged to stdout or stderr. If we later decide we want the error messages,
        then we should do the additional work to put them into the web page or the
        console (along with the JavaScript errors).

        * platform/ArrayImpl.cpp: (WebCore::ArrayImpl::resize): Add a preflight to protect
        against integer overflow due to large array size. Noticed this while looking into
        the malloc error message.

2006-03-07  Darin Adler  <darin@apple.com>

        Reviewed by Adele.

        - fix http://bugs.webkit.org/show_bug.cgi?id=7647
          Crash when typing into text contols

        I missed a couple places that were still saying KWQWidgetHolder
        in the change I landed late last night.

        * kwq/KWQTextArea.h:
        * kwq/KWQTextArea.mm:
        * kwq/KWQTextField.h:
        Changed them all to say WebCoreWidgetHolder.

2006-03-07  Eric Seidel  <eseidel@apple.com>

        Reviewed by hyatt.

        Fix cursor support on win32.

        * platform/win/WidgetWin.cpp:
        (WebCore::Widget::setCursor):

2006-03-07  Eric Seidel  <eseidel@apple.com>

        Reviewed by hyatt.

        Fix basic text support.

        * WebCore.vcproj/WebCore/WebCore.vcproj:
        * platform/cairo/GraphicsContextCairo.cpp:
        (WebCore::GraphicsContext::drawText):

2006-03-07  Dave Hyatt <hyatt@apple.com>

        Eliminate the unused parameters of the QString version of drawText.

        Reviewed by eric

        * platform/GraphicsContext.h:
        * platform/cairo/GraphicsContextCairo.cpp:
        (WebCore::GraphicsContext::drawText):
        * platform/mac/GraphicsContextMac.mm:
        (WebCore::GraphicsContext::drawText):
        * rendering/render_image.cpp:
        (WebCore::RenderImage::paint):
        * rendering/render_list.cpp:
        (WebCore::RenderListMarker::paint):

2006-03-07  Eric Seidel  <eseidel@apple.com>

        Reviewed by hyatt.

        Add very basic text support.
        Sort a few more stubs.

        * WebCore.vcproj/WebCore/WebCore.vcproj:
        * platform/cairo/GraphicsContextCairo.cpp:
        (WebCore::GraphicsContext::font):
        (WebCore::GraphicsContext::setFont):
        (WebCore::GraphicsContext::drawText):
        * platform/win/FontWin.cpp: Added.
        (WebCore::Font::drawText):
        * platform/win/TemporaryLinkStubs.cpp:
        (QComboBox::focusPolicy):
        (ScrollView::scrollXOffset):
        (Font::isFixedPitch):
        (Path::boundingRect):

2006-03-07  Adele Peterson  <adele@apple.com>

        Reviewed by Hyatt.

        - Fix for http://bugs.webkit.org/show_bug.cgi?id=7319
        Can't see caret at the end of a contenteditable div with overflow:hidden

        No tests added since I don't think the blinking caret will show up in our tests.

        * rendering/RenderBlock.cpp:
        (WebCore::RenderBlock::rightmostPosition): When calculating the rightmostPosition for editable blocks, 
        we need to account for the caret that can be drawn 1 px past the last child inline box.

2006-03-07  David Kilzer  <ddkilzer@kilzer.net>

        Reviewed by Darin.

        - Fix for http://bugs.webkit.org/show_bug.cgi?id=3905
        Missing </title> makes page blank

        Test: fast/js/exception-linenums-in-html-1.html
        Test: fast/js/exception-linenums-in-html-2.html
        Test: fast/js/missing-title-end-tag-js.html
        Test: fast/tokenizer/missing-title-end-tag-1.html
        Test: fast/tokenizer/missing-title-end-tag-2.html

        * khtml/html/htmlparser.cpp:
        (WebCore::HTMLParser::handleError): Add check for missing </title> tag and handle
        this condition if identified.
        * khtml/html/htmltokenizer.cpp:
        (WebCore::HTMLTokenizer::parseTag): If parseSpecial() consumes the rest of the
        document looking for a </title> tag, reset the state of the tokenizer and
        retokenize with no special handling for <title>.  The parser will handle the
        missing </title> tag in HTMLParser::handleError().
        * platform/SegmentedString.cpp:
        (WebCore::SegmentedString::SegmentedString): Added copy constructor.
        (WebCore::SegmentedString::operator=): Added assignment operator.  Previously the
        compiler was generating a default method for the assignment operator, but it did
        not handle m_currentChar properly.
        * platform/SegmentedString.h: Added prototypes for copy constructor and
        assignment operator.

2006-03-07  Eric Seidel  <eseidel@apple.com>

        Fix win32 link stubs.

        * platform/win/TemporaryLinkStubs.cpp:
        (WebCore::searchableIndexIntroduction):
        (WebCore::setCookies):
        (WebCore::cookies):
        (WebCore::cookiesEnabled):
        (WebCore::findNextSentenceFromIndex):
        (WebCore::findSentenceBoundary):
        (WebCore::findNextWordFromIndex):
        (WebCore::findWordBoundary):
        (WebCore::submitButtonDefaultLabel):
        (WebCore::inputElementAltText):
        (WebCore::resetButtonDefaultLabel):
        (WebCore::defaultLanguage):

2006-03-07  Darin Adler  <darin@apple.com>

        Reviewed by Adele, except for the first change listed.

        - fix recently-introduced bug that GuardMalloc found while I was debugging my other change

        * rendering/render_frames.cpp: (WebCore::RenderPart::~RenderPart):
        Set m_widget to 0 before calling deref so we don't end up trying to do unwanted work.

        - removed 10 more files from KWQ

        * ForwardingHeaders/klocale.h: Removed.

        * khtml/misc/helper.cpp: Removed.
        * khtml/misc/helper.h: Removed.

        * kwq/KWQCollection.h: Removed.
        * kwq/KWQKCookieJar.h: Removed.
        * kwq/KWQKCookieJar.mm: Removed.
        * kwq/KWQKLocale.h: Removed.
        * kwq/KWQKLocale.mm: Removed.
        * kwq/KWQKURL.h: Removed.
        * kwq/KWQKURL.mm: Removed.
        * kwq/KWQTextUtilities.h: Removed.
        * kwq/KWQTextUtilities.mm: Removed.
        * kwq/KWQView.h: Removed.

        * platform/CookieJar.h: Added.
        * platform/Language.h: Added.
        * platform/LocalizedStrings.h: Added.
        * platform/TextBoundaries.h: Added.
        * platform/mac/CookieJar.mm: Added.
        * platform/mac/Language.mm: Added.
        * platform/mac/LocalizedStringsMac.mm: Added.
        * platform/mac/TextBoundaries.mm: Added.
        * platform/mac/WebCoreWidgetHolder.h: Added.

        * WebCore.xcodeproj/project.pbxproj: Updated for removed and added files.
        * WebCore.vcproj/WebCore/WebCore.vcproj: Updated for removed and added files.

        * bridge/mac/WebCoreFrameBridge.mm: Updated includes.
        (-[WebCoreFrameBridge elementForView:]): Changed KWQWidgetHolder to WebCoreWidgetHolder.

        * editing/visible_units.cpp:
        (WebCore::previousWordPositionBoundary):
        (WebCore::nextWordPositionBoundary):
        (WebCore::previousSentencePositionBoundary):
        (WebCore::nextSentencePositionBoundary):
        Call TextBoundaries.h functions instead of helper.h ones.

        * khtml/ecma/kjs_navigator.cpp: (KJS::Navigator::getValueProperty):
        * ksvg2/svg/SVGTestsImpl.cpp: (WebCore::SVGTestsImpl::isValid):
        Changed to call defaultLanguage; cleaned up formatting.

        * khtml/html/HTMLFormElementImpl.cpp: Removed stray comment.

        * khtml/html/html_documentimpl.cpp:
        (WebCore::HTMLDocumentImpl::cookie):
        (WebCore::HTMLDocumentImpl::setCookie):
        Call CookieJar.h functions.

        * css/css_valueimpl.cpp:
        * css/cssparser.cpp:
        * css/cssstyleselector.cpp:
        * dom/DocumentImpl.cpp:
        * dom/dom_position.cpp:
        * khtml/ecma/kjs_window.cpp:
        * khtml/html/HTMLInputElementImpl.cpp:
        * khtml/html/html_headimpl.cpp:
        * khtml/html/htmlparser.cpp:
        * khtml/misc/decoder.cpp:
        * ksvg2/svg/SVGDocumentImpl.cpp:
        * kwq/KWQComboBox.mm:
        * kwq/KWQKSSLKeyGen.mm:
        * kwq/KWQListBox.mm:
        * kwq/KWQListImpl.cpp:
        * kwq/KWQListImpl.h:
        * kwq/KWQScrollBar.mm:
        * kwq/KWQSlider.mm:
        * kwq/KWQTextField.mm:
        * kwq/KWQValueList.h:
        * loader/DocLoader.cpp:
        * page/Frame.cpp:
        * page/FrameView.cpp:
        * platform/mac/WidgetMac.mm:
        (WebCore::Widget::beforeMouseDown):
        (WebCore::Widget::afterMouseDown):
        * rendering/render_applet.cpp:
        * rendering/render_form.cpp:
        * rendering/render_image.cpp:
        * rendering/render_list.cpp:
        Updated includes and protocol names.

        * khtml/html/htmltokenizer.cpp: (WebCore::HTMLTokenizer::write): Remove
        QT_VERSION code.
        * platform/QString.h: Remove QT_VERSION.

        * kwq/KWQPtrList.h: Change to no longer use QPtrCollection.

        * kwq/KWQRenderTreeDebug.h:
        * kwq/KWQRenderTreeDebug.cpp: (externalRepresentation):
        Remove unused debuggingRenderTree boolean.

2006-03-07  Eric Seidel  <eseidel@apple.com>

        Reviewed by darin.

        * platform/mac/GraphicsContextMac.mm: Add Widget.h to fix no-svg build.

2006-03-06  Eric Seidel  <eseidel@apple.com>

        Reviewed by hyatt.

        Make spinneret run again, fix webview to support dynamic resize.

        * platform/win/TemporaryLinkStubs.cpp:
        (Widget::setDrawingAlpha):
        * platform/win/WidgetWin.cpp:
        (WebCore::Widget::Widget):
        (WebCore::Widget::setClient):
        (WebCore::Widget::client):
        (WebCore::Widget::frameGeometry):

2006-03-06  Eric Seidel  <eseidel@apple.com>

        Reviewed by darin.

        Fix win32 build.

        * platform/win/TemporaryLinkStubs.cpp:
        (QScrollBar::QScrollBar):
        (QTextEdit::setAlignment):
        (Widget::client):
        (Widget::setClient):
        (QLineEdit::setAlignment):

2006-03-06  Beth Dakin  <bdakin@apple.com>

        Reviewed by Darin.

        Fix for http://bugs.webkit.org/show_bug.cgi?id=7566 (also 
        <rdar://problem/4467128> ). Must call update() on a Font before 
        attempting to use it because the FontRenderer is not created until 
        update() is called.

        * kwq/KWQListBox.mm:
        (QListBox::sizeForNumberOfLines): Call update()
        (-[KWQTableView drawRow:clipRect:]): Call update()

2006-03-06  Darin Adler  <darin@apple.com>

        Reviewed by Adele.

        - http://bugs.webkit.org/show_bug.cgi?id=7564
          remove QObject, QGuardedPtr, slots, and signals

        I had written a detailed change log entry, but I lost it!
        I'm too annoyed to write one all over again.

        * ForwardingHeaders/qguardedptr.h: Removed.
        * ForwardingHeaders/qobject.h: Removed.

        * kwq/KWQGuardedPtr.cpp: Removed.
        * kwq/KWQGuardedPtr.h: Removed.
        * kwq/KWQNamespace.h: Removed.
        * kwq/KWQObject.cpp: Removed.
        * kwq/KWQObject.h: Removed.
        * kwq/KWQSignal.cpp: Removed.
        * kwq/KWQSignal.h: Removed.
        * kwq/KWQSlot.cpp: Removed.
        * kwq/KWQSlot.h: Removed.

        * platform/WidgetClient.h: Added.

        * WebCore.xcodeproj/project.pbxproj: Updated for removed and added files.
        * WebCore.vcproj/WebCore/WebCore.vcproj: Ditto.

        * bindings/js/JSDOMCore.cpp: Touched.
        * bindings/js/JSDOMEvents.cpp: Ditto.

        * bridge/BrowserExtension.h:
        (WebCore::BrowserExtension::~BrowserExtension):
        * bridge/mac/WebCoreFrameBridge.mm:
        (-[WebCoreFrameBridge elementForView:]):
        * dom/CDATASectionImpl.cpp:
        (WebCore::CDATASectionImpl::cloneNode):
        * dom/DocumentImpl.cpp:
        (WebCore::DocumentImpl::~DocumentImpl):
        * dom/DocumentImpl.h:
        * kcanvas/device/KRenderingDevice.h:
        * khtml/ecma/kjs_css.cpp:
        (KJS::DOMCSSStyleDeclaration::put):
        * khtml/ecma/kjs_window.cpp:
        (KJS::FrameArray::indexGetter):
        (KJS::FrameArray::nameGetter):
        * khtml/html/html_documentimpl.cpp:
        (WebCore::HTMLDocumentImpl::createTokenizer):
        * khtml/html/htmlparser.cpp:
        (WebCore::HTMLParser::HTMLParser):
        (WebCore::HTMLParser::insertNode):
        (WebCore::HTMLParser::handleError):
        (WebCore::HTMLParser::commentCreateErrorCheck):
        (WebCore::HTMLParser::noscriptCreateErrorCheck):
        (WebCore::HTMLParser::isInline):
        (WebCore::HTMLParser::finished):
        * khtml/html/htmlparser.h:
        * khtml/html/htmltokenizer.cpp:
        (WebCore::HTMLTokenizer::HTMLTokenizer):
        (WebCore::HTMLTokenizer::scriptHandler):
        (WebCore::HTMLTokenizer::scriptExecution):
        (WebCore::HTMLTokenizer::parseComment):
        (WebCore::HTMLTokenizer::parseTag):
        (WebCore::HTMLTokenizer::stopParsing):
        (WebCore::HTMLTokenizer::timerFired):
        (WebCore::HTMLTokenizer::processToken):
        (WebCore::parseHTMLDocumentFragment):
        * khtml/html/htmltokenizer.h:
        * kwq/KWQComboBox.h:
        * kwq/KWQComboBox.mm:
        (-[KWQPopUpButton setPopulatingMenu:QComboBox:::]):
        (QComboBox::itemSelected):
        (-[KWQPopUpButton becomeFirstResponder]):
        (-[KWQPopUpButton resignFirstResponder]):
        * kwq/KWQFileButton.h:
        (KWQFileButton::filename):
        * kwq/KWQFileButton.mm:
        (KWQFileButton::KWQFileButton):
        (KWQFileButton::filenameChanged):
        (-[KWQFileButtonAdapter filenameChanged:]):
        (-[KWQFileButtonAdapter focusChanged:]):
        (-[KWQFileButtonAdapter clicked]):
        * kwq/KWQLineEdit.h:
        * kwq/KWQLineEdit.mm:
        (QLineEdit::QLineEdit):
        (QLineEdit::setAlignment):
        (KWQNSTextAlignment):
        * kwq/KWQListBox.h:
        (QListBox::changingSelection):
        * kwq/KWQListBox.mm:
        (QListBox::QListBox):
        (-[KWQTableView becomeFirstResponder]):
        (-[KWQTableView resignFirstResponder]):
        (-[KWQTableView tableViewSelectionDidChange:]):
        * kwq/KWQScrollBar.h:
        (WebCore::):
        (QScrollBar::orientation):
        * kwq/KWQScrollBar.mm:
        (-[KWQScrollBar initWithQScrollBar:]):
        (QScrollBar::QScrollBar):
        (QScrollBar::valueChanged):
        (QScrollBar::scroll):
        * kwq/KWQSlider.h:
        * kwq/KWQSlider.mm:
        (-[KWQSlider mouseDown:]):
        (-[KWQSlider slide:]):
        (-[KWQSlider becomeFirstResponder]):
        (-[KWQSlider resignFirstResponder]):
        (QSlider::QSlider):
        (QSlider::sliderValueChanged):
        (QSlider::dimensions):
        * kwq/KWQTextArea.mm:
        (-[KWQTextAreaTextView textViewDidChangeSelection:]):
        (-[KWQTextAreaTextView textDidChange:]):
        (-[KWQTextAreaTextView becomeFirstResponder]):
        (-[KWQTextAreaTextView resignFirstResponder]):
        (-[KWQTextAreaTextView mouseDown:]):
        (-[KWQTextAreaTextView dispatchHTMLEvent:]):
        * kwq/KWQTextEdit.h:
        * kwq/KWQTextEdit.mm:
        (QTextEdit::QTextEdit):
        (QTextEdit::setAlignment):
        * kwq/KWQTextField.mm:
        (-[KWQTextFieldController action:]):
        (-[KWQTextFieldController controlTextDidEndEditing:]):
        (-[KWQTextFieldController controlTextDidChange:]):
        (-[KWQTextFieldController textChanged]):
        (-[KWQTextFieldController textView:didHandleEvent:]):
        (-[KWQTextFieldController setHasFocus:]):
        (-[KWQTextFieldController textViewDidChangeSelection:]):
        * loader/CachedObject.h:
        * page/Frame.cpp:
        (WebCore::Frame::Frame):
        (WebCore::Frame::~Frame):
        (WebCore::Frame::setOpener):
        (WebCore::Frame::nodeForWidget):
        (WebCore::Frame::disconnectOwnerRenderer):
        * page/Frame.h:
        * page/FramePrivate.h:
        (WebCore::FramePrivate::FramePrivate):
        * page/FrameView.cpp:
        (WebCore::FrameView::~FrameView):
        * platform/Brush.h:
        * platform/Pen.h:
        * platform/Widget.cpp:
        (WebCore::Widget::isFrameView):
        * platform/Widget.h:
        (WebCore::):
        * platform/mac/GraphicsContextMac.mm:
        (WebCore::GraphicsContext::drawText):
        * platform/mac/WidgetMac.mm:
        (WebCore::Widget::Widget):
        (WebCore::Widget::focusPolicy):
        (WebCore::Widget::sendConsumedMouseUp):
        (WebCore::Widget::setClient):
        (WebCore::Widget::client):
        * rendering/InlineTextBox.cpp:
        (WebCore::InlineTextBox::operator delete):
        * rendering/render_applet.cpp:
        (WebCore::RenderApplet::createWidgetIfNecessary):
        * rendering/render_form.cpp:
        (WebCore::RenderFormElement::clicked):
        (WebCore::RenderFormElement::textAlignment):
        (WebCore::RenderLineEdit::RenderLineEdit):
        (WebCore::RenderLineEdit::selectionChanged):
        (WebCore::RenderLineEdit::returnPressed):
        (WebCore::RenderLineEdit::performSearch):
        (WebCore::RenderLineEdit::valueChanged):
        (WebCore::RenderFileButton::RenderFileButton):
        (WebCore::RenderFileButton::returnPressed):
        (WebCore::RenderFileButton::valueChanged):
        (WebCore::RenderLegend::RenderLegend):
        (WebCore::RenderSelect::RenderSelect):
        (WebCore::RenderSelect::updateFromElement):
        (WebCore::RenderSelect::valueChanged):
        (WebCore::RenderSelect::selectionChanged):
        (WebCore::RenderSelect::createListBox):
        (WebCore::RenderTextArea::RenderTextArea):
        (WebCore::RenderTextArea::valueChanged):
        (WebCore::RenderTextArea::selectionChanged):
        (WebCore::RenderSlider::RenderSlider):
        (WebCore::RenderSlider::valueChanged):
        * rendering/render_form.h:
        (WebCore::RenderFormElement::element):
        (WebCore::RenderLineEdit::element):
        (WebCore::RenderFileButton::element):
        (WebCore::RenderFileButton::isEditable):
        (WebCore::RenderSelect::element):
        (WebCore::RenderTextArea::element):
        (WebCore::RenderSlider::element):
        * rendering/render_frames.cpp:
        (WebCore::RenderPart::RenderPart):
        (WebCore::RenderPart::~RenderPart):
        (WebCore::RenderPart::setFrame):
        (WebCore::RenderPart::setWidget):
        (WebCore::RenderPart::deleteWidget):
        (WebCore::RenderFrame::RenderFrame):
        (WebCore::RenderPartObject::RenderPartObject):
        (WebCore::RenderPartObject::layout):
        * rendering/render_frames.h:
        * rendering/render_layer.cpp:
        (WebCore::RenderLayer::RenderLayer):
        (WebCore::RenderLayer::~RenderLayer):
        (WebCore::RenderLayer::valueChanged):
        (WebCore::RenderLayer::setHasHorizontalScrollbar):
        (WebCore::RenderLayer::setHasVerticalScrollbar):
        (WebCore::RenderLayer::hitTest):
        * rendering/render_layer.h:
        (WebCore::RenderLayer::parent):
        (WebCore::RenderLayer::previousSibling):
        (WebCore::RenderLayer::nextSibling):
        (WebCore::RenderLayer::firstChild):
        (WebCore::RenderLayer::lastChild):
        * rendering/render_list.cpp:
        (WebCore::RenderListMarker::paint):
        * rendering/render_replaced.cpp:
        (WebCore::RenderWidget::RenderWidget):
        (WebCore::RenderWidget::destroy):
        (WebCore::RenderWidget::~RenderWidget):
        (WebCore::RenderWidget::setWidget):
        (WebCore::RenderWidget::layout):
        (WebCore::RenderWidget::sendConsumedMouseUp):
        (WebCore::RenderWidget::focusIn):
        (WebCore::RenderWidget::focusOut):
        (WebCore::RenderWidget::scrollToVisible):
        (WebCore::RenderWidget::isVisible):
        (WebCore::RenderWidget::element):
        (WebCore::RenderWidget::deleteWidget):
        * rendering/render_replaced.h:
        * xml/xmlhttprequest.cpp:
        (WebCore::requestsByDocument):
        (WebCore::addToRequestsByDocument):
        (WebCore::removeFromRequestsByDocument):
        (WebCore::XMLHttpRequest::getResponseText):
        (WebCore::XMLHttpRequest::getResponseXML):
        (WebCore::XMLHttpRequest::XMLHttpRequest):
        (WebCore::XMLHttpRequest::~XMLHttpRequest):
        (WebCore::XMLHttpRequest::callReadyStateChangeListener):
        (WebCore::XMLHttpRequest::urlMatchesDocumentDomain):
        (WebCore::XMLHttpRequest::open):
        (WebCore::XMLHttpRequest::send):
        (WebCore::XMLHttpRequest::abort):
        (WebCore::XMLHttpRequest::overrideMIMEType):
        (WebCore::XMLHttpRequest::setRequestHeader):
        (WebCore::XMLHttpRequest::getRequestHeader):
        (WebCore::XMLHttpRequest::getAllResponseHeaders):
        (WebCore::XMLHttpRequest::getResponseHeader):
        (WebCore::XMLHttpRequest::getSpecificHeader):
        (WebCore::XMLHttpRequest::responseIsXML):
        (WebCore::XMLHttpRequest::getStatus):
        (WebCore::XMLHttpRequest::getStatusText):
        (WebCore::XMLHttpRequest::receivedAllData):
        (WebCore::XMLHttpRequest::receivedRedirect):
        (WebCore::XMLHttpRequest::receivedData):
        (WebCore::XMLHttpRequest::cancelRequests):
        (WebCore::XMLHttpRequest::detachRequests):
        * xml/xmlhttprequest.h:

2006-03-06  Eric Seidel  <eseidel@apple.com>

        Reviewed by beth.

        Reorganize link stubs (alphabetically).
        Stub out Path methods to make cnn.com work.

        * platform/win/TemporaryLinkStubs.cpp:
        (FrameView::viewportToGlobal):
        (FrameView::updateBorder):
        (FrameView::isFrameView):
        (FrameView::topLevelWidget):
        (QScrollBar::~QScrollBar):
        (QScrollBar::setSteps):
        (QScrollBar::scroll):
        (QScrollBar::QScrollBar):
        (QScrollBar::setValue):
        (QScrollBar::setKnobProportion):
        (QListBox::QListBox):
        (QListBox::setSelected):
        (QListBox::sizeForNumberOfLines):
        (QListBox::isSelected):
        (QListBox::appendItem):
        (QListBox::doneAppendingItems):
        (ScrollView::scrollXOffset):
        (QComboBox::focusPolicy):
        (QTextEdit::QTextEdit):
        (QTextEdit::~QTextEdit):
        (QTextEdit::textWithHardLineBreaks):
        (QTextEdit::sizeWithColumnsAndRows):
        (QTextEdit::setColors):
        (QTextEdit::setFont):
        (QTextEdit::setWritingDirection):
        (QTextEdit::checksDescendantsForFocus):
        (QTextEdit::selectionStart):
        (QTextEdit::hasSelectedText):
        (QTextEdit::setReadOnly):
        (QTextEdit::setDisabled):
        (QTextEdit::setLineHeight):
        (QTextEdit::setSelectionStart):
        (QTextEdit::text):
        (QTextEdit::setWordWrap):
        (QTextEdit::setAlignment):
        (QTextEdit::getCursorPosition):
        (QTextEdit::setSelectionRange):
        (Widget::enableFlushDrawing):
        (Widget::isEnabled):
        (Widget::focusPolicy):
        (Widget::disableFlushDrawing):
        (Widget::setIsSelected):
        (Widget::unlockDrawingFocus):
        (KJavaAppletWidget::KJavaAppletWidget):
        (ScrollView::scrollPointRecursively):
        (ScrollView::scrollBy):
        (QLineEdit::selectAll):
        (QLineEdit::addSearchResult):
        (QLineEdit::selectionStart):
        (QLineEdit::hasSelectedText):
        (QLineEdit::selectedText):
        (QLineEdit::setAutoSaveName):
        (QLineEdit::checksDescendantsForFocus):
        (QLineEdit::setMaxResults):
        (GraphicsContext::GraphicsContext):
        (GraphicsContext::addFocusRingRect):
        (GraphicsContext::drawLineForMisspelling):
        (GraphicsContext::drawFocusRing):
        (GraphicsContext::selectedTextBackgroundColor):
        (GraphicsContext::drawHighlightForText):
        (GraphicsContext::misspellingLineThickness):
        (GraphicsContext::addRoundedRectClip):
        (QSlider::QSlider):
        (QSlider::sizeHint):
        (QSlider::setValue):
        (QSlider::setMaxValue):
        (QSlider::~QSlider):
        (QSlider::setFont):
        (QListBox::setFont):
        (QListBox::~QListBox):
        (QListBox::setSelectionMode):
        (QListBox::setEnabled):
        (QListBox::clear):
        (QListBox::checksDescendantsForFocus):
        (KWQFileButton::KWQFileButton):
        (KWQFileButton::click):
        (KWQFileButton::sizeForCharacterWidth):
        (KWQFileButton::frameGeometry):
        (KWQFileButton::setFilename):
        (KWQFileButton::baselinePosition):
        (KWQFileButton::setFrameGeometry):
        (QSlider::focusPolicy):
        (QListBox::focusPolicy):
        (Cursor::Cursor):
        (MouseEvent::MouseEvent):
        (KWQKCookieJar::cookieEnabled):
        (WebCore::screenDepth):
        (WebCore::usableScreenRect):
        (FrameWin::createPlugin):
        (ScrollView::resizeContents):
        (ScrollView::visibleHeight):
        (ScrollView::visibleWidth):
        (ScrollView::setContentsPos):
        (ScrollView::contentsHeight):
        (ScrollView::contentsWidth):
        (ScrollView::inWindow):
        (Path::~Path):
        (Path::Path):
        (Path::contains):
        (Path::translate):
        (Path::boundingRect):
        (Path::operator=):

2006-03-03  Justin Garcia  <justin.garcia@apple.com>

        Reviewed by darin
        
        <http://bugs.webkit.org/show_bug.cgi?id=6844>
        elementAtPoint returns the list when the point is over a list marker

        Call RenderObject::setInnerNode(), which sets both the 
        innerNode and the innerNonSharedNode.

        * rendering/render_list.cpp:
        (WebCore::RenderListItem::nodeAtPoint):
        * rendering/render_list.h:

2006-03-05  Darin Adler  <darin@apple.com>

        * WebCore.vcproj/WebCore/WebCore.vcproj: Removed a lot of long-ago-deleted files
        from the kwq directory.

2006-03-05  Darin Adler  <darin@apple.com>

        Reviewed by Maciej.

        - moved all the remnants of the public C++ DOM API out of khtml/dom
        - changed from "int" to "ExceptionCode" for DOM exceptions
        - removed unused CSS_HTML_RELATIVE
        - changed offsetInCharacters to be a member function of NodeImpl
        - changed DOM functions that take a NodeType to use NodeType instead of
          unsigned short for clarity (will still be unsigned short in bindings)
        - changed exception constants so they can be used directly in the
          implementation code (added in the offsets for different types of exceptions)
        - replaced the eventListenerType function with an isHTMLEventListener function
        - got rid of EventListenerEvent, which is a synonym for EventImpl*
        - eliminated handleEventImpl, whish is now the same as handleEvent

        - did other preparation for the "remove Impl suffix" renaming
          (tested by using a script that does the renaming)

        * khtml/dom/css_rule.h: Removed.
        * khtml/dom/css_stylesheet.h: Removed.
        * khtml/dom/css_value.h: Removed.
        * khtml/dom/dom2_events.cpp: Removed.
        * khtml/dom/dom2_events.h: Removed.
        * khtml/dom/dom2_range.h: Removed.
        * khtml/dom/dom2_traversal.cpp: Removed.
        * khtml/dom/dom2_traversal.h: Removed.
        * khtml/dom/dom_exception.h: Removed.
        * khtml/dom/dom_node.h: Removed.

        * dom/EventListener.h: Added.
        * dom/ExceptionCode.h: Added.

        * WebCore+SVG/kdom.h: Removed NodeType and ExceptionCodes
        * WebCore+SVG/kdomevents.h: Removed.

        * WebCore.xcodeproj/project.pbxproj: Updated for file changes.
        * WebCore.vcproj/WebCore/WebCore.vcproj: Ditto.

        * bindings/scripts/CodeGeneratorJS.pm: Removed unneeded DOM:: prefix. Updated file
        names and exception prefix for changes in DOM exceptions.

        * bindings/js/JSDOMCore.cpp: Touched to cause auto-generated code to be
        recompiled. We need to get this fixed!
        * bindings/js/JSDOMEvents.cpp: Ditto.

        * dom/Attr.idl:
        * dom/CharacterData.idl:
        * dom/DOMImplementation.idl:
        * dom/DocumentType.idl:
        * dom/Element.idl:
        * dom/Entity.idl:
        * dom/MutationEvent.idl:
        * dom/Notation.idl:
        * dom/ProcessingInstruction.idl:
        * dom/Text.idl:
        * dom/WheelEvent.idl:
        Touched all IDL files so that changes in CodeGeneratorJS.pm would take effect.
        Added license headers.

        * bindings/objc/DOM.mm: Fixed garbled license agreement. Updated includes.
        Changed from a single "using namespace WebCore" to individual using statements
        because of the imminent conflict between DOMImplementation in Objective C
        and WebCore::DOMImplementation (currently has an Impl suffix). Added a typedef
        for WebCore::DOMImplementationImpl. Changed to use ExceptionCode instead of int.

        * bindings/objc/DOMCSS.h: Removed DOMCSSException and the special CSS exception
        codes. This is a feature of DOM Level 1 only. In DOM Level 2 these were eliminated
        and use basic DOM exception codes instead. We might have to do something for binary
        compatibility eventually, but perhaps not.

        * bindings/objc/DOMCSS.mm:
        * bindings/objc/DOMEvents.mm:
        * bindings/objc/DOMEventsInternal.h:
        * bindings/objc/DOMHTML.mm:
        * bindings/objc/DOMHTMLInternal.h:
        * bindings/objc/DOMViews.mm:
        * bindings/objc/DOMViewsInternal.h:
        Fixed garbled license agreements.
        Changed to use ExceptionCode instead of int and name the variable "ec".

        * bindings/objc/DOMInternal.h: Changed addDOMWrapperImpl to take NSObject* instead
        of id. This helps with overload resolution when addDOMWrapperImpl is renamed to be
        addDOMWrapper. Changed ALLOW_DOM_CAST to always use "class" in from of the type name
        of the WebCore class. This helps work around what seems like a bug in namespace support
        in Objective-C mode, although the bug only happens after the "remove Impl" renaming.
        * bindings/objc/DOMInternal.mm:
        (getDOMWrapperImpl): Changed to use HashMap.
        (addDOMWrapperImpl): Ditto.
        (removeDOMWrapper): Ditto.
        (raiseDOMException): Update to use new names for exception number ranges.

        * bridge/mac/WebCoreFrameBridge.mm:
        * khtml/ecma/xmlserializer.cpp:
        * kwq/KWQAccObject.mm:
        Removed unneeded includes.

        * css/css_ruleimpl.h: Moved "rule type" into this header.

        * dom/CommentImpl.h:
        * dom/CommentImpl.cpp: (WebCore::CommentImpl::offsetInCharacters): Added. Returns true.

        * khtml/ecma/XSLTProcessor.cpp: (KJS::XSLTProcessorProtoFunc::callAsFunction):
        Changed this around so we don't have a local variable named docImpl.

        * khtml/ecma/kjs_binding.cpp: (KJS::setDOMException): Updated for new form of exception
        constants.

        * khtml/ecma/kjs_events.h:
        * khtml/ecma/kjs_events.cpp:
        (KJS::JSAbstractEventListener::handleEvent): Changed to no longer use EventListenerEvent.
        (KJS::JSAbstractEventListener::isHTMLEventListener): Added.

        * rendering/RenderTextField.h: Updated includes. Tweaked the code formatting of
        InputMutationListener. (Might be unnecessary since this class might be deleted soon.)

        * bridge/mac/MacFrame.mm:
        * css/css_computedstyle.cpp:
        * css/css_computedstyle.h:
        * css/css_ruleimpl.cpp:
        * css/css_stylesheetimpl.cpp:
        * css/css_stylesheetimpl.h:
        * css/css_valueimpl.cpp:
        * css/css_valueimpl.cpp:
        * css/css_valueimpl.h:
        * css/css_valueimpl.h:
        * css/cssparser.cpp:
        * css/cssstyleselector.cpp:
        * dom/CDATASectionImpl.cpp:
        * dom/CDATASectionImpl.h:
        * dom/CharacterDataImpl.cpp:
        * dom/CharacterDataImpl.h:
        * dom/ContainerNodeImpl.cpp:
        * dom/DOMImplementationImpl.cpp:
        * dom/DocumentFragmentImpl.cpp:
        * dom/DocumentFragmentImpl.h:
        * dom/DocumentImpl.cpp:
        * dom/DocumentImpl.h:
        * dom/DocumentTypeImpl.cpp:
        * dom/DocumentTypeImpl.h:
        * dom/NamedNodeMapImpl.h:
        * dom/NodeImpl.cpp:
        * dom/NodeImpl.h:
        * dom/NodeListImpl.cpp:
        * dom/TextImpl.cpp:
        * dom/TextImpl.h:
        * dom/dom2_eventsimpl.cpp:
        * dom/dom2_eventsimpl.h:
        * dom/dom2_rangeimpl.cpp:
        * dom/dom2_rangeimpl.h:
        * dom/dom2_traversalimpl.cpp:
        * dom/dom2_traversalimpl.h:
        * dom/dom_elementimpl.cpp:
        * dom/dom_elementimpl.h:
        * dom/dom_position.cpp:
        * dom/dom_xmlimpl.cpp:
        * dom/dom_xmlimpl.h:
        * dom/xml_tokenizer.cpp:
        * editing/AppendNodeCommand.cpp:
        * editing/ApplyStyleCommand.cpp:
        * editing/CompositeEditCommand.cpp:
        * editing/DeleteFromTextNodeCommand.cpp:
        * editing/InsertIntoTextNodeCommand.cpp:
        * editing/InsertLineBreakCommand.cpp:
        * editing/InsertNodeBeforeCommand.cpp:
        * editing/InsertParagraphSeparatorCommand.cpp:
        * editing/JoinTextNodesCommand.cpp:
        * editing/MergeIdenticalElementsCommand.cpp:
        * editing/RemoveNodeAttributeCommand.cpp:
        * editing/RemoveNodeCommand.cpp:
        * editing/ReplaceSelectionCommand.cpp:
        * editing/Selection.cpp:
        * editing/SelectionController.cpp:
        * editing/SelectionController.h:
        * editing/SetNodeAttributeCommand.cpp:
        * editing/SplitElementCommand.cpp:
        * editing/SplitTextNodeCommand.cpp:
        * editing/VisiblePosition.cpp:
        * editing/WrapContentsInDummySpanCommand.cpp:
        * editing/htmlediting.cpp:
        * editing/markup.cpp:
        * editing/visible_text.cpp:
        * khtml/ecma/kjs_binding.h:
        * khtml/ecma/kjs_css.cpp:
        * khtml/ecma/kjs_dom.cpp:
        * khtml/ecma/kjs_html.cpp:
        * khtml/ecma/kjs_range.cpp:
        * khtml/ecma/kjs_traversal.cpp:
        * khtml/ecma/kjs_traversal.h:
        * khtml/ecma/kjs_window.cpp:
        * khtml/html/HTMLElementImpl.cpp:
        * khtml/html/HTMLOptionElementImpl.cpp:
        * khtml/html/HTMLOptionElementImpl.h:
        * khtml/html/HTMLOptionsCollectionImpl.cpp:
        * khtml/html/HTMLSelectElementImpl.cpp:
        * khtml/html/HTMLTextAreaElementImpl.cpp:
        * khtml/html/html_documentimpl.cpp:
        * khtml/html/html_documentimpl.h:
        * khtml/html/html_headimpl.cpp:
        * khtml/html/html_tableimpl.cpp:
        * khtml/html/html_tableimpl.h:
        * khtml/html/htmlparser.cpp:
        * khtml/xbl/xbl_tokenizer.cpp:
        * khtml/xsl/xsl_stylesheetimpl.cpp:
        * ksvg2/misc/SVGDocumentExtensions.cpp:
        * ksvg2/svg/SVGAnimationElementImpl.cpp:
        * ksvg2/svg/SVGDOMImplementationImpl.cpp:
        * ksvg2/svg/SVGDOMImplementationImpl.h:
        * ksvg2/svg/SVGDocumentImpl.cpp:
        * ksvg2/svg/SVGDocumentImpl.h:
        * ksvg2/svg/SVGElementImpl.cpp:
        * ksvg2/svg/SVGLengthImpl.cpp:
        * ksvg2/svg/SVGLocatableImpl.cpp:
        * ksvg2/svg/SVGPolyElementImpl.cpp:
        * ksvg2/svg/SVGSVGElementImpl.cpp:
        * ksvg2/svg/SVGStyleElementImpl.cpp:
        * ksvg2/svg/SVGStyleElementImpl.h:
        * ksvg2/svg/SVGUseElementImpl.cpp:
        * page/Frame.cpp:
        * page/FrameView.cpp:
        * rendering/render_object.cpp:
        * xml/xmlhttprequest.cpp:
        Changed to use ExceptionCode instead of int and name the variable "ec".
        Also updated use of exception codes and other constants to get them from
        their new locations.

2006-03-06  Eric Seidel  <eseidel@apple.com>

        Reviewed by mjs.

        Fix more pages (apple.com, yahoo.com) by returning empty error image.
        Empty a couple more stubs and clean up stub style a little.

        * platform/cairo/ImageCairo.cpp:
        (WebCore::Image::loadResource):
        * platform/win/TemporaryLinkStubs.cpp:
        (QListBox::isSelected):
        (QSlider::sizeHint):
        (QScrollBar::~QScrollBar):
        (FrameWin::getObjectInstanceForWidget):
        (FrameWin::getEmbedInstanceForWidget):
        (FrameWin::recordFormValue):
        (FrameWin::getAppletInstanceForWidget):
        (FrameWin::passMouseDownEventToWidget):
        (FrameWin::passWheelEventToChildWidget):
        (FrameWin::createPlugin):
        (BrowserExtensionWin::createNewWindow):
        (Path::Path):
        (QLineEdit::~QLineEdit):
        (QLineEdit::setLiveSearch):
        (QComboBox::~QComboBox):

2006-03-06  Eric Seidel  <eseidel@apple.com>

        Reviewed by andersca.

        Empty enough stubs to make apple.com load.

        * platform/win/TemporaryLinkStubs.cpp:
        (QTextEdit::sizeWithColumnsAndRows):
        (GraphicsContext::misspellingLineThickness):
        (QTextEdit::selectAll):
        (QTextEdit::setSelectionStart):
        (Widget::unlockDrawingFocus):
        (QLineEdit::setAutoSaveName):
        (ScrollView::scrollYOffset):
        (KWQFileButton::setFilename):
        (QListBox::setFont):
        (GraphicsContext::beginTransparencyLayer):
        (GraphicsContext::endTransparencyLayer):
        (QComboBox::QComboBox):
        (QComboBox::setFont):
        (QComboBox::baselinePosition):
        (QComboBox::setWritingDirection):
        (QComboBox::clear):
        (QComboBox::appendItem):
        (QComboBox::setCurrentItem):
        (QComboBox::sizeHint):
        (QComboBox::frameGeometry):
        (QComboBox::setFrameGeometry):
        (QLineEdit::setLiveSearch):

2006-03-06  Eric Seidel  <eseidel@apple.com>

        Reviewed by darin.

        Fix external resource loading.
        Make a bunch of stubs not abort (to fix slashdot).

        * platform/win/TemporaryLinkStubs.cpp:
        (QTextEdit::textWithHardLineBreaks):
        (KWQFileButton::click):
        (QComboBox::setFrameGeometry):
        (QTextEdit::setText):
        (QListBox::appendItem):
        (GraphicsContext::endTransparencyLayer):
        (QLineEdit::selectionStart):
        (QTextEdit::QTextEdit):
        (QListBox::isSelected):
        (QComboBox::focusPolicy):
        (QTextEdit::setCursorPosition):
        (QTextEdit::setAlignment):
        (QLineEdit::selectedText):
        (ScrollView::scrollPointRecursively):
        (QScrollBar::setSteps):
        (QComboBox::appendItem):
        (GraphicsContext::drawLineForMisspelling):
        (KWQFileButton::setFilename):
        (QListBox::setWritingDirection):
        (QListBox::focusPolicy):
        (MouseEvent::MouseEvent):
        (QSlider::setFont):
        (Widget::setEnabled):
        (Widget::paint):
        (ScrollView::addChild):
        (ScrollView::inWindow):
        (GraphicsContext::setShadow):
        (GraphicsContext::clearShadow):
        (RenderThemeWin::paintCheckbox):
        (RenderThemeWin::paintRadio):
        (RenderThemeWin::paintButton):
        (RenderThemeWin::paintTextField):
        (QLineEdit::QLineEdit):
        (QLineEdit::setFont):
        (QLineEdit::setAlignment):
        (QLineEdit::setWritingDirection):
        (QLineEdit::maxLength):
        (QLineEdit::setMaxLength):
        (QLineEdit::text):
        (QLineEdit::setText):
        (QLineEdit::cursorPosition):
        (QLineEdit::setCursorPosition):
        (QLineEdit::setEdited):
        (QLineEdit::setReadOnly):
        (QLineEdit::setPlaceholderString):
        (QLineEdit::setColors):
        (QLineEdit::sizeForCharacterWidth):
        (QLineEdit::baselinePosition):
        * platform/win/TransferJobWin.cpp:
        (WebCore::TransferJob::fileLoadTimer):
        (WebCore::TransferJob::cancel):

2006-03-05  Darin Adler  <darin@apple.com>

        Reviewed by Maciej.

        - fix failure seen running editing layout tests

        * editing/ReplaceSelectionCommand.cpp:
        (WebCore::ReplacementFragment::ReplacementFragment):
        Use selectNodeContents instead of rolling our own.
        It handles the "nothing at all" edge case properly.

2006-03-05  Eric Seidel  <eseidel@apple.com>

        Reviewed by darin.

        Make updateContents invalidate entire window for now.
        Fix indentation in fileLoadTimer.

        * platform/win/ScrollViewWin.cpp:
        (WebCore::ScrollView::updateContents):
        * platform/win/TransferJobWin.cpp:
        (WebCore::TransferJob::fileLoadTimer):

2006-03-05  Eric Seidel  <eseidel@apple.com>

        Reviewed by adele.

        Add missing files to vcproj (fix win32 build).
        Also add svn:eol-style=native to new files.

        * WebCore.vcproj/WebCore/WebCore.vcproj:

2006-03-05  Darin Adler  <mjs@apple.com>

        - fix build

        * rendering/render_style.h: (compareEqual): Made it inline, fixed variable name.

2006-03-05  Adele Peterson  <adele@apple.com>

        Reviewed by Darin.

        - Fixed http://bugs.webkit.org/show_bug.cgi?id=6987
        Implement maxlength for new text fields

        Test added:
        * fast/forms/input-appearance-maxlength.html

        * WebCore.xcodeproj/project.pbxproj: 
         Added BeforeTextInsertedEventImpl.h, BeforeTextInsertedEventImpl.cpp, HTMLTextFieldInnerElementImpl.h, and HTMLTextFieldInnerElementImpl.cpp

        * khtml/html/HTMLInputElementImpl.cpp:
        (WebCore::HTMLInputElementImpl::init): initialize max length to 1024.
        (WebCore::HTMLInputElementImpl::defaultEventHandler): Added case to use the khtmlBeforeTextInsertedEvent to check for maxlength.
        (WebCore::HTMLInputElementImpl::parseMappedAttribute): Makes sure that maxlength is between 0 and 1024.

        * editing/ReplaceSelectionCommand.cpp:
        (WebCore::ReplacementFragment::ReplacementFragment): After doing a test insert of the fragment,
         Send khtmlBeforeTextInsertedEvent to the root editable element so the event handler can update the text, and we can update the fragment.
        * editing/TypingCommand.cpp:
        (WebCore::TypingCommand::insertText): Send khtmlBeforeTextInsertedEvent to the root editable element so the event handler can update the text if necessary.
        * editing/EditCommand.cpp:
        (WebCore::EditCommand::apply): If we've just applied a command, send the khtmlTextInsertedEvent to the root editable element. 
        (WebCore::EditCommand::unapply): ditto.
        (WebCore::EditCommand::reapply): ditto.

        * khtml/html/HTMLTextFieldInnerElementImpl.h: Added this class to store a pointer to the input element for the text field and to handle default events.
        (DOM::HTMLTextFieldInnerElementImpl::shadowParentNode): Added.
        (DOM::HTMLTextFieldInnerElementImpl::setShadowParentNode): Added.
        * khtml/html/HTMLTextFieldInnerElementImpl.cpp: Added.
        (WebCore::HTMLTextFieldInnerElementImpl::HTMLTextFieldInnerElementImpl):
        (WebCore::HTMLTextFieldInnerElementImpl::~HTMLTextFieldInnerElementImpl):
        (WebCore::HTMLTextFieldInnerElementImpl::defaultEventHandler):
         Sends khtmlBeforeTextInsertedEvents to the shadowParentNode, 
         and handles khtmlTextInsertedEvents by telling the renderer that the subtree has changed.

        * rendering/RenderTextField.cpp: Removed InputMutationListener since subtreeHasChanged is now called from the editing code.
        (WebCore::RenderTextField::~RenderTextField): removed event listener code.
        (WebCore::RenderTextField::updateFromElement): ditto.  And creates HTMLTextFieldInnerElementImpl.
        (WebCore::RenderTextField::subtreeHasChanged): calls new text() method.
        (WebCore::RenderTextField::text): created to get a String of all text in the RenderTextField.
        * rendering/RenderTextField.h: Removed InputMutationListener class.

        * dom/EventNames.h: Added khtmlTextInserted and khtmlBeforeTextInserted.
        * dom/BeforeTextInsertedEventImpl.cpp: Added.
        (WebCore::BeforeTextInsertedEventImpl::BeforeTextInsertedEventImpl):
        * dom/BeforeTextInsertedEventImpl.h: Added.
        (WebCore::BeforeTextInsertedEventImpl::isBeforeTextInsertedEvent):
        (WebCore::BeforeTextInsertedEventImpl::text):
        * dom/dom2_eventsimpl.cpp: (WebCore::EventImpl::isBeforeTextInsertedEvent): Added.
        * dom/dom2_eventsimpl.h: Added isBeforeTextInsertedEvent.

2006-03-05  Maciej Stachowiak  <mjs@apple.com>

        - fix build, give this a return type.

        * rendering/render_style.h:
        (compareEqual):

2006-03-05  Eric Seidel  <eseidel@apple.com>

        Add "Font.h" to (try to) fix the no-svg build.

        * platform/mac/GraphicsContextMac.mm:

2006-03-05  Maciej Stachowiak  <mjs@apple.com>

        Rubber stamped by Darin.

        - fix win32 build by avoiding use of typeof

        * rendering/render_style.h:
        (compareEqual):

2006-03-05  Geoffrey Garen  <ggaren@apple.com>

        Reviewed by Maciej.

        - Second cut at fixing <rdar://problem/4467143> JavaScript enumeration 
        of HTML element properties skips DOM node properties
 
        The approach here is for prototypes, in their constructor methods, 
        to set their own prototypes, preserving the prototype 
        chain in cases of multiple levels of inheritance. (Previously, our
        code assumed that a prototype never had a prototype of its own,
        and always used an empty object as a prototype's prototype).

        * bindings/scripts/CodeGeneratorJS.pm: Use the new
        DEFINE_PROTOTYPE_WITH_PROTOTYPE macro in place of the  
        KJS_IMPLEMENT_PROTOTYPE_WITH_PARENT macro.
        * khtml/ecma/kjs_dom.cpp: Ditto.
        * khtml/ecma/kjs_dom.h: Ditto.
        * khtml/ecma/kjs_events.cpp: Ditto.

        Touched these files to force a rebuild:

        * bindings/js/JSDOMCore.cpp:
        * bindings/js/JSDOMEvents.cpp:
        * dom/Attr.idl:
        * dom/CharacterData.idl:
        * dom/DOMImplementation.idl:
        * dom/DocumentType.idl:
        * dom/Element.idl:
        * dom/Entity.idl:
        * dom/MutationEvent.idl:
        * dom/Notation.idl:
        * dom/ProcessingInstruction.idl:
        * dom/Text.idl:
        * dom/WheelEvent.idl:

2006-03-05  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by Darin.

        - use unsigned bitfields when storing enums in them, to avoid mangling on win32 (was causing all layout to be RTL)
        http://bugs.webkit.org/show_bug.cgi?id=7618

        * css/css_base.cpp:
        (WebCore::CSSSelector::operator == ):
        (WebCore::CSSSelector::selectorText):
        * css/css_base.h:
        (WebCore::CSSSelector::CSSSelector):
        (WebCore::CSSSelector::pseudoType):
        (WebCore::CSSSelector::relation):
        * css/css_grammar.y:
        * css/cssstyleselector.cpp:
        (WebCore::CSSStyleSelector::checkSelector):
        (WebCore::CSSStyleSelector::checkOneSelector):
        * kcanvas/KCanvasPath.cpp:
        (WebCore::operator<<):
        * kcanvas/KCanvasPath.h:
        (WebCore::KCClipData::windRule):
        (WebCore::KCClipDataList::addPath):
        * kcanvas/device/quartz/KCanvasResourcesQuartz.mm:
        (WebCore::KCanvasClipperQuartz::applyClip):
        * khtml/ecma/kjs_html.h:
        * khtml/html/HTMLButtonElementImpl.h:
        * khtml/html/HTMLInputElementImpl.cpp:
        (WebCore::HTMLInputElementImpl::setInputType):
        * khtml/html/HTMLInputElementImpl.h:
        (DOM::HTMLInputElementImpl::inputType):
        * khtml/html/html_tableimpl.h:
        * khtml/xbl/xbl_protohandler.cpp:
        (XBL::m_button):
        * khtml/xbl/xbl_protohandler.h:
        * ksvg2/css/SVGRenderStyle.h:
        (WebCore::SVGRenderStyle::InheritedFlags::):
        (WebCore::SVGRenderStyle::NonInheritedFlags::):
        (WebCore::SVGRenderStyle::setBitDefaults):
        * ksvg2/svg/SVGAnimateTransformElementImpl.h:
        * ksvg2/svg/SVGAnimationElementImpl.cpp:
        (SVGAnimationElementImpl::targetAttribute):
        (SVGAnimationElementImpl::setTargetAttribute):
        * ksvg2/svg/SVGAnimationElementImpl.h:
        * ksvg2/svg/SVGLengthImpl.cpp:
        (SVGLengthImpl::value):
        * ksvg2/svg/SVGLengthImpl.h:
        * kwq/KWQKHTMLSettings.h:
        * loader/CachedImage.h:
        * loader/DocLoader.cpp:
        (WebCore::DocLoader::setCachePolicy):
        (WebCore::DocLoader::setShowAnimations):
        * loader/DocLoader.h:
        (WebCore::DocLoader::showAnimations):
        * platform/FontDescription.h:
        (WebCore::FontDescription::genericFamily):
        * platform/QString.cpp:
        (HandleNode::):
        * platform/QString.h:
        * rendering/RenderBlock.cpp:
        (WebCore::RenderBlock::setSelectionState):
        (WebCore::RenderBlock::leftRelOffset):
        (WebCore::RenderBlock::rightRelOffset):
        (WebCore::RenderBlock::leftBottom):
        (WebCore::RenderBlock::rightBottom):
        (WebCore::RenderBlock::addOverhangingFloats):
        (WebCore::RenderBlock::addIntrudingFloats):
        * rendering/RenderBlock.h:
        (WebCore::RenderBlock::selectionState):
        (WebCore::RenderBlock::FloatingObject::FloatingObject):
        (WebCore::RenderBlock::FloatingObject::type):
        * rendering/RenderTable.h:
        (WebCore::RenderTable::getRules):
        * rendering/bidi.cpp:
        (khtml::BidiContext::BidiContext):
        (khtml::operator==):
        (khtml::embed):
        (khtml::RenderBlock::computeHorizontalPositionsForLine):
        (khtml::RenderBlock::bidiReorderLine):
        (khtml::RenderBlock::layoutInlineChildren):
        * rendering/bidi.h:
        (khtml::BidiContext::dir):
        (khtml::BidiContext::basicDir):
        (khtml::BidiRun::BidiRun):
        * rendering/render_canvasimage.h:
        * rendering/render_layer.h:
        (WebCore::Marquee::whiteSpace):
        * rendering/render_object.cpp:
        (WebCore::RenderObject::paintBorderImage):
        * rendering/render_replaced.cpp:
        (WebCore::RenderWidget::setSelectionState):
        * rendering/render_replaced.h:
        (WebCore::RenderReplaced::selectionState):
        * rendering/render_style.cpp:
        (WebCore::RenderStyle::getPseudoStyle):
        * rendering/render_style.h:
        (khtml::BorderValue::BorderValue):
        (khtml::BorderValue::style):
        (khtml::BorderValue::nonZero):
        (khtml::BorderValue::operator==):
        (khtml::OutlineValue::operator==):
        (khtml::CollapsedBorderValue::style):
        (khtml::BorderImage::horizontalRule):
        (khtml::BorderImage::verticalRule):
        (khtml::BorderData::borderLeftWidth):
        (khtml::BorderData::borderRightWidth):
        (khtml::BorderData::borderTopWidth):
        (khtml::BorderData::borderBottomWidth):
        (khtml::BackgroundLayer::backgroundClip):
        (khtml::BackgroundLayer::backgroundOrigin):
        (khtml::BackgroundLayer::backgroundRepeat):
        (khtml::RenderStyle::styleType):
        (khtml::RenderStyle::display):
        (khtml::RenderStyle::originalDisplay):
        (khtml::RenderStyle::position):
        (khtml::RenderStyle::floating):
        (khtml::RenderStyle::borderLeftStyle):
        (khtml::RenderStyle::borderLeftColor):
        (khtml::RenderStyle::borderRightStyle):
        (khtml::RenderStyle::borderRightColor):
        (khtml::RenderStyle::borderTopStyle):
        (khtml::RenderStyle::borderTopColor):
        (khtml::RenderStyle::borderBottomStyle):
        (khtml::RenderStyle::borderBottomColor):
        (khtml::RenderStyle::outlineWidth):
        (khtml::RenderStyle::outlineStyle):
        (khtml::RenderStyle::overflow):
        (khtml::RenderStyle::visibility):
        (khtml::RenderStyle::verticalAlign):
        (khtml::RenderStyle::unicodeBidi):
        (khtml::RenderStyle::clear):
        (khtml::RenderStyle::tableLayout):
        (khtml::RenderStyle::textAlign):
        (khtml::RenderStyle::textTransform):
        (khtml::RenderStyle::direction):
        (khtml::RenderStyle::whiteSpace):
        (khtml::RenderStyle::backgroundRepeat):
        (khtml::RenderStyle::backgroundClip):
        (khtml::RenderStyle::backgroundOrigin):
        (khtml::RenderStyle::emptyCells):
        (khtml::RenderStyle::captionSide):
        (khtml::RenderStyle::listStyleType):
        (khtml::RenderStyle::listStylePosition):
        (khtml::RenderStyle::cursor):
        (khtml::RenderStyle::pageBreakInside):
        (khtml::RenderStyle::pageBreakBefore):
        (khtml::RenderStyle::pageBreakAfter):
        (khtml::RenderStyle::outlineOffset):
        (khtml::RenderStyle::appearance):
        (khtml::RenderStyle::boxAlign):
        (khtml::RenderStyle::boxDirection):
        (khtml::RenderStyle::boxLines):
        (khtml::RenderStyle::boxOrient):
        (khtml::RenderStyle::boxPack):
        (khtml::RenderStyle::boxSizing):
        (khtml::RenderStyle::marqueeBehavior):
        (khtml::RenderStyle::marqueeDirection):
        (khtml::RenderStyle::userModify):
        (khtml::RenderStyle::userDrag):
        (khtml::RenderStyle::userSelect):
        (khtml::RenderStyle::marginTopCollapse):
        (khtml::RenderStyle::marginBottomCollapse):
        (khtml::RenderStyle::wordWrap):
        (khtml::RenderStyle::nbspMode):
        (khtml::RenderStyle::khtmlLineBreak):
        (khtml::RenderStyle::matchNearestMailBlockquoteColor):
        (khtml::RenderStyle::setBorderLeftWidth):
        (khtml::RenderStyle::setBorderLeftStyle):
        (khtml::RenderStyle::setBorderLeftColor):
        (khtml::RenderStyle::setBorderRightWidth):
        (khtml::RenderStyle::setBorderRightStyle):
        (khtml::RenderStyle::setBorderRightColor):
        (khtml::RenderStyle::setBorderTopWidth):
        (khtml::RenderStyle::setBorderTopStyle):
        (khtml::RenderStyle::setBorderTopColor):
        (khtml::RenderStyle::setBorderBottomWidth):
        (khtml::RenderStyle::setBorderBottomStyle):
        (khtml::RenderStyle::setBorderBottomColor):
        (khtml::RenderStyle::setOutlineWidth):
        (khtml::RenderStyle::setOutlineStyle):
        (khtml::RenderStyle::pseudoState):

2006-03-05  Geoffrey Garen  <ggaren@apple.com>

        - Rolled out the fix for <rdar://problem/4467143> because it's the
        wrong approach. Maciej and I discussed this on IRC.

        * khtml/ecma/kjs_dom.cpp:
        (KJS::): Don't use classInfo to express prototype inheritance.
        classInfo is only for representing a c++ superclass relationship.

2006-03-05  Eric Seidel  <eseidel@apple.com>

        Move improperly placed #endif causing no-svg build to fail.

        * kcanvas/device/quartz/KRenderingDeviceQuartz.h:

2006-03-05  Alexander Kellett  <lypanov@kde.org>

        Reviewed by Eric.

        - fix http://bugs.webkit.org/show_bug.cgi?id=6890
          and http://bugs.webkit.org/show_bug.cgi?id=6951
          by being more tolerant towards invalid points data

        - new tests:
          svg/custom/polyline-setattribute-points-null.svg
          svg/custom/polyline-invalid-points.svg

        * ksvg2/svg/svgpathparser.cpp:
        (SVGPolyParser::parsePoints):

2006-03-05  Maciej Stachowiak  <mjs@apple.com>

        Rubber stamped by Eric.

        - remove no longer used KDOMSettings and KSVGSettings

        * WebCore+SVG/KDOMSettings.cpp: Removed.
        * WebCore+SVG/KDOMSettings.h: Removed.
        * WebCore.xcodeproj/project.pbxproj:
        * ksvg2/KSVGSettings.h: Removed.
        * ksvg2/svg/SVGStyledElementImpl.cpp:

2006-03-05  Eric Seidel  <eseidel@apple.com>

        Reviewed by mjs.

        * platform/Font.cpp:
        (WebCore::Font::update): remove extra ref causing large leak.

2006-03-04  Eric Seidel  <eseidel@apple.com>

        Reviewed by hyatt.

        Re-work ImageViewer to use GraphicsContext.
        Add GraphicsContext(cairo_t*) constructor to make double-buffering easier.
        Add one more stub to prevent slashdot from crashing.
        Also fixed win32 build after Font change.

        * Viewer.vcproj:
        * Viewer/ImageView.cpp:
        * platform/Color.h:
        * platform/GraphicsContext.h:
        * platform/cairo/GraphicsContextCairo.cpp:
        (WebCore::GraphicsContext::GraphicsContext):
        * platform/win/TemporaryLinkStubs.cpp:
        (FrameWin::createPlugin):
        (BrowserExtensionWin::setTypedIconURL):

2006-03-05  Mitz Pettel  <opendarwin.org@mitzpettel.com>

        Reviewed by Darin, landed by ap.

        - fix http://bugs.webkit.org/show_bug.cgi?id=4840
          Frames only resize wider, can't make them narrower

        * khtml/html/html_baseimpl.cpp:
        (WebCore::HTMLFrameSetElementImpl::HTMLFrameSetElementImpl): Removed unused m_resizing flag.
        * khtml/html/html_baseimpl.h:
        * manual-tests/bugzilla-4840.html: Added.
        * page/FrameView.cpp:
        (WebCore::FrameViewPrivate::reset):
        (WebCore::FrameView::viewportMouseMoveEvent):
        (WebCore::FrameView::viewportMouseReleaseEvent):
        (WebCore::FrameView::setResizingFrameSet): New method. When a resizing frameset is set,
        mouse move and mouse release events target it instead of hit-testing.
        * page/FrameView.h:
        * rendering/render_frames.cpp:
        (WebCore::RenderFrameSet::setResizing): Inform the FrameView that we are resizing (or not).

2006-03-04  David Hyatt  <hyatt@apple.com>

        Fix for bug 7586, eliminate QFontMetrics.

        Reviewed by eric

        * WebCore.xcodeproj/project.pbxproj:
        * css/css_valueimpl.cpp:
        (WebCore::CSSPrimitiveValueImpl::computeLengthFloat):
        * ksvg2/svg/SVGLengthImpl.cpp:
        (SVGLengthImpl::updateValue):
        * kwq/KWQFontMetrics.h: Removed.
        * kwq/KWQFontMetrics.mm: Removed.
        * platform/Font.cpp:
        (WebCore::m_wordSpacing):
        (WebCore::Font::Font):
        (WebCore::Font::operator=):
        (WebCore::Font::~Font):
        (WebCore::Font::update):
        (WebCore::Font::width):
        * platform/Font.h:
        (WebCore::Font::operator==):
        (WebCore::Font::width):
        (WebCore::Font::height):
        * platform/FontRenderer.h: Added.
        (WebCore::FontRenderer::isFixedPitch):
        * platform/GraphicsContext.h:
        * platform/mac/FontMac.mm: Added.
        (WebCore::m_renderer):
        (WebCore::FontRenderer::getWebCoreFont):
        (WebCore::FontRenderer::getRenderer):
        (WebCore::FontRenderer::determinePitch):
        (WebCore::FontRenderer::update):
        (WebCore::Font::getWebCoreFont):
        (WebCore::Font::ascent):
        (WebCore::Font::descent):
        (WebCore::Font::lineSpacing):
        (WebCore::Font::xHeight):
        (WebCore::Font::isFixedPitch):
        (WebCore::Font::selectionRectForText):
        (WebCore::Font::drawHighlightForText):
        (WebCore::Font::drawText):
        (WebCore::Font::floatWidth):
        (WebCore::Font::checkSelectionPoint):
        * platform/mac/GraphicsContextMac.mm:
        * rendering/InlineTextBox.h:
        * rendering/RenderBlock.cpp:
        (WebCore::stripTrailingSpace):
        * rendering/RenderText.cpp:
        (WebCore::RenderText::trimmedMinMaxWidth):
        * rendering/RenderText.h:
        * rendering/RenderTextField.cpp:
        (WebCore::RenderTextField::calcMinMaxWidth):
        * rendering/bidi.cpp:
        (khtml::RenderBlock::tabWidth):
        (khtml::RenderBlock::checkLinesForTextOverflow):
        * rendering/render_box.cpp:
        (WebCore::RenderBox::caretRect):
        * rendering/render_br.cpp:
        (WebCore::RenderBR::lineHeight):
        * rendering/render_flow.cpp:
        (WebCore::RenderFlow::lineHeight):
        (WebCore::RenderFlow::caretRect):
        * rendering/render_image.cpp:
        (WebCore::RenderImage::imageChanged):
        (WebCore::RenderImage::paint):
        * rendering/render_line.cpp:
        (WebCore::InlineFlowBox::placeBoxesVertically):
        * rendering/render_list.cpp:
        (WebCore::toHebrew):
        (WebCore::RenderListMarker::paint):
        (WebCore::RenderListMarker::calcMinMaxWidth):
        (WebCore::RenderListMarker::baselinePosition):
        (WebCore::RenderListMarker::getRelativeMarkerRect):
        * rendering/render_object.cpp:
        (WebCore::RenderObject::getVerticalPosition):
        (WebCore::RenderObject::lineHeight):
        (WebCore::RenderObject::baselinePosition):
        * rendering/render_object.h:
        * rendering/render_style.h:

2006-03-04  Eric Seidel  <eseidel@apple.com>

        Reviewed by ggaren.

        Add urlSelected stub, adjust font metrics, and fix view size/move bug.

        * platform/win/TemporaryLinkStubs.cpp:
        (MouseEvent::MouseEvent):
        (FrameWin::urlSelected):
        (QFontMetrics::height):
        (QFontMetrics::xHeight):
        (QFontMetrics::ascent):
        (QFontMetrics::descent):
        (ScrollView::resizeContents):
        (ScrollView::setContentsPos):

2006-03-04  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by Eric.

        - stop background image loads from crashing

        * platform/cairo/GraphicsContextCairo.cpp:
        (WebCore::GraphicsContext::drawTiledImage):
        (WebCore::GraphicsContext::drawScaledAndTiledImage):

        - fix termination condition on file load loop

        * platform/win/TransferJobWin.cpp:
        (WebCore::TransferJob::fileLoadTimer):

2006-03-04  Geoffrey Garen  <ggaren@apple.com>

        Reviewed by Darin.

        - Fixed <rdar://problem/4467143> JavaScript enumeration of HTML 
        element properties skips DOM node properties

        No test case yet because this is a preliminary step toward enabling my
        uber test case for DOM support, which will cover this.

        * khtml/ecma/kjs_dom.cpp:
        (KJS::): Make DOMNode's classinfo reflect inheritance from 
        DOMNodeProto, so a for in enumeration can properly walk the 
        inheritance chain.
        * khtml/ecma/kjs_html.cpp:
        (KJS::): Used a script to sort classInfo data alphbetically.
        (KJS::KJS::HTMLElement::classInfo): Ditto.

2006-03-04  Maciej Stachowiak  <mjs@apple.com

        Reviewed by Eric.

         - fix mistake in TransferJob::start that made it cause a crash
        on non-file URLs

        * platform/win/TransferJobWin.cpp:
        (WebCore::TransferJob::start):

2006-03-04  Maciej Stachowiak  <mjs@apple.com

        Reviewed by Eric.

        - make TransferJobWin handle file: URLs, and fix other bugs
        as needed to make local file image loads work
        http://bugs.webkit.org/show_bug.cgi?id=7587

        * WebCore.vcproj/WebCore/WebCore.vcproj: add TransferJobWin
        to build.
        * bridge/win/FrameWin.cpp:
        (WebCore::FrameWin::FrameWin): Set autoLoadImages to true.
        * platform/TransferJob.cpp:
        (WebCore::TransferJob::TransferJob): Pass this to internal
        constructor, so windows version can initialize timer
        * platform/TransferJob.h:
        * platform/TransferJobInternal.h:
        (WebCore::TransferJobInternal::TransferJobInternal): On windows,
        prepare a timer for file loads.
        * platform/cairo/GraphicsContextCairo.cpp:
        (WebCore::GraphicsContext::drawFloatImage): If passed-in context
        is null, use our built-in context (this is probably not the best,
        but should work for now).
        * platform/win/TemporaryLinkStubs.cpp:
        (FrameWin::issueRedoCommand): Don't break.
        (WebCore::TransferJob::assembleResponseHeaders): ditto
        (FrameWin::saveDocumentState): ditto
        (FrameWin::clearUndoRedoOperations): ditto
        * platform/win/TransferJobWin.cpp:
        (WebCore::TransferJobInternal::~TransferJobInternal): Close file
        handle if we have one.
        (WebCore::TransferJob::~TransferJob): Empty.
        (WebCore::TransferJob::start): Open a windows file handle.
        (WebCore::TransferJob::fileLoadTimer): Load from windows file
        handle.
        (WebCore::TransferJob::cancel): Stop timer and close windows file 
        handle if present.

2006-03-03  Eric Seidel  <eseidel@apple.com>

        Reviewed by hyatt.

        Fix QString crasher on Win32, also remove c-style casts from file.
        Add a few more stubs to allow more layout tests to not crash.
        Make dlls only copy when changed.
        Add RenderThemeWin stubs.

        * WebCore.vcproj/WebCore/WebCore.vcproj:
        * WebCore.vcproj/WebCore/build-generated-files.sh:
        * platform/QString.cpp:
        (QString::stripWhiteSpace):
        (QString::simplifyWhiteSpace):
        (QString::setLatin1):
        (QString::sprintf):
        (QString::insert):
        (QString::fill):
        * platform/win/TemporaryLinkStubs.cpp:
        (WebCore::usableScreenRect):
        (FrameWin::respondToChangedContents):
        (FrameWin::unfocusWindow):
        (FrameWin::locationbarVisible):
        (FrameWin::clearUndoRedoOperations):
        (FrameWin::issueRedoCommand):
        (FrameWin::canRedo):
        (FrameWin::canUndo):
        (FrameWin::saveDocumentState):
        (FrameWin::print):
        (FrameWin::issueCutCommand):
        (FrameWin::issueCopyCommand):
        (FrameWin::issueUndoCommand):
        (FrameWin::mimeTypeForFileName):
        (FrameWin::clearRecordedFormValues):
        (FrameWin::issuePasteCommand):
        (FrameWin::scheduleClose):
        (FrameWin::menubarVisible):
        (FrameWin::personalbarVisible):
        (FrameWin::statusbarVisible):
        (FrameWin::toolbarVisible):
        (FrameWin::issueTransposeCommand):
        (FrameWin::canPaste):
        (FrameWin::incomingReferrer):
        (FrameWin::canGoBackOrForward):
        (FrameWin::issuePasteAndMatchStyleCommand):
        (FrameWin::createPlugin):
        (BrowserExtensionWin::getHistoryLength):
        (BrowserExtensionWin::canRunModal):
        (BrowserExtensionWin::openURLNotify):
        (BrowserExtensionWin::canRunModalNow):
        (BrowserExtensionWin::runModal):
        (QListBox::setFont):
        (WebCore::TransferJob::assembleResponseHeaders):
        (WebCore::TransferJob::~TransferJob):
        (QFontMetrics::QFontMetrics):
        (QFontMetrics::lineSpacing):
        (QFontMetrics::xHeight):
        (QFontMetrics::ascent):
        (FrameWin::shouldChangeSelection):
        (FrameWin::generateFrameName):
        (FrameWin::createFrame):
        (RenderThemeWin::paintCheckbox):
        (RenderThemeWin::paintRadio):
        (RenderThemeWin::paintButton):
        (RenderThemeWin::paintTextField):
        * rendering/RenderThemeWin.cpp: Added.
        (WebCore::theme):
        * rendering/RenderThemeWin.h: Added.

2006-03-03  Geoffrey Garen  <ggaren@apple.com>

        Test case for <rdar://problem/4465598> REGRESSION (TOT): Crash occurs at 
        http://maps.google.com/?output=html ( KJS::Identifier::add(KJS::UString::Rep*)

        * manual-tests/property-map-save-crash.html: Added.

2006-03-03  Eric Seidel  <eseidel@apple.com>

        Reviewed by adele.

        Fix clearly bogus cairo elipse drawing code.
        Make QFontMetrics stubs slightly more sane.

        * platform/cairo/GraphicsContextCairo.cpp:
        (WebCore::GraphicsContext::drawEllipse):
        * platform/win/TemporaryLinkStubs.cpp:
        (QFontMetrics::floatWidth):
        (QFontMetrics::height):
        (QFontMetrics::width):
        (QFontMetrics::isFixedPitch):

2006-03-03  Darin Adler  <darin@apple.com>

        Reviewed by Eric.

        - fix http://bugs.webkit.org/show_bug.cgi?id=7480
          non-HTML elems w/o children in HTML docs get serialized self-closing
        - fix problem where the HTML tokenizer would discard the first newline after </pre>

        Test: fast/innerHTML/innerHTML-custom-tag.html

        * editing/markup.cpp: (WebCore::shouldSelfClose): Refined rule so that it doesn't
        try to do any self-closing tags in HTML documents at all; updated comment.

        * khtml/html/htmltokenizer.cpp: (WebCore::HTMLTokenizer::parseTag): Added a check
        of beginTag in the <pre> tag case. We were accidentally discarding a newline after
        a </pre> tag.

2006-03-03  Maciej Stachowiak  <mjs@apple.com>

        Rubber stamped by Eric.

        - add new files to build, fix link stubs.

        * WebCore.vcproj/WebCore/WebCore.vcproj:
        * platform/win/TemporaryLinkStubs.cpp:
        (KWQKCookieJar::cookieEnabled):
        (WebCore::TransferJob::retrieveCharset):
        (WebCore::TransferJob::assembleResponseHeaders):
        (WebCore::TransferJob::~TransferJob):
        * platform/win/TransferJobWin.cpp: Added.

2006-03-03  Maciej Stachowiak  <mjs@apple.com>

        - add file I forgot in my last commit.

        * platform/TransferJobInternal.h: Added.
        (WebCore::TransferJobInternal::TransferJobInternal):

2006-03-03  Eric Seidel  <eseidel@apple.com>

        Reviewed by mjs.

        Wire up WidgetWin, CursorWin, ScrollViewWin.
        Stub out methods for selection and cursors.

        * Viewer/ImageDocument.h:
        * WebCore.vcproj/WebCore/WebCore.vcproj:
        * bridge/win/FrameWin.cpp:
        * khtml/ecma/kjs_proxy.cpp:
        (WebCore::KJSProxyImpl::initScriptIfNeeded):
        * platform/IntRect.h:
        (WebCore::IntRect::IntRect):
        * platform/Widget.h:
        * platform/win/CursorWin.cpp:
        (WebCore::eastResizeCursor):
        (WebCore::northResizeCursor):
        (WebCore::northEastResizeCursor):
        (WebCore::northWestResizeCursor):
        (WebCore::southResizeCursor):
        (WebCore::southEastResizeCursor):
        (WebCore::southWestResizeCursor):
        (WebCore::westResizeCursor):
        * platform/win/IntRectWin.cpp:
        (WebCore::IntRect::IntRect):
        (WebCore::IntRect::operator RECT):
        * platform/win/MouseEventWin.cpp:
        * platform/win/ScrollViewWin.cpp: Added.
        (WebCore::ScrollView::updateContents):
        * platform/win/TemporaryLinkStubs.cpp:
        (QTextEdit::textWithHardLineBreaks):
        (QLineEdit::setPlaceholderString):
        (QScrollBar::scroll):
        (GraphicsContext::beginTransparencyLayer):
        (Widget::setIsSelected):
        (QLineEdit::selectedText):
        (QComboBox::sizeHint):
        (KWQFileButton::focusPolicy):
        (QTextEdit::focusPolicy):
        (QSlider::focusPolicy):
        (QListBox::focusPolicy):
        (QLineEdit::focusPolicy):
        (WebCore::moveCursor):
        (ScrollView::scrollBy):
        (KWQKCookieJar::cookieEnabled):
        (WebCore::TransferJob::TransferJob):
        (WebCore::screenDepth):
        (WebCore::usableScreenRect):
        (FrameWin::getObjectInstanceForWidget):
        (FrameWin::getEmbedInstanceForWidget):
        (FrameWin::getAppletInstanceForWidget):
        (FrameWin::passMouseDownEventToWidget):
        (FrameWin::issuePasteCommand):
        (FrameWin::issueTransposeCommand):
        (QSlider::setFont):
        (QLineEdit::setFont):
        (QListBox::setFont):
        (QFontMetrics::QFontMetrics):
        (QComboBox::setFont):
        (QTextEdit::setFont):
        (QTextEdit::setWritingDirection):
        (QFontMetrics::setFontDescription):
        (QFontMetrics::checkSelectionPoint):
        (FrameWin::addMessageToConsole):
        (FrameWin::shouldChangeSelection):
        (ScrollView::resizeContents):
        (ScrollView::visibleHeight):
        (ScrollView::visibleWidth):
        (ScrollView::setContentsPos):
        (ScrollView::contentsX):
        (ScrollView::contentsY):
        (ScrollView::contentsHeight):
        (ScrollView::contentsWidth):
        (ScrollView::viewportToContents):
        * platform/win/WidgetWin.cpp: Added.
        (WebCore::Widget::Widget):
        (WebCore::Widget::~Widget):
        (WebCore::Widget::windowHandle):
        (WebCore::Widget::setWindowHandle):
        (WebCore::Widget::setActiveWindow):
        (WebCore::Widget::frameGeometry):
        (WebCore::Widget::hasFocus):
        (WebCore::Widget::setFocus):
        (WebCore::Widget::clearFocus):
        (WebCore::Widget::font):
        (WebCore::Widget::setFont):
        (WebCore::Widget::setCursor):
        (WebCore::Widget::show):
        (WebCore::Widget::hide):
        (WebCore::Widget::setFrameGeometry):
        (WebCore::Widget::mapFromGlobal):

2006-03-03  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by Eric.

        - move TransferJob from kwq to platform, separate platform from non-platform bits

        * ForwardingHeaders/kio/job.h: Removed.
        * ForwardingHeaders/kio/jobclasses.h: Removed.
        * WebCore.xcodeproj/project.pbxproj:
        * bridge/mac/MacFrame.mm:
        * dom/xml_tokenizer.cpp:
        * khtml/xsl/xslt_processorimpl.cpp:
        * kwq/KWQKJobClasses.h: Removed.
        * kwq/KWQKJobClasses.mm: Removed.
        * kwq/KWQLoader.mm:
        * kwq/KWQResourceLoader.mm:
        * kwq/TransferJobClient.h: Removed.
        * loader/Cache.cpp:
        * loader/loader.cpp:
        * page/Frame.cpp:
        * platform/TransferJob.cpp: Added.
        (WebCore::TransferJob::TransferJob):
        (WebCore::TransferJob::queryMetaData):
        (WebCore::TransferJob::addMetaData):
        * platform/TransferJob.h: Added.
        * platform/TransferJobClient.h: Added.
        * platform/mac/TransferJobMac.mm: Added.
        (WebCore::TransferJobInternal::~TransferJobInternal):
        (WebCore::TransferJob::retrieveCharset):
        (WebCore::TransferJob::cancel):
        * xml/xmlhttprequest.cpp:

2006-03-03  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by Eric.

        - enough link stubs to "display" local copy of WebKit site w/o hitting breakpoint

        * platform/win/TemporaryLinkStubs.cpp:
        (QLineEdit::setReadOnly):
        (QTextEdit::setCursorPosition):
        (QLineEdit::setCursorPosition):
        (QFontMetrics::width):
        (GraphicsContext::drawText):
        (GraphicsContext::drawLineForText):

2006-03-02  Maciej Stachowiak  <mjs@apple.com>

        Rubber stamped by Eric.

        - remove function that is now gone

        * platform/win/TemporaryLinkStubs.cpp:

2006-03-02  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by Eric.
        
        - move logic to kick off load from KWQLoader function to a TransferJob method

        * kwq/KWQKJobClasses.h:
        * kwq/KWQKJobClasses.mm:
        (WebCore::TransferJob::start):
        * kwq/KWQLoader.h:
        * kwq/KWQLoader.mm:
        * loader/loader.cpp:
        (WebCore::Loader::servePendingRequests):
        * xml/xmlhttprequest.cpp:
        (WebCore::XMLHttpRequest::send):

2006-03-02  Maciej Stachowiak  <mjs@apple.com>

        Rubber stamped by Eric.

        - remove unused loader parameter to KWQServeRequest.

        * kwq/KWQLoader.h:
        * kwq/KWQLoader.mm:
        (KWQServeRequest):
        * loader/loader.cpp:
        (WebCore::Loader::servePendingRequests):
        * xml/xmlhttprequest.cpp:
        (WebCore::XMLHttpRequest::send):

2006-03-02  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by Eric.

        - remove one of the versions of KWQServeRequest.

        * kwq/KWQLoader.h:
        * kwq/KWQLoader.mm:
        * loader/loader.cpp:
        (WebCore::Loader::servePendingRequests):
        * platform/win/TemporaryLinkStubs.cpp:
        (Widget::isEnabled):
        (KWQServeRequest):

2006-03-02  Maciej Stachowiak  <mjs@apple.com>

        Rubber stamped by Eric.

        - win32 build fix.

        * platform/win/MouseEventWin.cpp:

2006-03-02  Justin Garcia  <justin.garcia@apple.com>

        Reviewed by eric
        
        <http://bugs.webkit.org/show_bug.cgi?id=3894>
        uses of <cmath> should change to <math>

        * ksvg2/svg/SVGAnimateTransformElementImpl.cpp:
        * ksvg2/svg/SVGAnimationElementImpl.cpp:
        * ksvg2/svg/SVGHelper.cpp:
        * ksvg2/svg/SVGLengthImpl.cpp:

2006-03-02  Andrew Wellington  <proton@wiretapped.net>

        Reviewed by Darin, landed by Beth

        Fix for http://bugs.webkit.org/show_bug.cgi?id=3230
        CSS1: Words with inline elements get extra capital letters

        Does not use UBreakIterator (yet?) for this, but a relatively
        simple change that fixes our failure in the CSS1 test suite 
        (5.4.5).

        * platform/StringImpl.cpp:
        (WebCore::StringImpl::capitalize): Specify if this is a run-on
        * platform/StringImpl.h:
        * rendering/RenderContainer.cpp:
        (WebCore::RenderContainer::addChild): Change to re-run 
        capitalisation when added into tree as previous text node changes
        * rendering/RenderText.cpp:
        (WebCore::RenderText::setText): Check if previous node is text that
        doesn't end in a space

2006-03-02  Justin Garcia  <justin.garcia@apple.com>

        Reviewed by sullivan
        
        <http://bugs.webkit.org/show_bug.cgi?id=7542>
        REGRESSION: (r13028) Scrolling causes incomplete drawing of <ul> bullets

        * rendering/render_list.cpp:
        (WebCore::RenderListMarker::paint):

2006-03-02  Eric Seidel  <eseidel@apple.com>

        Reviewed by ggaren.

        Add (partially stubbed out) mouse event handling for Win32.

        * WebCore.vcproj/WebCore/WebCore.vcproj:
        * platform/IntPoint.h:
        * platform/MouseEvent.h:
        * platform/win/IntPointWin.cpp: Added.
        (WebCore::IntPoint::IntPoint):
        (WebCore::IntPoint::operator POINT):
        * platform/win/MouseEventWin.cpp: Added.
        (WebCore::MouseEvent::MouseEvent):
        * platform/win/TemporaryLinkStubs.cpp:
        (QLineEdit::setMaxLength):
        (ScrollView::scrollBy):
        (WebCore::Widget::setFocus):
        (FrameWin::respondToChangedSelection):
        (FrameWin::runJavaScriptPrompt):
        (FrameWin::recordFormValue):
        (FrameWin::registerCommandForRedo):
        (FrameWin::runJavaScriptAlert):
        (FrameWin::runJavaScriptConfirm):
        (FrameWin::openURL):
        (FrameWin::registerCommandForUndo):
        (FrameWin::addMessageToConsole):
        (FrameWin::mimeTypeForFileName):
        (FrameWin::shouldChangeSelection):
        (FrameWin::markMisspellingsInAdjacentWords):
        (FrameWin::markMisspellings):
        (FrameWin::personalbarVisible):
        (FrameWin::objectContentType):
        (FrameWin::createFrame):
        (FrameWin::createPlugin):
        (BrowserExtensionWin::setTypedIconURL):
        (BrowserExtensionWin::getHistoryLength):
        (BrowserExtensionWin::canRunModal):
        (BrowserExtensionWin::openURLNotify):
        (BrowserExtensionWin::createNewWindow):
        (BrowserExtensionWin::canRunModalNow):
        (BrowserExtensionWin::runModal):
        (BrowserExtensionWin::goBackOrForward):
        (BrowserExtensionWin::setIconURL):
        (FrameWin::passSubframeEventToSubframe):
        (FrameWin::lastEventIsMouseUp):
        (BrowserExtensionWin::BrowserExtensionWin):
        (Widget::setCursor):
        (ScrollView::visibleHeight):
        (ScrollView::visibleWidth):
        (ScrollView::setContentsPos):
        (ScrollView::contentsX):
        (ScrollView::contentsY):
        (ScrollView::contentsHeight):
        (ScrollView::contentsWidth):
        (ScrollView::viewportToContents):
        (TransferJob::TransferJob):
        (TransferJob::addMetaData):

2006-03-02  Justin Garcia  <justin.garcia@apple.com>

        Reviewed by mjs
        
        https://bugs.webkit.org/show_bug.cgi?id=7150
        <rdar://4433765> TinyMCE: Undo still enabled after a location change, crashes if performed
        
        Can't clear undo/redo operations registered by subframes in didOpenURL,
        because subframes have already been detached.

        * page/Frame.cpp:
        (WebCore::Frame::didOpenURL):
        (WebCore::Frame::closeURL):

2006-03-01  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by Darin.

        - WebCore updates for "Set up new prototype macros and avoid using #if without defined() in JSC"
        http://bugs.webkit.org/show_bug.cgi?id=7387
        
        Add Platform.h 

        * ForwardingHeaders/kxmlcore/Platform.h: Added.
        * bridge/mac/WebCoreFrameNamespaces.m:
        * bridge/mac/WebCoreViewFactory.m:
        * bridge/mac/WebDashboardRegion.m:
        * config.h:
        * platform/Logging.cpp:
        * platform/mac/ScrollViewMac.mm:
        (WebCore::ScrollView::addChild):
        * platform/mac/WebCoreCookieAdapter.m:
        * platform/mac/WebCoreGraphicsBridge.m:
        * platform/mac/WebCoreHistory.m:
        * platform/mac/WebCoreImageRendererFactory.m:
        * platform/mac/WebCoreKeyGenerator.m:
        * platform/mac/WebCoreView.m:

2006-03-02  Eric Seidel  <eseidel@apple.com>

        * WebCore.xcodeproj/project.pbxproj: update GraphicsContext.cpp path to fix build

2006-03-01  Eric Seidel  <eseidel@apple.com>

        Reviewed by andersca.

        Add first-stab GraphicsContextCairo.
        Shuffle a few more link stubs around, remove uncessary WebCore::

        * WebCore.vcproj/WebCore/WebCore.vcproj:
        * platform/GraphicsContext.cpp: Added.
        * platform/GraphicsContext.h:
        * platform/cairo/GraphicsContextCairo.cpp:
        (WebCore::GraphicsContextState::GraphicsContextState):
        (WebCore::setColor):
        (WebCore::fillRectSourceOver):
        (WebCore::GraphicsContextPrivate::GraphicsContextPrivate):
        (WebCore::GraphicsContextPrivate::~GraphicsContextPrivate):
        (WebCore::GraphicsContext::GraphicsContext):
        (WebCore::GraphicsContext::~GraphicsContext):
        (WebCore::GraphicsContext::pen):
        (WebCore::GraphicsContext::setPen):
        (WebCore::GraphicsContext::setBrush):
        (WebCore::GraphicsContext::brush):
        (WebCore::GraphicsContext::save):
        (WebCore::GraphicsContext::restore):
        (WebCore::GraphicsContext::drawRect):
        (WebCore::GraphicsContext::setColorFromBrush):
        (WebCore::GraphicsContext::setColorFromPen):
        (WebCore::adjustLineToPixelBounderies):
        (WebCore::GraphicsContext::drawLine):
        (WebCore::GraphicsContext::drawEllipse):
        (WebCore::GraphicsContext::drawArc):
        (WebCore::GraphicsContext::drawConvexPolygon):
        (WebCore::GraphicsContext::drawFloatImage):
        (WebCore::GraphicsContext::drawTiledImage):
        (WebCore::GraphicsContext::drawScaledAndTiledImage):
        (WebCore::GraphicsContext::fillRect):
        (WebCore::GraphicsContext::addClip):
        (WebCore::GraphicsContext::setPaintingDisabled):
        (WebCore::GraphicsContext::paintingDisabled):
        * platform/cairo/ImageCairo.cpp:
        * platform/cg/GraphicsContextCG.cpp: Removed.
        * platform/win/TemporaryLinkStubs.cpp:
        (QLineEdit::selectAll):
        (Widget::mapFromGlobal):
        (QLineEdit::cursorPosition):
        (QTextEdit::setScrollBarModes):
        (QTextEdit::selectAll):
        (QComboBox::focusPolicy):
        (GraphicsContext::clearShadow):
        (QTextEdit::setCursorPosition):
        (GraphicsContext::drawText):
        (QLineEdit::setLiveSearch):
        (QComboBox::QComboBox):
        (Widget::lockDrawingFocus):
        (QTextEdit::setSelectionRange):
        (QSlider::QSlider):
        (ScrollView::scrollYOffset):
        (QComboBox::sizeHint):
        (QLineEdit::edited):
        (QTextEdit::text):
        (QSlider::value):
        (WebCore::Widget::setFocus):
        (WebCore::TransferJob::addMetaData):
        (FrameWin::respondToChangedContents):
        (FrameWin::unfocusWindow):
        (FrameWin::locationbarVisible):
        (FrameWin::respondToChangedSelection):
        (FrameWin::clearUndoRedoOperations):
        (FrameWin::issueRedoCommand):
        (FrameWin::getObjectInstanceForWidget):
        (FrameWin::getEmbedInstanceForWidget):
        (FrameWin::canRedo):
        (FrameWin::canUndo):
        (FrameWin::runJavaScriptPrompt):
        (FrameWin::recordFormValue):
        (FrameWin::registerCommandForRedo):
        (FrameWin::runJavaScriptAlert):
        (FrameWin::runJavaScriptConfirm):
        (FrameWin::openURL):
        (FrameWin::saveDocumentState):
        (FrameWin::print):
        (FrameWin::getAppletInstanceForWidget):
        (FrameWin::passMouseDownEventToWidget):
        (FrameWin::registerCommandForUndo):
        (FrameWin::issueCutCommand):
        (FrameWin::issueCopyCommand):
        (FrameWin::addMessageToConsole):
        (FrameWin::passWheelEventToChildWidget):
        (FrameWin::issueUndoCommand):
        (FrameWin::mimeTypeForFileName):
        (FrameWin::clearRecordedFormValues):
        (FrameWin::issuePasteCommand):
        (FrameWin::shouldChangeSelection):
        (FrameWin::scheduleClose):
        (FrameWin::markMisspellingsInAdjacentWords):
        (FrameWin::markMisspellings):
        (FrameWin::menubarVisible):
        (FrameWin::personalbarVisible):
        (FrameWin::lastEventIsMouseUp):
        (FrameWin::statusbarVisible):
        (FrameWin::toolbarVisible):
        (FrameWin::issueTransposeCommand):
        (FrameWin::userAgent):
        (FrameWin::canPaste):
        (FrameWin::incomingReferrer):
        (FrameWin::objectContentType):
        (FrameWin::passSubframeEventToSubframe):
        (FrameWin::createFrame):
        (FrameWin::canGoBackOrForward):
        (FrameWin::issuePasteAndMatchStyleCommand):
        (FrameWin::createPlugin):
        (FrameWin::generateFrameName):
        (QTextEdit::setWritingDirection):
        (QFontMetrics::checkSelectionPoint):
        (GraphicsContext::GraphicsContext):
        (QFontMetrics::isFixedPitch):
        (FrameWin::restoreDocumentState):
        (FrameWin::partClearedInBegin):
        (FrameWin::createEmptyDocument):
        (FrameWin::overrideMediaType):
        (FrameWin::setTitle):
        (FrameWin::handledOnloadEvents):
        (FrameWin::markedTextRange):
        (GraphicsContext::font):
        (GraphicsContext::setFont):

2006-03-02  Alexey Proskuryakov  <ap@nypop.com>

        Reviewed by Darin.

        Changed an Objective-C forward declaration from "class" to "@class".
        This doesn't appear to fix any problems, though.

        * platform/StringImpl.h:

2006-03-01  Justin Garcia  <justin.garcia@apple.com>

        Reviewed by darin
        
        <http://bugs.webkit.org/show_bug.cgi?id=7059>
        TinyMCE: Select All + delete sends you Back intsead of deleting

        * page/Frame.cpp:
        (WebCore::Frame::selectFrameElementInParentIfFullySelected):

2006-03-01  David Harrison  <harrison@apple.com>

        Reviewed by Justin.
        (missed these in my earlier commit for <rdar://problem/4359736>)

        * bridge/mac/WebCoreFrameBridge.h:
        * bridge/mac/WebCoreFrameBridge.mm:
        (-[WebCoreFrameBridge canIncreaseSelectionListLevel]):
        (-[WebCoreFrameBridge canDecreaseSelectionListLevel]):
        (-[WebCoreFrameBridge increaseSelectionListLevel]):
        (-[WebCoreFrameBridge decreaseSelectionListLevel]):

2006-03-01  Eric Seidel  <eseidel@apple.com>

        Reviewed by mjs.

        Fix win32 build, add IntRectWin and GraphicsContextCairo stub.

        * Viewer/ImageDocument.cpp:
        * Viewer/ImageMainFrame.cpp:
        * WebCore.vcproj/WebCore/WebCore.vcproj:
        * platform/IntRect.h:
        * platform/cairo/GraphicsContextCairo.cpp: Added.
        * platform/win/TemporaryLinkStubs.cpp:
        (GraphicsContext::drawLineForText):
        (WebCore::GraphicsContext::fillRect):
        (WebCore::TransferJob::TransferJob):
        (GraphicsContext::GraphicsContext):
        (WebCore::GraphicsContext::~GraphicsContext):

2006-02-23  David Harrison  <harrison@apple.com>

        Reviewed by Justin.

        <rdar://problem/4359736> Support outlining ability with lists

        Added Mail SPI for list level changes.  It is SPI because it is not complete support
        for outlining.  See <rdar://problem/4457070> "API for html lists as note outlines".
        Additional support is to end a list when return is typed on empty list item.

        * WebCore.vcproj/WebCore/WebCore.vcproj:
        * WebCore.xcodeproj/project.pbxproj:
        Added ModifySelectionListLevelCommand.cpp and ModifySelectionListLevelCommand.h
        
        * bridge/mac/WebCoreFrameBridge.h:
        * bridge/mac/WebCoreFrameBridge.mm:
        (-[WebCoreFrameBridge canIncreaseSelectionListLevel]):
        (-[WebCoreFrameBridge canDecreaseSelectionListLevel]):
        (-[WebCoreFrameBridge increaseSelectionListLevel]):
        (-[WebCoreFrameBridge decreaseSelectionListLevel]):
        Supply list level calls in the bridge.
        
        * editing/InsertParagraphSeparatorCommand.cpp:
        (WebCore::createListItemElement):
        New.  Creates an li.
        
        (WebCore::InsertParagraphSeparatorCommand::doApply):
        - slight logic cleanup
        - on empty list item, end the list
        
        * editing/ModifySelectionListLevelCommand.cpp: Added.
        (WebCore::ModifySelectionListLevelCommand::ModifySelectionListLevelCommand):
        (WebCore::ModifySelectionListLevelCommand::preservesTypingStyle):
        (WebCore::ModifySelectionListLevelCommand::doApply):
        (WebCore::ModifySelectionListLevelCommand::canIncreaseSelectionListLevel):
        (WebCore::ModifySelectionListLevelCommand::canDecreaseSelectionListLevel):
        (WebCore::ModifySelectionListLevelCommand::increaseSelectionListLevel):
        (WebCore::ModifySelectionListLevelCommand::decreaseSelectionListLevel):
        (WebCore::modifySelectionListLevel):
        (WebCore::getStartEndListChildren):
        (WebCore::canIncreaseListLevel):
        (WebCore::canDecreaseListLevel):
        (WebCore::ModifySelectionListLevelCommand::insertSiblingNodeRangeBefore):
        (WebCore::ModifySelectionListLevelCommand::insertSiblingNodeRangeAfter):
        (WebCore::ModifySelectionListLevelCommand::appendSiblingNodeRange):
        (WebCore::ModifySelectionListLevelCommand::increaseListLevel):
        (WebCore::ModifySelectionListLevelCommand::decreaseListLevel):
        * editing/ModifySelectionListLevelCommand.h: Added.
        New editing command for adjusting the list level.
        
        * editing/ReplaceSelectionCommand.cpp:
        (WebCore::ReplaceSelectionCommand::doApply):
        Slight logic cleanup

        * editing/htmlediting.cpp:
        (WebCore::isListElement):
        (WebCore::enclosingListChild):
        New helpers.
        
        (WebCore::isTableElement):
        Allow caller to pass 0... return false in that case.
        
        * editing/htmlediting.h:
        New helpers.
        
        * rendering/RenderContainer.cpp:
        (WebCore::updateListMarkerNumbers):
        Allow for list children that are not li nodes.  Ignore and continue rather than stopping.
        
        (WebCore::RenderContainer::addChild):
        Allow for nil beforeChild, meaning "add at end".
        
2006-03-01  Eric Seidel  <eseidel@apple.com>

        Reviewed by justing.

        Update ESelectionGranulartiy enum to use newer CamelCase styling.

        * bridge/mac/WebCoreFrameBridge.mm:
        (-[WebCoreFrameBridge alterCurrentSelection:direction:granularity:]):
        * editing/Selection.cpp:
        (WebCore::Selection::Selection):
        (WebCore::Selection::validate):
        * editing/SelectionController.cpp:
        (WebCore::SelectionController::modifyExtendingRightForward):
        (WebCore::SelectionController::modifyMovingRightForward):
        (WebCore::SelectionController::modifyExtendingLeftBackward):
        (WebCore::SelectionController::modifyMovingLeftBackward):
        (WebCore::SelectionController::modify):
        * editing/TypingCommand.cpp:
        (WebCore::TypingCommand::deleteKeyPressed):
        (WebCore::TypingCommand::forwardDeleteKeyPressed):
        * editing/jsediting.cpp:
        * editing/text_granularity.h:
        (WebCore::):
        * page/Frame.cpp:
        (WebCore::Frame::selectClosestWordFromMouseEvent):
        (WebCore::Frame::handleMousePressEventTripleClick):
        (WebCore::Frame::handleMousePressEventSingleClick):
        (WebCore::Frame::handleMouseMoveEventSelection):

2006-03-01  Alexander Kellett  <lypanov@kde.org>

        Reviewed by Maciej.

        - fix http://bugs.webkit.org/show_bug.cgi?id=5966

        Fixes already existing test:
          svg/W3C-SVG-1.1/coords-viewattr-02-b.svg

        * kcanvas/RenderSVGImage.cpp:
        (WebCore::RenderSVGImage::adjustRectsForAspectRatio):
        (WebCore::RenderSVGImage::paint):
        * kcanvas/RenderSVGImage.h:

2006-03-01  Alexey Proskuryakov  <ap@nypop.com>

        Reviewed by Darin.

        - http://bugs.webkit.org/show_bug.cgi?id=3812
          XMLHttpRequest: PUT, DELETE, HEAD and all other methods but POST actually do a GET.

        HEAD is currently unimplemented because of what seems to be a bug in NSURLConnection,
        and does a GET instead.

        * kwq/KWQKJobClasses.h: Add a method parameter to TransferJob.
        * kwq/KWQKJobClasses.mm:
        (WebCore::TransferJobPrivate::TransferJobPrivate):
        (WebCore::TransferJob::TransferJob):
        (WebCore::TransferJob::method):
        * bridge/mac/WebCoreFrameBridge.h: URL loading functions now take a method parameter.
        * dom/xml_tokenizer.cpp:
        (WebCore::openFunc):
        * khtml/xsl/xslt_processorimpl.cpp:
        (DOM::docLoaderFunc):
        * kwq/KWQLoader.mm:
        (KWQServeRequest):
        (KWQServeSynchronousRequest):
        * loader/loader.cpp:
        (WebCore::Loader::servePendingRequests):
        * page/Frame.cpp:
        (WebCore::Frame::didOpenURL):
        * xml/xmlhttprequest.cpp:
        (WebCore::XMLHttpRequest::send): Honor the method passed in open().
        * khtml/ecma/JSXMLHttpRequest.cpp:
        (KJS::JSXMLHttpRequestProtoFunc::callAsFunction): Don't serialize null as "null".

2006-03-01  Timothy Hatcher  <timothy@apple.com>

        Reviewed by Darin.
        
        http://bugs.webkit.org/show_bug.cgi?id=7450
        elementAtPoint is expensive and should return a smart dictionary
        
        <rdar://problem/2952761> moving the mouse around eats more CPU than I would expect (7450)

        Support for WebKit. This removes the old elementAtPoint: on the bridge.
        WebKit now uses the bridge method getInnerNonSharedNode:innerNode:URLElement:atPoint:

        * WebCore.exp: removes the WebCore* dictionary keys
        * bindings/objc/DOM.mm:
        (-[DOMElement image]): new method to get an NSImage if the element has an image renderer
        * bindings/objc/DOMHTML.mm:
        (-[DOMHTMLElement titleDisplayString]): new method that returns the title after doing the backslash as currency symbol conversion
        (-[DOMHTMLInputElement altDisplayString]): ditto for alt
        (-[DOMHTMLImageElement altDisplayString]): ditto
        (-[DOMHTMLAppletElement altDisplayString]): ditto
        (-[DOMHTMLAreaElement altDisplayString]): ditto
        (-[DOMHTMLAnchorElement absoluteLinkURL]): new method to get the absolute NSURL
        (-[DOMHTMLAreaElement absoluteLinkURL]): ditto
        (-[DOMHTMLLinkElement absoluteLinkURL]): ditto
        (-[DOMHTMLInputElement absoluteImageURL]): new method to get the absolute image location as an NSURL
        (-[DOMHTMLImageElement absoluteImageURL]): ditto
        (-[DOMHTMLObjectElement absoluteImageURL]): ditto
        * bindings/objc/DOMPrivate.h:
        * bridge/mac/WebCoreFrameBridge.h:
        * bridge/mac/WebCoreFrameBridge.mm:
        (-[WebCoreFrameBridge getInnerNonSharedNode:innerNode:URLElement:atPoint:]):
        (-[WebCoreFrameBridge isPointInsideSelection:]):
        * dom/DocumentImpl.cpp:
        (WebCore::DocumentImpl::prepareMouseEvent):
        (WebCore::DocumentImpl::backslashAsCurrencySymbol):
        * dom/DocumentImpl.h:
        * rendering/render_layer.cpp:
        (WebCore::RenderLayer::hitTest):
        * rendering/render_object.h:
        (WebCore::RenderObject::NodeInfo::URLElement):
        (WebCore::RenderObject::NodeInfo::setURLElement):

2006-03-01  Mitz Pettel  <opendarwin.org@mitzpettel.com>

        Test: fast/css/hover-subselector.html

        Reviewed by Hyatt.

        - fix http://bugs.webkit.org/show_bug.cgi?id=7327
          REGRESSION (r12869): :hover subselector does not work in quirks mode

        * css/cssstyleselector.h:
        * css/cssstyleselector.cpp:
        (WebCore::CSSStyleSelector::checkSelector): Pass flag to indicate sub-selector.
        (WebCore::CSSStyleSelector::checkOneSelector): Apply the *:hover and *:active quirks only
        when there are no sub-selectors.

2006-03-01  Maciej Stachowiak  <mjs@apple.com>

        Rubber stamped by Hyatt.

        - fix win32 build (and make dumprendertree run)

        * kwq/KWQComboBox.h:
        * platform/win/TemporaryLinkStubs.cpp:
        (QTextEdit::selectionEnd):
        (Widget::~Widget):
        (GraphicsContext::beginTransparencyLayer):
        (QComboBox::populate):
        (GraphicsContext::drawConvexPolygon):
        (QFontMetrics::selectionRectForText):
        (GraphicsContext::setShadow):
        (GraphicsContext::clearFocusRing):
        (GraphicsContext::drawImageInRect):
        (KWQFileButton::setFilename):
        (KWQFileButton::focusPolicy):
        (KWQFileButton::frameGeometry):
        (QSlider::focusPolicy):
        (WebCore::GraphicsContext::font):
        (QTextEdit::setWritingDirection):
        (QFontMetrics::checkSelectionPoint):
        (QFontMetrics::isFixedPitch):
        (WebCore::TransferJob::addMetaData):

2006-02-28  Darin Adler  <darin@apple.com>

        Reviewed by Eric.

        - http://bugs.webkit.org/show_bug.cgi?id=7444
          move QPainter to platform directory and name it GraphicsContext

        * platform/GraphicsContext.h: Added.
        * platform/TextDirection.h: Added.
        * platform/cg/GraphicsContextCG.cpp: Added.
        * platform/mac/GraphicsContextMac.mm: Added.

        * kwq/KWQPainter.h: Removed.
        * kwq/KWQPainter.mm: Removed.
        * ForwardingHeaders/qpainter.h: Removed.

        * WebCore.xcodeproj/project.pbxproj: Updated for moved files.
        * WebCore.vcproj/WebCore/WebCore.vcproj: Updated for moved files.
        * platform/win/TemporaryLinkStubs.cpp: Updated.

        * bridge/mac/MacFrame.mm: (WebCore::MacFrame::setDisplaysWithFocusAttributes):
        * bridge/mac/WebCoreFrameBridge.mm: (-[WebCoreFrameBridge drawRect:]):
        * editing/SelectionController.h:
        * editing/SelectionController.cpp: (WebCore::SelectionController::paintCaret):
        * kcanvas/KCanvasResources.cpp: (WebCore::KCanvasMarker::draw):
        * khtml/ecma/kjs_html.cpp:
        (KJS::KJS::Context2DFunction::callAsFunction):
        (KJS::Context2D::putValueProperty):
        (KJS::drawPattern):
        * page/Frame.h:
        * page/Frame.cpp:
        (WebCore::Frame::paintCaret):
        (WebCore::Frame::paintDragCaret):
        (WebCore::Frame::paint):
        (WebCore::Frame::adjustPageHeight):
        * page/FrameView.h:
        * platform/Font.h:
        * platform/Font.cpp:
        (WebCore::Font::selectionRectForText):
        (WebCore::Font::drawHighlightForText):
        (WebCore::Font::drawText):
        * platform/Widget.h:
        * platform/mac/WidgetMac.mm: (WebCore::Widget::paint):
        * rendering/InlineTextBox.h:
        * rendering/InlineTextBox.cpp:
        (WebCore::InlineTextBox::paint):
        (WebCore::InlineTextBox::paintSelection):
        (WebCore::InlineTextBox::paintMarkedTextBackground):
        (WebCore::InlineTextBox::paintDecoration):
        (WebCore::InlineTextBox::paintSpellingMarker):
        (WebCore::InlineTextBox::paintTextMatchMarker):
        (WebCore::InlineTextBox::paintAllMarkersOfType):
        (WebCore::InlineTextBox::paintMarkedTextUnderline):
        (WebCore::InlineTextBox::offsetForPosition):
        * rendering/RenderTableCell.cpp:
        (WebCore::outlineBox):
        (WebCore::RenderTableCell::paintCollapsedBorder):
        (WebCore::RenderTableCell::paintBoxDecorations):
        * rendering/RenderTableCell.h:
        * rendering/render_box.cpp:
        (WebCore::RenderBox::paintBackgrounds):
        (WebCore::RenderBox::paintBackground):
        (WebCore::RenderBox::paintBackgroundExtended):
        (WebCore::RenderBox::outlineBox):
        * rendering/render_box.h:
        * rendering/render_button.cpp:
        (WebCore::RenderButton::RenderButton):
        (WebCore::RenderButton::paintObject):
        * rendering/render_button.h:
        (WebCore::RenderButton::removeLeftoverAnonymousBoxes):
        * rendering/render_canvas.cpp:
        * rendering/render_canvasimage.cpp:
        (WebCore::RenderCanvasImage::paint):
        * rendering/render_flow.cpp:
        (WebCore::RenderFlow::addFocusRingRects):
        (WebCore::RenderFlow::paintFocusRing):
        (WebCore::RenderFlow::paintOutlines):
        (WebCore::RenderFlow::paintOutlineForLine):
        * rendering/render_flow.h:
        * rendering/render_form.cpp:
        (WebCore::RenderLineEdit::setStyle):
        (WebCore::RenderFieldset::paintBorderMinusLegend):
        (WebCore::RenderSelect::setWidgetWritingDirection):
        (WebCore::RenderTextArea::setStyle):
        * rendering/render_form.h:
        (WebCore::RenderFieldset::renderName):
        * rendering/render_frames.cpp:
        (WebCore::RenderFrameSet::userResize):
        * rendering/render_image.cpp:
        (WebCore::RenderImage::paint):
        * rendering/render_layer.cpp:
        (WebCore::RenderLayer::beginTransparencyLayers):
        (WebCore::RenderLayer::paintScrollbars):
        (WebCore::RenderLayer::paint):
        (WebCore::setClip):
        (WebCore::restoreClip):
        (WebCore::RenderLayer::paintLayer):
        (WebCore::Marquee::direction):
        * rendering/render_layer.h:
        * rendering/render_line.cpp:
        (WebCore::InlineFlowBox::paintBackgrounds):
        (WebCore::InlineFlowBox::paintBackground):
        (WebCore::InlineFlowBox::paintBackgroundAndBorder):
        (WebCore::InlineFlowBox::paintDecorations):
        (WebCore::EllipsisBox::paint):
        * rendering/render_line.h:
        * rendering/render_list.cpp:
        (WebCore::RenderListMarker::paint):
        * rendering/render_object.cpp:
        (WebCore::RenderObject::drawBorder):
        (WebCore::RenderObject::paintBorderImage):
        (WebCore::RenderObject::paintBorder):
        (WebCore::RenderObject::addFocusRingRects):
        (WebCore::RenderObject::paintOutline):
        (WebCore::RenderObject::selectionColor):
        * rendering/render_object.h:
        (WebCore::RenderObject::element):
        (WebCore::RenderObject::document):
        (WebCore::RenderObject::setNode):
        (WebCore::RenderObject::node):
        (WebCore::RenderObject::PaintInfo::PaintInfo):
        (WebCore::RenderObject::paintBoxDecorations):
        (WebCore::RenderObject::paintBackgroundExtended):
        (WebCore::RenderObject::printBoxDecorations):
        * rendering/render_replaced.cpp: (WebCore::RenderReplaced::selectionColor):
        * rendering/render_replaced.h:
        Updated to use GraphicsContext instead of QPainter.

        * css/cssstyleselector.cpp: (WebCore::CSSStyleSelector::applyProperty):
        * kwq/KWQComboBox.h:
        * kwq/KWQComboBox.mm: (QComboBox::setWritingDirection):
        * kwq/KWQLineEdit.h:
        * kwq/KWQLineEdit.mm: (QLineEdit::setWritingDirection):
        * kwq/KWQListBox.h:
        * kwq/KWQListBox.mm: (QListBox::setWritingDirection):
        * kwq/KWQTextEdit.h:
        * kwq/KWQTextEdit.mm: (QTextEdit::setWritingDirection):
        * rendering/bidi.cpp:
        (khtml::bidiNext):
        (khtml::bidiFirst):
        Updated to use TextDirection instead of QPainter::TextDirection and EDirection.

        * kcanvas/device/KRenderingDevice.h: Added renderingDevice here to
        replace QPainter::renderingDevice for now.

        * khtml/ecma/kjs_html.h: Fixed comments to mention GraphicsContext.

        * khtml/html/html_imageimpl.h:
        * page/FrameView.cpp:
        * rendering/RenderBlock.cpp:
        Added include needed since I reduced includes elsewhere.

        * kwq/KWQFontMetrics.h:
        * kwq/KWQFontMetrics.mm: (QFontMetrics::checkSelectionPoint):
        Changed QChar* to be const QChar*.

        * platform/FontDescription.h: Added include that was missing.
        * rendering/render_theme.cpp: Ditto.

        * platform/Image.h: Removed unnecessary forward declaration of QPainter.

        * rendering/RenderText.h: Clean up types, use const.

        * rendering/render_style.h: Removed EDirection and replaced it with TextDirection.

        * kcanvas/KCanvasCreator.cpp:
        (WebCore::KCanvasCreator::createRoundedRectangle):
        (WebCore::KCanvasCreator::createRectangle):
        (WebCore::KCanvasCreator::createEllipse):
        (WebCore::KCanvasCreator::createLine):
        * kcanvas/KCanvasPath.cpp: (WebCore::operator<<):
        * kcanvas/KCanvasTreeDebug.cpp: (WebCore::operator<<):
        * kcanvas/RenderForeignObject.cpp: (WebCore::RenderForeignObject::paint):
        * kcanvas/RenderPath.cpp: (WebCore::RenderPath::paint):
        * kcanvas/RenderSVGImage.cpp:
        (WebCore::RenderSVGImage::paint):
        (WebCore::RenderSVGImage::translateForAttributes):
        * kcanvas/RenderSVGText.cpp:
        (WebCore::RenderSVGText::paint):
        * kcanvas/device/quartz/KCanvasFilterQuartz.mm:
        (WebCore::KCanvasFilterQuartz::prepareFilter):
        (WebCore::KCanvasFilterQuartz::applyFilter):
        * kcanvas/device/quartz/KCanvasMaskerQuartz.mm:
        (WebCore::KCanvasMaskerQuartz::applyMask):
        * kcanvas/device/quartz/KCanvasResourcesQuartz.mm:
        (WebCore::KCanvasContainerQuartz::paint):
        (WebCore::KCanvasClipperQuartz::applyClip):
        * kcanvas/device/quartz/KRenderingDeviceQuartz.mm:
        (WebCore::KRenderingDeviceQuartz::pushContext):
        (WebCore::KRenderingDeviceQuartz::popContext):
        (WebCore::renderingDevice):
        * kcanvas/device/quartz/KRenderingPaintServerGradientQuartz.mm:
        (WebCore::KRenderingPaintServerGradientQuartz::setup):
        (WebCore::KRenderingPaintServerGradientQuartz::renderPath):
        (WebCore::KRenderingPaintServerGradientQuartz::teardown):
        * ksvg2/misc/KCanvasRenderingStyle.cpp: (WebCore::sharedSolidPaintServer):
        * ksvg2/svg/SVGAElementImpl.cpp: (SVGAElementImpl::createRenderer):
        * ksvg2/svg/SVGClipPathElementImpl.cpp: (SVGClipPathElementImpl::canvasResource):
        * ksvg2/svg/SVGFEBlendElementImpl.cpp: (SVGFEBlendElementImpl::filterEffect):
        * ksvg2/svg/SVGFEColorMatrixElementImpl.cpp: (SVGFEColorMatrixElementImpl::filterEffect):
        * ksvg2/svg/SVGFEComponentTransferElementImpl.cpp: (SVGFEComponentTransferElementImpl::filterEffect):
        * ksvg2/svg/SVGFECompositeElementImpl.cpp: (SVGFECompositeElementImpl::filterEffect):
        * ksvg2/svg/SVGFEDiffuseLightingElementImpl.cpp: (WebCore::SVGFEDiffuseLightingElementImpl::filterEffect):
        * ksvg2/svg/SVGFEDisplacementMapElementImpl.cpp: (SVGFEDisplacementMapElementImpl::filterEffect):
        * ksvg2/svg/SVGFEFloodElementImpl.cpp: (SVGFEFloodElementImpl::filterEffect):
        * ksvg2/svg/SVGFEGaussianBlurElementImpl.cpp: (SVGFEGaussianBlurElementImpl::filterEffect):
        * ksvg2/svg/SVGFEImageElementImpl.cpp: (SVGFEImageElementImpl::filterEffect):
        * ksvg2/svg/SVGFEMergeElementImpl.cpp: (SVGFEMergeElementImpl::filterEffect):
        * ksvg2/svg/SVGFEOffsetElementImpl.cpp: (SVGFEOffsetElementImpl::filterEffect):
        * ksvg2/svg/SVGFESpecularLightingElementImpl.cpp: (SVGFESpecularLightingElementImpl::filterEffect):
        * ksvg2/svg/SVGFETileElementImpl.cpp: (SVGFETileElementImpl::filterEffect):
        * ksvg2/svg/SVGFETurbulenceElementImpl.cpp: (SVGFETurbulenceElementImpl::filterEffect):
        * ksvg2/svg/SVGFilterElementImpl.cpp: (SVGFilterElementImpl::canvasResource):
        * ksvg2/svg/SVGGElementImpl.cpp: (SVGGElementImpl::createRenderer):
        * ksvg2/svg/SVGGradientElementImpl.cpp: (SVGGradientElementImpl::canvasResource):
        * ksvg2/svg/SVGMarkerElementImpl.cpp:
        (WebCore::SVGMarkerElementImpl::canvasResource):
        (WebCore::SVGMarkerElementImpl::createRenderer):
        * ksvg2/svg/SVGMaskElementImpl.cpp:
        (WebCore::SVGMaskElementImpl::drawMaskerContent):
        (WebCore::SVGMaskElementImpl::createRenderer):
        (WebCore::SVGMaskElementImpl::canvasResource):
        * ksvg2/svg/SVGPathElementImpl.cpp: (WebCore::SVGPathElementImpl::toPathData):
        * ksvg2/svg/SVGPatternElementImpl.cpp:
        (WebCore::SVGPatternElementImpl::drawPatternContentIntoTile):
        (WebCore::SVGPatternElementImpl::createRenderer):
        (WebCore::SVGPatternElementImpl::canvasResource):
        * ksvg2/svg/SVGPolygonElementImpl.cpp: (SVGPolygonElementImpl::toPathData):
        * ksvg2/svg/SVGPolylineElementImpl.cpp: (SVGPolylineElementImpl::toPathData):
        * ksvg2/svg/SVGSVGElementImpl.cpp: (WebCore::SVGSVGElementImpl::createRenderer):
        * ksvg2/svg/SVGStyledElementImpl.cpp: (WebCore::SVGStyledElementImpl::createRenderer):
        * ksvg2/svg/SVGSwitchElementImpl.cpp: (SVGSwitchElementImpl::createRenderer):
        * ksvg2/svg/SVGUseElementImpl.cpp: (SVGUseElementImpl::createRenderer):
        Updated to use renderingDevice instead of QPainter::renderingDevice.

2006-02-28  Darin Adler  <darin@apple.com>

        - fixed part of the reason the build is broken

        * WebCore.xcodeproj/project.pbxproj: Updated project file.

2006-02-28  Darin Adler  <darin@apple.com>

        Rubber-stamped by Hyatt.

        - moved the WebCoreXXX files from kwq to appropriate directories

        No changes to the contents of the files.

        * WebCore.xcodeproj/project.pbxproj: Updated project file.
        * bridge/mac/WebCoreCache.h: Added.
        * bridge/mac/WebCoreCache.mm: Added.
        * bridge/mac/WebCoreEncodings.h: Added.
        * bridge/mac/WebCoreEncodings.mm: Added.
        * bridge/mac/WebCoreFrameNamespaces.h: Added.
        * bridge/mac/WebCoreFrameNamespaces.m: Added.
        * bridge/mac/WebCoreFrameView.h: Added.
        * bridge/mac/WebCoreJavaScript.h: Added.
        * bridge/mac/WebCoreJavaScript.mm: Added.
        * bridge/mac/WebCoreKeyboardAccess.h: Added.
        * bridge/mac/WebCoreResourceLoader.h: Added.
        * bridge/mac/WebCoreScriptDebugger.h: Added.
        * bridge/mac/WebCoreScriptDebugger.mm: Added.
        * bridge/mac/WebCoreSettings.h: Added.
        * bridge/mac/WebCoreSettings.mm: Added.
        * bridge/mac/WebCoreTextDecoder.h: Added.
        * bridge/mac/WebCoreTextDecoder.mm: Added.
        * bridge/mac/WebCoreViewFactory.h: Added.
        * bridge/mac/WebCoreViewFactory.m: Added.
        * bridge/mac/WebDashboardRegion.h: Added.
        * bridge/mac/WebDashboardRegion.m: Added.
        * kwq/WebCoreCache.h: Removed.
        * kwq/WebCoreCache.mm: Removed.
        * kwq/WebCoreCookieAdapter.h: Removed.
        * kwq/WebCoreCookieAdapter.m: Removed.
        * kwq/WebCoreEncodings.h: Removed.
        * kwq/WebCoreEncodings.mm: Removed.
        * kwq/WebCoreFrameNamespaces.h: Removed.
        * kwq/WebCoreFrameNamespaces.m: Removed.
        * kwq/WebCoreFrameView.h: Removed.
        * kwq/WebCoreGraphicsBridge.h: Removed.
        * kwq/WebCoreGraphicsBridge.m: Removed.
        * kwq/WebCoreHistory.h: Removed.
        * kwq/WebCoreHistory.m: Removed.
        * kwq/WebCoreImageRenderer.h: Removed.
        * kwq/WebCoreImageRendererFactory.h: Removed.
        * kwq/WebCoreImageRendererFactory.m: Removed.
        * kwq/WebCoreJavaScript.h: Removed.
        * kwq/WebCoreJavaScript.mm: Removed.
        * kwq/WebCoreKeyGenerator.h: Removed.
        * kwq/WebCoreKeyGenerator.m: Removed.
        * kwq/WebCoreKeyboardAccess.h: Removed.
        * kwq/WebCoreResourceLoader.h: Removed.
        * kwq/WebCoreScriptDebugger.h: Removed.
        * kwq/WebCoreScriptDebugger.mm: Removed.
        * kwq/WebCoreSettings.h: Removed.
        * kwq/WebCoreSettings.mm: Removed.
        * kwq/WebCoreTextDecoder.h: Removed.
        * kwq/WebCoreTextDecoder.mm: Removed.
        * kwq/WebCoreTextRenderer.h: Removed.
        * kwq/WebCoreTextRendererFactory.h: Removed.
        * kwq/WebCoreTextRendererFactory.mm: Removed.
        * kwq/WebCoreView.h: Removed.
        * kwq/WebCoreView.m: Removed.
        * kwq/WebCoreViewFactory.h: Removed.
        * kwq/WebCoreViewFactory.m: Removed.
        * kwq/WebDashboardRegion.h: Removed.
        * kwq/WebDashboardRegion.m: Removed.
        * platform/mac/WebCoreCookieAdapter.h: Added.
        * platform/mac/WebCoreCookieAdapter.m: Added.
        * platform/mac/WebCoreGraphicsBridge.h: Added.
        * platform/mac/WebCoreGraphicsBridge.m: Added.
        * platform/mac/WebCoreHistory.h: Added.
        * platform/mac/WebCoreHistory.m: Added.
        * platform/mac/WebCoreImageRenderer.h: Added.
        * platform/mac/WebCoreImageRendererFactory.h: Added.
        * platform/mac/WebCoreImageRendererFactory.m: Added.
        * platform/mac/WebCoreKeyGenerator.h: Added.
        * platform/mac/WebCoreKeyGenerator.m: Added.
        * platform/mac/WebCoreTextRenderer.h: Added.
        * platform/mac/WebCoreTextRendererFactory.h: Added.
        * platform/mac/WebCoreTextRendererFactory.mm: Added.
        * platform/mac/WebCoreView.h: Added.
        * platform/mac/WebCoreView.m: Added.

2006-02-28  David Hyatt  <hyatt@apple.com>

        Fold QFont into Font and eliminate QFont completely.

        Reviewed by eric

        * ForwardingHeaders/qfont.h: Removed.
        * WebCore.xcodeproj/project.pbxproj:
        * bindings/objc/DOM.mm:
        (-[DOMElement _font]):
        * bridge/mac/MacFrame.mm:
        (WebCore::MacFrame::attributedString):
        (WebCore::MacFrame::fontForSelection):
        (WebCore::MacFrame::fontAttributesForSelectionStart):
        * bridge/mac/WebCoreFrameBridge.mm:
        * css/css_computedstyle.cpp:
        (WebCore::CSSComputedStyleDeclarationImpl::getPropertyCSSValue):
        * css/cssstyleselector.cpp:
        (WebCore::CSSStyleSelector::applyProperty):
        * dom/DocumentImpl.cpp:
        (WebCore::DocumentImpl::recalcStyle):
        * ksvg2/svg/SVGLengthImpl.cpp:
        (SVGLengthImpl::updateValue):
        * kwq/KWQAccObject.mm:
        (AXAttributeStringSetStyle):
        * kwq/KWQComboBox.h:
        * kwq/KWQComboBox.mm:
        (QComboBox::setFont):
        * kwq/KWQFont.h: Removed.
        * kwq/KWQFont.mm: Removed.
        * kwq/KWQFontMetrics.h:
        * kwq/KWQFontMetrics.mm:
        (QFontMetricsPrivate::QFontMetricsPrivate):
        (QFontMetricsPrivate::~QFontMetricsPrivate):
        (QFontMetricsPrivate::getRenderer):
        (QFontMetricsPrivate::fontDescription):
        (QFontMetricsPrivate::setFontDescription):
        (QFontMetricsPrivate::getWebCoreFont):
        (QFontMetricsPrivate::isFixedPitch):
        (QFontMetricsPrivate::determinePitch):
        (QFontMetrics::QFontMetrics):
        (QFontMetrics::setFontDescription):
        (QFontMetrics::width):
        (QFontMetrics::floatWidth):
        (QFontMetrics::selectionRectForText):
        (QFontMetrics::checkSelectionPoint):
        (QFontMetrics::getWebCoreFont):
        (QFontMetrics::isFixedPitch):
        * kwq/KWQKHTMLSettings.h:
        * kwq/KWQLineEdit.h:
        * kwq/KWQLineEdit.mm:
        (-[NSSearchField _addStringToRecentSearches:]):
        (QLineEdit::setFont):
        * kwq/KWQListBox.h:
        * kwq/KWQListBox.mm:
        (QListBox::sizeForNumberOfLines):
        (QListBox::setFont):
        (-[KWQTableView drawRow:clipRect:]):
        * kwq/KWQPainter.h:
        * kwq/KWQPainter.mm:
        (WebCore::QPainter::font):
        (WebCore::QPainter::setFont):
        (WebCore::QPainter::fontMetrics):
        (WebCore::QPainter::_updateRenderer):
        (WebCore::QPainter::drawText):
        (WebCore::QPainter::drawHighlightForText):
        * kwq/KWQSlider.h:
        * kwq/KWQSlider.mm:
        (QSlider::setFont):
        * kwq/KWQTextEdit.h:
        * kwq/KWQTextEdit.mm:
        (QTextEdit::setFont):
        * platform/Font.cpp:
        (khtml::Font::update):
        * platform/Font.h:
        (WebCore::):
        (WebCore::Font::m_wordSpacing):
        (WebCore::Font::Font):
        (WebCore::Font::operator==):
        (WebCore::Font::operator!=):
        (WebCore::Font::fontMetrics):
        (WebCore::Font::pixelSize):
        (WebCore::Font::size):
        (WebCore::Font::letterSpacing):
        (WebCore::Font::setWordSpacing):
        (WebCore::Font::setLetterSpacing):
        (WebCore::Font::isFixedPitch):
        (WebCore::Font::isPrinterFont):
        (WebCore::Font::firstFamily):
        (WebCore::Font::family):
        (WebCore::Font::italic):
        (WebCore::Font::weight):
        (WebCore::Font::getNSFamily):
        (WebCore::Font::getNSFont):
        (WebCore::Font::getWebCoreFont):
        * platform/FontDescription.h:
        (WebCore::FontDescription::FontDescription):
        * platform/FontFamily.h:
        * platform/Widget.h:
        * platform/mac/WidgetMac.mm:
        (WebCore::Widget::font):
        (WebCore::Widget::setFont):
        * rendering/InlineTextBox.cpp:
        (WebCore::InlineTextBox::selectionRect):
        (WebCore::InlineTextBox::paint):
        (WebCore::InlineTextBox::positionForOffset):
        * rendering/RenderBlock.cpp:
        (WebCore::stripTrailingSpace):
        * rendering/RenderText.cpp:
        (WebCore::RenderText::cacheWidths):
        (WebCore::RenderText::trimmedMinMaxWidth):
        (WebCore::RenderText::calcMinMaxWidth):
        (WebCore::RenderText::font):
        (WebCore::RenderText::width):
        * rendering/RenderText.h:
        * rendering/bidi.cpp:
        (khtml::RenderBlock::computeHorizontalPositionsForLine):
        (khtml::RenderBlock::findNextLineBreak):
        * rendering/render_br.cpp:
        (WebCore::RenderBR::lineHeight):
        * rendering/render_flow.cpp:
        (WebCore::RenderFlow::lineHeight):
        * rendering/render_form.cpp:
        (WebCore::RenderFormElement::setStyle):
        (WebCore::RenderFormElement::addIntrinsicMarginsIfAllowed):
        * rendering/render_image.cpp:
        (WebCore::RenderImage::paint):
        * rendering/render_line.cpp:
        (WebCore::InlineFlowBox::placeBoxesHorizontally):
        (WebCore::InlineFlowBox::paintDecorations):
        (WebCore::EllipsisBox::paint):
        * rendering/render_list.cpp:
        (RenderListMarker::paint):
        * rendering/render_object.cpp:
        (WebCore::RenderObject::getVerticalPosition):
        (WebCore::RenderObject::lineHeight):
        * rendering/render_object.h:
        (WebCore::RenderObject::font):
        * rendering/render_replaced.cpp:
        (WebCore::RenderWidget::setStyle):
        * rendering/render_style.h:
        (khtml::RenderStyle::fontSize):
        (khtml::RenderStyle::fontMetrics):
        (khtml::RenderStyle::wordSpacing):
        (khtml::RenderStyle::letterSpacing):
        (khtml::RenderStyle::setFontDescription):
        (khtml::RenderStyle::setWordSpacing):
        (khtml::RenderStyle::setLetterSpacing):

2006-02-28  Darin Adler  <darin@apple.com>

        Reviewed by Adele.

        - remove obsolete WebCoreScrollView class

        * WebCore.exp: Remove WebCoreScrollView class name.

        * kwq/WebCoreScrollView.h: Removed.
        * kwq/WebCoreScrollView.m: Removed.
        * WebCore.xcodeproj/project.pbxproj: Remove WebCoreScrollView source files.

        * kwq/KWQListBox.mm: (-[KWQListBoxScrollView autoforwardsScrollWheelEvents]): Added.
        * kwq/KWQTextArea.h: Change base class to NSScrollView instead of WebCoreScrollView.
        * kwq/KWQTextArea.mm: (-[KWQTextAreaTextView autoforwardsScrollWheelEvents]): Ditto.

2006-02-28  Eric Seidel  <eseidel@apple.com>

        Reviewed by mjs.

        Fix spacing/style on several of the stubs.
        Reorganize stubs, separating empty stubs.
        Remove the abort from certain stubs blocking DRT.
        Add a virtual setView call to Frame baseclass.

        * bridge/mac/MacFrame.h: mark setView virtual
        * dom/DocumentImpl.cpp:
        (WebCore::DocumentImpl::attach): remove no-renderer hack
        * page/Frame.cpp:
        (WebCore::Frame::view): fix spacing
        (WebCore::Frame::setView): added.
        * page/Frame.h:
        * platform/win/TemporaryLinkStubs.cpp:
        (notImplemented): make break directly into debugger.
        Moved, modified several other stubs not mentioned here.

2006-02-28  Justin Garcia  <justin.garcia@apple.com>

        Reviewed by mjs
        
        <http://bugs.webkit.org/show_bug.cgi?id=6647>
        TinyMCE: document.execCommand("insertHTML", ...) unimplemented

        * editing/jsediting.cpp:

2006-02-28  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by Darin.

        - make win32 DumpRenderTree run without crashing
        http://bugs.webkit.org/show_bug.cgi?id=7511

        * WebCore.vcproj/WebCore/WebCore.vcproj:
        * bridge/win/BrowserExtensionWin.h: Added.
        * bridge/win/FrameWin.cpp:
        (WebCore::FrameWin::FrameWin): Initialize browser
        extension and settings.
        * dom/DocumentImpl.cpp:
        (WebCore::DocumentImpl::attach): Don't create renderers 
        for now.
        * dom/EventNames.cpp:
        (WebCore::EventNames::init): use placement new even when
        not avoiding static constructors.
        * khtml/html/htmlnames.cpp:
        (WebCore::HTMLNames::init): ditto
        * dom/QualifiedName.cpp:
        (WebCore::QualifiedName::init): ditto
        * dom/QualifiedName.h:
        (WebCore::QualifiedName::QualifiedName): Added default
        constructor but only in ifdef.
        * page/Frame.h:
        * platform/AtomicString.cpp:
        (WebCore::AtomicString::init): use placement new even when
        not avoiding static constructors
        * platform/StaticConstructors.h: don't initialize when
        not avoiding static constructors, just default construct
        and let initialization happen normally
        * platform/win/TemporaryLinkStubs.cpp: Stub out some more things
        (Cursor::~Cursor):
        (QFont::~QFont):
        (QFontMetrics::~QFontMetrics):
        (WebCore::FrameWin::restoreDocumentState):
        (WebCore::FrameWin::partClearedInBegin):
        (WebCore::FrameWin::createEmptyDocument):
        (WebCore::BrowserExtensionWin::getHistoryLength):
        (WebCore::BrowserExtensionWin::canRunModal):
        (WebCore::BrowserExtensionWin::openURLNotify):
        (WebCore::BrowserExtensionWin::canRunModalNow):
        (WebCore::BrowserExtensionWin::runModal):
        (WebCore::BrowserExtensionWin::goBackOrForward):

2006-02-27  Eric Seidel  <eseidel@apple.com>

        Reviewed by mjs.

        Remove abort() from constructors to allow DRT to run.

        * platform/win/TemporaryLinkStubs.cpp:
        (QFont::QFont):
        (QFontMetrics::QFontMetrics):

2006-02-27  Justin Garcia  <justin.garcia@apple.com>

        Reviewed by darin
        
        <http://bugs.webkit.org/show_bug.cgi?id=6893> 
        REGRESSION: Major bug with TinyMCE, no value submitted from textarea
        <rdar://problem/3465857> value from textarea form field inside of hidden div isn't submitted
        <rdar://problem/3968059> Textarea with hard-wrap: pre-filled text doesn't get hard-wrapped
        
        Canonicalize line endings in textareas to avoid the workarounds that were a source of bugs,
        Also call textWithHardLineWraps inside appendFormData (and nowhere else) if wrap="hard".

        * khtml/html/HTMLTextAreaElementImpl.cpp:
        (WebCore::HTMLTextAreaElementImpl::HTMLTextAreaElementImpl):
        (WebCore::HTMLTextAreaElementImpl::select):
        (WebCore::HTMLTextAreaElementImpl::appendFormData):
        (WebCore::HTMLTextAreaElementImpl::rendererWillBeDestroyed):
        (WebCore::HTMLTextAreaElementImpl::updateValue):
        (WebCore::HTMLTextAreaElementImpl::value):
        (WebCore::HTMLTextAreaElementImpl::setValue):
        (WebCore::HTMLTextAreaElementImpl::defaultValue):
        * khtml/html/HTMLTextAreaElementImpl.h:
        (DOM::HTMLTextAreaElementImpl::invalidateValue):
        * kwq/KWQTextArea.h:
        * kwq/KWQTextArea.mm:
        (-[KWQTextAreaTextView textDidChange:]):
        (-[KWQTextAreaTextView text]):
        (-[KWQTextAreaTextView textWithHardLineBreaks]):
        (-[KWQTextAreaTextView setSelectedRange:]):
        (-[KWQTextAreaTextView selectedRange]):
        (-[KWQTextAreaTextView getCursorPositionAsIndex:inParagraph:]):
        (RangeOfParagraph):
        (-[KWQTextAreaTextView textView:shouldChangeTextInRange:replacementString:]):
        * rendering/render_form.cpp:
        (WebCore::RenderTextArea::destroy):
        (WebCore::RenderTextArea::updateFromElement):
        (WebCore::RenderTextArea::text):
        (WebCore::RenderTextArea::textWithHardLineBreaks):
        * rendering/render_form.h:

2006-02-27  Eric Seidel  <eseidel@apple.com>

        Reviewed by darin.

        Copy missing dlls to build directory.

        * Viewer.cpp: fix line endings
        * Viewer/ImageView.cpp: fix line endings
        * Viewer/stdafx.cpp: fix line endings
        * WebCore.vcproj/WebCore/build-generated-files.sh:

2006-02-27  Mitz Pettel  <opendarwin.org@mitzpettel.com>

        Test: added to fast/dom/css-selectorText.html

        Reviewed by Darin.

        - fix http://bugs.webkit.org/show_bug.cgi?id=7338
          Incorrect selectorText for multiple subselectors.

        * css/css_base.cpp:
        (CSSSelector::selectorText): Iterate over subselectors

2006-02-27  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by Darin.

        - write a portable ICU version of TextEncoding::fromUnicode for use on win32

        * platform/StreamingTextDecoder.h:
        * platform/TextEncoding.cpp:
        (WebCore::TextEncoding::fromUnicode): added
        (WebCore::getConverter): helper
        (WebCore::cacheConverter): ditto
        (WebCore::effectiveEncoding): ditto
        * platform/mac/TextEncodingMac.cpp: Add comment
        * platform/win/TemporaryLinkStubs.cpp:
        (WebCore::TextEncoding::fromUnicode): remove

2006-02-27  Mitz Pettel  <opendarwin.org@mitzpettel.com>

        Test: fast/text/in-rendered-text-rtl.html

        Reviewed by Darin.

        - fix http://bugs.webkit.org/show_bug.cgi?id=7433
          REGRESSION (r12789): Second RTL text run on a line cannot be selected

        * dom/dom_position.cpp:
        (WebCore::Position::inRenderedText): If the RenderText contains
        reversed text, the text boxes are not necessarily ordered by start
        position, so iterate through all of them.
        (WebCore::Position::isRenderedCharacter): Ditto.

2006-02-27  David Kilzer  <ddkilzer@kilzer.net>

        Reviewed by Darin.

        - Fix for http://bugs.webkit.org/show_bug.cgi?id=7321
        REGRESSION: style tag in body causes two head elements to appear in the DOM

        * khtml/html/htmlparser.cpp: Handle the head node like form and map nodes.
        (WebCore::HTMLParser::parseToken):
        (WebCore::HTMLParser::headCreateErrorCheck):

2006-02-27  Eric Seidel  <eseidel@apple.com>

        Reviewed by darin.

        Add stub to make DRT link.
        Make WebCore copy libxml.dll into build directory when building.

        * WebCore.vcproj/WebCore/build-generated-files.sh:
        * platform/win/TemporaryLinkStubs.cpp:
        (WebCore::TextEncoding::fromUnicode):

2006-02-27  Darin Adler  <darin@apple.com>

        Reviewed by Eric.

        - fix regression in layout tests

        * dom/dom_elementimpl.cpp: (WebCore::StyledElementImpl::addCSSLength):
        Fix some code that was not properly truncating. I broke it in my
        string change this morning. 

2006-02-27  Maciej Stachowiak  <mjs@apple.com>

        Rubber stamped by Eric.

        - add stubs for FrameWin overrides of pure virtual Frame methods

        * platform/win/TemporaryLinkStubs.cpp:
        (WebCore::FrameWin::respondToChangedContents):
        (WebCore::FrameWin::unfocusWindow):
        (WebCore::FrameWin::locationbarVisible):
        (WebCore::FrameWin::respondToChangedSelection):
        (WebCore::FrameWin::clearUndoRedoOperations):
        (WebCore::FrameWin::issueRedoCommand):
        (WebCore::FrameWin::canRedo):
        (WebCore::FrameWin::restoreDocumentState):
        (WebCore::FrameWin::canUndo):
        (WebCore::FrameWin::overrideMediaType):
        (WebCore::FrameWin::saveDocumentState):
        (WebCore::FrameWin::print):
        (WebCore::FrameWin::issueCutCommand):
        (WebCore::FrameWin::issueCopyCommand):
        (WebCore::FrameWin::partClearedInBegin):
        (WebCore::FrameWin::issueUndoCommand):
        (WebCore::FrameWin::clearRecordedFormValues):
        (WebCore::FrameWin::issuePasteCommand):
        (WebCore::FrameWin::markedTextRange):
        (WebCore::FrameWin::shouldChangeSelection):
        (WebCore::FrameWin::scheduleClose):
        (WebCore::FrameWin::menubarVisible):
        (WebCore::FrameWin::personalbarVisible):
        (WebCore::FrameWin::createEmptyDocument):
        (WebCore::FrameWin::lastEventIsMouseUp):
        (WebCore::FrameWin::statusbarVisible):
        (WebCore::FrameWin::toolbarVisible):
        (WebCore::FrameWin::issueTransposeCommand):
        (WebCore::FrameWin::userAgent):
        (WebCore::FrameWin::canPaste):
        (WebCore::FrameWin::incomingReferrer):
        (WebCore::FrameWin::canGoBackOrForward):
        (WebCore::FrameWin::issuePasteAndMatchStyleCommand):
        (WebCore::FrameWin::handledOnloadEvents):
        (WebCore::FrameWin::generateFrameName):

2006-02-27  Eric Seidel  <eseidel@apple.com>

        Reviewed by mjs.

        Add constructor and destructor. 

        * bridge/win/FrameWin.cpp:
        (WebCore::FrameWin::FrameWin):
        (WebCore::FrameWin::~FrameWin):

2006-02-27  Maciej Stachowiak  <mjs@apple.com>

        Rubber stamped by Eric (sorta).

        - add return values where needed

        * platform/win/TemporaryLinkStubs.cpp:
        (KWQServeRequest):
        (KWQServeSynchronousRequest):

2006-02-27  Eric Seidel  <eseidel@apple.com>

        Reviewed by mjs.

        Add a couple more stubs to make Win32 link.

        * platform/win/TemporaryLinkStubs.cpp:
        (KWQServeSynchronousRequest):
        (WebCore::FrameView::topLevelWidget):

2006-02-27  Eric Seidel  <eseidel@apple.com>

        Reviewed by mjs.

        Move mac-specific logging logic up into WebCore (from JavaScriptCore).
        Remove KWQ prefixes from default log channels.
        http://bugs.webkit.org/show_bug.cgi?id=7503

        * bridge/mac/WebCorePageBridge.mm:
        (initializeLogChannel):
        (initializeLoggingChannelsIfNecessary):
        (-[WebCorePageBridge init]):
        * page/Frame.h:
        * platform/Logging.cpp:
        * platform/Logging.h:

2006-02-27  Darin Adler  <darin@apple.com>

        Reviewed by Maciej.

        - fix <rdar://problem/4104575> hang due to slow saveDocumentState method

        * bridge/mac/WebCoreFrameBridge.mm: (-[WebCoreFrameBridge saveDocumentState]):
        Change code that iterates a QStringList with indices to use iterator instead.

2006-02-27  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by Eric.

        - portable version of QString::utf8

        * platform/QString.cpp:
        (QString::utf8): moved here, rewritten to use TextCodec
        * platform/mac/QStringMac.mm:
        (QString::utf8): removed from here

2006-02-27  Eric Seidel  <eseidel@apple.com>

        Rubber-stamped by mjs.

        Fix FrameWin.h to use consistant line endings.
        Fix TemporaryLinkStubs to better match style guidelines.

        * bridge/win/FrameWin.h:
        (WebCore::Win):
        * platform/win/TemporaryLinkStubs.cpp:
        (QLineEdit::selectAll):
        (QPainter::save):
        (Widget::enableFlushDrawing):
        (QPainter::drawHighlightForText):
        (QFont::setPrinterFont):
        (QTextEdit::textWithHardLineBreaks):
        (Widget::mapFromGlobal):
        (QPainter::addClip):
        (QLineEdit::cursorPosition):
        (QPainter::setPen):
        (QPainter::selectedTextBackgroundColor):
        (QPainter::fontMetrics):
        (Widget::show):
        (QFont::setItalic):
        (QSlider::setValue):
        (QLineEdit::addSearchResult):
        (KWQFileButton::click):
        (QLineEdit::setWritingDirection):
        (QPainter::drawFocusRing):
        (KWQFileButton::sizeForCharacterWidth):
        (QTextEdit::sizeWithColumnsAndRows):
        (QComboBox::clear):
        (QPainter::misspellingLineThickness):
        (QComboBox::setFrameGeometry):
        (QLineEdit::maxLength):
        (Widget::isEnabled):
        (KWQServeRequest):
        (QTextEdit::setText):
        (Widget::paint):
        (QPainter::addRoundedRectClip):
        (FrameView::viewportToGlobal):
        (QTextEdit::selectionEnd):
        (QFont::determinePitch):
        (QTextEdit::setScrollBarModes):
        (QPainter::drawEllipse):
        (QTextEdit::setReadOnly):
        (QListBox::appendItem):
        (QLineEdit::setPlaceholderString):
        (Cursor::Cursor):
        (Widget::focusPolicy):
        (ScrollView::removeChild):
        (QTextEdit::selectAll):
        (QPainter::fillRect):
        (QPainter::endTransparencyLayer):
        (QFont::QFont):
        (ScrollView::addChild):
        (QTextEdit::setDisabled):
        (QScrollBar::scroll):
        (Widget::~Widget):
        (QPainter::xForm):
        (QListBox::sizeForNumberOfLines):
        (ScrollView::resizeContents):
        (QLineEdit::selectionStart):
        (QLineEdit::QLineEdit):
        (FrameView::updateBorder):
        (QLineEdit::hasSelectedText):
        (QScrollBar::QScrollBar):
        (QListBox::doneAppendingItems):
        (QTextEdit::QTextEdit):
        (ScrollView::inWindow):
        (QScrollBar::setValue):
        (QFont::setFirstFamily):
        (QTextEdit::hasSelectedText):
        (QTextEdit::selectionStart):
        (QFont::setWeight):
        (ScrollView::scrollXOffset):
        (QListBox::isSelected):
        (QLineEdit::setReadOnly):
        (QPainter::drawLineForText):
        (QPainter::QPainter):
        (QComboBox::~QComboBox):
        (QComboBox::focusPolicy):
        (QPainter::drawImageAtPoint):
        (QPainter::clearShadow):
        (QTextEdit::setLineHeight):
        (QScrollBar::setKnobProportion):
        (KWQFileButton::KWQFileButton):
        (QFontMetrics::boundingRect):
        (QTextEdit::setSelectionStart):
        (QPainter::beginTransparencyLayer):
        (QFontMetrics::setFont):
        (QComboBox::setFont):
        (Widget::frameGeometry):
        (QListBox::setSelected):
        (QPainter::addFocusRingRect):
        (QTextEdit::setCursorPosition):
        (QPainter::restore):
        (QFontMetrics::width):
        (Widget::setEnabled):
        (QTextEdit::setSelectionEnd):
        (QComboBox::populate):
        (ScrollView::setStaticBackground):
        (QPainter::font):
        (QTextEdit::setAlignment):
        (QLineEdit::setCursorPosition):
        (QPainter::drawText):
        (QPainter::pen):
        (KJavaAppletWidget::KJavaAppletWidget):
        (QFontMetrics::descent):
        (QListBox::QListBox):
        (QFontMetrics::ascent):
        (QLineEdit::selectedText):
        (Widget::setIsSelected):
        (QLineEdit::text):
        (Widget::unlockDrawingFocus):
        (QLineEdit::setLiveSearch):
        (QPainter::paintingDisabled):
        (QComboBox::QComboBox):
        (QPainter::drawConvexPolygon):
        (Widget::setFont):
        (QSlider::setMaxValue):
        (Widget::lockDrawingFocus):
        (QPainter::drawLine):
        (QPainter::setBrush):
        (QTextEdit::setSelectionRange):
        (ScrollView::scrollPointRecursively):
        (QLineEdit::sizeForCharacterWidth):
        (Cursor::~Cursor):
        (QFontMetrics::selectionRectForText):
        (ScrollView::suppressScrollBars):
        (QFontMetrics::checkSelectionPoint):
        (QTextEdit::getCursorPosition):
        (FrameView::isFrameView):
        (QScrollBar::setSteps):
        (QLineEdit::setMaxLength):
        (Widget::setCursor):
        (QLineEdit::setAutoSaveName):
        (QComboBox::baselinePosition):
        (QComboBox::appendItem):
        (QPainter::setShadow):
        (QTextEdit::setWritingDirection):
        (Widget::setDrawingAlpha):
        (QSlider::QSlider):
        (ScrollView::setVScrollBarMode):
        (QPainter::drawScaledAndTiledImage):
        (ScrollView::scrollYOffset):
        (QPainter::drawImage):
        (QComboBox::setCurrentItem):
        (QFontMetrics::height):
        (QComboBox::setWritingDirection):
        (ScrollView::setScrollBarsMode):
        (QComboBox::sizeHint):
        (QPainter::drawRect):
        (QFont::setPixelSize):
        (Widget::setFrameGeometry):
        (QLineEdit::setSelection):
        (QLineEdit::setMaxResults):
        (QListBox::clear):
        (QLineEdit::edited):
        (QPainter::drawTiledImage):
        (QPainter::clearFocusRing):
        (QFont::operator==):
        (Widget::Widget):
        (QTextEdit::text):
        (QPainter::drawImageInRect):
        (QPainter::setFont):
        (Widget::disableFlushDrawing):
        (QPainter::initFocusRing):
        (QSlider::setMinValue):
        (QTextEdit::setWordWrap):
        (QPainter::drawLineForMisspelling):
        (QLineEdit::setText):
        (QSlider::value):
        (QListBox::setSelectionMode):
        (KWQFileButton::setFilename):
        (QFontMetrics::QFontMetrics):
        (QFontMetrics::lineSpacing):
        (QLineEdit::setEdited):
        (QComboBox::frameGeometry):
        (QListBox::setWritingDirection):
        (QLineEdit::setAlignment):
        (ScrollView::updateContents):
        (QFontMetrics::floatWidth):
        (ScrollView::setHScrollBarMode):
        (KWQFileButton::focusPolicy):
        (QListBox::setFont):
        (QLineEdit::checksDescendantsForFocus):
        (KWQFileButton::baselinePosition):
        (QSlider::~QSlider):
        (KWQFileButton::setFrameGeometry):
        (QListBox::~QListBox):
        (KWQFileButton::frameGeometry):
        (QTextEdit::setFont):
        (QLineEdit::setFont):
        (KWQFileButton::~KWQFileButton):
        (QTextEdit::focusPolicy):
        (QSlider::focusPolicy):
        (QSlider::setFont):
        (QListBox::setEnabled):
        (QListBox::checksDescendantsForFocus):
        (QListBox::focusPolicy):
        (QLineEdit::baselinePosition):
        (QSlider::sizeHint):
        (QLineEdit::~QLineEdit):
        (QTextEdit::~QTextEdit):
        (QTextEdit::checksDescendantsForFocus):
        (QLineEdit::focusPolicy):
        (QScrollBar::~QScrollBar):
        (Path::operator=):
        (QLineEdit::setColors):
        (QTextEdit::setColors):
        (searchableIndexIntroduction):
        (KWQKCookieJar::setCookie):
        (KWQKCookieJar::cookie):
        (WebCore::screenRect):
        (WebCore::Widget::clearFocus):
        (WebCore::historyContains):
        (KWQFindNextSentenceFromIndex):
        (KWQFindSentenceBoundary):
        (KWQFindNextWordFromIndex):
        (KWQFindWordBoundary):
        (submitButtonDefaultLabel):
        (inputElementAltText):
        (resetButtonDefaultLabel):
        (KWQKCookieJar::cookieEnabled):
        (WebCore::Widget::setFocus):
        (WebCore::QPainter::fillRect):
        (WebCore::QPainter::~QPainter):
        (WebCore::ScrollView::viewportToContents):
        (WebCore::TransferJob::kill):
        (WebCore::TransferJob::addMetaData):
        (WebCore::TransferJob::queryMetaData):
        (WebCore::TransferJob::error):
        (WebCore::TransferJob::errorText):
        (WebCore::TransferJob::isErrorPage):
        (WebCore::TransferJob::TransferJob):
        (WebCore::Widget::hide):
        (KLocale::language):
        (PlugInInfoStore::createPluginInfoForPluginAtIndex):
        (WebCore::screenDepth):
        (QFont::italic):
        (QFontMetrics::operator=):
        (QFontMetrics::xHeight):
        (WebCore::usableScreenRect):
        (QFont::operator=):
        (Widget::setActiveWindow):
        (KWQCheckIfReloading):
        (WebCore::ScrollView::contentsX):
        (WebCore::ScrollView::contentsY):
        (WebCore::ScrollView::contentsHeight):
        (WebCore::ScrollView::contentsWidth):
        (WebCore::ScrollView::visibleHeight):
        (WebCore::ScrollView::visibleWidth):
        (WebCore::ScrollView::hScrollBarMode):
        (WebCore::ScrollView::vScrollBarMode):
        (KWQCheckCacheObjectStatus):

2006-02-27  Justin Garcia  <justin.garcia@apple.com>

        Reviewed by darin
        
        <http://bugs.webkit.org/show_bug.cgi?id=6844>
        elementAtPoint returns the list when the point is over a list marker
        
        Consider the case of outside list markers in nodeAtPoint.  Had to pull 
        the code out of RenderListMarker::paint that computed the position/size 
        of the list marker.

        Added:
        * fast/events/onclick-list-marker.html

        * rendering/render_list.cpp:
        (RenderListItem::nodeAtPoint):
        (RenderListItem::getAbsoluteRepaintRect):
        (RenderListMarker::paint):
        (RenderListMarker::nodeAtPoint):
        (RenderListMarker::getRelativeMarkerRect):
        * rendering/render_list.h:
        * rendering/render_object.h:

2006-02-27  Eric Seidel  <eseidel@apple.com>

        Reviewed by timo.

        Fix xcode project after previous KWQLogging move.

        * WebCore.xcodeproj/project.pbxproj:
        * platform/Logging.h:

2006-02-27  Eric Seidel  <eseidel@apple.com>

        Reviewed by timo.

        Move KWQLogging to platform and rename as Logging.*, fix headers.
        This will break the mac build, which I will fix on my next commit.

        * WebCore.vcproj/WebCore/WebCore.vcproj:
        * dom/DocumentImpl.cpp:
        * dom/dom_position.cpp:
        * editing/DeleteSelectionCommand.cpp:
        * editing/InsertLineBreakCommand.cpp:
        * editing/InsertParagraphSeparatorCommand.cpp:
        * editing/InsertTextCommand.cpp:
        * editing/VisiblePosition.cpp:
        * editing/markup.cpp:
        * khtml/ecma/kjs_window.cpp:
        * kwq/KWQLogging.h: Removed.
        * kwq/KWQLogging.m: Removed.
        * kwq/KWQRegExp.cpp:
        * kwq/KWQTextStream.cpp:
        * platform/Logging.cpp: Added.
        * platform/Logging.h: Added.
        * platform/QString.cpp:
        * platform/win/TemporaryLinkStubs.cpp:
        (WebCore::ScrollView::vScrollBarMode):
        (WebCore::theme):

2006-02-27  Eric Seidel  <eseidel@apple.com>

        Reviewed by hyatt.

        Fix a bunch more link errors in the win32 build, mostly by adding stubs.

        * WebCore.vcproj/WebCore/WebCore.vcproj: add JSXMLHttpRequest and PlugInInfoStore
        * WebCore.vcproj/WebCore/build-generated-files.sh: update for JSXMLHttpRequest
        * khtml/ecma/JSXMLHttpRequest.cpp:
        (KJS::JSXMLHttpRequest::getValueProperty): fix switch to compile
        * platform/PlugInInfoStore.h:
        * platform/mac/PlugInInfoStoreMac.mm:
        * platform/win/TemporaryLinkStubs.cpp: add a bunch of stubs.
        (WebCore::TransferJob::errorText):
        (WebCore::TransferJob::isErrorPage):
        (WebCore::Widget::hide):
        (PlugInInfoStore::createPluginInfoForPluginAtIndex):
        (PlugInInfoStore::pluginCount):
        (WebCore::refreshPlugins):
        (QFont::QFont):
        (QFont::~QFont):
        (QFont::italic):
        (QFont::weight):
        (QFontMetrics::QFontMetrics):
        (QFontMetrics::~QFontMetrics):
        (QFontMetrics::xHeight):
        (Widget::setActiveWindow):
        (WebCore::ScrollView::contentsX):
        (WebCore::ScrollView::contentsY):
        (WebCore::ScrollView::contentsHeight):
        (WebCore::ScrollView::contentsWidth):
        (WebCore::ScrollView::visibleHeight):
        (WebCore::ScrollView::visibleWidth):
        (WebCore::ScrollView::hScrollBarMode):
        (WebCore::ScrollView::vScrollBarMode):

2006-02-27  Eric Seidel  <eseidel@apple.com>

        Reviewed by timo.

        Add missing include to fix build.

        * platform/win/TemporaryLinkStubs.cpp:

2006-02-27  Eric Seidel  <eseidel@apple.com>

        Reviewed by ggaren.

        Move KConfig to platform/PlugInInfoStore and add test.
        http://bugs.webkit.org/show_bug.cgi?id=7498

        Test: plugins/plugin-javascript-access.html

        * ForwardingHeaders/kconfig.h: Removed.
        * WebCore.xcodeproj/project.pbxproj:
        * khtml/ecma/kjs_navigator.cpp:
        (KJS::PluginBase::PluginBase):
        * khtml/ecma/kjs_window.cpp:
        * kwq/KWQKConfigBase.h: Removed.
        * kwq/KWQKConfigBase.mm: Removed.
        * platform/PlugInInfoStore.h: Added.
        * platform/mac/PlugInInfoStoreMac.mm: Added.
        (WebCore::PlugInInfoStore::createPluginInfoForPluginAtIndex):
        (WebCore::PlugInInfoStore::pluginCount):
        (WebCore::refreshPlugins):

2006-02-27  Darin Adler  <darin@apple.com>

        Reviewed by Eric.

        * platform/win/TemporaryLinkStubs.cpp: Added more stubs.

2006-02-27  Eric Seidel  <eseidel@apple.com>

        Reviewed by darin.

        Reworked KConfig and plugin architecture to be much more sane.
        This is part one.  Once this lands, I'll move it under platform with a better name.

        Darin had several great suggested further improvements as part of:
        http://bugs.webkit.org/show_bug.cgi?id=7451
        I'll make some of those when I move this to platform.

        No layout test possible (no way to control which plugins DRT sees).

        * khtml/ecma/kjs_navigator.cpp:
        (KJS::PluginBase::PluginBase):
        (KJS::PluginBase::~PluginBase):
        (KJS::PluginBase::refresh):
        (KJS::Plugins::getValueProperty):
        (KJS::Plugins::nameGetter):
        (KJS::Plugins::getOwnPropertySlot):
        (KJS::MimeTypes::getValueProperty):
        (KJS::MimeTypes::nameGetter):
        (KJS::MimeTypes::getOwnPropertySlot):
        (KJS::Plugin::getValueProperty):
        (KJS::Plugin::nameGetter):
        (KJS::Plugin::getOwnPropertySlot):
        * khtml/ecma/kjs_navigator.h:
        * khtml/ecma/kjs_window.cpp:
        * kwq/KWQKConfigBase.h:
        (WebCore::PluginInfoStore::PluginInfoStore):
        * kwq/KWQKConfigBase.mm:
        (WebCore::PluginInfoStore::createPluginInfoForPluginAtIndex):
        (WebCore::PluginInfoStore::pluginCount):
        (WebCore::refreshPlugins):

2006-02-27  Eric Seidel  <eseidel@apple.com>

        Reviewed by darin.

        Build fix: cast to unsigned from size_t.

        * platform/StreamingTextDecoder.cpp:

2006-02-27  Maciej Stachowiak  <mjs@apple.com>
 
        Reviewed by Darin.

        - add Selection.cpp to win32 build
        http://bugs.webkit.org/show_bug.cgi?id=7490

        * WebCore.vcproj/WebCore/WebCore.vcproj:

2006-02-27  Maciej Stachowiak  <mjs@apple.com>

        - use proper header for std::min.

        * platform/StreamingTextDecoder.cpp:

2006-02-27  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by Darin.

        - add new TextEncoding stuff to win32 build
        http://bugs.webkit.org/show_bug.cgi?id=7491

        * WebCore.vcproj/WebCore/WebCore.vcproj:
        * WebCore.vcproj/WebCore/build-generated-files.sh:
        * platform/StreamingTextDecoder.cpp:
        (WebCore::StreamingTextDecoder::convertUTF16):
        * platform/TextEncoding.cpp:

2006-02-27  Darin Adler  <darin@apple.com>

        - try to fix Windows build

        * WebCore.vcproj/WebCore/WebCore.vcproj: Removed rendering/font.* and added platform/Font.*.

2006-02-27  Darin Adler  <darin@apple.com>

        * css/csshelper.cpp: (WebCore::parseURL): Actually, the second version was fine. Rolling
        back to that; apologies for the churn.

2006-02-27  Darin Adler  <darin@apple.com>

        * css/csshelper.cpp: (WebCore::parseURL): Third time's the charm.

2006-02-27  Darin Adler  <darin@apple.com>

        * css/csshelper.cpp: (WebCore::parseURL): Oops! Checked in fixed version of this file.

2006-02-27  Darin Adler  <darin@apple.com>

        Reviewed by Maciej.

        - http://bugs.webkit.org/show_bug.cgi?id=7486
          a first step in improving String/StringImpl API -- use "s" and "l" less

        * css/csshelper.cpp: (WebCore::parseURL): Use a local buffer rather than
        manipulating the characters directly inside a StringImpl buffer.

        * css/cssstyleselector.cpp: (WebCore::parseUASheet): Copy the data to parse
        it rather than going out of our way to hack StringImpl to not copy the data.
        It would be better not to copy, but this is one-time work.

        * dom/DOMImplementationImpl.cpp: (WebCore::DOMImplementationImpl::createDocument):
        * dom/dom2_viewsimpl.cpp: (DOM::AbstractViewImpl::getMatchedCSSRules):
        * dom/dom_elementimpl.cpp: (WebCore::StyledElementImpl::addCSSLength):
        * dom/dom_xmlimpl.cpp: (WebCore::EntityImpl::toString):
        * editing/CompositeEditCommand.cpp: (WebCore::CompositeEditCommand::deleteInsignificantText):
        * khtml/html/htmlparser.cpp: (WebCore::HTMLParser::handleError):
        * platform/AtomicString.cpp:
        (WebCore::CStringTranslator::equal):
        (WebCore::QCharBufferTranslator::equal):
        (WebCore::AtomicString::add):
        * platform/StringImpl.h:
        (WebCore::StringImpl::unicode): Added.
        (KXMLCore::CaseInsensitiveHash::hash): 
        (KXMLCore::CaseInsensitiveHash::equal):
        * rendering/InlineTextBox.cpp: (khtml::InlineTextBox::selectionStartEnd):
        * rendering/RenderBlock.cpp: (WebCore::RenderBlock::updateFirstLetter):
        * rendering/RenderText.cpp:
        (WebCore::getCharacterBreakIterator):
        (WebCore::RenderText::RenderText):
        (WebCore::RenderText::atLineWrap):
        (WebCore::RenderText::allAscii):
        (WebCore::RenderText::widthFromCache):
        (WebCore::RenderText::trimmedMinMaxWidth):
        (WebCore::RenderText::containsOnlyWhitespace):
        (WebCore::RenderText::setSelectionState):
        (WebCore::RenderText::setTextWithOffset):
        (WebCore::RenderText::setText):
        (WebCore::RenderText::width):
        (WebCore::RenderText::selectionRect):
        (WebCore::RenderText::caretMaxOffset):
        * rendering/RenderTextFragment.cpp:
        (khtml::RenderTextFragment::RenderTextFragment):
        (khtml::RenderTextFragment::originalString):
        Use length() instead of l, unicode() instead of s, and (*x)[] instead of x->s[].

        * editing/visible_units.cpp:
        (WebCore::startOfParagraph): Use const.
        (WebCore::endOfParagraph): Ditto.

2006-02-27  Maciej Stachowiak  <mjs@apple.com>

        - fix problem with a prototype that broke win32 build

        * platform/StreamingTextDecoder.h:
        (WebCore::StreamingTextDecoder::convert):

2006-02-27  Maciej Stachowiak  <mjs@apple.com>

        - fix debug build (broken by my last commit)

        * platform/StreamingTextDecoder.cpp:
        (WebCore::StreamingTextDecoder::createICUConverter):
        (WebCore::StreamingTextDecoder::convertUsingICU):

2006-02-26  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by Darin.

        - platformize KWQTextCodec
        http://bugs.webkit.org/show_bug.cgi?id=7487
        
        I renamed QTextCodec to TextEncoding and QTextDecoder to
        StreamingTextDecoder. I also made a bunch of other changes to make
        the API more sensible.
        
        * ForwardingHeaders/qtextcodec.h: Removed.
        * WebCore.xcodeproj/project.pbxproj:
        * bridge/mac/MacFrame.mm:
        * bridge/mac/WebCoreFrameBridge.mm:
        (-[WebCoreFrameBridge URLWithAttributeString:]):
        (-[WebCoreFrameBridge textEncoding]):
        (+[WebCoreFrameBridge stringWithData:textEncoding:]):
        (+[WebCoreFrameBridge stringWithData:textEncodingName:]):
        * dom/DocumentImpl.cpp:
        (WebCore::DocumentImpl::completeURL):
        * khtml/ecma/kjs_dom.cpp:
        (KJS::DOMDocument::getValueProperty):
        (KJS::DOMDocument::putValueProperty):
        * khtml/html/FormDataList.cpp:
        (DOM::FormDataList::FormDataList):
        (DOM::FormDataList::appendString):
        * khtml/html/FormDataList.h:
        * khtml/html/HTMLFormElementImpl.cpp:
        (WebCore::HTMLFormElementImpl::HTMLFormElementImpl):
        (WebCore::HTMLFormElementImpl::formData):
        * khtml/html/htmltokenizer.cpp:
        * khtml/misc/decoder.cpp:
        (Decoder::Decoder):
        (Decoder::setEncodingName):
        (Decoder::encodingName):
        (Decoder::decode):
        * khtml/misc/decoder.h:
        (khtml::Decoder::):
        (khtml::Decoder::visuallyOrdered):
        (khtml::Decoder::encoding):
        * khtml/xsl/xslt_processorimpl.cpp:
        (DOM::XSLTProcessorImpl::createDocumentFromSource):
        * kwq/KWQCharsets.cpp: Removed.
        * kwq/KWQCharsets.h: Removed.
        * kwq/KWQTextCodec.cpp: Removed.
        * kwq/KWQTextCodec.h: Removed.
        * kwq/WebCoreTextDecoder.h:
        * kwq/WebCoreTextDecoder.mm:
        * kwq/can-convert.mm: Removed.
        * kwq/character-sets.txt: Removed.
        * kwq/mac-encodings.txt: Removed.
        * kwq/make-charset-table.pl: Removed.
        * loader/CachedCSSStyleSheet.cpp:
        (WebCore::CachedCSSStyleSheet::CachedCSSStyleSheet):
        (WebCore::CachedCSSStyleSheet::setCharset):
        (WebCore::CachedCSSStyleSheet::data):
        * loader/CachedCSSStyleSheet.h:
        * loader/CachedScript.cpp:
        (WebCore::CachedScript::CachedScript):
        (WebCore::CachedScript::setCharset):
        (WebCore::CachedScript::data):
        * loader/CachedScript.h:
        * loader/CachedXSLStyleSheet.cpp:
        (WebCore::CachedXSLStyleSheet::setCharset):
        * page/Frame.cpp:
        (WebCore::Frame::write):
        (WebCore::Frame::gotoAnchor):
        (WebCore::Frame::encoding):
        (WebCore::Frame::backslashAsCurrencySymbol):
        * platform/CharsetNames.cpp: Added.
        (KXMLCore::):
        (WebCore::EncodingHash::equal):
        (WebCore::EncodingHash::hash):
        (WebCore::buildDictionaries):
        (WebCore::textEncodingIDFromCharsetName):
        (WebCore::charsetNameFromTextEncodingID):
        * platform/CharsetNames.h: Added.
        * platform/KURL.cpp:
        (KURL::KURL):
        (KURL::decode_string):
        (encodeRelativeString):
        * platform/KURL.h:
        * platform/QString.cpp:
        (QString::fromUtf8):
        * platform/StreamingTextDecoder.cpp: Added.
        (WebCore::StreamingTextDecoder::StreamingTextDecoder):
        (WebCore::StreamingTextDecoder::convertLatin1):
        (WebCore::StreamingTextDecoder::~StreamingTextDecoder):
        (WebCore::StreamingTextDecoder::convertUTF16):
        (WebCore::effectiveEncoding):
        (WebCore::StreamingTextDecoder::createICUConverter):
        (WebCore::unwanted):
        (WebCore::StreamingTextDecoder::appendOmittingUnwanted):
        (WebCore::StreamingTextDecoder::convertUsingICU):
        (WebCore::StreamingTextDecoder::convert):
        (WebCore::StreamingTextDecoder::toUnicode):
        * platform/StreamingTextDecoder.h: Added.
        (WebCore::StreamingTextDecoder::convert):
        * platform/TextEncoding.cpp: Added.
        (WebCore::TextEncoding::TextEncoding):
        (WebCore::TextEncoding::name):
        (WebCore::effectiveEncoding):
        (WebCore::TextEncoding::backslashAsCurrencySymbol):
        (WebCore::TextEncoding::toUnicode):
        * platform/TextEncoding.h: Added.
        (WebCore::):
        (WebCore::TextEncoding::):
        (WebCore::TextEncoding::TextEncoding):
        (WebCore::TextEncoding::isValid):
        (WebCore::TextEncoding::usesVisualOrdering):
        (WebCore::TextEncoding::isJapanese):
        (WebCore::TextEncoding::encodingID):
        (WebCore::TextEncoding::flags):
        (WebCore::operator==):
        (WebCore::operator!=):
        * platform/character-sets.txt: Added.
        * platform/mac/ExtraCFEncodings.h: Added.
        * platform/mac/QStringMac.mm:
        * platform/mac/TextEncodingMac.cpp: Added.
        (WebCore::effectiveEncoding):
        (WebCore::TextEncoding::fromUnicode):
        * platform/mac/can-convert.mm: Added.
        * platform/mac/mac-encodings.txt: Added.
        * platform/make-charset-table.pl: Added.
        * platform/win/win-encodings.txt: Added.
        * rendering/render_object.cpp:
        (WebCore::RenderObject::backslashAsCurrencySymbol):
        * xml/xmlhttprequest.cpp:
        (WebCore::XMLHttpRequest::send):
        (WebCore::XMLHttpRequest::slotData):

2006-02-27  Darin Adler  <darin@apple.com>

        - fix Windows build

        * platform/win/TemporaryLinkStubs.cpp: Change KIO::TransferJob to WebCore::TransferJob.

2006-02-26  Darin Adler  <darin@apple.com>

        Reviewed by Maciej.

        - merged Job and TransferJob into TransferJob and moved it to WebCore namespace
        - changed TransferJob to use a TransferJobClient object instead of signals

        * ForwardingHeaders/kio/job.h: Changed to point to "KWQKJobClasses.h".
        * kwq/KWQKJob.h: Removed.
        * kwq/TransferJobClient.h: Added.

        * WebCore.vcproj/WebCore/WebCore.vcproj: Updated for file changes.
        * WebCore.xcodeproj/project.pbxproj: Ditto.

        * dom/xml_tokenizer.cpp: (WebCore::openFunc):
        * khtml/xsl/xslt_processorimpl.cpp: (DOM::docLoaderFunc):
        Use "new TransferJob" instead of "KIO::get" and "KIO::http_post".

        * kwq/KWQKJobClasses.h: Eliminate Job. Add a TransferJobClient* parameter to
        TransferJob. Eliminate the deliverAllData parameter to TransferJob constructor.
        Remove the signals from TransferJob.
        * kwq/KWQKJobClasses.mm:
        (WebCore::TransferJobPrivate::TransferJobPrivate): Store a client pointer.
        (WebCore::TransferJob::TransferJob): Store a client pointer, remove the
        deliverAllData boolean.
        (WebCore::TransferJob::receivedResponse): Added. Replaces the old emitReceivedResponse
        function; uses client instead of a signal.
        (WebCore::TransferJob::client): Added.

        * kwq/KWQLoader.h: Switched things to mention the WebCore namespace.
        Changed KIO::TransferJob to WebCore::TransferJob.
        * kwq/KWQLoader.mm: Ditto.

        * kwq/KWQObject.h:
        * kwq/KWQObject.cpp: Removed isKHTMLLoader.

        * kwq/KWQResourceLoader.h: Changed KIO::TransferJob to WebCore::TransferJob.
        * kwq/KWQResourceLoader.mm:
        (-[KWQResourceLoader receivedResponse:]): Call receivedResponse function on
        the job instead of emitReceivedResponse.
        (-[KWQResourceLoader redirectedToURL:]): Call receivedRedirect function on the
        client directly instead of emitRedirection on the job.
        (-[KWQResourceLoader addData:]): Call receivedData function on the
        client directly instead of emitData on the job.
        (-[KWQResourceLoader finishJobAndHandle:]): Call receivedAllData function on the
        client directly instead of emitResult on the job. Also fixed a potential memory leak
        where the handle was not released if the job was 0.

        * kwq/KWQSignal.h:
        * kwq/KWQSignal.cpp:
        * kwq/KWQSlot.h:
        * kwq/KWQSlot.cpp:
        Removed the job-related signals and slots.

        * loader/CachedObject.h: Removed unneeded declaration of TransferJob.

        * loader/loader.h:
        * loader/loader.cpp:
        (WebCore::Loader::servePendingRequests): Use "new TransferJob" instead of "KIO::get".
        Also don't connect signals.
        (WebCore::Loader::receivedAllData): New name for slotFinished.
        (WebCore::Loader::receivedResponse): New name for slotReceivedResponse.
        (WebCore::Loader::receivedData): New name for slotData.
        (WebCore::Loader::cancelRequests): Changed KIO::Job to TransferJob.
        (WebCore::Loader::jobForRequest): Ditto.

        * page/Frame.h:
        * page/Frame.cpp:
        (WebCore::Frame::didOpenURL): Use "new TransferJob" instead of "KIO::get" and
        "KIO::http_post". Also don't connect signals.
        (WebCore::Frame::receivedAllData): Renamed from slotFinished. Also slightly
        cleaned up the logic.
        (WebCore::Frame::receivedRedirect): Renamed from slotRedirection.
        * page/FramePrivate.h: Changed KIO::TransferJob to WebCore::TransferJob.

        * xml/xmlhttprequest.h:
        * xml/xmlhttprequest.cpp:
        (WebCore::XMLHttpRequest::XMLHttpRequest): Eliminate XMLHttpRequestQObject.
        (WebCore::XMLHttpRequest::send): Use "new TransferJob" instead of
        "KIO::get" and "KIO::http_post". Also don't connect signals.
        (WebCore::XMLHttpRequest::processSyncLoadResults): Change to call the functions
        by their new names (names changed to use with TransferJobClient).
        (WebCore::XMLHttpRequest::receivedAllData): Renamed from slotFinished.
        (WebCore::XMLHttpRequest::receivedRedirect): Renamed from slotRedirection.
        (WebCore::XMLHttpRequest::receivedData): Renamed from slotData.

2006-02-26  Darin Adler  <darin@apple.com>

        - try again after seeing errors from buildbot

        * loader/CachedCSSStyleSheet.cpp:
        (WebCore::CachedCSSStyleSheet::checkNotify):
        * loader/CachedImage.cpp:
        (WebCore::CachedImage::data):
        Add __APPLE__ ifdefs to two more uses of response.

2006-02-26  Darin Adler  <darin@apple.com>

        - try again after seeing errors from buildbot

        * loader/CachedObject.cpp: (WebCore::CachedObject::~CachedObject):
        * loader/CachedObject.h: (WebCore::CachedObject::CachedObject):
        * loader/loader.cpp:
        Add __APPLE__ ifdefs to calls to setResponse and setAllData.

        * platform/win/TemporaryLinkStubs.cpp: Add missing includes.

2006-02-26  Darin Adler  <darin@apple.com>

        Reviewed by Maciej.

        - more Win32 link fixes

        * loader/CachedObject.h: Put some Mac-specific stuff inside
        __APPLE__ ifdefs.
        * platform/win/TemporaryLinkStubs.cpp: Added more stubs.

2006-02-26  Darin Adler  <darin@apple.com>

        - try again after seeing errors from buildbot

        * platform/win/TemporaryLinkStubs.cpp: Added more includes.

2006-02-26  Darin Adler  <darin@apple.com>

        - try again after seeing errors from buildbot

        * platform/win/TemporaryLinkStubs.cpp: Added more includes.

2006-02-26  Darin Adler  <darin@apple.com>

        Reviewed by Maciej.

        - work toward getting the Win32 build to link

        * WebCore.vcproj/WebCore/WebCore.vcproj: Added KWQObject.cpp.
        * platform/win/TemporaryLinkStubs.cpp: Added more stubs.

2006-02-24  Antti Koivisto  <koivisto@iki.fi>

        Reviewed by Hyatt.

        - fix http://bugs.webkit.org/show_bug.cgi?id=7440
        Floats not positioned correctly

        Test: fast/block/float/multiple-float-positioning.html

        * rendering/RenderBlock.cpp: 
        (WebCore::RenderBlock::positionNewFloats): Correct iteration of the float list

2006-02-24  Graham Dennis  <Graham.Dennis@gmail.com>

        <http://bugs.webkit.org/show_bug.cgi?id=6933>
        Selection extends beyond focus ring for some contentEditable divs

        Reviewed by justin

        * rendering/RenderBlock.cpp:
        (WebCore::RenderBlock::isSelectionRoot): Have root editable elements paint their
        own selection gaps.

2006-02-24  Darin Adler  <darin@apple.com>

        Reviewed by Maciej.

        - fix <rdar://problem/4456287> REGRESSION: assertion failure at mypage.apple.com
          in WebCore::TimerBase::nextFireInterval() const + 100 (Timer.cpp:188)

        Test: fast/dom/Window/redirect-with-timer.html

        * platform/Timer.h: Made isActive no longer inline. Added inHeap function.
        * platform/Timer.cpp: Changed assertions to use inHeap function for clarity.
        (WebCore::TimerBase::isActive): Return true for timers that are ready to fire.
        They have a next fire time of 0, but they should still be considered active.
        (WebCore::TimerBase::checkConsistency): Correct the consistency check. The new
        rule is that timers with a next fire time of 0 are not in the heap, and all other
        timers are.

2006-02-24  Graham Dennis  <Graham.Dennis@gmail.com>

        <http://bugs.webkit.org/show_bug.cgi?id=7245>
        caret does not display at the end of some lines in contenteditable divs

        Reviewed by justin

        * khtml/html/HTMLElementImpl.cpp:
        (WebCore::HTMLElementImpl::setContentEditable):
        * page/Frame.cpp:
        (WebCore::Frame::applyEditingStyleToElement):
        (WebCore::Frame::removeEditingStyleFromElement):

2006-02-24  Eric Seidel  <eseidel@apple.com>

        Reviewed by mjs.

        Move dom_qname to QualifiedName and dom_atomicstringlist to AtomicStringList.

        * WebCore+SVG/KDOMHeaders.h:
        * WebCore.vcproj/WebCore/WebCore.vcproj:
        * WebCore.xcodeproj/project.pbxproj:
        * css/css_base.h:
        * dom/AtomicStringList.h: Added.
        (WebCore::AtomicStringList::AtomicStringList):
        * dom/QualifiedName.cpp: Added.
        * dom/QualifiedName.h: Added.
        * dom/dom_atomicstringlist.h: Removed.
        * dom/dom_elementimpl.h:
        * dom/dom_qname.cpp: Removed.
        * dom/dom_qname.h: Removed.
        * editing/RemoveNodeAttributeCommand.h:
        * editing/SetNodeAttributeCommand.h:
        * khtml/html/htmlnames.h:
        * khtml/html/htmltokenizer.h:
        * ksvg2/scripts/make_names.pl: update for new headers

2006-02-24  Eric Seidel  <eseidel@apple.com>

        Reviewed by beth.

        Made a few methods on frame pure virtual.
        Added a bunch of stub functions for win32 linking.

        * bridge/mac/MacFrame.h:
        * bridge/mac/MacFrame.mm:
        (WebCore::MacFrame::print):
        (WebCore::MacFrame::canUndo):
        (WebCore::MacFrame::canRedo):
        (WebCore::MacFrame::canPaste):
        * bridge/win/FrameWin.h:
        * page/Frame.h:
        * platform/win/TemporaryLinkStubs.cpp:
        (QTextEdit::sizeWithColumnsAndRows):
        (QLineEdit::maxLength):
        (QPainter::drawEllipse):
        (QTextEdit::setLineHeight):
        (QPainter::beginTransparencyLayer):
        (QLineEdit::selectedText):
        (Widget::setIsSelected):
        (QPainter::paintingDisabled):
        (QFontMetrics::selectionRectForText):
        (QTextEdit::getCursorPosition):
        (QSlider::QSlider):
        (WebCore::crossCursor):
        (WebCore::handCursor):
        (WebCore::moveCursor):
        (WebCore::iBeamCursor):
        (WebCore::waitCursor):
        (WebCore::helpCursor):
        (WebCore::eastResizeCursor):
        (WebCore::northResizeCursor):
        (WebCore::northEastResizeCursor):
        (WebCore::northWestResizeCursor):
        (WebCore::southResizeCursor):
        (WebCore::southEastResizeCursor):
        (WebCore::southWestResizeCursor):
        (WebCore::westResizeCursor):

2006-02-24  Sam Weinig  <sam.weinig@gmail.com>

        Reviewed by Hyatt, tweaked and landed by ggaren.

        - fix http://bugs.webkit.org/show_bug.cgi?id=5146
          max-height/max-width not resizing images with correct aspect ratio

        This patch is a port and adaptation of Allan Sandfeld Jensen's (carewolf)
        patch of http://bugs.kde.org/show_bug.cgi?id=120107 with the needed
        modifications to suit the Webcore tree.  Makes images respect min/max 
        sizes and their intrinsic aspect ratios at the same time according to 
        CSS 2.1 (http://www.w3.org/TR/CSS21/visudet.html#min-max-widths).  

        Test: fast/replaced/maxheight-percent.html
        Test: fast/replaced/maxheight-pxs.html
        Test: fast/replaced/maxwidth-percent.html
        Test: fast/replaced/maxwidth-pxs.html
        Test: fast/replaced/minheight-percent.html
        Test: fast/replaced/minheight-pxs.html
        Test: fast/replaced/minwidth-percent.html
        Test: fast/replaced/minwidth-pxs.html

        * rendering/render_box.cpp:
        (WebCore::RenderBox::calcReplacedWidth):
        (WebCore::RenderBox::calcReplacedWidthUsing):
        (WebCore::RenderBox::calcReplacedHeight): 
        (WebCore::RenderBox::calcReplacedHeightUsing): Calculate percent heights correctly
        * rendering/render_image.cpp: Respect aspect ratios and calculate max/min
        (WebCore::RenderImage::calcReplacedWidth):
        (WebCore::RenderImage::calcReplacedHeight):
        (WebCore::RenderImage::calcAspectRatioWidth): Added
        (WebCore::RenderImage::calcAspectRatioHeight): Added
        (WebCore::RenderImage::calcMinMaxWidth): Added
        * rendering/render_image.h:

2006-02-24  Vicki Murley <vicki@apple.com>

        - add missing resources for manual-tests/scrolling-nestedframesets.html

        * manual-tests/resources/testframe-link_text.html: Added.
        * manual-tests/resources/testframeset.html: Added.

2006-02-24  Vicki Murley <vicki@apple.com>

        - test case for <rdar://problem/4394910> calling Javascript window.close() does not trigger onbeforeunload event

        * manual-tests/onbeforeunload-close_with_javascript.html: Added.

2006-02-24  Eric Seidel  <eseidel@apple.com>

        Reviewed by mjs.

        Add Path stubs for Win32 build.

        * WebCore.vcproj/WebCore/WebCore.vcproj:
        * platform/win/TemporaryLinkStubs.cpp:
        (Path::Path):
        (Path::~Path):
        (Path::operator=):
        (Path::contains):
        (Path::translate):
        (Path::boundingRect):

2006-02-24  David Hyatt  <hyatt@apple.com>

        In preparation for the elimination of QFont and QFontMetrics, rename methods on RenderStyle.  htmlFont() becomes simply
        font().  The old font() method turns into qfont().  Also added a helper for obtaining the fontDescription() directly from
        the RenderStyle (without first obtaining the htmlFont()).

        Reviewed by darin

        * WebCore.xcodeproj/project.pbxproj:
        * bindings/objc/DOM.mm:
        (-[DOMElement _font]):
        * bridge/mac/MacFrame.mm:
        (WebCore::MacFrame::attributedString):
        (WebCore::MacFrame::fontForSelection):
        (WebCore::MacFrame::fontAttributesForSelectionStart):
        * css/css_computedstyle.cpp:
        (WebCore::CSSComputedStyleDeclarationImpl::getPropertyCSSValue):
        * css/css_valueimpl.cpp:
        (WebCore::CSSPrimitiveValueImpl::computeLengthFloat):
        * css/cssstyleselector.cpp:
        (WebCore::CSSStyleSelector::styleForElement):
        (WebCore::CSSStyleSelector::pseudoStyleForElement):
        (WebCore::CSSStyleSelector::applyProperty):
        (WebCore::CSSStyleSelector::checkForTextSizeAdjust):
        (WebCore::CSSStyleSelector::checkForGenericFamilyChange):
        * dom/DocumentImpl.cpp:
        (WebCore::DocumentImpl::recalcStyle):
        * editing/visible_text.cpp:
        (khtml::TextIterator::exitNode):
        * ksvg2/svg/SVGLengthImpl.cpp:
        (SVGLengthImpl::updateValue):
        * kwq/KWQAccObject.mm:
        (AXAttributeStringSetStyle):
        * rendering/InlineTextBox.cpp:
        (khtml::InlineTextBox::paint):
        (khtml::InlineTextBox::offsetForPosition):
        * rendering/RenderText.cpp:
        (WebCore::RenderText::shouldUseMonospaceCache):
        (WebCore::RenderText::font):
        (WebCore::RenderText::width):
        (WebCore::RenderText::htmlFont):
        * rendering/bidi.cpp:
        (khtml::RenderBlock::tabWidth):
        (khtml::RenderBlock::checkLinesForTextOverflow):
        * rendering/render_br.cpp:
        (WebCore::RenderBR::lineHeight):
        * rendering/render_flexbox.cpp:
        (khtml::RenderFlexibleBox::layoutVerticalBox):
        * rendering/render_flow.cpp:
        (WebCore::RenderFlow::lineHeight):
        * rendering/render_form.cpp:
        (WebCore::RenderFormElement::setStyle):
        (WebCore::RenderFormElement::addIntrinsicMarginsIfAllowed):
        * rendering/render_image.cpp:
        (WebCore::RenderImage::paint):
        * rendering/render_line.cpp:
        (WebCore::InlineFlowBox::paintDecorations):
        (WebCore::EllipsisBox::paint):
        * rendering/render_list.cpp:
        (RenderListItem::getAbsoluteRepaintRect):
        (RenderListMarker::paint):
        * rendering/render_object.cpp:
        (WebCore::RenderObject::lineHeight):
        * rendering/render_object.h:
        (WebCore::RenderObject::font):
        * rendering/render_replaced.cpp:
        (WebCore::RenderWidget::setStyle):
        * rendering/render_style.h:
        (khtml::RenderStyle::font):
        (khtml::RenderStyle::fontDescription):
        (khtml::RenderStyle::qfont):
        * rendering/render_theme_mac.mm:
        (WebCore::RenderThemeMac::setFontFromControlSize):

2006-02-24  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by Eric.

        - add link stubs for symbols only referenced from the link stubs file

        * platform/win/TemporaryLinkStubs.cpp:
        (KWQFileButton::focusPolicy):
        (QLineEdit::checksDescendantsForFocus):
        (KWQFileButton::baselinePosition):
        (QSlider::~QSlider):
        (QListBox::~QListBox):
        (KWQFileButton::frameGeometry):
        (KWQFileButton::~KWQFileButton):
        (QTextEdit::focusPolicy):
        (QSlider::focusPolicy):
        (QListBox::setEnabled):
        (QListBox::checksDescendantsForFocus):
        (QListBox::focusPolicy):
        (QLineEdit::baselinePosition):
        (QSlider::sizeHint):
        (QLineEdit::~QLineEdit):
        (QTextEdit::~QTextEdit):
        (QTextEdit::checksDescendantsForFocus):
        (QLineEdit::focusPolicy):
        (QScrollBar::~QScrollBar):

2006-02-24  Maciej Stachowiak  <mjs@apple.com>

        Rubber stamped by Eric.

        - fix up font.h inclues to be Font.h to fix build.

        * css/css_computedstyle.cpp:
        * css/css_valueimpl.cpp:
        * platform/Font.cpp:
        * rendering/render_style.h:

2006-02-24  Eric Seidel  <eseidel@apple.com>

        Reviewed by mjs.

        Fix mac build by changing constants to an enum.

        * khtml/dom/dom2_events.h:
        (DOM::KeyboardEvent::):

2006-02-24  David Hyatt  <hyatt@apple.com>

        Move rendering/font to platform/Font.

        Reviewed by mjs

        * WebCore.xcodeproj/project.pbxproj:
        * css/cssstyleselector.cpp:
        * platform/Font.cpp: Added.
        * platform/Font.h: Added.
        * rendering/font.cpp: Removed.
        * rendering/font.h: Removed.
        * rendering/render_theme_mac.mm:

2006-02-24  Eric Seidel  <eseidel@apple.com>

        Reviewed by mjs.

        Remove delcarations causing duplicate symbols on win32.

        * khtml/dom/dom2_events.cpp:

2006-02-24  Eric Seidel  <eseidel@apple.com>

        * bridge/win/FrameWin.cpp: fix line endings

2006-02-24  Eric Seidel  <eseidel@apple.com>

        Reviewed by beth.

        Removed WebCore:: prefixes added using namespace WebCore, fixes win32 build.

        * platform/win/TemporaryLinkStubs.cpp:
        (QPainter::save):
        (Widget::enableFlushDrawing):
        (QPainter::drawHighlightForText):
        (QTextEdit::textWithHardLineBreaks):
        (QPainter::setPen):
        (QPainter::selectedTextBackgroundColor):
        (QPainter::fontMetrics):
        (Widget::show):
        (QLineEdit::setWritingDirection):
        (KWQFileButton::sizeForCharacterWidth):
        (QTextEdit::sizeWithColumnsAndRows):
        (iBeamCursor):
        (QPainter::misspellingLineThickness):
        (westResizeCursor):
        (Widget::isEnabled):
        (northWestResizeCursor):
        (QPainter::drawEllipse):
        (southWestResizeCursor):
        (Widget::focusPolicy):
        (waitCursor):
        (QPainter::endTransparencyLayer):
        (ScrollView::addChild):
        (Widget::~Widget):
        (QListBox::sizeForNumberOfLines):
        (FrameView::updateBorder):
        (QPainter::drawLineForText):
        (QPainter::QPainter):
        (QComboBox::focusPolicy):
        (QPainter::drawImageAtPoint):
        (QPainter::clearShadow):
        (eastResizeCursor):
        (QFontMetrics::boundingRect):
        (QPainter::beginTransparencyLayer):
        (northEastResizeCursor):
        (Widget::frameGeometry):
        (QPainter::addFocusRingRect):
        (QPainter::restore):
        (Widget::setEnabled):
        (QPainter::font):
        (QPainter::pen):
        (crossCursor):
        (Widget::setIsSelected):
        (handCursor):
        (QLineEdit::text):
        (Widget::unlockDrawingFocus):
        (QPainter::paintingDisabled):
        (northResizeCursor):
        (Widget::lockDrawingFocus):
        (QPainter::drawLine):
        (QPainter::setBrush):
        (QPainter::drawText):
        (QLineEdit::sizeForCharacterWidth):
        (Cursor::~Cursor):
        (QFontMetrics::selectionRectForText):
        (southResizeCursor):
        (moveCursor):
        (FrameView::isFrameView):
        (helpCursor):
        (QTextEdit::setWritingDirection):
        (Widget::setDrawingAlpha):
        (southEastResizeCursor):
        (QPainter::drawScaledAndTiledImage):
        (QPainter::drawImage):
        (QComboBox::setWritingDirection):
        (QComboBox::sizeHint):
        (QPainter::drawRect):
        (QPainter::drawTiledImage):
        (QPainter::clearFocusRing):
        (Widget::Widget):
        (QTextEdit::text):
        (QPainter::drawImageInRect):
        (Widget::disableFlushDrawing):
        (QPainter::initFocusRing):
        (QPainter::drawLineForMisspelling):
        (QComboBox::frameGeometry):
        (QListBox::setWritingDirection):
        (ScrollView::updateContents):

2006-02-24  Darin Adler  <darin@apple.com>

        Reviewed by Hyatt.

        - moved QScrollView from kwq to platform directory

        * kwq/KWQScrollView.h: Removed.
        * kwq/KWQScrollView.mm: Removed.

        * platform/ScrollBarMode.h: Added. Just the enum for scroll bar mode.
        * platform/ScrollView.h: Added. The rest of the former QScrollView.
        * platform/mac/ScrollViewMac.mm: Added.

        * WebCore.xcodeproj/project.pbxproj: Updated.
        * WebCore.vcproj/WebCore/WebCore.vcproj: Ditto.
        * platform/win/TemporaryLinkStubs.cpp: Updated.

        * bridge/mac/MacFrame.mm: (WebCore::MacFrame::createFrame):
        * khtml/html/html_baseimpl.cpp:
        (WebCore::HTMLFrameElementImpl::init):
        (WebCore::HTMLFrameElementImpl::parseMappedAttribute):
        * page/Frame.cpp: (WebCore::Frame::scrollbarsVisible):
        Changed scrolling constants to use new names.

        * khtml/ecma/kjs_html.cpp: (KJS::HTMLElement::bodySetter):
        Use FrameView instead of QScrollView for a local variable.

        * khtml/html/html_baseimpl.h: Use ScrollBarMode instead of
        QScrollView::ScrollBarMode.

        * kwq/KWQListBox.h: Use WebCore::ScrollView instead of
        QScrollView and WebCore::ScrollBarMode instead of QScrollView::ScrollBarMode.
        * kwq/KWQTextEdit.h: Ditto.
        * kwq/KWQTextEdit.mm:
        (QTextEdit::setScrollBarModes): Ditto.
        (QTextEdit::focusPolicy): Ditto.

        * page/FrameView.h:
        * page/FrameView.cpp:
        (WebCore::FrameViewPrivate::FrameViewPrivate): Use ScrollBarMode
        instead of QScrollView::ScrollBarMode.
        (WebCore::FrameView::FrameView): Remove mention of QScrollView.
        (WebCore::FrameView::resetScrollBars): Rename QScrollView to ScrollView.
        (WebCore::FrameView::applyOverflowToViewport): Use newly-named constants.
        (WebCore::FrameView::layout): Ditto.
        (WebCore::FrameView::setScrollBarsMode): Rename QScrollView to ScrollView.
        (WebCore::FrameView::setVScrollBarMode): Ditto.
        (WebCore::FrameView::setHScrollBarMode): Ditto.
        (WebCore::FrameView::restoreScrollBar): Ditto.

        * platform/mac/MouseEventMac.mm: (WebCore::positionForEvent): Fixed comment.
        * platform/mac/WheelEventMac.mm: (WebCore::positionForEvent): Ditto.
        * platform/mac/WidgetMac.mm: (WebCore::Widget::getOuterView): Ditto.

        * rendering/render_form.cpp: (WebCore::RenderTextArea::setStyle):
        Use ScrollBarMode instead of QScrollView::ScrollBarMode, and new constants.
        * rendering/render_frames.cpp:
        (WebCore::RenderFrameSet::userResize): Changed to use an IntRect to pass to
        updateContents so we can remove the overload.
        (WebCore::RenderPart::updateWidgetPosition): Remove unnecessary of QScrollView.

        * rendering/render_layer.cpp:
        (WebCore::RenderLayer::scrollRectToVisible): Use FrameView instead of QScrollView.
        (WebCore::RenderLayer::setHasHorizontalScrollbar): Ditto.
        (WebCore::RenderLayer::setHasVerticalScrollbar): Ditto.

2006-02-24  Eric Seidel  <eseidel@apple.com>

        Reviewed by anders.

        Fix the win32 build.

        * page/Frame.cpp:
        (WebCore::Frame::adjustPageHeight):
        (WebCore::Frame::forceLayoutWithPageWidthRange):

2006-02-23  David Hyatt  <hyatt@apple.com>

        Rename FontDef to FontDescription and move it into the platform directory.

        Reviewed by darin

        * WebCore.xcodeproj/project.pbxproj:
        * bridge/mac/MacFrame.mm:
        (WebCore::MacFrame::attributedString):
        * css/css_computedstyle.cpp:
        (WebCore::CSSComputedStyleDeclarationImpl::getPropertyCSSValue):
        * css/css_valueimpl.cpp:
        (WebCore::CSSPrimitiveValueImpl::computeLengthFloat):
        * css/cssstyleselector.cpp:
        (WebCore::CSSStyleSelector::applyProperty):
        (WebCore::CSSStyleSelector::checkForTextSizeAdjust):
        (WebCore::CSSStyleSelector::checkForGenericFamilyChange):
        (WebCore::CSSStyleSelector::setFontSize):
        * css/cssstyleselector.h:
        * dom/DocumentImpl.cpp:
        (WebCore::DocumentImpl::recalcStyle):
        * editing/visible_text.cpp:
        (khtml::TextIterator::exitNode):
        * platform/FontDescription.h: Added.
        (WebCore::FontDescription::):
        (WebCore::FontDescription::FontDescription):
        (WebCore::FontDescription::operator!=):
        (WebCore::FontDescription::family):
        (WebCore::FontDescription::firstFamily):
        (WebCore::FontDescription::specifiedSize):
        (WebCore::FontDescription::computedSize):
        (WebCore::FontDescription::italic):
        (WebCore::FontDescription::computedPixelSize):
        (WebCore::FontDescription::smallCaps):
        (WebCore::FontDescription::isAbsoluteSize):
        (WebCore::FontDescription::weight):
        (WebCore::FontDescription::genericFamily):
        (WebCore::FontDescription::usePrinterFont):
        (WebCore::FontDescription::setFamily):
        (WebCore::FontDescription::setComputedSize):
        (WebCore::FontDescription::setSpecifiedSize):
        (WebCore::FontDescription::setItalic):
        (WebCore::FontDescription::setSmallCaps):
        (WebCore::FontDescription::setIsAbsoluteSize):
        (WebCore::FontDescription::setWeight):
        (WebCore::FontDescription::setGenericFamily):
        (WebCore::FontDescription::setUsePrinterFont):
        (WebCore::FontDescription::operator==):
        * rendering/RenderText.cpp:
        (WebCore::RenderText::widthFromCache):
        (WebCore::RenderText::trimmedMinMaxWidth):
        * rendering/bidi.cpp:
        (khtml::RenderBlock::computeHorizontalPositionsForLine):
        * rendering/font.cpp:
        (khtml::Font::selectionRectForText):
        (khtml::Font::drawHighlightForText):
        (khtml::Font::drawText):
        (khtml::Font::update):
        * rendering/font.h:
        (WebCore::Font::Font):
        (WebCore::Font::operator==):
        (WebCore::Font::fontDescription):
        (WebCore::Font::isSmallCaps):
        (WebCore::Font::wordSpacing):
        (WebCore::Font::floatWidth):
        (WebCore::Font::checkSelectionPoint):
        (WebCore::Font::width):
        * rendering/render_line.cpp:
        (WebCore::InlineFlowBox::placeBoxesHorizontally):
        * rendering/render_list.cpp:
        (RenderListItem::getAbsoluteRepaintRect):
        * rendering/render_style.h:
        (khtml::RenderStyle::wordSpacing):
        (khtml::RenderStyle::letterSpacing):
        (khtml::RenderStyle::setFontDescription):
        (khtml::RenderStyle::setWordSpacing):
        (khtml::RenderStyle::setLetterSpacing):
        * rendering/render_theme_mac.mm:
        (WebCore::RenderThemeMac::setFontFromControlSize):

2006-02-23  Maciej Stachowiak  <mjs@apple.com>

        - fix build by making some pointless changes to files that Xcode doesn't 
        rebuild otherwise

        * bindings/js/JSDOMCore.cpp:
        * bindings/js/JSDOMEvents.cpp:
        * dom/Element.idl:
        * dom/WheelEvent.idl:
        
        - add -Y 3 flag to linking; this makes the linker say what files reference 
        unresolved symbols
        
        * WebCore.xcodeproj/project.pbxproj:

2006-02-23  Darin Adler  <darin@apple.com>

        - try to fix Windows build

        * platform/win/TemporaryLinkStubs.cpp: Removed childX/Y stubs.

2006-02-23  Darin Adler  <darin@apple.com>

        - try to fix Windows build

        * platform/win/TemporaryLinkStubs.cpp: Removed QPalette-related stubs.

        - remove unused forwarding headers

        * ForwardingHeaders/kurl.h: Removed.
        * ForwardingHeaders/qlist.h: Removed.
        * ForwardingHeaders/qregion.h: Removed.
        * ForwardingHeaders/qsortedlist.h: Removed.

2006-02-23  Darin Adler  <darin@apple.com>

        Reviewed by Maciej.

        - removed QPalette, QRegion, QPrinter
        - added Path to replace QRegion
        - removed unused QScrollView functions

        * ForwardingHeaders/qpalette.h: Removed.
        * kwq/KWQPalette.h: Removed.
        * kwq/KWQPalette.mm: Removed.
        * kwq/KWQPrinter.h: Removed.
        * kwq/KWQRegion.cpp: Removed.
        * kwq/KWQRegion.h: Removed.

        * platform/Path.h: Added. Replaces QRegion.
        * platform/cg: Added.
        * platform/cg/PathCG.cpp: Added.

        * WebCore.vcproj/WebCore/WebCore.vcproj: Updated for file changes.
        * WebCore.xcodeproj/project.pbxproj: Ditto.

        * bridge/mac/MacFrame.mm: Removed use of KWQPrinter.h.
        (WebCore::MacFrame::khtmlMouseMoveEvent): Removed use of viewport().
        * bridge/mac/WebCoreFrameBridge.mm: Removed use of KWQPrinter.h.
        * khtml/html/html_imageimpl.cpp:
        (WebCore::HTMLAreaElementImpl::getRect): Replaced QRegion with Path.
        (WebCore::HTMLAreaElementImpl::getRegion): Ditto.
        * khtml/html/html_imageimpl.h: Ditto.
        * kwq/KWQPainter.mm: Removed use of QRegion.
        * page/Frame.cpp: (WebCore::Frame::~Frame): Removed use of viewport().
        * page/FrameView.cpp:
        (WebCore::FrameView::FrameView): Ditto.
        (WebCore::FrameView::viewportMouseMoveEvent): Ditto.
        * rendering/render_frames.cpp: (WebCore::RenderFrameSet::userResize): Ditto.
        * rendering/render_layer.cpp: (WebCore::RenderLayer::scrollRectToVisible): Ditto.

        * kwq/KWQScrollView.h: Removed viewport(), hasVerticalScrollBar(),
        hasHorizontalScrollBar(), childX(), childY().
        * kwq/KWQScrollView.mm: Ditto.

        * rendering/render_box.cpp: (WebCore::RenderBox::paintBackgroundExtended):
        Removed use of QPalette that always yields white.
        * rendering/render_canvas.cpp: (WebCore::RenderCanvas::paintBoxDecorations):
        Ditto.

        * platform/Widget.h:
        * platform/mac/WidgetMac.mm: Removed palette() and setPalette().

        * kwq/KWQLineEdit.h: Replaced setPalette with setColors.
        * kwq/KWQLineEdit.mm: (QLineEdit::setColors): Replaced setPalette.
        * kwq/KWQTextEdit.h: Ditto.
        * kwq/KWQTextEdit.mm: (QTextEdit::setColors): Ditto.

        * rendering/render_form.cpp:
        (WebCore::RenderFormElement::updateFromElement): Removed call to setPalette.
        (WebCore::RenderLineEdit::updateFromElement): Added call to setColors.
        (WebCore::RenderTextArea::updateFromElement): Ditto.

        * rendering/render_replaced.cpp: (WebCore::RenderWidget::paint):
        Removed use of childX and childY functions.

2006-02-23  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by Darin.

        - add KURL to windows build and fix its compile issues
        http://bugs.webkit.org/show_bug.cgi?id=7439

        * WebCore.vcproj/WebCore/WebCore.vcproj:
        * platform/KURL.cpp:

2006-02-23  Maciej Stachowiak  <mjs@apple.com>

        - fix build (header name changed)

        * platform/mac/KURLMac.mm:

2006-02-23  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by Eric.

        - add temporary stubs that call abort() for functions only called from render and editing code 
        http://bugs.webkit.org/show_bug.cgi?id=7429

        This gets rid of a couple hundred link errors.

        * WebCore.vcproj/WebCore/WebCore.vcproj:
        * kwq/KWQFontMetrics.h:
        * kwq/KWQSignal.h:
        (KWQSignal::KWQSignal):
        * platform/win/TemporaryLinkStubs.cpp: Added.
        (notImplemented):
        (QLineEdit::selectAll):
        (WebCore::QPainter::save):
        (WebCore::Widget::enableFlushDrawing):
        (WebCore::QPainter::drawHighlightForText):
        (QFont::setPrinterFont):
        (QTextEdit::textWithHardLineBreaks):
        (QLineEdit::cursorPosition):
        (WebCore::QPainter::setPen):
        (WebCore::QPainter::selectedTextBackgroundColor):
        (WebCore::QPainter::fontMetrics):
        (WebCore::Widget::show):
        (QFont::setItalic):
        (QSlider::setValue):
        (QLineEdit::addSearchResult):
        (KWQFileButton::click):
        (QLineEdit::setWritingDirection):
        (KWQFileButton::sizeForCharacterWidth):
        (QTextEdit::sizeWithColumnsAndRows):
        (WebCore::iBeamCursor):
        (QComboBox::clear):
        (WebCore::QPainter::misspellingLineThickness):
        (QLineEdit::maxLength):
        (WebCore::westResizeCursor):
        (WebCore::Widget::isEnabled):
        (WebCore::northWestResizeCursor):
        (QTextEdit::selectionEnd):
        (QFont::determinePitch):
        (QTextEdit::setScrollBarModes):
        (WebCore::QPainter::drawEllipse):
        (WebCore::southWestResizeCursor):
        (QTextEdit::setReadOnly):
        (QListBox::appendItem):
        (WebCore::Widget::focusPolicy):
        (QTextEdit::selectAll):
        (WebCore::waitCursor):
        (WebCore::QPainter::endTransparencyLayer):
        (QScrollView::addChild):
        (QTextEdit::setDisabled):
        (QScrollBar::scroll):
        (WebCore::Widget::~Widget):
        (QListBox::sizeForNumberOfLines):
        (QScrollView::resizeContents):
        (QLineEdit::selectionStart):
        (QLineEdit::QLineEdit):
        (WebCore::FrameView::updateBorder):
        (QLineEdit::hasSelectedText):
        (QListBox::doneAppendingItems):
        (QScrollView::inWindow):
        (QScrollBar::setValue):
        (QTextEdit::hasSelectedText):
        (QTextEdit::selectionStart):
        (QFont::setWeight):
        (QScrollView::scrollXOffset):
        (QListBox::isSelected):
        (QLineEdit::setReadOnly):
        (WebCore::QPainter::drawLineForText):
        (QObject::disconnect):
        (WebCore::QPainter::QPainter):
        (QComboBox::~QComboBox):
        (QComboBox::focusPolicy):
        (WebCore::QPainter::drawImageAtPoint):
        (WebCore::QPainter::clearShadow):
        (QTextEdit::setLineHeight):
        (QMouseEvent::QMouseEvent):
        (WebCore::eastResizeCursor):
        (QScrollBar::setKnobProportion):
        (QFontMetrics::boundingRect):
        (QTextEdit::setSelectionStart):
        (WebCore::QPainter::beginTransparencyLayer):
        (WebCore::northEastResizeCursor):
        (WebCore::Widget::frameGeometry):
        (QListBox::setSelected):
        (WebCore::QPainter::addFocusRingRect):
        (QTextEdit::setCursorPosition):
        (WebCore::QPainter::restore):
        (QFontMetrics::width):
        (WebCore::Widget::setEnabled):
        (QTextEdit::setSelectionEnd):
        (QComboBox::populate):
        (QScrollView::setStaticBackground):
        (WebCore::QPainter::font):
        (QTextEdit::setAlignment):
        (QLineEdit::setCursorPosition):
        (WebCore::Widget::palette):
        (WebCore::QPainter::pen):
        (QFontMetrics::descent):
        (QListBox::QListBox):
        (QFontMetrics::ascent):
        (QLineEdit::selectedText):
        (WebCore::crossCursor):
        (WebCore::Widget::setIsSelected):
        (WebCore::handCursor):
        (QLineEdit::text):
        (WebCore::Widget::unlockDrawingFocus):
        (QLineEdit::setLiveSearch):
        (WebCore::QPainter::paintingDisabled):
        (WebCore::northResizeCursor):
        (QComboBox::QComboBox):
        (QSlider::setMaxValue):
        (WebCore::Widget::lockDrawingFocus):
        (WebCore::QPainter::drawLine):
        (WebCore::QPainter::setBrush):
        (QTextEdit::setSelectionRange):
        (WebCore::QPainter::drawText):
        (QScrollView::scrollPointRecursively):
        (QLineEdit::sizeForCharacterWidth):
        (WebCore::Cursor::~Cursor):
        (QFontMetrics::selectionRectForText):
        (WebCore::southResizeCursor):
        (QScrollView::suppressScrollBars):
        (QFontMetrics::checkSelectionPoint):
        (QTextEdit::getCursorPosition):
        (WebCore::moveCursor):
        (WebCore::FrameView::isFrameView):
        (QScrollBar::setSteps):
        (QLineEdit::setMaxLength):
        (QComboBox::baselinePosition):
        (QComboBox::appendItem):
        (WebCore::helpCursor):
        (QTextEdit::setWritingDirection):
        (WebCore::Widget::setDrawingAlpha):
        (QSlider::QSlider):
        (WebCore::southEastResizeCursor):
        (QScrollView::setVScrollBarMode):
        (WebCore::QPainter::drawScaledAndTiledImage):
        (QScrollView::scrollYOffset):
        (WebCore::QPainter::drawImage):
        (QComboBox::setCurrentItem):
        (QFontMetrics::height):
        (QComboBox::setWritingDirection):
        (QScrollView::setScrollBarsMode):
        (QComboBox::sizeHint):
        (WebCore::QPainter::drawRect):
        (QFont::setPixelSize):
        (QLineEdit::setSelection):
        (QLineEdit::setMaxResults):
        (QListBox::clear):
        (QLineEdit::edited):
        (WebCore::QPainter::drawTiledImage):
        (WebCore::QPainter::clearFocusRing):
        (WebCore::Widget::Widget):
        (QTextEdit::text):
        (WebCore::QPainter::drawImageInRect):
        (WebCore::Widget::disableFlushDrawing):
        (WebCore::QPainter::initFocusRing):
        (QSlider::setMinValue):
        (QTextEdit::setWordWrap):
        (WebCore::QPainter::drawLineForMisspelling):
        (QSlider::value):
        (QListBox::setSelectionMode):
        (QFontMetrics::lineSpacing):
        (QLineEdit::setEdited):
        (QComboBox::frameGeometry):
        (QListBox::setWritingDirection):
        (QLineEdit::setAlignment):
        (QScrollView::updateContents):
        (QFontMetrics::floatWidth):
        (QScrollView::setHScrollBarMode):

2006-02-23  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by Eric.
        
        - Move KURL from kwq to platform, make portable
        http://bugs.webkit.org/show_bug.cgi?id=7437

        * WebCore.xcodeproj/project.pbxproj:
        * css/css_ruleimpl.cpp:
        * css/cssparser.cpp:
        * css/cssstyleselector.cpp:
        * dom/DocumentImpl.h:
        * khtml/html/html_baseimpl.cpp:
        * khtml/html/html_documentimpl.cpp:
        * khtml/html/html_headimpl.cpp:
        * khtml/xbl/xbl_binding.cpp:
        * ksvg2/svg/SVGDocumentImpl.cpp:
        * kwq/KWQTextCodec.cpp:
        (QTextCodec::codecForName):
        (QTextCodec::utf8Codec):
        (QTextCodec::codecForNameEightBitOnly):
        (QTextCodec::codecForLocale):
        (QTextCodec::name):
        (QTextCodec::makeDecoder):
        * kwq/KWQTextCodec.h:
        * loader/CachedObject.cpp:
        * loader/DocLoader.cpp:
        * page/Frame.h:
        * platform/KURL.cpp: Added.
        (KURL::decode_string):
        (encodeRelativeString):
        * platform/KURL.h: Added.
        * platform/mac/KURLMac.mm: Added.
        (KURL::getNSURL):
        * xml/xmlhttprequest.h:

2006-02-23  Darin Adler  <darin@apple.com>

        Reviewed by John Sullivan.

        - moved QMouseEvent, QKeyEvent, QWheelEvent, and "Foundation extras"
          from kwq to platform directory
        - moved history function from kwq to bridge directory
        - eliminated QEvent, MousePressEvent, MouseDoubleClickEvent, MouseMoveEvent,
          MoveReleaseEvent, and DrawContents classes
        - merged NodeImpl::MouseEvent and the MouseEvent from khtml_events.h into
          a single class in the page directory
        - broke khtmllayout.h out into a file for the Length structure in the css
          directory and a file for the GapRects structure in the rendering directory
        - redid the Length structure to work more portably by not relying on bitfield
          layout and improve the names to no longer explicitly mention "width"
        - reduced use of QGuardedPtr and other uses of the QObject "destroyed" signal

        * ForwardingHeaders/kparts: Removed.
        * ForwardingHeaders/qevent.h: Removed.
        * khtml/khtml_events.cpp: Removed.
        * khtml/khtml_events.h: Removed.
        * khtml/misc/khtmllayout.h: Removed.
        * kwq/KWQEvent.h: Removed.
        * kwq/KWQEvent.mm: Removed.
        * kwq/KWQFoundationExtras.h: Removed.
        * kwq/KWQKHistoryProvider.mm: Removed.
        * kwq/KWQKPartsHistoryProvider.h: Removed.

        * bridge/History.h: Added.
        * bridge/mac/HistoryMac.mm: Added.
        * css/Length.h: Added.
        * page/MouseEventWithHitTestResults.h: Added.
        * platform/KeyEvent.h: Added.
        * platform/MouseEvent.h: Added.
        * platform/WheelEvent.h: Added.
        * platform/mac/FoundationExtras.h: Added.
        * platform/mac/KeyEventMac.mm: Added.
        * platform/mac/MouseEventMac.mm: Added.
        * platform/mac/WheelEventMac.mm: Added.
        * rendering/GapRects.h: Added.

        * WebCore.xcodeproj/project.pbxproj: Updated for above changes.
        * WebCore.vcproj/WebCore/WebCore.vcproj: Updated for above changes.

        * bridge/mac/MacFrame.h: Removed unused parameters from urlSelected functions.
        Replaced MouseEvent, MousePressEvent, MouseMoveEvent, and MouseReleaseEvent
        with MouseEventWithHitTestResults.
        * bridge/mac/MacFrame.mm:
        (WebCore::MacFrame::urlSelected): Removed unused parameters.
        (WebCore::MacFrame::wheelEvent): Changed to use WheelEvent.
        (WebCore::MacFrame::keyEvent): Changed to use KeyEvent.
        (WebCore::MacFrame::khtmlMousePressEvent): Changed parameter type.
        (WebCore::MacFrame::khtmlMouseMoveEvent): Ditto.
        (WebCore::MacFrame::khtmlMouseReleaseEvent): Ditto.
        (WebCore::MacFrame::passSubframeEventToSubframe): Ditto.
        (WebCore::MacFrame::mouseDown): Changed to use MouseEvent.
        (WebCore::MacFrame::mouseDragged): Ditto.
        (WebCore::MacFrame::mouseUp): Ditto.
        (WebCore::MacFrame::mouseMoved): Ditto.
        (WebCore::MacFrame::sendContextMenuEvent): Ditto.

        * css/csshelper.h: Removed a bunch of unused declarations.

        * dom/DocumentImpl.h:
        * dom/DocumentImpl.cpp:
        (WebCore::DocumentImpl::prepareMouseEvent): Changed to take a MouseEvent
        and return a MouseEventWithHitTestResults.
        (WebCore::DocumentImpl::defaultEventHandler): Changed to use KeyEvent.

        * dom/NodeImpl.h: Removed NodeImpl::MouseEvent and NodeImpl::MouseEventType.
        * dom/NodeImpl.cpp:
        (WebCore::NodeImpl::dispatchMouseEvent): Changed to always get the type and
        detail values from the caller, never from the event. Changed to use MouseEvent.
        (WebCore::NodeImpl::dispatchKeyEvent): Changed to use KeyEvent.
        (WebCore::NodeImpl::dispatchWheelEvent): Changed to use WheelEvent.

        * dom/dom2_eventsimpl.h:
        * dom/dom2_eventsimpl.cpp:
        (WebCore::KeyboardEventImpl::KeyboardEventImpl): Changed to use KeyEvent.
        (WebCore::KeyboardEventImpl::charCode): Ditto.

        * dom/dom_elementimpl.h: Removed unused mouseEventHandler function.

        * khtml/ecma/domparser.h: Use RefPtr instead of QGuardedPtr to hold the reference
        to the document.

        * khtml/ecma/kjs_proxy.h: (WebCore::KJSProxyImpl::haveInterpreter): Added. For
        use in the Frame destructor so we can get an existing KJS::Window object without
        creating a new interpreter and window object.

        * khtml/ecma/kjs_window.h: Merged WindowQObject into Window. Changed all the
        guarded pointers to Frame to use plain old pointers that are cleared by the
        Frame explicitly (by the function disconnectFrame). Made the pointers to all
        the sub-objects of KJS::Window be mutable so we don't have to const_cast in
        the functions to get (and lazily create) them.
        * khtml/ecma/kjs_window.cpp:
        (KJS::DOMWindowTimer::DOMWindowTimer): Use Window* instead of WindowQObject*.
        (KJS::History::disconnectFrame): Added. Clears m_frame.
        (KJS::FrameArray::disconnectFrame): Added. Clears m_frame.
        (KJS::Window::Window): Removed code to create a WindowQObject.
        (KJS::Window::~Window): Removed code to delete a WindowQObject.
        (KJS::Window::location): Remove now-unneeded const_cast.
        (KJS::Window::selection): Ditto.
        (KJS::Window::locationbar): Ditto.
        (KJS::Window::menubar): Ditto.
        (KJS::Window::personalbar): Ditto.
        (KJS::Window::statusbar): Ditto.
        (KJS::Window::toolbar): Ditto.
        (KJS::Window::scrollbars): Ditto.
        (KJS::Window::getValueProperty): Update since m_frame is now a raw pointer.
        (KJS::Window::getOwnPropertySlot): Ditto.
        (KJS::Window::toBoolean): Ditto.
        (KJS::Window::scheduleClose): Remove assert that WindowQObject* is not null.
        (KJS::Window::isSafeScript): Update since m_frame is now a raw pointer.
        (KJS::Window::clear): Remove code to delete a WindowQObject. Added a call
        to clearAllTimeouts instead.
        (KJS::Window::clearAllTimeouts): Added. Does equivalent of the WindowQObject
        destructor.
        (KJS::Window::installTimeout): Moved to Window from WindowQObject.
        (KJS::Window::pauseTimeouts): Ditto.
        (KJS::Window::resumeTimeouts): Ditto.
        (KJS::Window::clearTimeout): Ditto.
        (KJS::Window::timerFired): Ditto.
        (KJS::Window::disconnectFrame): Added. Sets all the frame pointers to 0.
        (KJS::FrameArray::getOwnPropertySlot): Update since m_frame is now a raw pointer.
        (KJS::Location::getOwnPropertySlot): Ditto.
        (KJS::Location::put): Ditto.
        (KJS::Selection::getOwnPropertySlot): Ditto.
        (KJS::BarInfo::getOwnPropertySlot): Ditto.

        * khtml/html/html_baseimpl.h: Forward-declare Length instead of including khtmllayout.h.
        * khtml/html/html_imageimpl.h: Ditto.

        * khtml/html/html_inlineimpl.cpp: (WebCore::HTMLAnchorElementImpl::defaultEventHandler):
        Changed to use KeyEvent and removed the code to extract the button and state from the
        DOM even to pass to urlSelected.
        * ksvg2/svg/SVGAElementImpl.cpp: (SVGAElementImpl::defaultEventHandler): Ditto.

        * khtml/html/htmltokenizer.cpp: (WebCore::HTMLTokenizer::timerFired): Change to use
        a RefPtr instead of a QGuardedPtr.

        * khtml/misc/helper.h:
        * khtml/misc/helper.cpp: Removed printpainter and setPrintPainter.

        * ksvg2/svg/SVGDocumentImpl.h:
        * ksvg2/svg/SVGDocumentImpl.cpp: (WebCore::SVGDocumentImpl::dispatchKeyEvent):
        Change to use KeyEvent.

        * kwq/KWQComboBox.mm:
        (-[KWQPopUpButton becomeFirstResponder]):
        (-[KWQPopUpButton resignFirstResponder]):
        * kwq/KWQFileButton.mm:
        (KWQFileButton::focusChanged):
        * kwq/KWQListBox.mm:
        (-[KWQTableView becomeFirstResponder]):
        (-[KWQTableView resignFirstResponder]):
        * kwq/KWQSlider.mm:
        (-[KWQSlider becomeFirstResponder]):
        (-[KWQSlider resignFirstResponder]):
        * kwq/KWQTextArea.mm:
        (-[KWQTextAreaTextView becomeFirstResponder]):
        (-[KWQTextAreaTextView resignFirstResponder]):
        * kwq/KWQTextField.mm:
        (-[KWQTextFieldController setHasFocus:]):
        Updated to use new eventFilterFocusIn/Out instead of the general purpose
        eventFilter function. This allows us to remove QEvent and the focus events.

        * kwq/KWQNamespace.h: Removed ButtonState.

        * kwq/KWQObject.h:
        * kwq/KWQObject.cpp: Replaced eventFilter function with eventFilterFocusIn and
        eventFilterFocusOut, allowing us to remove QEvent. Removed event function.

        * kwq/KWQSlot.cpp:
        (KWQSlot::KWQSlot): Removed the parentDestroyed slot.
        (KWQSlot::call): Ditto.

        * page/Frame.h:
        * page/Frame.cpp:
        (WebCore::UserStyleSheetLoader::UserStyleSheetLoader): Renamed from
        PartStyleSheetLoader. Removed a lot of unneeded null checks. Use a
        raw Frame pointer instead of a QGuardedPtr, and count on the Frame
        to delete us when it's being deleted.
        (WebCore::UserStyleSheetLoader::~UserStyleSheetLoader): No longer
        a virtual function. This is not a polymorphic class.
        (WebCore::UserStyleSheetLoader::setStyleSheet): Remove code to delete
        ourselves -- that's now the frame's responsibility.
        (WebCore::Frame::~Frame): Call disconnectFrame on the KJS::Window and
        delete m_userStyleSheetLoader.
        (WebCore::Frame::changeLocation): Update since urlSelected no longer takes
        button and state parameters.
        (WebCore::Frame::setUserStyleSheet): Delete existing loader to stop a load
        in progress before starting a new load. Store reference to loader.
        (WebCore::Frame::urlSelected): Remove button and state parameters and unused
        local variable hasTarget.
        (WebCore::Frame::selectClosestWordFromMouseEvent): Change from QMouseEvent
        to MouseEvent.
        (WebCore::Frame::handleMousePressEventDoubleClick): Change from MousePressEvent
        to MouseEventWithHitTestResults.
        (WebCore::Frame::handleMousePressEventTripleClick): Ditto.
        (WebCore::Frame::handleMousePressEventSingleClick): Ditto.
        (WebCore::Frame::khtmlMousePressEvent): Ditto.
        (WebCore::Frame::handleMouseMoveEventSelection): Change from MouseMoveEvent
        to MouseEventWithHitTestResults.
        (WebCore::Frame::khtmlMouseMoveEvent): Ditto.
        (WebCore::Frame::khtmlMouseReleaseEvent): Change from MouseReleaseEvent
        to MouseEventWithHitTestResults.
        (WebCore::Frame::khtmlMouseDoubleClickEvent): Change from
        MouseReleaseDoubleClickEvent to MouseEventWithHitTestResults.
        (WebCore::Frame::passWidgetMouseDownEventToWidget): Change from
        NodeImpl::MouseEvent to MouseEventWithHitTestResults.

        * page/FramePrivate.h: Added m_userStyleSheetLoader.

        * page/FrameView.h:
        * page/FrameView.cpp:
        (WebCore::FrameView::viewportMousePressEvent): Change from QMouseEvent to
        MouseEvent and from NodeImpl::MouseEvent to MouseEventWithHitTestResults.
        (WebCore::FrameView::viewportMouseDoubleClickEvent): Ditto.
        (WebCore::selectCursor): Ditto.
        (WebCore::FrameView::viewportMouseMoveEvent): Ditto.
        (WebCore::FrameView::viewportMouseReleaseEvent): Ditto.
        (WebCore::FrameView::keyPressEvent): Change from QKeyEvent to KeyEvent.
        (WebCore::FrameView::dispatchMouseEvent): Change from QMouseEvent to
        MouseEvent and from NodeImpl::MouseEvent to MouseEventWithHitTestResults.
        (WebCore::FrameView::viewportWheelEvent): Change from QWheelEvent to
        WheelEvent.
        (WebCore::FrameView::hoverTimerFired): Update for change to prepareMouseEvent
        parameters.

        * platform/Widget.h:
        * platform/Widget.cpp: Removed event function.

        * rendering/render_form.h: Removed LineEditWidget, ComboBoxWidget, TextAreaWidget.
        * rendering/render_form.cpp:
        (WebCore::RenderFormElement::slotClicked): Changed from QMouseEvent to MouseEvent.
        (WebCore::RenderFormElement::addIntrinsicMarginsIfAllowed): Updated for changes
        to the Length class.
        (WebCore::RenderSelect::setWidgetWritingDirection): Updated for removal of
        ComboBoxWidget.
        (WebCore::RenderSelect::slotSelected): Ditto.
        (WebCore::RenderSelect::createComboBox): Ditto.

        * rendering/render_replaced.h:
        * rendering/render_replaced.cpp:
        (WebCore::RenderWidget::destroy): Updated since removeEventFilter no longer takes
        a parameter.
        (WebCore::RenderWidget::setQWidget): Ditto.
        (WebCore::RenderWidget::eventFilterFocusIn): Added. Replaces eventFilter.
        (WebCore::RenderWidget::eventFilterFocusOut): Ditto.

        * css/css_computedstyle.cpp:
        (WebCore::valueForLength):
        (WebCore::CSSComputedStyleDeclarationImpl::getPropertyCSSValue):
        * css/cssstyleselector.cpp:
        (WebCore::checkPseudoState):
        (WebCore::CSSStyleSelector::applyProperty):
        (WebCore::CSSStyleSelector::getComputedSizeFromSpecifiedSize):
        * khtml/html/html_imageimpl.cpp:
        (WebCore::HTMLAreaElementImpl::getRegion):
        * rendering/RenderBlock.cpp:
        (WebCore::RenderBlock::MarginInfo::MarginInfo):
        (WebCore::RenderBlock::isSelfCollapsingBlock):
        (WebCore::RenderBlock::layoutBlock):
        (WebCore::RenderBlock::determineHorizontalPosition):
        (WebCore::RenderBlock::leftRelOffset):
        (WebCore::RenderBlock::rightRelOffset):
        (WebCore::RenderBlock::calcMinMaxWidth):
        (WebCore::getBPMWidth):
        (WebCore::RenderBlock::calcInlineMinMaxWidth):
        (WebCore::RenderBlock::calcBlockMinMaxWidth):
        * rendering/RenderTable.cpp:
        (WebCore::RenderTable::calcWidth):
        (WebCore::RenderTable::layout):
        * rendering/RenderTableCell.cpp:
        (WebCore::RenderTableCell::calcMinMaxWidth):
        * rendering/RenderTableSection.cpp:
        (WebCore::RenderTableSection::addChild):
        (WebCore::RenderTableSection::addCell):
        (WebCore::RenderTableSection::calcRowHeight):
        (WebCore::RenderTableSection::layoutRows):
        * rendering/RenderText.h:
        (khtml::RenderText::marginLeft):
        (khtml::RenderText::marginRight):
        * rendering/bidi.cpp:
        (khtml::getBPMWidth):
        * rendering/render_applet.cpp:
        (WebCore::RenderApplet::createWidgetIfNecessary):
        * rendering/render_box.cpp:
        (WebCore::RenderBox::paintBackgroundExtended):
        (WebCore::RenderBox::getClipRect):
        (WebCore::RenderBox::relativePositionOffset):
        (WebCore::RenderBox::calcWidth):
        (WebCore::RenderBox::calcWidthUsing):
        (WebCore::RenderBox::sizesToIntrinsicWidth):
        (WebCore::RenderBox::calcHorizontalMargins):
        (WebCore::RenderBox::calcHeight):
        (WebCore::RenderBox::calcHeightUsing):
        (WebCore::RenderBox::calcPercentageHeight):
        (WebCore::RenderBox::calcReplacedWidth):
        (WebCore::RenderBox::calcReplacedWidthUsing):
        (WebCore::RenderBox::calcReplacedHeight):
        (WebCore::RenderBox::calcReplacedHeightUsing):
        (WebCore::RenderBox::availableHeightUsing):
        (WebCore::RenderBox::calcVerticalMargins):
        (WebCore::RenderBox::calcAbsoluteHorizontal):
        (WebCore::RenderBox::calcAbsoluteHorizontalValues):
        (WebCore::RenderBox::calcAbsoluteVertical):
        (WebCore::RenderBox::calcAbsoluteVerticalValues):
        * rendering/render_br.cpp:
        (WebCore::RenderBR::lineHeight):
        * rendering/render_flexbox.cpp:
        (khtml::RenderFlexibleBox::calcHorizontalMinMaxWidth):
        (khtml::RenderFlexibleBox::calcVerticalMinMaxWidth):
        (khtml::RenderFlexibleBox::calcMinMaxWidth):
        (khtml::RenderFlexibleBox::allowedChildFlex):
        * rendering/render_flow.cpp:
        (WebCore::RenderFlow::lineHeight):
        * rendering/render_frames.cpp:
        (WebCore::RenderFrameSet::layout):
        * rendering/render_image.cpp:
        (WebCore::RenderImage::isWidthSpecified):
        (WebCore::RenderImage::isHeightSpecified):
        * rendering/render_layer.cpp:
        (WebCore::Marquee::direction):
        (WebCore::Marquee::start):
        (WebCore::Marquee::updateMarqueeStyle):
        (WebCore::Marquee::timerFired):
        * rendering/render_line.cpp:
        (WebCore::InlineFlowBox::marginLeft):
        (WebCore::InlineFlowBox::marginRight):
        * rendering/render_object.cpp:
        (WebCore::RenderObject::mustRepaintBackgroundOrBorder):
        (WebCore::RenderObject::paintBorderImage):
        (WebCore::RenderObject::paddingTop):
        (WebCore::RenderObject::paddingBottom):
        (WebCore::RenderObject::paddingLeft):
        (WebCore::RenderObject::paddingRight):
        (WebCore::RenderObject::getVerticalPosition):
        (WebCore::RenderObject::lineHeight):
        (WebCore::RenderObject::addDashboardRegions):
        * rendering/render_style.h:
        * rendering/render_theme_mac.mm:
        (WebCore::RenderThemeMac::addIntrinsicMargins):
        * rendering/table_layout.cpp:
        (WebCore::FixedTableLayout::calcWidthArray):
        (WebCore::FixedTableLayout::calcMinMaxWidth):
        (WebCore::FixedTableLayout::layout):
        (WebCore::AutoTableLayout::recalcColumn):
        (WebCore::AutoTableLayout::fullRecalc):
        (WebCore::AutoTableLayout::calcMinMaxWidth):
        (WebCore::AutoTableLayout::calcEffectiveWidth):
        (WebCore::AutoTableLayout::layout):
        (WebCore::AutoTableLayout::calcPercentages):
        Updated for changes to the Length class.
        Also removed a check of the printpainter global, never used in WebCore.

        * bindings/objc/DOM.mm:
        * bindings/objc/DOMCSS.mm:
        * bindings/objc/DOMHTML.mm:
        * bridge/mac/WebCoreFrameBridge.mm:
        * css/csshelper.cpp:
        * editing/SelectionController.cpp:
        * khtml/ecma/kjs_html.h:
        * kwq/KWQAccObject.mm:
        * kwq/KWQAccObjectCache.mm:
        * kwq/KWQClipboard.mm:
        * kwq/KWQFont.mm:
        * kwq/KWQFontMetrics.mm:
        * kwq/KWQKJobClasses.mm:
        * kwq/KWQKURL.mm:
        * kwq/KWQLoader.mm:
        * kwq/KWQPageState.mm:
        * kwq/KWQPainter.mm:
        * kwq/WebCoreSettings.mm:
        * platform/StringImpl.cpp:
        * platform/mac/CursorMac.mm:
        * platform/mac/WidgetMac.mm:
        * rendering/RenderBlock.h:
        * rendering/render_canvas.cpp:
        * rendering/render_line.h:
        * rendering/render_style.cpp:
        * rendering/table_layout.h:
        Updated includes.

        * bindings/js/JSDOMCore.cpp: Touched, because I got strange failures if this
        didn't rebuild.
        * bindings/js/JSDOMEvents.cpp: Ditto.

2006-02-23  Eric Seidel  <eseidel@apple.com>

        Reviewed by darin.

        Fix linking of static constructed globals on win32.

        * WebCore.vcproj/WebCore/WebCore.vcproj:
        * config.h:
        * dom/EventNames.cpp:
        (WebCore::EventNames::init):
        * dom/EventNames.h:
        * dom/dom_qname.cpp:
        (WebCore::QualifiedName::init):
        * dom/dom_qname.h:
        * khtml/html/htmlnames.cpp:
        (WebCore::HTMLNames::init):
        * khtml/html/htmlnames.h:
        * platform/AtomicString.cpp:
        (WebCore::AtomicString::init):
        * platform/StaticConstructors.h: Added.

2006-02-23  Vicki Murley <vicki@apple.com>

        Reviewed by Tim Omernick.
 
        - fix <rdar://problem/4394910> calling Javascript window.close() does not trigger onbeforeunload event

        Check shouldClose() before actually scheduling a close.

        shouldClose() checks for the onbeforeunload handler, displays the onbeforeunload dialog, and returns a 
        result based on whether the user clicks "OK" or "Cancel".  In cases where the window is closed with cmd-w 
        or by clicking the red globe, shouldClose() is checked in the windowShouldClose delegate method.  Since 
        windowShouldClose isn't invoked when a window is closed with Javascript, it makes sense to add a check 
        for shouldClose() in scheduleClose(), returning early when appropriate before the chain of events that 
        closes a window even gets started.  

        * bridge/mac/MacFrame.mm:
        (WebCore::MacFrame::scheduleClose): add a check for shouldClose()

2006-02-23  Vicki Murley <vicki@apple.com>

        Reviewed by Hyatt.
 
        - fix <rdar://problem/4456004> onbeforeunload should cancel, and 
        <rdar://problem/4453579> REGRESSION (TOT): onbeforeunload is broken (7421)

        * bridge/mac/MacFrame.mm:
        (WebCore::MacFrame::shouldClose): Onbeforeunload is a non-bubbling window
        event, so we should be using handleWindowEvent rather than dispatching a 
        generic event on the body. It seems this only worked before because of incorrect
        code in other parts of the tree. 
        * dom/dom2_eventsimpl.cpp:
        (WebCore::BeforeUnloadEventImpl::BeforeUnloadEventImpl): for this constructor,
        pass true for the cancel parameter

2006-02-22  Eric Seidel  <eseidel@apple.com>

        Reviewed by darin.

        Adding stub FrameWin class to expose link errors.

        * WebCore.vcproj/WebCore/WebCore.vcproj:
        * bridge/win/FrameWin.cpp: Added.
        * bridge/win/FrameWin.h: Added.
        (WebCore::Win):

2006-02-22  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by Geoff.

        - move QStringList to platform, make it portable

        * ForwardingHeaders/qstringlist.h: Removed.
        * WebCore.vcproj/WebCore/WebCore.vcproj:
        * WebCore.xcodeproj/project.pbxproj:
        * dom/DocumentImpl.h:
        * kcanvas/KCanvasFilters.h:
        * khtml/xbl/xbl_protohandler.cpp:
        * ksvg2/svg/SVGColorImpl.cpp:
        * ksvg2/svg/SVGComponentTransferFunctionElementImpl.cpp:
        * ksvg2/svg/SVGDOMImplementationImpl.h:
        * ksvg2/svg/SVGFEBlendElementImpl.cpp:
        * ksvg2/svg/SVGFEColorMatrixElementImpl.cpp:
        * ksvg2/svg/SVGFEComponentTransferElementImpl.cpp:
        * ksvg2/svg/SVGFECompositeElementImpl.cpp:
        * ksvg2/svg/SVGFEDiffuseLightingElementImpl.cpp:
        * ksvg2/svg/SVGFEDisplacementMapElementImpl.cpp:
        * ksvg2/svg/SVGFEFloodElementImpl.cpp:
        * ksvg2/svg/SVGFEGaussianBlurElementImpl.cpp:
        * ksvg2/svg/SVGFELightElementImpl.cpp:
        * ksvg2/svg/SVGFEMergeElementImpl.cpp:
        * ksvg2/svg/SVGFEOffsetElementImpl.cpp:
        * ksvg2/svg/SVGFESpecularLightingElementImpl.cpp:
        * ksvg2/svg/SVGFETileElementImpl.cpp:
        * ksvg2/svg/SVGFETurbulenceElementImpl.cpp:
        * ksvg2/svg/SVGFitToViewBoxImpl.cpp:
        * ksvg2/svg/SVGLengthListImpl.cpp:
        * ksvg2/svg/SVGNumberListImpl.cpp:
        * ksvg2/svg/SVGPreserveAspectRatioImpl.cpp:
        * ksvg2/svg/SVGStringListImpl.cpp:
        * ksvg2/svg/SVGStyledTransformableElementImpl.cpp:
        * ksvg2/svg/SVGTransformableImpl.cpp:
        * kwq/KWQClipboard.mm:
        * kwq/KWQKConfigBase.mm:
        * kwq/KWQKHTMLSettings.h:
        * kwq/KWQKLocale.h:
        * kwq/KWQKSSLKeyGen.h:
        * kwq/KWQStringList.h: Removed.
        * kwq/KWQStringList.mm: Removed.
        * loader/DocLoader.h:
        * page/Frame.h:
        * platform/QStringList.cpp: Added.
        (QStringList::split):
        (QStringList::pop_front):
        * platform/QStringList.h: Added.
        * platform/mac/QStringListMac.mm: Added.
        (QStringList::getNSArray):

2006-02-21  Adele Peterson  <adele@apple.com>

        Reviewed by Hyatt.

        Tests:
        * fast/forms/input-baseline.html
        * fast/inline-block/contenteditable-baseline.html

        - Fixed http://bugs.webkit.org/show_bug.cgi?id=7330
        baselinePosition is wrong for new text field when empty

        * rendering/RenderBlock.cpp: (WebCore::RenderBlock::getBaselineOfLastLineBox):  
         If we're dealing with an empty contenteditable block, then we've added height to the block to make room for the caret, 
         and there are no children to give us the baseline.  Instead, compute the baseline for the block itself, and factor in the border and the padding.

2006-02-21  Vicki Murley <vicki@apple.com>

        Reviewed by Adele.

        - fix http://bugs.webkit.org/show_bug.cgi?id=7363
        REGRESSION (r12872): Repro crash when clicking the Quick Reply box in Gmail

        Add a nil check for the renderer, and refetch the renderer for the old focus node
        after dispatching the event. 

        * dom/DocumentImpl.cpp:
        (WebCore::DocumentImpl::setFocusNode):

2006-02-21  Maciej Stachowiak  <mjs@apple.com>

        Rubber Stamped by Hyatt.

        - renamed STATIC, FIXED, RELATIVE, ABSOLUTE to StaticPosition, FixedPosition, etc
        
        This avoids conflicting with win32 headers.

        * css/css_computedstyle.cpp:
        (WebCore::CSSComputedStyleDeclarationImpl::getPropertyCSSValue):
        * css/cssstyleselector.cpp:
        (WebCore::CSSStyleSelector::adjustRenderStyle):
        (WebCore::CSSStyleSelector::applyProperty):
        * editing/htmlediting.cpp:
        (WebCore::isSpecialElement):
        * rendering/RenderBlock.cpp:
        (WebCore::RenderBlock::updateFirstLetter):
        * rendering/render_box.cpp:
        (WebCore::RenderBox::setStyle):
        (WebCore::RenderBox::absolutePosition):
        (WebCore::RenderBox::computeAbsoluteRepaintRect):
        * rendering/render_flow.cpp:
        (WebCore::RenderFlow::getAbsoluteRepaintRect):
        * rendering/render_layer.cpp:
        (WebCore::RenderLayer::convertToLayerCoords):
        (WebCore::RenderLayer::calculateClipRects):
        (WebCore::RenderLayer::calculateRects):
        * rendering/render_object.cpp:
        (WebCore::RenderObject::markContainingBlocksForLayout):
        (WebCore::RenderObject::containingBlock):
        (WebCore::RenderObject::setStyle):
        (WebCore::RenderObject::container):
        * rendering/render_style.cpp:
        (WebCore::RenderStyle::diff):
        * rendering/render_style.h:
        (khtml::):
        (khtml::RenderStyle::initialPosition):

2006-02-21  Maciej Stachowiak  <mjs@apple.com>

        Rubber Stamped by Hyatt.

        - remove KWQSignalStubs.cpp from project.

        * WebCore.vcproj/WebCore/WebCore.vcproj:

2006-02-21  Maciej Stachowiak  <mjs@apple.com>

        Platform build fix, not reviewed.

        - undef min and max, and include <algorithm> so std::min works

        * rendering/font.h:

2006-02-20  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by Geoff and Darin.
        
        Patch from Maks Orlovich, based on work by David Faure, hand-applied and 
        significantly reworked by me.
        
        - Patch: give internal function names (KJS merge)
        http://bugs.webkit.org/show_bug.cgi?id=6279

        * khtml/ecma/kjs_binding.h:
        * khtml/ecma/kjs_html.cpp:
        (KJS::HTMLElementFunction::HTMLElementFunction):
        * kwq/WebCoreScriptDebugger.mm:
        (-[WebCoreScriptCallFrame functionName]):

2006-02-20  Darin Adler  <darin@apple.com>

        Reviewed by Eric.

        - fix http://bugs.webkit.org/show_bug.cgi?id=7331
          CSS parser leaks when parsing incorrect CSS

        * css/css_base.h:
        (WebCore::CSSSelector::append): Replaced recursive implementation
        with an iterative one.
        (WebCore::StyleBaseImpl::StyleBaseImpl): Changed to be a Shared, not
        a TreeShared; parents now ref children as needed. This change was
        vital to fix the storage leaks. Also removed unused multiLength bool.
        (WebCore::StyleBaseImpl::parent): Added. Needed now that there's no
        TreeShared base class.
        (WebCore::StyleBaseImpl::setParent): Ditto.
        (WebCore::StyleBaseImpl::insertedIntoParent): Added. Hook for
        notification when added to a parent -- used by import style rules.
        (WebCore::StyleListImpl::StyleListImpl): Changed to use a Vector instead
        of a QPtrList for children. Slower for dynamic insert and remove for the
        DOM API, faster and more efficient for everything else.
        * css/css_base.cpp:
        (WebCore::StyleListImpl::append): Now calls insertedIntoParent
        and uses Vector.
        (WebCore::StyleListImpl::insert): Added. Calls insertedIntoParent.
        (WebCore::StyleListImpl::remove): Added. 

        * css/css_grammar.y: Removed obsolete "don't inline" stuff. Changed all
        code that creates new objects to use new functions on CSSParser. For
        CSSSelector, ValueList, Function, and Value, this means using new
        functions with a "floating" concept, but for reference-counted classes
        this just means asking the CSSParser to create the object instead of
        calling new. Remove all explicit "delete", which is now handled by the
        parser instead, which works when the Bison-generated parser fails too,
        not just when it hits error rules in the grammar.

        * css/css_ruleimpl.h:
        * css/css_ruleimpl.cpp:
        (WebCore::CSSImportRuleImpl::CSSImportRuleImpl): Remove call to init()
        which kicks off style sheet loading. We now do that when we are added to
        our parent instead of construction time. Also removed unused constructor.
        (WebCore::CSSImportRuleImpl::insertedIntoParent): Replaced init() with this
        function that does much the same thing at a different time. Changed code
        that sets m_loading to do it in a simple way that doesn't need a big comment.
        (WebCore::CSSMediaRuleImpl::insertRule): Use RefPtr.

        * css/css_stylesheetimpl.cpp:
        (StyleSheetImpl::StyleSheetImpl): Pass 0 for parent explicitly since the
        empty constructor was removed in the other patch.
        (CSSStyleSheetImpl::CSSStyleSheetImpl): Remove code to set up m_lstChildren;
        that's now handled by the base class.
        (CSSStyleSheetImpl::insertRule): Use length() instead of m_listChildren->count()
        and insert instead of m_lstChildren->insert. Also use RefPtr for the result of
        parseRule.
        (CSSStyleSheetImpl::addRule): Use length() instead of m_lstChildren->count().
        (CSSStyleSheetImpl::deleteRule): Use length() instead of checking the result of
        take() for 0. Use remove() instead of m_lstChildren->take().
        (CSSStyleSheetImpl::parseString): Use setStrictParsing instead of going at the
        strictParsing data member directly.
        (CSSStyleSheetImpl::isLoading): Use length() and item() instead of
        m_lstChildren->first() and m_lstChildren->next().

        * css/css_valueimpl.h: Add an include of QPtrList now that it's not used in
        any included file. Also added a constructor for CSSValueImpl, now that StyleBaseImpl
        has no empty constructor.
        * css/css_valueimpl.cpp:
        (WebCore::CSSMutableStyleDeclarationImpl::setProperty): Use useStrictParsing()
        instead of looking at the strictParsing data member directly.
        (WebCore::CSSMutableStyleDeclarationImpl::parseDeclaration): Ditto.
        (WebCore::CSSMutableStyleDeclarationImpl::setLengthProperty): Ditto.
        (WebCore::CSSMutableStyleDeclarationImpl::setCssText): Ditto.

        * css/cssparser.h:
        (WebCore::ValueList): Changed to use a Vector and an index rather
        than using a QPtrList.
        (WebCore::CSSParser): Changed parseRule to return a PassRefPtr, removed the
        createStyleDeclaration function since that's now handled by createStyleRule,
        made clearProperties be private, and added a suite of functions to create the
        objects formerly made with "new" in the Bison grammar. Also put the Units enum
        here in the header, and added an operator so they can be or'ed together while
        staying with the enum type so we can use Units instead of int for a function arg.
        * css/cssparser.cpp:
        (WebCore::ValueList::~ValueList): Changed to use Vector.
        (WebCore::CSSParser::CSSParser): Removed initializer for rule now that it's a RefPtr.
        (WebCore::CSSParser::~CSSParser): Added code to delete all the items in the sets that
        track floating objects. Also removed an unneeded check before callling clearProperties.
        (WebCore::CSSParser::parseSheet): Removed "delete rule" since rule is now a RefPtr.
        (WebCore::CSSParser::parseRule): Changed code to use rule.release() since rule is now
        a RefPtr and this function now returns a PassRefPtr.
        (WebCore::CSSParser::parseValue): Removed "delete rule" since rule is now a RefPtr.
        (WebCore::CSSParser::parseColor): Ditto.
        (WebCore::CSSParser::parseDeclaration): Ditto.
        (WebCore::CSSParser::validUnit): Made this a static class member instead of a local
        function so it can be used by the SVG parser code. Also updated to use the new ValueList
        class that uses Vector.
        (WebCore::CSSParser::parse4Values): Updated to new ValueList.
        (WebCore::CSSParser::parseContent): Ditto.
        (WebCore::skipCommaInDashboardRegion): Ditto.
        (WebCore::CSSParser::parseDashboardRegions): Ditto.
        (WebCore::CSSParser::parseShape): Ditto.
        (WebCore::CSSParser::parseColorFromValue): Ditto.
        (WebCore::BorderImageParseContext::commitBorderImage): Ditto.
        (WebCore::CSSParser::createFloatingSelector): Added. Puts selector into floating set.
        (WebCore::CSSParser::sinkFloatingSelector): Added. Removes from floating set.
        (WebCore::CSSParser::createFloatingValueList): Added. Puts list into floating set.
        (WebCore::CSSParser::sinkFloatingValueList): Added. Removes from floating set.
        (WebCore::CSSParser::createFloatingFunction): Added. Puts function into floating set.
        (WebCore::CSSParser::sinkFloatingFunction): Added. Removes from floating set.
        (WebCore::CSSParser::sinkFloatingValue): Added. Removes function from floating set if
        value contains a function pointer.
        (WebCore::CSSParser::createMediaList): Added. Puts list in a vector of RefPtrs kept
        by the parser, so the object won't end up floating.
        (WebCore::CSSParser::createImportRule): Ditto.
        (WebCore::CSSParser::createMediaRule): Ditto.
        (WebCore::CSSParser::createRuleList): Ditto.
        (WebCore::CSSParser::createStyleRule): Ditto. The properties come from the parser's
        global state instead of from a parameter.

        * khtml/xsl/xsl_stylesheetimpl.h:
        * khtml/xsl/xsl_stylesheetimpl.cpp:
        (WebCore::XSLStyleSheetImpl::XSLStyleSheetImpl): Initialize the new m_stylesheetDocTaken
        bool to false. Also remove code to set up m_lstChildren since the base class takes care
        of that now.
        (WebCore::XSLStyleSheetImpl::~XSLStyleSheetImpl): Only call xmlFreeDoc if the document
        was not taken by libxslt. We used to leak XSLStyleSheetImpl objects, which is why we
        didn't notice this before; we'll try to double free without this change.
        (WebCore::XSLStyleSheetImpl::isLoading): Use length() and item() instead of
        m_lstChildren->first() and m_lstChildren->next().
        (WebCore::XSLStyleSheetImpl::clearDocuments): Ditto.
        (WebCore::XSLStyleSheetImpl::parseString): Only call xmlFreeDoc if the document was not
        taken by libxslt. Also set m_stylesheetDocTaken for the new document.
        (WebCore::XSLStyleSheetImpl::loadChildSheet): Use RefPtr and append instead of
        m_lstChildren->append.
        (WebCore::XSLStyleSheetImpl::compileStyleSheet): Set m_stylesheetDocTaken to true if
        xsltParseStylesheetDoc is successful, since the stylesheet then owns the document.
        (WebCore::XSLStyleSheetImpl::locateStylesheetSubResource): Use length() and item()
        instead of m_lstChildren->first() and m_lstChildren->next().
        (WebCore::XSLStyleSheetImpl::markAsProcessed): Set m_stylesheetDocTaken, since when
        this is called, the document is returned to libxslt which then attaches it to a
        stylesheet or parent document.

        * ksvg2/css/KSVGCSSParser.cpp: Changed to compile as separate
        file instead of being included in cssparser.cpp.
        (WebCore::CSSParser::parseSVGPaint): Take out unnecessary check
        of number of args. Everything works fine without that check, and
        otherwise I'd have to change it for the change in data structure.
        (WebCore::CSSParser::parseSVGColor): Ditto.
        * WebCore.xcodeproj/project.pbxproj: Added KSVGCSSParser.cpp.

        - fixed another leak found by run-webkit-leaks --leaks

        * kwq/KWQLoader.mm: (KWQServeRequest): Delete the job if we can't do the I/O, because
        the caller is passing ownership to us.

        - updated other code to use new Vector insert and remove

        * khtml/html/HTMLFormElementImpl.cpp:
        (WebCore::removeFromVector): Changed to use Vector's remove.
        (WebCore::HTMLFormElementImpl::registerFormElement): Changed to use Vector's insert.

2006-02-20  Darin Adler  <darin@apple.com>

        Collaborated with Graham Dennis <Graham.Dennis@gmail.com> on this.

        - fix http://bugs.webkit.org/show_bug.cgi?id=6831
          contentEditable outline darkens as caret moves

        Test: editing/selection/move-by-character-6.html

        The trick was to draw the focus ring clipped to a list of rectangles instead
        of clipped to exactly one.

        * kwq/KWQPainter.h: Move Color parameter from initFocusRing to drawFocusRing.
        * kwq/KWQPainter.mm:
        (WebCore::QPainterPrivate::QPainterPrivate): Change focusRingPath from
        an NSBezierPath to a CGMutablePathRef.
        (WebCore::QPainterPrivate::~QPainterPrivate): Ditto.
        (WebCore::QPainter::initFocusRing): Removed color parameter, and made a
        CGPath instead of an NSBezierPath.
        (WebCore::QPainter::addFocusRingRect): CGPath instead of NSBezierPath.
        (WebCore::QPainter::drawFocusRing): Added color parameter, and changed to
        use new bridge method to draw the focus ring.
        (WebCore::QPainter::clearFocusRing): CGPath instead of NSBezierPath.

        * kwq/WebCoreGraphicsBridge.h:
        * kwq/WebCoreGraphicsBridge.m:
        (-[WebCoreGraphicsBridge drawFocusRingWithPath:radius:color:]):
        Replaced setFocusRingStyle: method with this one.

        * rendering/render_flow.cpp: (WebCore::RenderFlow::paintFocusRing):
        * rendering/render_object.cpp: (WebCore::RenderObject::paintOutline):
        Pass color to drawFocusRing instead of initFocusRing.

        - fixed message on exit from the other patch I just landed

        * platform/mac/CursorMac.mm:
        (WebCore::leakNamedCursor): Renamed and made this leak intentionally.

2006-02-20  Darin Adler  <darin@apple.com>

        Reviewed by Hyatt.

        - moved Cursor into the platform directory from KWQ
        - removed a lot of other unneeded stuff from KWQ

        * platform/Cursor.h: Added.
        * platform/mac/CursorMac.mm: Added.
        * platform/mac/CursorWin.cpp: Added.

        * kwq/KWQBuffer.cpp: Removed.
        * kwq/KWQBuffer.h: Removed.
        * kwq/KWQCursor.h: Removed.
        * kwq/KWQCursor.mm: Removed.
        * kwq/KWQIODevice.h: Removed.
        * kwq/KWQKCursor.h: Removed.
        * kwq/KWQKCursor.mm: Removed.
        * kwq/KWQKDebug.h: Removed.
        * kwq/KWQSignalStubs.cpp: Removed.

        * ForwardingHeaders/kcursor.h: Removed.
        * ForwardingHeaders/kdebug.h: Removed.
        * ForwardingHeaders/qbuffer.h: Removed.

        * kwq/KWQEvent.h: Removed unused constants and types QCustomEvent,
        QFocusEvent, QHideEvent, QShowEvent, QContextMenuEvent, and QResizeEvent.

        * kwq/KWQLoader.h: Removed KWQLoader class since signals are no longer needed.
        * kwq/KWQLoader.mm: Ditto.

        * kwq/KWQNamespace.h: Removed DontClip, ShowPrefix, WordBreak, LayoutDirection,
        LeftToRight, RightToLeft, RasterOp, CopyROP, OrROP, and XorROP.

        * kwq/KWQObject.h: Removed blockSignals, sender, _signalsBlocked, _sender,
        and KWQObjectSenderScope.
        * kwq/KWQObject.cpp:
        (QObject::QObject): Removed _signalsBlocked.
        (QObject::connect): Removed special-case signals to not complain about.
        All of them were either unused, converted to non-signal functions, or in one
        case (slotScrollBarMoved) turned into a FIXME.

        * kwq/KWQPainter.h: Removed rasterOp and setRasterOp.
        * kwq/KWQPainter.mm: Ditto.

        * kwq/KWQSignal.h:
        * kwq/KWQSignal.cpp: (KWQSignal::disconnect): Removed special cases for
        various signals; all are now using plain function calls instead.

        * kwq/KWQSlot.h:
        * kwq/KWQSlot.cpp: Removed slots that are no longer needed because they
        are using plain function calls instead of signals.

        * WebCore.vcproj/WebCore/WebCore.vcproj:
        * WebCore.xcodeproj/project.pbxproj:
        Updated for changed files.

        * bridge/mac/FrameViewMac.mm: Moved the contents of KWQKHTMLView.cpp in here.
        * bridge/mac/KWQKHTMLView.cpp: Removed.

        * bridge/mac/MacFrame.h: Removed signals, changed setStatusBarText to take
        String instead of QString.
        * bridge/mac/MacFrame.mm:
        (WebCore::MacFrame::MacFrame): Removed signals.
        (WebCore::MacFrame::setStatusBarText): Changed parameter type.
        (WebCore::MacFrame::openURLFromPageCache): Removed parameter from started function.
        (WebCore::MacFrame::khtmlMouseMoveEvent): Changed from QCursor() to pointerCursor().

        * dom/DocumentImpl.h:
        * dom/DocumentImpl.cpp:
        (WebCore::DocumentImpl::DocumentImpl): Removed signals.
        (WebCore::DocumentImpl::implicitOpen): Ditto.
        (WebCore::DocumentImpl::determineParseMode): Removed a use of kdDebug.
        (WebCore::DocumentImpl::finishedParsing): Added. Does a setParsing(false) and then
        calls finishedParsing on the frame. Replaces the old finishedParsing signal.

        * dom/xml_tokenizer.h:
        * dom/xml_tokenizer.cpp: Removed the finishedParsing signal since it's not just
        a function on the document.
        (WebCore::XMLTokenizer::finish): Call the function instead of emitting the signal.

        * khtml/html/htmlparser.h:
        * khtml/html/htmlparser.cpp: Moved the parser inside the WebCore namespace.

        * khtml/html/htmltokenizer.h:
        * khtml/html/htmltokenizer.cpp: (WebCore::HTMLTokenizer::end): Updated
        to call finishedParsing function on document rather than emitting a signal.

        * kwq/KWQComboBox.mm:
        (-[KWQPopUpButton becomeFirstResponder]): Use QEvent instead of QFocusEvent.
        (-[KWQPopUpButton resignFirstResponder]): Ditto.
        * kwq/KWQFileButton.mm: (KWQFileButton::focusChanged): Ditto.
        * kwq/KWQListBox.mm:
        (-[KWQTableView becomeFirstResponder]): Ditto.
        (-[KWQTableView resignFirstResponder]): Ditto.
        * kwq/KWQSlider.mm:
        (-[KWQSlider becomeFirstResponder]): Ditto.
        (-[KWQSlider resignFirstResponder]): Ditto.
        * kwq/KWQTextArea.mm:
        (-[KWQTextAreaTextView becomeFirstResponder]): Ditto.
        (-[KWQTextAreaTextView resignFirstResponder]): Ditto.
        * kwq/KWQTextField.mm:
        (-[KWQTextFieldController setHasFocus:]): Ditto.

        * kwq/KWQTextStream.h: Removed the mode parameter from the QTextStream constructor.
        Removed the QTextIStream and QTextOStream classes.
        * kwq/KWQTextStream.cpp: (QTextStream::QTextStream): Removed the mode parameter.

        * loader/CachedCSSStyleSheet.h: Changed to take a ByteArray instead of a QBuffer.
        * loader/CachedCSSStyleSheet.cpp: (WebCore::CachedCSSStyleSheet::data): Ditto.
        * loader/CachedImage.h: Ditto.
        * loader/CachedImage.cpp: (WebCore::CachedImage::data): Ditto.
        * loader/CachedObject.h: Ditto.
        * loader/CachedScript.h: Ditto.
        * loader/CachedScript.cpp: (WebCore::CachedScript::data): Ditto.
        * loader/CachedXBLDocument.h: Ditto.
        * loader/CachedXBLDocument.cpp: (WebCore::CachedXBLDocument::data): Ditto.
        * loader/CachedXSLStyleSheet.h:
        * loader/CachedXSLStyleSheet.cpp: (WebCore::CachedXSLStyleSheet::data): Ditto.

        * loader/DocLoader.cpp: (WebCore::DocLoader::setLoadInProgress): Added a call
        to loadDone on the frame. Replaces the requestFailed and requestDone signals.

        * loader/DocLoader.h: Removed include of <qbuffer.h>.

        * loader/Request.h:
        * loader/Request.cpp: Updated to use ByteArray instead of QBuffer.

        * loader/loader.h: Removed unused signals.
        * loader/loader.cpp:
        (WebCore::Loader::Loader): Removed use of KWQLoader.
        (WebCore::Loader::~Loader): Ditto.
        (WebCore::Loader::load): Removed code to emit unused requestStarted signal.
        (WebCore::Loader::slotFinished): Removed code to emit requestFailed and
        requestDone signals, now handled by DocLoader::setLoadInProgress(false).
        (WebCore::Loader::slotReceivedResponse): Use ByteArray instead of QBuffer.
        (WebCore::Loader::slotData): Ditto.

        * page/Frame.h: Removed setURLCursor, urlCursor, slotRestoreData, slotIncZoom,
        slotDecZoom, slotLoadImages, slotPartRemoved, slotActiveFrameChanged,
        slotChildURLRequest, slotShowDocument, slotAutoScroll, slotPrintFrame, slotSelectAll,
        slotProgressUpdate, slotJobPercent, slotJobSpeed.connectChild, disconnectChild,
        and changed a number of others from slots to plain old functions.
        * page/Frame.cpp:
        (WebCore::Frame::Frame): Don't connect to loader signals.
        (WebCore::Frame::~Frame): Don't disconnect from loader signals.
        (WebCore::Frame::didOpenURL): Call started function instead of emitting
        started signal. Don't connect to speed and percent signals (which never
        existed in WebCore anyway).
        (WebCore::Frame::stopLoading): Call finishedParsing function instead of
        calling slotFinishedParsing.
        (WebCore::Frame::executeScript): Removed redundant checks and let
        submitFormAgain do the checking.
        (WebCore::Frame::clear): Removed code to disconnect from finishedParsing
        signal; we now use a function. Also removed loop that calls disconnectChild,
        becase again we use functions now instead of signals.
        (WebCore::Frame::setDocument): Remove code to disconnect and connect to the
        finishedParsing signal.
        (WebCore::Frame::begin): Remove code to connect to the finishedParsing signal.
        (WebCore::Frame::finishedParsing): Moved code that does setParsing(false) into
        the document class. Also renamed from slotFinishedParsing.
        (WebCore::Frame::loadDone): Renamed from slotLoaderRequestDone.
        (WebCore::Frame::checkCompleted): Changed to call the completed function instead
        of emitting one of the two completed signals.
        (WebCore::Frame::loadSubframe): Removed call to connectChild because we now use
        functions instead of signals. Also change the call to completed to pass false
        instead of true.
        (WebCore::Frame::submitFormAgain): Change function around so we are less likely
        to leak if something strange happens inside submitForm.
        (WebCore::Frame::submitForm): Remove code to connect signal. We now call
        submitFormAgain from inside the completed function.
        (WebCore::Frame::parentCompleted): Renamed from slotParentCompleted. No longer
        a slot, now called from completed.
        (WebCore::Frame::childCompleted): Renamed from slotChildCompleted.
        (WebCore::Frame::setJSStatusBarText): Removed "emit" from function call. Changed
        to use String instead of QString.
        (WebCore::Frame::setJSDefaultStatusBarText): Ditto.
        (WebCore::Frame::sendResizeEvent): Changed to send DOM event directly instead of
        creating a QResizeEvent to send along to the FrameView.
        (WebCore::Frame::scrollToAnchor): Changed to not pass a parameter to the started
        function, which no longer takes one.
        (WebCore::Frame::frameDetached): Removed code that calls disconnectChild, since
        we no longer use signals.
        (WebCore::Frame::completed): Added. Calls childCompleted, parentCompleted, and
        submitFormAgain.
        (WebCore::Frame::setStatusBarText): Added.
        (WebCore::Frame::started): Added. Sets the complete flag to false for the frame
        and all its ancestors, which is what slotChildStarted did recursively.

        * page/FramePrivate.h: Removed m_activeFrame and changed m_kjsStatusBarText and
        m_kjsDefaultStatusBarText to String from QString.

        * page/FrameView.h: Removed resizeEvent, focusInEvent, focusOutEvent, and
        slotPaletteChanged. Changed cleared from a signal to a private function and
        slotScrollBarMoved to a private function named scrollBarMoved.
        * page/FrameView.cpp:
        (WebCore::FrameView::FrameView): Removed connect call here that was connecting
        a signal that's nonexistent in WebCore; we'll want to rig it up later.
        (WebCore::FrameView::~FrameView): Added a call to setQWidget(0) here to replace
        something that was done with a signal before.
        (WebCore::FrameView::clear): Call cleared as a function rather than a signal.
        (WebCore::selectCursor): Changed to use Cursor instead of QCursor.
        (WebCore::FrameView::scrollBarMoved): Renamed this function, which is never called.
        Added a FIXME about calling it.
        (WebCore::FrameView::cleared): Added. Calls viewCleared on the owner part, which
        used to be done with a signal.

        * platform/Widget.h: Changed to Cursor from QCursor.
        * platform/mac/WidgetMac.mm: (WebCore::Widget::setCursor): Ditto.

        * rendering/render_frames.h:
        * rendering/render_frames.cpp:
        (WebCore::RenderFrameSet::userResize): Removed cursor-setting code here. We might
        want to use resize cursors for frames again, but it was mostly disabled anyway and
        it's not clear which cursors to use.
        (WebCore::RenderPart::setWidget): Removed code to connect to the cleared signal.
        Instead, FrameView takes care of it directly.
        (WebCore::RenderPart::viewCleared): Renamed from slotViewCleared.
        (WebCore::RenderFrame::viewCleared): Ditto.
        (WebCore::RenderPartObject::viewCleared): Ditto.

        * rendering/render_image.cpp:
        (WebCore::RenderImage::imageChanged): Removed use of WordBreak, which doesn't exist
        in WebCore text rendering.
        (WebCore::RenderImage::paint): Ditto.

        * rendering/render_list.cpp: (RenderListMarker::paint): Removed use of DontClip, which
        doesn't exist in WebCore text rendering. Also removed incorrect use of references to
        temporaries for the ". " and " ." strings.

        * rendering/render_object.cpp:
        (WebCore::RenderObject::drawBorder): Removed call to setRasterOp since it is a no-op
        in WebCore's painter. Added a FIXME.
        (WebCore::RenderObject::information): Remove mode parameter to QTextStream.

        * rendering/render_replaced.h: Removed slotWidgetDestructed, made setQWidget public,
        * rendering/render_replaced.cpp:
        (WebCore::RenderWidget::setQWidget): Removed code to connect slotWidgetDestructed to
        the destroyed signal. Instead FrameView calls setQWidget(0) on us.
        (WebCore::RenderWidget::eventFilter): Removed use of QFocusEvent::reason, which is
        never "popup" in WebCore.

        * WebCore+SVG/kdom.h:
        * css/css_stylesheetimpl.cpp:
        * css/css_valueimpl.cpp:
        * css/cssparser.cpp:
        * kcanvas/KCanvasCreator.cpp:
        * kcanvas/KCanvasResources.cpp:
        * kcanvas/RenderPath.cpp:
        * khtml/ecma/xmlserializer.cpp:
        * khtml/html/html_baseimpl.cpp:
        * khtml/xsl/xsl_stylesheetimpl.cpp:
        * ksvg2/svg/SVGPathSegLinetoImpl.cpp:
        * ksvg2/svg/SVGStyledTransformableElementImpl.cpp:
        * ksvg2/svg/SVGTransformImpl.cpp:
        * platform/StringImpl.cpp:
        * rendering/RenderBlock.cpp:
        * rendering/render_box.cpp:
        * rendering/render_canvas.cpp:
        * rendering/render_flow.cpp:
        * rendering/render_form.cpp:
        * rendering/render_layer.cpp:
        * rendering/render_style.cpp:
        Removed includes of <kdebug.h>.

        * css/css_base.cpp: (CSSSelector::selectorText):
        * khtml/ecma/kjs_binding.cpp:
        (KJS::ScriptInterpreter::wasRunByUserGesture):
        * khtml/ecma/kjs_css.cpp:
        (KJS::DOMCSSRule::putValueProperty):
        * khtml/ecma/kjs_dom.cpp:
        (KJS::DOMNode::getValueProperty):
        (KJS::DOMNode::putValueProperty):
        (KJS::DOMDocument::getValueProperty):
        * khtml/ecma/kjs_events.cpp:
        (KJS::DOMEvent::getValueProperty):
        (KJS::DOMUIEvent::getValueProperty):
        (KJS::DOMMouseEvent::getValueProperty):
        (KJS::DOMKeyboardEvent::getValueProperty):
        (KJS::Clipboard::getValueProperty):
        (KJS::Clipboard::putValueProperty):
        * khtml/ecma/kjs_html.cpp:
        (KJS::HTMLDocument::getValueProperty):
        (KJS::KJS::HTMLDocument::putValueProperty):
        (KJS::HTMLElement::anchorGetter):
        (KJS::HTMLElement::areaGetter):
        (KJS::KJS::HTMLElementFunction::callAsFunction):
        * khtml/ecma/kjs_navigator.cpp:
        (KJS::Navigator::getValueProperty):
        * khtml/ecma/kjs_traversal.cpp:
        (KJS::DOMNodeIterator::getValueProperty):
        (KJS::DOMTreeWalker::getValueProperty):
        * khtml/ecma/kjs_window.cpp:
        (KJS::Screen::getValueProperty):
        (KJS::Window::scheduleClose):
        (KJS::Window::isSafeScript):
        (KJS::Window::clear):
        (KJS::LocationFunc::callAsFunction):
        (KJS::History::getValueProperty):
        * ksvg2/svg/SVGAnimateColorElementImpl.cpp:
        (SVGAnimateColorElementImpl::handleTimerEvent):
        * ksvg2/svg/SVGAnimateElementImpl.cpp:
        (SVGAnimateElementImpl::handleTimerEvent):
        * ksvg2/svg/SVGAnimateTransformElementImpl.cpp:
        (SVGAnimateTransformElementImpl::handleTimerEvent):
        * ksvg2/svg/SVGAnimationElementImpl.cpp:
        (SVGAnimationElementImpl::parseMappedAttribute):
        * ksvg2/svg/SVGCursorElementImpl.cpp:
        * ksvg2/svg/SVGDocumentImpl.cpp:
        (WebCore::SVGDocumentImpl::finishedParsing):
        * ksvg2/svg/SVGLengthImpl.cpp:
        (SVGLengthImpl::updateValueInSpecifiedUnits):
        Removed use of kdWarning, kdDebug, etc.

2006-02-20  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by Darin.

        - port QString to win32

        * WebCore.vcproj/WebCore/WebCore.vcproj:
        * platform/QString.cpp:
        (strncasecmp):
        (QString::mid):
        (freeHandle):

2006-02-20  Eric Seidel  <eseidel@apple.com>

        Reviewed by darin.

        <rdar://problem/4449442> GMAIL: XMLHttpRequest does not correctly report "Interactive" state on receipt of load data
        Also cleaned up spacing a little.

        No layout test possible (local loads are non incremental).

        * xml/xmlhttprequest.cpp:
        (WebCore::XMLHttpRequest::changeState):
        (WebCore::XMLHttpRequest::slotData):

2006-02-20  Darin Adler  <darin@apple.com>

        Reviewed by Maciej.

        - fix http://bugs.webkit.org/show_bug.cgi?id=7318
          REGRESSION: Timer bug causes gif animation and (html and JS) page forwarding to fail

        Timers were stopping firing after a while.

        My testing makes this look like a CFRunLoopTimer bug, and it would be nice to reproduce
        this with a standalone test and report it to the CF team, but in the mean time, change
        to create a new timer each time instead of reusing the existing timer.

        * platform/mac/SharedTimerMac.cpp:
        (WebCore::setSharedTimerFiredFunction): Added an assertion.
        (WebCore::setSharedTimerFireTime): Destroy the existing timer and create a new one every time.
        Also create a non-repeating timer rather than a repeating timer.
        (WebCore::stopSharedTimer): Destroy the existing timer rather than setting its fire date
        far into the future.

2006-02-19  Darin Adler  <darin@apple.com>

        Reviewed by Maciej.

        - cut out a little unneeded bridge code

        * bridge/mac/WebCoreFrameBridge.h: Removed frame name from createWindowWithURL: method
        and changed it to return a page bridge. Also made createModalDialogWithURL: method
        return a page bridge. Removed the mainFrame and webView methods.
        * bridge/mac/WebCoreFrameBridge.mm:
        (-[WebCoreFrameBridge nextFrameWithWrap:]): Use page to get to main frame.
        (-[WebCoreFrameBridge setFrameNamespace:]): Ditto.
        (-[WebCoreFrameBridge frameNamespace]): Ditto.
        (-[WebCoreFrameBridge _shouldAllowAccessFrom:]): Ditto.
        (-[WebCoreFrameBridge _frameInAnyWindowNamed:sourceFrame:]): Ditto.
        (-[WebCoreFrameBridge findFrameNamed:]): Ditto.
        (-[WebCoreFrameBridge installInFrame:]): Ditto.

        * bridge/mac/WebCorePageBridge.h: Added outerView method to replace webView method
        on the frame bridge.

        * bridge/mac/BrowserExtensionMac.mm: (WebCore::BrowserExtensionMac::createNewWindow):
        Update to use a page bridge instead of frame bridge.

2006-02-19  Maciej Stachowiak  <mjs@apple.com>

        Rubber-stamped by Anders.
        
        - renamed ERROR to LOG_ERROR because some operating systems define ERROR in a system header

        * bridge/mac/MacFrame.mm:
        (WebCore::MacFrame::passMouseDownEventToWidget):
        * bridge/mac/WebCoreFrameBridge.mm:
        (aeDescFromJSValue):
        (-[WebCoreFrameBridge computePageRectsWithPrintWidthScaleFactor:printHeight:]):
        * css/css_computedstyle.cpp:
        (WebCore::CSSComputedStyleDeclarationImpl::getPropertyCSSValue):
        * editing/Selection.cpp:
        (WebCore::Selection::toRange):
        * kcanvas/device/quartz/KCanvasFilterQuartz.mm:
        (WebCore::KCanvasFEBlendQuartz::getCIFilter):
        (WebCore::KCanvasFEColorMatrixQuartz::getCIFilter):
        * kcanvas/device/quartz/KRenderingDeviceQuartz.mm:
        (WebCore::KRenderingDeviceQuartz::createResource):
        * khtml/xsl/xslt_processorimpl.cpp:
        (DOM::parseErrorFunc):
        * kwq/KWQFontMetrics.mm:
        (QFontMetrics::ascent):
        (QFontMetrics::descent):
        (QFontMetrics::lineSpacing):
        (QFontMetrics::xHeight):
        (QFontMetrics::width):
        (QFontMetrics::floatWidth):
        (QFontMetrics::checkSelectionPoint):
        * kwq/KWQKConfigBase.mm:
        (KConfig::readEntry):
        (KConfig::readNumEntry):
        (KConfig::readUnsignedNumEntry):
        * kwq/KWQLineEdit.mm:
        (KWQNSTextAlignmentForAlignmentFlags):
        * kwq/KWQObject.cpp:
        (QObject::connect):
        * kwq/KWQPainter.mm:
        (WebCore::QPainter::restore):
        (WebCore::QPainter::drawFocusRing):
        * kwq/KWQRegExp.cpp:
        (QRegExp::KWQRegExpPrivate::compile):
        (QRegExp::match):
        * kwq/KWQSignal.cpp:
        (KWQSignal::connect):
        (KWQSignal::disconnect):
        * kwq/KWQSlot.cpp:
        (KWQSlot::KWQSlot):
        * kwq/KWQTextCodec.cpp:
        (KWQTextDecoder::createICUConverter):
        (KWQTextDecoder::convertUsingICU):
        * kwq/WebCoreTextRendererFactory.mm:
        (-[WebCoreTextRendererFactory fontWithFamilies:traits:size:]):
        (-[WebCoreTextRendererFactory isFontFixedPitch:]):
        (-[WebCoreTextRendererFactory rendererWithFont:]):
        * page/Frame.cpp:
        (WebCore::Frame::paint):

2006-02-17  Maciej Stachowiak <mjs@apple.com>

        Reviewed by Dave Hyatt.

        - fix win32 build

        * css/css_grammar.y: 
        * khtml/html/html_objectimpl.cpp: #ifdef out all bindings code
        (WebCore::HTMLAppletElementImpl::~HTMLAppletElementImpl):
        (WebCore::HTMLAppletElementImpl::detach):
        (WebCore::HTMLEmbedElementImpl::~HTMLEmbedElementImpl):
        (WebCore::HTMLEmbedElementImpl::detach):
        (WebCore::HTMLObjectElementImpl::~HTMLObjectElementImpl):
        (WebCore::HTMLObjectElementImpl::detach):
        * khtml/html/html_objectimpl.h:

2006-02-18  Alexander Kellett  <lypanov@kde.org>

        Reviewed by Maciej.

        - Fix http://bugs.webkit.org/show_bug.cgi?id=7199.

        Testcase: 
          svg/custom/text-gradient-no-content.svg

        * kcanvas/device/quartz/KRenderingPaintServerGradientQuartz.mm:
        (WebCore::KRenderingPaintServerGradientQuartz::teardown):

2006-02-18  David Harrison  <harrison@apple.com>

        Reviewed by John.

        <rdar://problem/4448212> _accessibilityTableCell please remove this.

        Remove override of a defamed AX method.

        * kwq/KWQListBox.mm:
        Dump _accessibilityTableCell.

2006-02-17  Mitz Pettel  <opendarwin.org@mitzpettel.com>

        Test: fast/css/ex-after-font-variant.html

        Reviewed by Darin.

        - fix http://bugs.webkit.org/show_bug.cgi?id=4227
          The ex unit doesn't work for font-variant: small-caps

        * css/cssstyleselector.cpp:
        (WebCore::CSSStyleSelector::applyDeclarations): Added CSS_PROP_FONT_VARIANT to the properties
        that need to be applied first, since it dirties the font.

2006-02-17  Adele Peterson  <adele@apple.com>

        Reviewed by Beth.

        Adding isEdited/setEdited hooks so onChange will fire for the new text fields.

        * rendering/RenderTextField.cpp:
        (WebCore::m_dirty):
        (WebCore::RenderTextField::updateFromElement): setEdited to false when value attribute has changed.
        (WebCore::RenderTextField::subtreeHasChanged): setEdited to true when anonymous editable div has changed.
        * rendering/RenderTextField.h:
        (WebCore::RenderTextField::isEdited):
        (WebCore::RenderTextField::setEdited):
        (WebCore::RenderTextField::isTextField):

2006-02-17  Vicki Murley <vicki@apple.com>

        Reviewed by Justin.
 
        Get rid of handleFocusOut on text fields and textareas - move this functionality to the place
        where we resign focus on the previous node in setFocusNode.  Add isTextField on RenderObject
        as one way to distinguish from contenteditable elements - Win IE does not fire onChange for 
        contenteditable elements, so we won't either. Also, expose the dirty bit variables previously 
        checked in handleFocusOut methods in isEdited() and setEdited().

        Fixes the following bugs:
        <rdar://problem/4315673> REGRESSION (1.2.2 - 1.3): onChange and onFocus events firing order differs for mouse click and tab (7227)
        <rdar://problem/4447009> for text fields, onChange should fire before onBlur to match Win IE

        Test case is on the way.

        * dom/DocumentImpl.cpp:
        (WebCore::DocumentImpl::setFocusNode): For textareas and text fields, fire a change event
        on the node that is resigning focus.  Make sure the blur event fires after the change event - 4447009.
        * rendering/render_form.cpp:
        (WebCore::RenderLineEdit::slotReturnPressed): Replace call to handleFocusOut with equivalent code.
        (WebCore::RenderLineEdit::isEdited): Added.
        (WebCore::RenderLineEdit::setEdited): Added.
        (WebCore::RenderTextArea::setEdited): Added.
        * rendering/render_form.h:
        (WebCore::RenderLineEdit::isTextField): Added.
        (WebCore::RenderTextArea::isTextArea): Make this non-virtual.
        (WebCore::RenderTextArea::isEdited): Added.
        * rendering/render_object.h:
        (WebCore::RenderObject::isEdited): Added.
        (WebCore::RenderObject::setEdited): Added.
        (WebCore::RenderObject::isTextField): Added.
        * rendering/render_replaced.h: Remove handleFocusOut().
        * rendering/render_replaced.cpp: Ditto.
        (WebCore::RenderWidget::eventFilter): Remove call to handleFocusOut().  Safe to do here,
        since we call setFocusNode immediately beforehand.

2006-02-17  Mitz Pettel  <opendarwin.org@mitzpettel.com>

        Test: fast/parser/nofoo-tags-inside-paragraph.html

        Reviewed by Anders Carlsson.

        - fix http://bugs.webkit.org/show_bug.cgi?id=7265
          REGRESSION: noscript, noframes, nolayer, noembed tags insert break inside paragraph tag

        * khtml/html/htmlparser.cpp:
        (HTMLParser::isInline): Treat noframes, nolayer, noembed and skipped noscript
        as inline elements.

2006-02-17  Mitz Pettel  <opendarwin.org@mitzpettel.com>

        Reviewed by Hyatt.

        - fix http://bugs.webkit.org/show_bug.cgi?id=7235
          Pure CSS Tooltips method renders wrong and creates artifacts

        * manual-tests/bugzilla-7235.html: Added.
        * rendering/render_box.cpp:
        (WebCore::RenderBox::absolutePosition): Copied in here the logic for positioning
        relative to a relpositioned inline from RenderLayer::updateLayerPosition.
        (WebCore::RenderBox::computeAbsoluteRepaintRect): Ditto.

2006-02-17  Mitz Pettel  <opendarwin.org@mitzpettel.com>

        Test: fast/css/universal-hover-quirk.html

        Reviewed by Maciej.

        - fix http://bugs.webkit.org/show_bug.cgi?id=7218
          Text underlined on mouse over

        * css/cssstyleselector.cpp:
        (WebCore::CSSStyleSelector::checkOneSelector): Prevent *:hover and *:active
        from matching anything in quirks mode.

2006-02-17  Mitz Pettel  <opendarwin.org@mitzpettel.com>

        Test: fast/text/whitespace/pre-wrap-spaces-after-newline.html

        Reviewed by Dave Hyatt.

        - fix http://bugs.webkit.org/show_bug.cgi?id=7216
          white-space: pre-wrap collapses leading whitespace following a newline

        * rendering/bidi.cpp:
        (khtml::RenderBlock::bidiReorderLine): Use previousLineBrokeCleanly instead of
        resetBidiAtEnd now that the former is always correct.
        (khtml::RenderBlock::layoutInlineChildren): Use new skipTrailingNewline flag.
        (khtml::RenderBlock::findNextLineBreak): Set previousLineBrokeCleanly for line breaks
        caused by newlines as well. Added skipTrailingNewline flag.

2006-02-16  Tim Omernick  <timo@apple.com>

        Reviewed by Adele.

        <rdar://problem/4193286> enabledPlugin returns a non-NULL object even when plugins are
        disabled (4140)

        * khtml/ecma/kjs_navigator.cpp:
        (KJS::MimeType::getValueProperty):
        Only return a Plugin object for the "enabledPlugin" property if plugins are enabled.  This
        matches what other browsers do.
        
2006-02-16  Darin Adler  <darin@apple.com>

        Reviewed by Eric and Justin.

        - fix http://bugs.webkit.org/show_bug.cgi?id=7310
          fix leaks by using RefPtr more

        * bindings/objc/DOM.mm:
        (-[DOMDocument adoptNode:]):
        (-[DOMDocument createElement:]):
        (-[DOMDocument createDocumentFragment]):
        (-[DOMDocument createTextNode:]):
        (-[DOMDocument createComment:]):
        (-[DOMDocument createCDATASection:]):
        (-[DOMDocument createProcessingInstruction::]):
        (-[DOMDocument createEntityReference:]):
        (-[DOMDocument importNode::]):
        (-[DOMDocument createElementNS::]):
        (-[DOMDocument createRange]):
        (-[DOMDocument createCSSStyleDeclaration]):
        (-[DOMDocument createNodeIterator::::]):
        (-[DOMDocument createTreeWalker::::]):
        * bindings/objc/DOMCSS.mm:
        (-[DOMCSSStyleDeclaration getPropertyCSSValue:]):
        * bindings/objc/DOMEvents.mm:
        (-[DOMDocument createEvent:]):
        * bridge/mac/MacFrame.h:
        * bridge/mac/MacFrame.mm:
        (WebCore::MacFrame::MacFrame):
        (WebCore::MacFrame::freeClipboard):
        (WebCore::MacFrame::setView):
        (WebCore::MacFrame::wheelEvent):
        (WebCore::MacFrame::openURLFromPageCache):
        (WebCore::MacFrame::mouseDownViewIfStillGood):
        (WebCore::MacFrame::khtmlMouseMoveEvent):
        (WebCore::MacFrame::dispatchCPPEvent):
        (WebCore::MacFrame::mouseDown):
        (WebCore::MacFrame::mouseDragged):
        (WebCore::MacFrame::mouseUp):
        (WebCore::MacFrame::mouseMoved):
        (WebCore::MacFrame::sendContextMenuEvent):
        (WebCore::MacFrame::dispatchDragSrcEvent):
        * bridge/mac/WebCoreFrameBridge.mm:
        (-[WebCoreFrameBridge convertToDOMRange:]):
        (-[WebCoreFrameBridge convertNSRangeToDOMRange:]):
        (-[WebCoreFrameBridge selectNSRange:]):
        (-[WebCoreFrameBridge smartDeleteRangeForProposedRange:]):
        (-[WebCoreFrameBridge typingStyle]):
        (-[WebCoreFrameBridge dragOperationForDraggingInfo:]):
        (-[WebCoreFrameBridge dragExitedWithDraggingInfo:]):
        (-[WebCoreFrameBridge concludeDragForDraggingInfo:]):
        * css/css_computedstyle.cpp:
        (WebCore::CSSComputedStyleDeclarationImpl::CSSComputedStyleDeclarationImpl):
        (WebCore::CSSComputedStyleDeclarationImpl::cssText):
        (WebCore::CSSComputedStyleDeclarationImpl::setCssText):
        (WebCore::CSSComputedStyleDeclarationImpl::getPropertyCSSValue):
        (WebCore::CSSComputedStyleDeclarationImpl::getPropertyValue):
        (WebCore::CSSComputedStyleDeclarationImpl::removeProperty):
        (WebCore::CSSComputedStyleDeclarationImpl::setProperty):
        (WebCore::CSSComputedStyleDeclarationImpl::item):
        (WebCore::CSSComputedStyleDeclarationImpl::copyInheritableProperties):
        (WebCore::CSSComputedStyleDeclarationImpl::copy):
        (WebCore::CSSComputedStyleDeclarationImpl::makeMutable):
        * css/css_computedstyle.h:
        * css/css_grammar.y:
        * css/css_ruleimpl.cpp:
        (WebCore::CSSStyleRuleImpl::~CSSStyleRuleImpl):
        (WebCore::CSSStyleRuleImpl::setDeclaration):
        * css/css_ruleimpl.h:
        (DOM::CSSStyleRuleImpl::style):
        (DOM::CSSStyleRuleImpl::declaration):
        * css/css_valueimpl.cpp:
        (WebCore::propertyID):
        (WebCore::quoteStringIfNeeded):
        (WebCore::CSSStyleDeclarationImpl::getPropertyCSSValue):
        (WebCore::CSSStyleDeclarationImpl::getPropertyValue):
        (WebCore::CSSStyleDeclarationImpl::getPropertyPriority):
        (WebCore::CSSStyleDeclarationImpl::getPropertyShorthand):
        (WebCore::CSSStyleDeclarationImpl::isPropertyImplicit):
        (WebCore::CSSStyleDeclarationImpl::setProperty):
        (WebCore::CSSStyleDeclarationImpl::removeProperty):
        (WebCore::CSSStyleDeclarationImpl::isPropertyName):
        (WebCore::CSSMutableStyleDeclarationImpl::getPropertyValue):
        (WebCore::CSSMutableStyleDeclarationImpl::get4Values):
        (WebCore::CSSMutableStyleDeclarationImpl::getShortHandValue):
        (WebCore::CSSMutableStyleDeclarationImpl::getPropertyCSSValue):
        (WebCore::CSSMutableStyleDeclarationImpl::removeProperty):
        (WebCore::CSSMutableStyleDeclarationImpl::setProperty):
        (WebCore::CSSMutableStyleDeclarationImpl::setStringProperty):
        (WebCore::CSSMutableStyleDeclarationImpl::setImageProperty):
        (WebCore::CSSMutableStyleDeclarationImpl::parseDeclaration):
        (WebCore::CSSMutableStyleDeclarationImpl::setLengthProperty):
        (WebCore::CSSMutableStyleDeclarationImpl::item):
        (WebCore::CSSMutableStyleDeclarationImpl::cssText):
        (WebCore::CSSMutableStyleDeclarationImpl::setCssText):
        (WebCore::CSSMutableStyleDeclarationImpl::copyBlockProperties):
        (WebCore::CSSStyleDeclarationImpl::copyPropertiesInSet):
        (WebCore::CSSMutableStyleDeclarationImpl::removePropertiesInSet):
        (WebCore::CSSMutableStyleDeclarationImpl::makeMutable):
        (WebCore::CSSMutableStyleDeclarationImpl::copy):
        (WebCore::CSSInheritedValueImpl::cssText):
        (WebCore::CSSInitialValueImpl::cssText):
        (WebCore::CSSValueListImpl::append):
        (WebCore::CSSValueListImpl::cssText):
        (WebCore::CSSPrimitiveValueImpl::CSSPrimitiveValueImpl):
        (WebCore::CSSPrimitiveValueImpl::cleanup):
        (WebCore::CSSPrimitiveValueImpl::setStringValue):
        (WebCore::CSSPrimitiveValueImpl::getStringValue):
        (WebCore::CSSPrimitiveValueImpl::parseString):
        (WebCore::CSSPrimitiveValueImpl::cssText):
        (WebCore::CSSImageValueImpl::CSSImageValueImpl):
        (WebCore::CSSBorderImageValueImpl::CSSBorderImageValueImpl):
        (WebCore::CSSBorderImageValueImpl::cssText):
        (WebCore::FontFamilyValueImpl::FontFamilyValueImpl):
        (WebCore::FontFamilyValueImpl::cssText):
        (WebCore::FontValueImpl::cssText):
        (WebCore::ShadowValueImpl::ShadowValueImpl):
        (WebCore::ShadowValueImpl::cssText):
        (WebCore::CSSProperty::cssText):
        * css/css_valueimpl.h:
        (WebCore::CSSValueImpl::setCssText):
        (WebCore::CSSValueListImpl::item):
        (WebCore::CSSPrimitiveValueImpl::getFloatValue):
        (WebCore::CSSPrimitiveValueImpl::getCounterValue):
        (WebCore::CSSPrimitiveValueImpl::getRectValue):
        (WebCore::CSSPrimitiveValueImpl::getRGBColorValue):
        (WebCore::CSSPrimitiveValueImpl::getPairValue):
        (WebCore::CSSPrimitiveValueImpl::getDashboardRegionValue):
        (WebCore::CSSPrimitiveValueImpl::):
        (WebCore::CSSQuirkPrimitiveValueImpl::CSSQuirkPrimitiveValueImpl):
        (WebCore::CounterImpl::identifier):
        (WebCore::CounterImpl::listStyle):
        (WebCore::CounterImpl::separator):
        (WebCore::RectImpl::top):
        (WebCore::RectImpl::right):
        (WebCore::RectImpl::bottom):
        (WebCore::RectImpl::left):
        (WebCore::RectImpl::setTop):
        (WebCore::RectImpl::setRight):
        (WebCore::RectImpl::setBottom):
        (WebCore::RectImpl::setLeft):
        (WebCore::PairImpl::first):
        (WebCore::PairImpl::second):
        (WebCore::PairImpl::setFirst):
        (WebCore::PairImpl::setSecond):
        (WebCore::DashboardRegionImpl::DashboardRegionImpl):
        (WebCore::FontFamilyValueImpl::fontName):
        (WebCore::CSSProperty::CSSProperty):
        (WebCore::CSSProperty::value):
        (WebCore::CSSMutableStyleDeclarationImpl::setNode):
        (WebCore::CSSMutableStyleDeclarationImpl::setProperty):
        (WebCore::CSSMutableStyleDeclarationImpl::removeProperty):
        * css/cssparser.cpp:
        (CSSParser::createStyleDeclaration):
        (CSSParser::parseDashboardRegions):
        * css/cssparser.h:
        (WebCore::Value::):
        (WebCore::qString):
        (WebCore::domString):
        (WebCore::atomicString):
        (WebCore::ValueList::current):
        (WebCore::ValueList::next):
        (WebCore::CSSParser::current):
        * css/cssstyleselector.cpp:
        (WebCore::CSSStyleSelector::applyProperty):
        * dom/DOMImplementationImpl.cpp:
        (DOM::DOMImplementationImpl::createDocument):
        (DOM::DOMImplementationImpl::instance):
        * dom/DOMImplementationImpl.h:
        * dom/DocumentImpl.cpp:
        (WebCore::DocumentImpl::DocumentImpl):
        (WebCore::DocumentImpl::~DocumentImpl):
        (WebCore::DocumentImpl::setDocType):
        (WebCore::DocumentImpl::createElement):
        (WebCore::DocumentImpl::createDocumentFragment):
        (WebCore::DocumentImpl::createTextNode):
        (WebCore::DocumentImpl::createComment):
        (WebCore::DocumentImpl::createCDATASection):
        (WebCore::DocumentImpl::createProcessingInstruction):
        (WebCore::DocumentImpl::createEntityReference):
        (WebCore::DocumentImpl::createEditingTextNode):
        (WebCore::DocumentImpl::createCSSStyleDeclaration):
        (WebCore::DocumentImpl::importNode):
        (WebCore::DocumentImpl::adoptNode):
        (WebCore::DocumentImpl::createElementNS):
        (WebCore::DocumentImpl::setTitle):
        (WebCore::DocumentImpl::createRange):
        (WebCore::DocumentImpl::createNodeIterator):
        (WebCore::DocumentImpl::createTreeWalker):
        (WebCore::DocumentImpl::setStyleSheet):
        (WebCore::DocumentImpl::setHoverNode):
        (WebCore::DocumentImpl::setActiveNode):
        (WebCore::DocumentImpl::setFocusNode):
        (WebCore::DocumentImpl::defaultView):
        (WebCore::DocumentImpl::createEvent):
        (WebCore::DocumentImpl::setHTMLWindowEventListener):
        (WebCore::DocumentImpl::addWindowEventListener):
        (WebCore::DocumentImpl::createHTMLEventListener):
        (WebCore::DocumentImpl::images):
        (WebCore::DocumentImpl::applets):
        (WebCore::DocumentImpl::embeds):
        (WebCore::DocumentImpl::objects):
        (WebCore::DocumentImpl::links):
        (WebCore::DocumentImpl::forms):
        (WebCore::DocumentImpl::anchors):
        (WebCore::DocumentImpl::all):
        (WebCore::DocumentImpl::windowNamedItems):
        (WebCore::DocumentImpl::documentNamedItems):
        (WebCore::DocumentImpl::getElementsByName):
        * dom/DocumentImpl.h:
        (WebCore::DocumentImpl::realDocType):
        (WebCore::DocumentImpl::createAttribute):
        (WebCore::DocumentImpl::title):
        (WebCore::DocumentImpl::styleSelector):
        (WebCore::DocumentImpl::setRestoreState):
        (WebCore::DocumentImpl::restoreState):
        (WebCore::DocumentImpl::view):
        (WebCore::DocumentImpl::docLoader):
        (WebCore::DocumentImpl::tokenizer):
        (WebCore::DocumentImpl::focusNode):
        (WebCore::DocumentImpl::hoverNode):
        (WebCore::DocumentImpl::activeNode):
        (WebCore::DocumentImpl::policyBaseURL):
        (WebCore::DocumentImpl::setPolicyBaseURL):
        (WebCore::DocumentImpl::):
        (WebCore::DocumentImpl::transformSourceDocument):
        (WebCore::DocumentImpl::domTreeVersion):
        (WebCore::DocumentImpl::decoder):
        * dom/NodeListImpl.cpp:
        (DOM::NodeListImpl::NodeListImpl):
        (DOM::NodeListImpl::~NodeListImpl):
        (DOM::NodeListImpl::recursiveLength):
        (DOM::NodeListImpl::recursiveItem):
        (DOM::NodeListImpl::itemById):
        * dom/NodeListImpl.h:
        * dom/dom2_eventsimpl.cpp:
        (WebCore::RegisteredEventListener::RegisteredEventListener):
        * dom/dom2_eventsimpl.h:
        (WebCore::operator!=):
        * dom/dom2_traversalimpl.cpp:
        (DOM::TraversalImpl::TraversalImpl):
        (DOM::NodeIteratorImpl::NodeIteratorImpl):
        (DOM::TreeWalkerImpl::TreeWalkerImpl):
        * dom/dom2_traversalimpl.h:
        (WebCore::TraversalImpl::root):
        (WebCore::TraversalImpl::filter):
        (WebCore::NodeIteratorImpl::referenceNode):
        (WebCore::NodeIteratorImpl::setPointerBeforeReferenceNode):
        (WebCore::NodeIteratorImpl::setDetached):
        (WebCore::NodeIteratorImpl::document):
        (WebCore::TreeWalkerImpl::currentNode):
        * dom/dom_position.cpp:
        (WebCore::Position::computedStyle):
        * dom/dom_position.h:
        * dom/xml_tokenizer.cpp:
        (WebCore::XMLTokenizer::insertErrorMessageBlock):
        * editing/ApplyStyleCommand.cpp:
        (WebCore::createFontElement):
        (WebCore::createStyleSpanElement):
        (WebCore::ApplyStyleCommand::ApplyStyleCommand):
        (WebCore::ApplyStyleCommand::updateStartEnd):
        (WebCore::ApplyStyleCommand::applyRelativeFontStyleChange):
        (WebCore::ApplyStyleCommand::extractTextDecorationStyle):
        (WebCore::ApplyStyleCommand::extractAndNegateTextDecorationStyle):
        (WebCore::ApplyStyleCommand::applyTextDecorationStyle):
        (WebCore::ApplyStyleCommand::removeInlineStyle):
        (WebCore::ApplyStyleCommand::addInlineStyleIfNeeded):
        (WebCore::ApplyStyleCommand::computedFontSize):
        * editing/ApplyStyleCommand.h:
        (WebCore::ApplyStyleCommand::style):
        * editing/EditCommand.cpp:
        (WebCore::EditCommandPtr::setTypingStyle):
        (WebCore::EditCommand::setTypingStyle):
        (WebCore::EditCommand::styleAtPosition):
        * editing/EditCommand.h:
        (WebCore::EditCommand::document):
        (WebCore::EditCommand::typingStyle):
        * editing/InsertLineBreakCommand.cpp:
        (WebCore::InsertLineBreakCommand::InsertLineBreakCommand):
        (WebCore::InsertLineBreakCommand::doApply):
        * editing/InsertTextCommand.cpp:
        (WebCore::InsertTextCommand::prepareForTextInsertion):
        * editing/ReplaceSelectionCommand.cpp:
        (WebCore::computeAndStoreNodeDesiredStyle):
        (WebCore::NodeDesiredStyle::NodeDesiredStyle):
        (WebCore::ReplaceSelectionCommand::doApply):
        * editing/ReplaceSelectionCommand.h:
        (WebCore::NodeDesiredStyle::node):
        (WebCore::NodeDesiredStyle::style):
        (WebCore::ReplacementFragment::root):
        * editing/WrapContentsInDummySpanCommand.cpp:
        (WebCore::WrapContentsInDummySpanCommand::doApply):
        * editing/htmlediting.cpp:
        (WebCore::createDefaultParagraphElement):
        (WebCore::createBreakElement):
        * editing/markup.cpp:
        (WebCore::createFragmentFromMarkup):
        (WebCore::createParagraphContentsFromString):
        * editing/visible_text.cpp:
        (khtml::TextIterator::rangeFromLocationAndLength):
        * editing/visible_text.h:
        (WebCore::isCollapsibleWhitespace):
        (WebCore::WordAwareIterator::range):
        * khtml/ecma/kjs_css.cpp:
        (KJS::DOMCSSStyleDeclaration::cssPropertyGetter):
        (KJS::DOMCSSStyleDeclarationProtoFunc::callAsFunction):
        * khtml/ecma/kjs_dom.cpp:
        (KJS::DOMDocumentProtoFunc::callAsFunction):
        * khtml/ecma/kjs_html.cpp:
        (KJS::KJS::HTMLSelectCollection::put):
        (KJS::OptionConstructorImp::construct):
        * khtml/html/HTMLElementImpl.cpp:
        (WebCore::HTMLElementImpl::createContextualFragment):
        (WebCore::HTMLElementImpl::setInnerHTML):
        (WebCore::HTMLElementImpl::setOuterHTML):
        (WebCore::HTMLElementImpl::setOuterText):
        * khtml/html/HTMLElementImpl.h:
        * khtml/html/HTMLNameCollectionImpl.cpp:
        (WebCore::HTMLNameCollectionImpl::HTMLNameCollectionImpl):
        (WebCore::HTMLNameCollectionImpl::traverseNextItem):
        * khtml/html/HTMLNameCollectionImpl.h:
        * khtml/html/html_documentimpl.cpp:
        (WebCore::HTMLDocumentImpl::createElement):
        * khtml/html/html_documentimpl.h:
        (WebCore::HTMLDocumentImpl::collectionInfo):
        * khtml/html/htmlfactory.cpp:
        (DOM::htmlConstructor):
        (DOM::headConstructor):
        (DOM::bodyConstructor):
        (DOM::baseConstructor):
        (DOM::linkConstructor):
        (DOM::metaConstructor):
        (DOM::styleConstructor):
        (DOM::titleConstructor):
        (DOM::frameConstructor):
        (DOM::framesetConstructor):
        (DOM::iframeConstructor):
        (DOM::formConstructor):
        (DOM::buttonConstructor):
        (DOM::inputConstructor):
        (DOM::isindexConstructor):
        (DOM::fieldsetConstructor):
        (DOM::labelConstructor):
        (DOM::legendConstructor):
        (DOM::optgroupConstructor):
        (DOM::optionConstructor):
        (DOM::selectConstructor):
        (DOM::textareaConstructor):
        (DOM::dlConstructor):
        (DOM::ulConstructor):
        (DOM::olConstructor):
        (DOM::dirConstructor):
        (DOM::menuConstructor):
        (DOM::liConstructor):
        (DOM::blockquoteConstructor):
        (DOM::divConstructor):
        (DOM::headingConstructor):
        (DOM::hrConstructor):
        (DOM::paragraphConstructor):
        (DOM::preConstructor):
        (DOM::basefontConstructor):
        (DOM::fontConstructor):
        (DOM::modConstructor):
        (DOM::anchorConstructor):
        (DOM::imageConstructor):
        (DOM::mapConstructor):
        (DOM::areaConstructor):
        (DOM::canvasConstructor):
        (DOM::appletConstructor):
        (DOM::embedConstructor):
        (DOM::objectConstructor):
        (DOM::paramConstructor):
        (DOM::scriptConstructor):
        (DOM::tableConstructor):
        (DOM::tableCaptionConstructor):
        (DOM::tableColConstructor):
        (DOM::tableRowConstructor):
        (DOM::tableCellConstructor):
        (DOM::tableSectionConstructor):
        (DOM::brConstructor):
        (DOM::quoteConstructor):
        (DOM::marqueeConstructor):
        (DOM::HTMLElementFactory::createHTMLElement):
        * khtml/html/htmlfactory.h:
        * khtml/html/htmlparser.cpp:
        (HTMLParser::parseToken):
        (HTMLParser::textCreateErrorCheck):
        (HTMLParser::commentCreateErrorCheck):
        (HTMLParser::headCreateErrorCheck):
        (HTMLParser::bodyCreateErrorCheck):
        (HTMLParser::framesetCreateErrorCheck):
        (HTMLParser::iframeCreateErrorCheck):
        (HTMLParser::formCreateErrorCheck):
        (HTMLParser::isindexCreateErrorCheck):
        (HTMLParser::selectCreateErrorCheck):
        (HTMLParser::ddCreateErrorCheck):
        (HTMLParser::dtCreateErrorCheck):
        (HTMLParser::nestedCreateErrorCheck):
        (HTMLParser::nestedStyleCreateErrorCheck):
        (HTMLParser::tableCellCreateErrorCheck):
        (HTMLParser::tableSectionCreateErrorCheck):
        (HTMLParser::noembedCreateErrorCheck):
        (HTMLParser::noframesCreateErrorCheck):
        (HTMLParser::noscriptCreateErrorCheck):
        (HTMLParser::mapCreateErrorCheck):
        (HTMLParser::getNode):
        * khtml/html/htmlparser.h:
        * khtml/html/htmltokenizer.cpp:
        (WebCore::HTMLTokenizer::parseTag):
        (WebCore::HTMLTokenizer::processToken):
        * khtml/html/htmltokenizer.h:
        * ksvg2/misc/SVGDocumentExtensions.cpp:
        (WebCore::SVGDocumentExtensions::createSVGEventListener):
        * ksvg2/misc/SVGDocumentExtensions.h:
        * ksvg2/svg/SVGDOMImplementationImpl.cpp:
        (SVGDOMImplementationImpl::createDocumentType):
        (SVGDOMImplementationImpl::createDocument):
        (SVGDOMImplementationImpl::createCSSStyleSheet):
        * ksvg2/svg/SVGDOMImplementationImpl.h:
        * ksvg2/svg/SVGDocumentImpl.cpp:
        (WebCore::SVGDocumentImpl::createElement):
        (WebCore::SVGDocumentImpl::dispatchZoomEvent):
        (WebCore::SVGDocumentImpl::dispatchKeyEvent):
        (WebCore::SVGDocumentImpl::dispatchUIEvent):
        (WebCore::SVGDocumentImpl::dispatchMouseEvent):
        * ksvg2/svg/SVGDocumentImpl.h:
        * ksvg2/svg/SVGElementImpl.cpp:
        (WebCore::SVGElementImpl::addSVGEventListener):
        * ksvg2/svg/SVGSVGElementImpl.cpp:
        (WebCore::SVGSVGElementImpl::addSVGWindowEventListner):
        * page/Frame.cpp:
        (WebCore::Frame::view):
        (WebCore::Frame::begin):
        (WebCore::Frame::computeAndSetTypingStyle):
        (WebCore::Frame::selectionHasStyle):
        (WebCore::Frame::selectionStartHasStyle):
        (WebCore::Frame::selectionStartStylePropertyValue):
        (WebCore::Frame::selectionComputedStyle):
        (WebCore::Frame::forceLayout):
        (WebCore::Frame::sendResizeEvent):
        (WebCore::Frame::sendScrollEvent):
        (WebCore::Frame::clearTimers):
        (WebCore::Frame::styleForSelectionStart):
        * page/FramePrivate.h:
        * page/FrameTree.h:
        (WebCore::FrameTree::name):

2006-02-16  David Harrison  <harrison@apple.com>

        Reviewed by Darin.

        Test:
        * manual-tests/mail-attachments.html: Added.
        Automated test not currently possible because widgets do not actually draw when not in a window.
        Geoff and Justin are fixing that and will add this test.

        * rendering/render_frames.cpp:
        (WebCore::RenderPartObject::updateWidget):
        Fix unique param check when processing object tag attributes.

2006-02-16  Adele Peterson  <adele@apple.com>

        Reviewed by Darin.

        - Fixed http://bugs.webkit.org/show_bug.cgi?id=7113
        Typing in editable overflow:hidden div doesn't scroll

        * bridge/mac/WebCoreFrameBridge.mm: (-[WebCoreFrameBridge ensureSelectionVisible]):
          Changed scrollRectToVisible call so that it will align to the edge instead of trying to center the selection.  
          Centering looks funny when it happens after typing, deleting, moving the cursor, etc.
        * rendering/render_layer.cpp: (WebCore::RenderLayer::scrollRectToVisible):
          Use scrollWidth() and scrollHeight() functions instead of m_scrollWidth and m_scrollHeight.  
          These functions will cause the correct scroll dimensions to be calculated for overflow:hidden layers.
          Also subtracted scrollbar width and height when calculating the layer bounds. This was causing scroll problems in overflow:scroll.
          I also did some cleanup to use xPos() and yPos() instead of m_x and m_y, and to use scrollYOffset() instead of m_scrollY.

2006-02-16  Adele Peterson  <adele@apple.com>

        Reviewed by Darin.

        - Fixed http://bugs.webkit.org/show_bug.cgi?id=6812
        Missing focus ring on new text fields

        Tests:
        * fast/forms/input-appearance-focus.html: Updated.

        * rendering/render_object.cpp: (WebCore::RenderObject::paintOutline): 
         call supportsFocusRing instead of checking the appearance.
        * rendering/render_theme.cpp: (khtml::RenderTheme::supportsFocusRing): Added. 
         Checks appearance.  Theme will draw focus ring if there's an appearance, but not for the new text fields.
        * rendering/render_theme.h:

2006-02-16  Darin Adler  <darin@apple.com>

        Reviewed by Hyatt.

        - eliminate QFrame and QObject::inherits, fix some strange stuff
          in RenderCanvas that showed up when I tested that change

        * kwq/KWQFrame.h: Removed.
        * kwq/KWQFrame.mm: Removed.

        * bridge/mac/FrameViewMac.mm: Added.

        * WebCore.xcodeproj/project.pbxproj: Updated for adds and removes.
        * WebCore.vcproj/WebCore/WebCore.vcproj: Updated for removes.

        * bridge/mac/WebCoreFrameBridge.mm:
        (-[WebCoreFrameBridge RenderObject::nodeInfoAtPoint:]):
        * khtml/ecma/kjs_window.cpp:
        (KJS::FrameArray::indexGetter):
        (KJS::FrameArray::nameGetter):
        * kwq/KWQAccObject.mm:
        (-[KWQAccObject doAXTextMarkerForPosition:]):
        * kwq/KWQRenderTreeDebug.cpp:
        (write):
        * page/Frame.cpp:
        (WebCore::isFrameElement):
        * page/FramePrivate.h:
        (WebCore::FramePrivate::FramePrivate):
        Change QObject::inherits callers to call the "is" functions directly.

        * kwq/KWQObject.h:
        * kwq/KWQObject.cpp: Removed QObject::inherits, QObject::isQFrame,
        and QObject::isQScrollView.

        * kwq/KWQScrollView.h: Inherit from Widget instead of QFrame.
        Remove isQScrollView.
        * kwq/KWQScrollView.mm: Remove isQScrollView.

        * page/FrameView.h:
        * page/FrameView.cpp: Changed underMouse and clickNode to be RefPtr.
        Added m_hasBorder.
        (WebCore::FrameViewPrivate::FrameViewPrivate):
        (WebCore::FrameViewPrivate::~FrameViewPrivate):
        (WebCore::FrameViewPrivate::reset):
        (WebCore::FrameView::layout):
        (WebCore::FrameView::viewportMousePressEvent):
        (WebCore::FrameView::invalidateClick):
        (WebCore::FrameView::viewportMouseReleaseEvent):
        (WebCore::FrameView::keyPressEvent):
        (WebCore::FrameView::dispatchDragEvent): Use RefPtr for MouseEventImpl.
        (WebCore::FrameView::nodeUnderMouse):
        (WebCore::FrameView::dispatchMouseEvent):
        (WebCore::FrameView::setHasBorder): Added.
        (WebCore::FrameView::hasBorder): Added.
        (WebCore::FrameView::borderWidth): Added.

        * rendering/render_canvas.h: Eliminated unneeded setWidth/Height overrides.
        Eliminated viewportWidth(), viewportHeight(), m_rootWidth, m_rootHeight,
        m_viewportWidth, and m_viewportHeight.
        * rendering/render_canvas.cpp:
        (RenderCanvas::calcHeight): Remove unneeded code to set height when there's
        no view.
        (RenderCanvas::calcWidth): Fix code to set width to visibleWidth(). Removed
        incorrect old width setting, and removed unneeded code to set width when
        there's no view. Also removed incorrect margin-setting code.
        (RenderCanvas::layout): Removed incorrect code to set width and height.
        Instead letting calcWidth and calcHeight do the job.
        (RenderCanvas::repaintViewRectangle): Use new FrameView::hasBorder instead
        of QFrame::frameStyle.
        (RenderCanvas::viewRect): Removed unneeded "root width" feature for a canvas
        without a view.

        * rendering/render_frames.cpp:
        (WebCore::RenderFrame::slotViewCleared): Use new setHasBorder.
        (WebCore::RenderPartObject::slotViewCleared): Ditto.

2006-02-17  Eric Seidel  <eseidel@apple.com>

        Reviewed by justing.

        Close several age-old leaks in xslt code.
        Tests already were catching these.

        * khtml/xsl/xsl_stylesheetimpl.cpp:
        (WebCore::XSLStyleSheetImpl::loadChildSheets):
        (WebCore::XSLStyleSheetImpl::locateStylesheetSubResource):
        * khtml/xsl/xslt_processorimpl.cpp:
        (WebCore::docLoaderFunc):

2006-02-16  Tim Omernick  <timo@apple.com>

        Reviewed by Geoff.

        <rdar://problem/4428609> Flash Player 8.0.22 can crash Safari (and WebKit apps)
        with javascript disabled (7015)

        Added a test case, manual-tests/NPN_Invoke.  This is a skeleton of a Netscape
        plugin which uses NPN_Invoke() to call the window.alert() JavaScript function.
        
        * bridge/mac/MacFrame.mm:
        (WebCore::MacFrame::windowScriptNPObject):
        Removed the check Darin added to return 0 when JavaScript is disabled.
        This method cannot return 0, because plugins are not guaranteed to check
        for that.
        Removed my old fix for Radar 4428609 (7015) in favor of a better solution.
        Instead of creating a "dummy" JSObject to represent the window script object
        when JavaScript is disabled, we use the new JavaScriptCore bindings API to 
        create a "no script" NPObject.  This solution is better because it does not
        cause entry into any JavaScript interpreter code.

        * manual-tests/NPN_Invoke: Added.
        * manual-tests/NPN_Invoke/English.lproj: Added.
        * manual-tests/NPN_Invoke/English.lproj/Localized.r: Added.
        * manual-tests/NPN_Invoke/Info.plist: Added.
        * manual-tests/NPN_Invoke/NPN_Invoke.xcodeproj: Added.
        * manual-tests/NPN_Invoke/NPN_Invoke.xcodeproj/project.pbxproj: Added.
        * manual-tests/NPN_Invoke/main.c: Added.
        * manual-tests/NPN_Invoke/test.html: Added.

2006-02-16  Mitz Pettel  <opendarwin.org@mitzpettel.com>

        Reviewed by Darin, landed by ap.

        - fix http://bugs.webkit.org/show_bug.cgi?id=7274
          Assertion failure in TimerBase::checkHeapIndex() (Timer.cpp:199) !timerHeap->isEmpty()

        * platform/Timer.cpp:
        (WebCore::TimerBase::stop): Call setNextFireTime(0) unconditionally to make sure the timer
        is removed from timersReadyToFire so that fireTimers doesn't try to fire a deleted timer.

2006-02-15  Geoffrey Garen  <ggaren@apple.com>

        Reviewed by Maciej, Eric.

        - WebCore half of fix for <rdar://problem/4176077> CrashTracer: 6569 
        crashes in DashboardClient at com.apple.JavaScriptCore: 
        KJS::Bindings::ObjcFallbackObjectImp::type() 

        WebCore and JavaScriptCore weren't sharing Instance objects very
        nicely. I made them use RefPtrs, and sent them to bed without dessert.

        * khtml/html/html_objectimpl.cpp: 
        (WebCore::HTMLAppletElementImpl::HTMLAppletElementImpl): Made 
        appletInstance a RefPtr
        (WebCore::HTMLAppletElementImpl::getAppletInstance):
        (WebCore::HTMLAppletElementImpl::detach):
        (WebCore::HTMLEmbedElementImpl::HTMLEmbedElementImpl): Made
        embedInstance a RefPtr
        (WebCore::HTMLEmbedElementImpl::getEmbedInstance):
        (WebCore::HTMLEmbedElementImpl::detach):
        (WebCore::HTMLObjectElementImpl::HTMLObjectElementImpl): Made
        objectInstance a RefPtr
        (WebCore::HTMLObjectElementImpl::getObjectInstance): 
        (WebCore::HTMLObjectElementImpl::detach):
        * bindings/js/JSDOMCore.cpp:
        * khtml/ecma/kjs_dom.cpp:
        (KJS::getRuntimeObject):
        * khtml/html/html_objectimpl.h:

2006-02-15  Geoffrey Garen  <ggaren@apple.com>

        Reviewed by Eric.

        - Fixed http://bugs.webkit.org/show_bug.cgi?id=4674
        LEAK: WheelEventImpl leaked when mousewheel used

        No test case because it requires manual mouse wheeling.

        * dom/NodeImpl.cpp:
        (WebCore::NodeImpl::dispatchWheelEvent): Use a RefPtr instead of just
        leaking the WheelEventImpl.

2006-02-15  Dave Hyatt <hyatt@apple.com>

        Make FontFamily compile on Win32 (just needed a few more
        __APPLE__ ifdefs).

        Clean up the frameBufferAtIndex method of the image decoders
        on Win32.

        * WebCore.vcproj/WebCore/WebCore.vcproj:
        * kwq/KWQFont.h:
        * platform/FontFamily.cpp:
        (WebCore::FontFamily::FontFamily):
        * platform/cairo/ImageSourceCairo.cpp:
        (WebCore::ImageSource::createFrameAtIndex):
        (WebCore::ImageSource::frameDurationAtIndex):
        (WebCore::ImageSource::frameHasAlphaAtIndex):
        * platform/image-decoders/ImageDecoder.h:
        * platform/image-decoders/gif/GIFImageDecoder.cpp:
        (WebCore::GIFImageDecoder::frameBufferAtIndex):
        * platform/image-decoders/gif/GIFImageDecoder.h:
        * platform/image-decoders/jpeg/JPEGImageDecoder.cpp:
        (WebCore::JPEGImageDecoder::frameBufferAtIndex):
        * platform/image-decoders/jpeg/JPEGImageDecoder.h:
        * platform/image-decoders/png/PNGImageDecoder.cpp:
        (WebCore::PNGImageDecoder::frameBufferAtIndex):
        * platform/image-decoders/png/PNGImageDecoder.h:

2006-02-15  David Hyatt  <hyatt@apple.com>

        Make KWQFontFamily portable.  Split it out into a cross-platform core and the Mac-specific version.
        Move it to platform and rename it to FontFamily (and FontFamilyMac).

        Reviewed by eric

        * WebCore.xcodeproj/project.pbxproj:
        * css/cssstyleselector.cpp:
        (WebCore::CSSStyleSelector::applyProperty):
        * kwq/KWQFont.h:
        (QFont::firstFamily):
        * kwq/KWQFont.mm:
        (QFont::setFirstFamily):
        * kwq/KWQFontFamily.h: Removed.
        * kwq/KWQFontFamily.mm: Removed.
        * platform/FontFamily.cpp: Added.
        (WebCore::FontFamily::FontFamily):
        (WebCore::FontFamily::~FontFamily):
        (WebCore::FontFamily::operator=):
        (WebCore::FontFamily::setFamily):
        (WebCore::FontFamily::operator==):
        * platform/FontFamily.h: Added.
        (WebCore::FontFamily::family):
        (WebCore::FontFamily::familyIsEmpty):
        (WebCore::FontFamily::next):
        (WebCore::FontFamily::appendFamily):
        (WebCore::FontFamily::operator!=):
        (WebCore::FontFamily::ref):
        (WebCore::FontFamily::deref):
        * platform/mac/FontFamilyMac.mm: Added.
        (WebCore::retainDOMStringImpl):
        (WebCore::releaseDOMStringImpl):
        (WebCore::):
        (WebCore::FontFamily::getNSFamily):
        * rendering/font.h:
        (khtml::FontDef::firstFamily):

2006-02-15  Oliver Hunt  <ojh16@student.canterbury.ac.nz>

        Reviewed by eseidel.  Landed by eseidel.
        
        Implemented feDisplacementMap.
        http://bugs.webkit.org/show_bug.cgi?id=5862

        Test: svg/custom/feDisplacementMap-01.svg

        * WebCore.xcodeproj/project.pbxproj: added files.
        * kcanvas/KCanvasFilters.cpp:
        (WebCore::KCanvasFEDisplacementMap::externalRepresentation):
        * kcanvas/KCanvasFilters.h:
        (WebCore::KCanvasFEDisplacementMap::KCanvasFEDisplacementMap):
        (WebCore::KCanvasFEDisplacementMap::xChannelSelector):
        (WebCore::KCanvasFEDisplacementMap::setXChannelSelector):
        (WebCore::KCanvasFEDisplacementMap::yChannelSelector):
        (WebCore::KCanvasFEDisplacementMap::setYChannelSelector):
        (WebCore::KCanvasFEDisplacementMap::scale):
        (WebCore::KCanvasFEDisplacementMap::setScale):
        * kcanvas/device/quartz/KCanvasFilterQuartz.h:
        * kcanvas/device/quartz/KCanvasFilterQuartz.mm:
        (WebCore::getVectorForChannel):
        (WebCore::KCanvasFEDisplacementMapQuartz::getCIFilter):
        * kcanvas/device/quartz/KRenderingDeviceQuartz.mm:
        (WebCore::KRenderingDeviceQuartz::createFilterEffect):
        * kcanvas/device/quartz/filters/WKDisplacementMapFilter.cikernel: Added.
        * kcanvas/device/quartz/filters/WKDisplacementMapFilter.h: Added.
        * kcanvas/device/quartz/filters/WKDisplacementMapFilter.m: Added.
        (+[WKDisplacementMapFilter initialize]):
        (+[WKDisplacementMapFilter filterWithName:]):
        (-[WKDisplacementMapFilter init]):
        (-[WKDisplacementMapFilter outputImage]):
        * ksvg2/svg/SVGFEDisplacementMapElementImpl.cpp: Added.
        (SVGFEDisplacementMapElementImpl::SVGFEDisplacementMapElementImpl):
        (SVGFEDisplacementMapElementImpl::~SVGFEDisplacementMapElementImpl):
        (SVGFEDisplacementMapElementImpl::in1):
        (SVGFEDisplacementMapElementImpl::in2):
        (SVGFEDisplacementMapElementImpl::xChannelSelector):
        (SVGFEDisplacementMapElementImpl::yChannelSelector):
        (SVGFEDisplacementMapElementImpl::scale):
        (SVGFEDisplacementMapElementImpl::stringToChannel):
        (SVGFEDisplacementMapElementImpl::parseMappedAttribute):
        (SVGFEDisplacementMapElementImpl::filterEffect):
        * ksvg2/svg/SVGFEDisplacementMapElementImpl.h: Added.
        * ksvg2/svg/svgtags.in:

2006-02-15  Eric Seidel  <eseidel@apple.com>

        Reviewed by darin.

        Commit change forgotten after editing directory move.

        * editing/markup.cpp:
        (khtml::startMarkup): add support for serializing DOCTYPEs in xml

2006-02-15  Alexey Proskuryakov  <ap@nypop.com>

        Reviewed by Maciej.

        - fix http://bugs.webkit.org/show_bug.cgi?id=6452
         KURL::appendEscapingBadChars() doesn't know about %u-escaping.

        Test case: fast/encoding/percent-escaping.html

        * kwq/KWQKURL.mm: (appendEscapingBadChars):
        Rather than adding support for %u, remove the existing
        "do what I mean" escaping of percent characters that do not
        look like a result of prior escaping.

2006-02-14  Eric Seidel  <eseidel@apple.com>

        Fix build failure from last minute edit.

        * khtml/xsl/xsl_stylesheetimpl.cpp:
        (WebCore::XSLStyleSheetImpl::parseString):

2006-02-14  Eric Seidel  <eseidel@apple.com>

        Reviewed by darin.

        Add incremental parsing support to XMLTokenizer.
        This patch also does a few other little things:
        - removes (unused) onHold support from Tokenizer
        - adds serialization of DOCTYPEs for xml documents
        - fixes xslt support to no longer depend on synchronous parsing
        - fixes css styling for pages where xsl recursion is blocked
        http://bugs.webkit.org/show_bug.cgi?id=6057

        * dom/DocumentImpl.cpp:
        (WebCore::DocumentImpl::DocumentImpl):
        (WebCore::DocumentImpl::createProcessingInstruction):
        (WebCore::DocumentImpl::open):
        (WebCore::DocumentImpl::recalcStyleSelector):
        * dom/dom_xmlimpl.cpp:
        (WebCore::ProcessingInstructionImpl::checkStyleSheet):
        * dom/xml_tokenizer.cpp:
        (WebCore::XMLTokenizer::XMLTokenizer):
        (WebCore::XMLTokenizer::write):
        (WebCore::XMLTokenizer::startElementNs):
        (WebCore::XMLTokenizer::error):
        (WebCore::XMLTokenizer::initializeParserContext):
        (WebCore::XMLTokenizer::finish):
        (WebCore::xmlDocPtrForString):
        (WebCore::parseAttributes):
        * dom/xml_tokenizer.h:
        * khtml/editing/markup.cpp:
        (khtml::startMarkup): DOCTYPE serialization
        * khtml/html/htmltokenizer.cpp:
        (WebCore::HTMLTokenizer::HTMLTokenizer): removed onHold
        (WebCore::HTMLTokenizer::reset): removed onHold
        (WebCore::HTMLTokenizer::begin): removed onHold
        (WebCore::HTMLTokenizer::write): removed onHold
        (WebCore::HTMLTokenizer::finish): removed onHold
        * khtml/html/htmltokenizer.h: removed onHold support
        * khtml/xsl/xsl_stylesheetimpl.cpp:
        (WebCore::XSLStyleSheetImpl::XSLStyleSheetImpl):
        (WebCore::XSLStyleSheetImpl::~XSLStyleSheetImpl):
        (WebCore::XSLStyleSheetImpl::document):
        (WebCore::XSLStyleSheetImpl::setDocument):
        (WebCore::XSLStyleSheetImpl::parseString):
        (WebCore::XSLStyleSheetImpl::loadChildSheets):
        (WebCore::XSLStyleSheetImpl::compileStyleSheet):
        (WebCore::XSLStyleSheetImpl::locateStylesheetSubResource):
        * khtml/xsl/xsl_stylesheetimpl.h: moved functions to .cpp file

2006-02-14  Adele Peterson  <adele@apple.com>

        Reviewed by Maciej.

        http://bugs.webkit.org/show_bug.cgi?id=6815
        Calculate correct width for new text fields

        Tests:
        fast/forms/input-appearance-width.html
        fast/forms/input-appearance-minWidth.html

        * rendering/RenderTextField.cpp:
        (WebCore::RenderTextField::createDivStyle): Remove fixed width for text field.
        (WebCore::RenderTextField::calcMinMaxWidth): Added.  This calls RenderBlock::calcMinMaxWidth and 
         then uses the size attribute to determine what the maxWidth should be.
        * rendering/RenderTextField.h: Added calcMinMaxWidth.
        * rendering/render_theme_mac.h: Added adjustTextFieldStyle.
        * rendering/render_theme_mac.mm: 
        (WebCore::RenderThemeMac::adjustRepaintRect): Remove inflation of rect.  This is no longer necessary.
        (WebCore::RenderThemeMac::paintTextField): ditto.
        (WebCore::RenderThemeMac::setTextFieldCellState): change true to YES.
        (WebCore::RenderThemeMac::adjustTextFieldStyle): Added. This is the temporary home of the code to set the 
         right padding and margins.  When we flip the switch, this will go in html4.css.

2006-02-14  John Sullivan  <sullivan@apple.com>

        Reviewed by Tim Hatcher.

        removed -[DOMHTMLSelectElement _optionLabels], formerly used only by Safari, now unused.

        * bindings/objc/DOMHTML.mm:
        * bindings/objc/DOMPrivate.h:

2006-02-14  Timothy Hatcher  <timothy@apple.com>

        Reviewed by Justin.

        Fixed <rdar://problem/4415050> STD: WebCore build steps use echo -n, which will change
        behavior due to POSIX version of sh

        * WebCore.xcodeproj/project.pbxproj: removed the use of echo -n, replaced with printf ""

2006-02-14  Darin Adler  <darin@apple.com>

        Rubber-stamped by Eric.

        - moved editing sources from khtml/editing to editing, and renamed files with single classes

        * WebCore.xcodeproj/project.pbxproj: Added new, removed old.
        * WebCore.vcproj/WebCore/WebCore.vcproj: Ditto.

        * bridge/mac/MacFrame.mm:
        * bridge/mac/WebCoreFrameBridge.mm:
        * dom/DocumentImpl.cpp:
        * dom/dom2_rangeimpl.cpp:
        * dom/dom_position.cpp:
        * khtml/khtml_events.cpp:
        * kwq/KWQAccObject.mm:
        * kwq/KWQAccObjectCache.h:
        * kwq/KWQEditCommand.mm:
        * page/Frame.cpp:
        * page/FramePrivate.h:
        * rendering/RenderBlock.cpp:
        * rendering/RenderContainer.cpp:
        * rendering/RenderText.cpp:
        * rendering/render_br.cpp:
        * rendering/render_inline.cpp:
        * rendering/render_object.cpp:
        * rendering/render_replaced.cpp:
        Fixed up includes.

        * editing: Added.
        * editing/AppendNodeCommand.cpp: Added.
        * editing/AppendNodeCommand.h: Added.
        * editing/ApplyStyleCommand.cpp: Added.
        * editing/ApplyStyleCommand.h: Added.
        * editing/BreakBlockquoteCommand.cpp: Added.
        * editing/BreakBlockquoteCommand.h: Added.
        * editing/CompositeEditCommand.cpp: Added.
        * editing/CompositeEditCommand.h: Added.
        * editing/DeleteFromTextNodeCommand.cpp: Added.
        * editing/DeleteFromTextNodeCommand.h: Added.
        * editing/DeleteSelectionCommand.cpp: Added.
        * editing/DeleteSelectionCommand.h: Added.
        * editing/EditCommand.cpp: Added.
        * editing/EditCommand.h: Added.
        * editing/InsertIntoTextNodeCommand.cpp: Added.
        * editing/InsertIntoTextNodeCommand.h: Added.
        * editing/InsertLineBreakCommand.cpp: Added.
        * editing/InsertLineBreakCommand.h: Added.
        * editing/InsertNodeBeforeCommand.cpp: Added.
        * editing/InsertNodeBeforeCommand.h: Added.
        * editing/InsertParagraphSeparatorCommand.cpp: Added.
        * editing/InsertParagraphSeparatorCommand.h: Added.
        * editing/InsertTextCommand.cpp: Added.
        * editing/InsertTextCommand.h: Added.
        * editing/JoinTextNodesCommand.cpp: Added.
        * editing/JoinTextNodesCommand.h: Added.
        * editing/MergeIdenticalElementsCommand.cpp: Added.
        * editing/MergeIdenticalElementsCommand.h: Added.
        * editing/MoveSelectionCommand.cpp: Added.
        * editing/MoveSelectionCommand.h: Added.
        * editing/RebalanceWhitespaceCommand.cpp: Added.
        * editing/RebalanceWhitespaceCommand.h: Added.
        * editing/RemoveCSSPropertyCommand.cpp: Added.
        * editing/RemoveCSSPropertyCommand.h: Added.
        * editing/RemoveNodeAttributeCommand.cpp: Added.
        * editing/RemoveNodeAttributeCommand.h: Added.
        * editing/RemoveNodeCommand.cpp: Added.
        * editing/RemoveNodeCommand.h: Added.
        * editing/RemoveNodePreservingChildrenCommand.cpp: Added.
        * editing/RemoveNodePreservingChildrenCommand.h: Added.
        * editing/ReplaceSelectionCommand.cpp: Added.
        * editing/ReplaceSelectionCommand.h: Added.
        * editing/Selection.cpp:
        * editing/SelectionController.cpp:
        * editing/SetNodeAttributeCommand.cpp: Added.
        * editing/SetNodeAttributeCommand.h: Added.
        * editing/SplitElementCommand.cpp: Added.
        * editing/SplitElementCommand.h: Added.
        * editing/SplitTextNodeCommand.cpp: Added.
        * editing/SplitTextNodeCommand.h: Added.
        * editing/SplitTextNodeContainingElementCommand.cpp: Added.
        * editing/SplitTextNodeContainingElementCommand.h: Added.
        * editing/TypingCommand.cpp: Added.
        * editing/TypingCommand.h: Added.
        * editing/VisiblePosition.cpp: Added.
        * editing/VisiblePosition.h: Added.
        * editing/VisibleRange.cpp: Added.
        * editing/VisibleRange.h: Added.
        * editing/WrapContentsInDummySpanCommand.cpp: Added.
        * editing/WrapContentsInDummySpanCommand.h: Added.
        * editing/append_node_command.cpp: Removed.
        * editing/append_node_command.h: Removed.
        * editing/apply_style_command.cpp: Removed.
        * editing/apply_style_command.h: Removed.
        * editing/break_blockquote_command.cpp: Removed.
        * editing/break_blockquote_command.h: Removed.
        * editing/composite_edit_command.cpp: Removed.
        * editing/composite_edit_command.h: Removed.
        * editing/delete_from_text_node_command.cpp: Removed.
        * editing/delete_from_text_node_command.h: Removed.
        * editing/delete_selection_command.cpp: Removed.
        * editing/delete_selection_command.h: Removed.
        * editing/edit_command.cpp: Removed.
        * editing/edit_command.h: Removed.
        * editing/htmlediting.cpp:
        * editing/insert_into_text_node_command.cpp: Removed.
        * editing/insert_into_text_node_command.h: Removed.
        * editing/insert_line_break_command.cpp: Removed.
        * editing/insert_line_break_command.h: Removed.
        * editing/insert_node_before_command.cpp: Removed.
        * editing/insert_node_before_command.h: Removed.
        * editing/insert_paragraph_separator_command.cpp: Removed.
        * editing/insert_paragraph_separator_command.h: Removed.
        * editing/insert_text_command.cpp: Removed.
        * editing/insert_text_command.h: Removed.
        * editing/join_text_nodes_command.cpp: Removed.
        * editing/join_text_nodes_command.h: Removed.
        * editing/jsediting.cpp:
        * editing/markup.cpp:
        * editing/merge_identical_elements_command.cpp: Removed.
        * editing/merge_identical_elements_command.h: Removed.
        * editing/move_selection_command.cpp: Removed.
        * editing/move_selection_command.h: Removed.
        * editing/rebalance_whitespace_command.cpp: Removed.
        * editing/rebalance_whitespace_command.h: Removed.
        * editing/remove_css_property_command.cpp: Removed.
        * editing/remove_css_property_command.h: Removed.
        * editing/remove_node_attribute_command.cpp: Removed.
        * editing/remove_node_attribute_command.h: Removed.
        * editing/remove_node_command.cpp: Removed.
        * editing/remove_node_command.h: Removed.
        * editing/remove_node_preserving_children_command.cpp: Removed.
        * editing/remove_node_preserving_children_command.h: Removed.
        * editing/replace_selection_command.cpp: Removed.
        * editing/replace_selection_command.h: Removed.
        * editing/set_node_attribute_command.cpp: Removed.
        * editing/set_node_attribute_command.h: Removed.
        * editing/split_element_command.cpp: Removed.
        * editing/split_element_command.h: Removed.
        * editing/split_text_node_command.cpp: Removed.
        * editing/split_text_node_command.h: Removed.
        * editing/split_text_node_containing_element.cpp: Removed.
        * editing/split_text_node_containing_element_command.h: Removed.
        * editing/typing_command.cpp: Removed.
        * editing/typing_command.h: Removed.
        * editing/visible_position.cpp: Removed.
        * editing/visible_position.h: Removed.
        * editing/visible_range.cpp: Removed.
        * editing/visible_range.h: Removed.
        * editing/visible_units.cpp:
        * editing/wrap_contents_in_dummy_span_command.cpp: Removed.
        * editing/wrap_contents_in_dummy_span_command.h: Removed.

        * khtml/editing: Removed.
        * khtml/editing/Selection.cpp: Removed.
        * khtml/editing/Selection.h: Removed.
        * khtml/editing/SelectionController.cpp: Removed.
        * khtml/editing/SelectionController.h: Removed.
        * khtml/editing/append_node_command.cpp: Removed.
        * khtml/editing/append_node_command.h: Removed.
        * khtml/editing/apply_style_command.cpp: Removed.
        * khtml/editing/apply_style_command.h: Removed.
        * khtml/editing/break_blockquote_command.cpp: Removed.
        * khtml/editing/break_blockquote_command.h: Removed.
        * khtml/editing/composite_edit_command.cpp: Removed.
        * khtml/editing/composite_edit_command.h: Removed.
        * khtml/editing/delete_from_text_node_command.cpp: Removed.
        * khtml/editing/delete_from_text_node_command.h: Removed.
        * khtml/editing/delete_selection_command.cpp: Removed.
        * khtml/editing/delete_selection_command.h: Removed.
        * khtml/editing/edit_actions.h: Removed.
        * khtml/editing/edit_command.cpp: Removed.
        * khtml/editing/edit_command.h: Removed.
        * khtml/editing/html_interchange.cpp: Removed.
        * khtml/editing/html_interchange.h: Removed.
        * khtml/editing/htmlediting.cpp: Removed.
        * khtml/editing/htmlediting.h: Removed.
        * khtml/editing/insert_into_text_node_command.cpp: Removed.
        * khtml/editing/insert_into_text_node_command.h: Removed.
        * khtml/editing/insert_line_break_command.cpp: Removed.
        * khtml/editing/insert_line_break_command.h: Removed.
        * khtml/editing/insert_node_before_command.cpp: Removed.
        * khtml/editing/insert_node_before_command.h: Removed.
        * khtml/editing/insert_paragraph_separator_command.cpp: Removed.
        * khtml/editing/insert_paragraph_separator_command.h: Removed.
        * khtml/editing/insert_text_command.cpp: Removed.
        * khtml/editing/insert_text_command.h: Removed.
        * khtml/editing/join_text_nodes_command.cpp: Removed.
        * khtml/editing/join_text_nodes_command.h: Removed.
        * khtml/editing/jsediting.cpp: Removed.
        * khtml/editing/jsediting.h: Removed.
        * khtml/editing/markup.cpp: Removed.
        * khtml/editing/markup.h: Removed.
        * khtml/editing/merge_identical_elements_command.cpp: Removed.
        * khtml/editing/merge_identical_elements_command.h: Removed.
        * khtml/editing/move_selection_command.cpp: Removed.
        * khtml/editing/move_selection_command.h: Removed.
        * khtml/editing/rebalance_whitespace_command.cpp: Removed.
        * khtml/editing/rebalance_whitespace_command.h: Removed.
        * khtml/editing/remove_css_property_command.cpp: Removed.
        * khtml/editing/remove_css_property_command.h: Removed.
        * khtml/editing/remove_node_attribute_command.cpp: Removed.
        * khtml/editing/remove_node_attribute_command.h: Removed.
        * khtml/editing/remove_node_command.cpp: Removed.
        * khtml/editing/remove_node_command.h: Removed.
        * khtml/editing/remove_node_preserving_children_command.cpp: Removed.
        * khtml/editing/remove_node_preserving_children_command.h: Removed.
        * khtml/editing/replace_selection_command.cpp: Removed.
        * khtml/editing/replace_selection_command.h: Removed.
        * khtml/editing/set_node_attribute_command.cpp: Removed.
        * khtml/editing/set_node_attribute_command.h: Removed.
        * khtml/editing/split_element_command.cpp: Removed.
        * khtml/editing/split_element_command.h: Removed.
        * khtml/editing/split_text_node_command.cpp: Removed.
        * khtml/editing/split_text_node_command.h: Removed.
        * khtml/editing/split_text_node_containing_element.cpp: Removed.
        * khtml/editing/split_text_node_containing_element_command.h: Removed.
        * khtml/editing/text_affinity.h: Removed.
        * khtml/editing/text_granularity.h: Removed.
        * khtml/editing/typing_command.cpp: Removed.
        * khtml/editing/typing_command.h: Removed.
        * khtml/editing/visible_position.cpp: Removed.
        * khtml/editing/visible_position.h: Removed.
        * khtml/editing/visible_range.cpp: Removed.
        * khtml/editing/visible_range.h: Removed.
        * khtml/editing/visible_text.cpp: Removed.
        * khtml/editing/visible_text.h: Removed.
        * khtml/editing/visible_units.cpp: Removed.
        * khtml/editing/visible_units.h: Removed.
        * khtml/editing/wrap_contents_in_dummy_span_command.cpp: Removed.
        * khtml/editing/wrap_contents_in_dummy_span_command.h: Removed.

2006-02-14  John Sullivan  <sullivan@apple.com>

        Reviewed by Adele Peterson.
        
        - fixed http://bugs.webkit.org/show_bug.cgi?id=7255
        label attribute in option elements is ignored
        
        Test cases: 
        * dom/html/level2/html/HTMLOptionElement_label01.html
        * dom/html/level2/html/HTMLOptionElement_label02.html
        * dom/html/level2/html/HTMLOptionElement_label03.html

        * rendering/render_form.cpp:
        (WebCore::RenderSelect::updateFromElement):
        use label attribute, if present, when setting text on the widget.

2006-02-14  Vicki Murley <vicki@apple.com>

        Reviewed by Maciej.

        Change formatting in this file to match the style guidelines.  No spaces after
        opening parentheses or before closing parentheses. 

        * dom/DocumentImpl.cpp:
        (WebCore::DocumentImpl::createDocumentFragment):
        (WebCore::DocumentImpl::recalcStyle):
        (WebCore::DocumentImpl::attach):
        (WebCore::DocumentImpl::detach):
        (WebCore::DocumentImpl::open):
        (WebCore::DocumentImpl::write):
        (WebCore::DocumentImpl::writeln):
        (WebCore::DocumentImpl::setUserStyleSheet):
        (WebCore::DocumentImpl::determineParseMode):
        (WebCore::DocumentImpl::processHttpEquiv):
        (WebCore::DocumentImpl::childAllowed):
        (WebCore::DocumentImpl::childTypeAllowed):
        (WebCore::DocumentImpl::recalcStyleSelector):
        (WebCore::DocumentImpl::dispatchImageLoadEventsNow):
        (WebCore::DocumentImpl::domain):
        (WebCore::DocumentImpl::setDomain):
        (WebCore::DocumentImpl::parseQualifiedName):
        (WebCore::DocumentImpl::addMarker):
        (WebCore::DocumentImpl::removeMarkers):

2006-02-14  John Sullivan  <sullivan@apple.com>

        Reviewed by Tim Hatcher.

        Some cleanup from the previous checkin, inspired by Darin's comments
        
        * bridge/mac/MacFrame.h:
        * bridge/mac/MacFrame.mm:
        moved highlightAllMatchesForString out of here
        
        * bridge/mac/WebCoreFrameBridge.mm:
        (-[WebCoreFrameBridge highlightAllMatchesForString:caseSensitive:]):
        now converts NSString to QString here, rather than in Frame/MacFrame
        
        * dom/DocumentMarker.h: Added.
        (WebCore::DocumentMarker::):
        (WebCore::DocumentMarker::operator == ):
        (WebCore::DocumentMarker::operator != ):
        moved this struct to its own header file
        
        * dom/DocumentImpl.h:
        moved DocumentMarker out; now includes DocumentMarker.h        
        
        * page/Frame.h:
        * page/Frame.cpp:
        (WebCore::Frame::highlightAllMatchesForString):
        moved here from MacFrame.[h,mm]. I thought this used other code from
        MacFrame.mm but it doesn't.
        
        * rendering/InlineTextBox.h:
        removed unnecesssary variable names; use DocumentMarker::MarkerType in signature
        of paintAllMarkersOfType
        * rendering/InlineTextBox.cpp:
        (khtml::InlineTextBox::paintTextMatchMarker):
        better name for a variable, fixed bad indent
        (khtml::InlineTextBox::paintAllMarkersOfType):
        rewrote loop to bail out early if past end, for clarity;
        use DocumentMarker::MarkerType in signature
        
        * WebCore.xcodeproj/project.pbxproj:
        updated for new file        

2006-02-13  John Sullivan  <sullivan@apple.com>

        Reviewed by Tim Omernick.

        Support for highlighting multiple text matches.

        * dom/DocumentImpl.h:
        (WebCore::DocumentMarker::):
        Added new marker type TextMatch

        * bridge/mac/WebCoreFrameBridge.h:
        * bridge/mac/WebCoreFrameBridge.mm:
        (-[WebCoreFrameBridge highlightAllMatchesForString:caseSensitive:]):
        new method, calls through to MacFrame implementation
        (-[WebCoreFrameBridge clearHighlightedMatches]):
        new method, removes all markers of type TextMatch

        * bridge/mac/MacFrame.h:
        * bridge/mac/MacFrame.mm:
        (WebCore::MacFrame::highlightAllMatchesForString):
        new method, adds a document marker for each range that matches the given string

        * rendering/InlineTextBox.h:
        * rendering/InlineTextBox.cpp:
        (khtml::InlineTextBox::paint):
        Moved DocumentMarker loop into separate method paintAllMarkersOfType. We now call
        that method twice, once for spelling markers (after drawing text) and once for
        text match markers (before drawing text)
        (khtml::InlineTextBox::paintTextMatchMarker):
        new method, paints a color behind a text match marker
        (khtml::InlineTextBox::paintSpellingMarker):
        renamed from paintMarker
        (khtml::InlineTextBox::paintAllMarkersOfType):
        new method, loops through all DocumentMarkers of a particular type and calls the
        appropriate painting method for each one

2006-02-13  Darin Adler  <darin@apple.com>

        Reviewed by Maciej.

        - move pointer from frame to page here from WebKit

        * WebCore.xcodeproj/project.pbxproj: Added PageMac.h.

        * bridge/mac/PageMac.h: Added.

        * bridge/mac/MacFrame.h: Added a page parameter to the constructor.
        * bridge/mac/MacFrame.mm:
        (WebCore::MacFrame::MacFrame): Pass the page and renderer to the Frame constructor.
        Moved the call to Cache::init up into Frame, and got rid of the call to Frame::init
        since that's now handled by the constructor. Also put the code to create the
        browser extension object here.
        (WebCore::MacFrame::submitForm): Update for new method name.
        (WebCore::MacFrame::createFrame): Ditto.
        (WebCore::MacFrame::sendContextMenuEvent): Update since m_doc is a RefPtr.

        * bridge/mac/WebCoreFrameBridge.h: Changed parameters on init methods. Renamed
        the part method to impl. Added a page method.
        * bridge/mac/WebCoreFrameBridge.mm:
        (frameHasSelection): Change use of part method to impl.
        (-[WebCoreFrameBridge appendChild:]): Use m_frame directly instead of calling part method.
        (-[WebCoreFrameBridge removeChild:]): Ditto.
        (-[WebCoreFrameBridge initMainFrameWithPage:]): Added. Now does the first-time initialization
        only here and create a frame for a main frame.
        (-[WebCoreFrameBridge initSubframeWithRenderer:]): Added. Doesn't do the first-time initialization
        and creates a frame for a subframe.
        (-[WebCoreFrameBridge page]): Added.
        (-[WebCoreFrameBridge setOpener:]): Change to use impl method instead of part.
        (-[WebCoreFrameBridge executionContextForView:]): Ditto.
        (-[WebCoreFrameBridge impl]): Added.

        * bridge/mac/WebCorePageBridge.h: Removed init method and added setMainFrame: method and impl method.
        * bridge/mac/WebCorePageBridge.mm:
        (-[WebCorePageBridge init]): Changed to create a PageMac.
        (-[WebCorePageBridge setMainFrame:]): Added.
        (-[WebCorePageBridge impl]): Added.

        * bridge/mac/BrowserExtensionMac.mm:
        (WebCore::BrowserExtensionMac::createNewWindow):
        * kwq/KWQAccObject.mm:
        (-[KWQAccObject rendererForView:]):
        * kwq/KWQComboBox.mm:
        (-[KWQPopUpButtonCell trackMouse:inRect:ofView:untilMouseUp:]):
        * kwq/KWQFileButton.mm:
        (KWQFileButton::focusPolicy):
        * kwq/KWQSlider.mm:
        (QSlider::focusPolicy):
        * kwq/KWQTextArea.mm:
        (-[KWQTextAreaTextView _isResizableByUser]):
        (-[KWQTextAreaTextView _trackResizeFromMouseDown:]):
        Change methods to get from bridge back to objects to be named "impl".
        The old one was named "part".

        * page/Frame.h: Added Page and RenderPart parameter to constructor.
        Added a page function. Removed the createBrowserExtension function.
        * page/Frame.cpp:
        (WebCore::parentFromOwnerRenderer): Added. Helper for constructor.
        (WebCore::Frame::Frame): Moved all the code from init into here. Also change
        to set the parent right from the start.
        (WebCore::Frame::stopLoading): Change since m_doc is now a RefPtr.
        (WebCore::Frame::clear): Ditto.
        (WebCore::Frame::document): Ditto.
        (WebCore::Frame::setDocument): Ditto.
        (WebCore::Frame::begin): Ditto.
        (WebCore::Frame::gotoAnchor): Ditto.
        (WebCore::Frame::typingStyle): Change since m_typingStyle is now a RefPtr.
        (WebCore::Frame::setTypingStyle): Ditto.
        (WebCore::Frame::clearTypingStyle): Ditto.
        (WebCore::Frame::isFrameSet): Change since m_doc is now a RefPtr.
        (WebCore::Frame::page): Added.

        * page/FramePrivate.h: Changed initialization to use member-initialization
        syntax. Removed unused m_frames. Changed m_doc and m_typingStyle to use
        RefPtr. Added an m_frame.

        * page/Page.h: Made destructor virtual so we could have a Mac derived class.
        Added a setMainFrame function and removed the mainFrame parameter from the constructor.
        * page/Page.cpp:
        (WebCore::Page::Page): Removed the mainFrame parameter.
        (WebCore::Page::setMainFrame): Added.

2006-02-13  David Harrison  <harrison@apple.com>

        Reviewed by Justin.

        - merge VisiblePosition:isCandidate() into Position::inRenderedContent()
          These functions were answering the same question in different ways!  We
          only need one implementation.

        * khtml/editing/visible_position.cpp:
        (khtml::VisiblePosition::init):
        (khtml::VisiblePosition::previousVisiblePosition):
        (khtml::VisiblePosition::nextVisiblePosition):
        (khtml::VisiblePosition::deepEquivalent):
        * khtml/editing/visible_position.h:
        * dom/dom_position.cpp:
        (DOM::hasRenderedChildrenWithHeight):
        (DOM::Position::inRenderedContent):


        - improved table deletion.
          Fixes: delete back by word from just after table did not delete the table
                 delete forward by char or word did not delete the table
                 deleting back to a table and again did not delete the table

        * khtml/editing/htmlediting.cpp:
        (WebCore::isFirstVisiblePositionAfterTableElement):
        simpler implementation
        (WebCore::positionBeforePrecedingTableElement):
        simpler implementation
        (WebCore::isFirstVisiblePositionBeforeTableElement):
        new
        (WebCore::positionAfterFollowingTableElement):
        new
        * khtml/editing/htmlediting.h:
        * khtml/editing/SelectionController.cpp:
        (WebCore::SelectionController::modifyExtendingRightForward):
        select following table if granularity is char or word
        (WebCore::SelectionController::modifyExtendingLeftBackward):
        select preceding table if granularity is char or word
        * khtml/editing/typing_command.cpp:
        (khtml::TypingCommand::deleteKeyPressed):
        simpler implementation, and let other deleteKeyPressed do boundary checking
        (khtml::TypingCommand::forwardDeleteKeyPressed):
        simpler implementation, and let other forwardDeleteKeyPressed do boundary checking
        (khtml::TypingCommand::insertText):
        standard formatting
        (khtml::TypingCommand::insertLineBreak):
        standard formatting
        (khtml::TypingCommand::insertParagraphSeparatorInQuotedContent):
        standard formatting
        (khtml::TypingCommand::insertParagraphSeparator):
        standard formatting
        (khtml::TypingCommand::insertTextRunWithoutNewlines):
        standard formatting
        (khtml::TypingCommand::deleteKeyPressed):
        use SelectionController to extend selection, to get all the selection
        logic incl. table selection and editable/noneditable boundary checks
        (khtml::TypingCommand::forwardDeleteKeyPressed):
        use SelectionController to extend selection, to get all the selection
        logic incl. table selection and editable/noneditable boundary checks

2006-02-13  David Hyatt  <hyatt@apple.com>

        Fix for bug 5605, XSLT fails to import to arbitrary depth.  Make sure m_embedded is initialized to false
        in the XSLTStyleSheetImpl constructor.

        Reviewed by timo

        Adding xslt-import-depth.xml to fast/xsl

        * khtml/xsl/xsl_stylesheetimpl.cpp:
        (DOM::XSLStyleSheetImpl::XSLStyleSheetImpl):

2006-02-13  Dave Hyatt <hyatt@apple.com>

        Fix Win32 bustage in WebCore.

        Reviewed by darin

        * WebCore.vcproj/WebCore/WebCore.vcproj:
        * platform/Timer.cpp:
        (WebCore::operator==):
        (WebCore::operator!=):
        (WebCore::TimerBase::heapPop):

        HUGE_VAL can be used on both Windows and Mac, so replace 1e500 with
        that.

        Add == and != operators for the TimerHeapIterator.

        * platform/image-decoders/png/PNGImageDecoder.cpp:
        (WebCore::PNGImageDecoder::rowAvailable):

        Fix my bustage in the PNG decoder where I left off a stray
        parenthesis.

        * platform/win/SharedTimerWin.cpp:
        (WebCore::timerFired):
        (WebCore::setSharedTimerFireTime):
        (WebCore::stopSharedTimer):

        KillTimer should take 2 arguments.  Add some missing includes.

2006-02-12  Alexander Kellett  <lypanov@kde.org>

        Reviewed by eseidel.

        Fix http://bugs.webkit.org/show_bug.cgi?id=7207.

        No testcases as this is not possible to reproduce via anything
        other than manual interaction.

        * kcanvas/device/quartz/KCanvasFilterQuartz.mm:
        (WebCore::KCanvasFilterQuartz::getCIFilterStack):

2006-02-13  Darin Adler  <darin@apple.com>

        Reviewed by Hyatt.

        - moved QWidget to platform directory, renamed to Widget,
          split into cross-platform and platform-specific parts,
          removed some of the unused bits

        * ForwardingHeaders/qwidget.h: Removed.
        * kwq/KWQWidget.h: Removed.
        * kwq/KWQWidget.mm: Removed.

        * WebCore.vcproj/WebCore/WebCore.vcproj: Update for file removals and adds.
        * WebCore.xcodeproj/project.pbxproj: Ditto.

        * platform/Widget.h: Moved code here, fixed it up.
        * platform/Widget.cpp: Ditto.
        * platform/mac/WidgetMac.mm: Added.

        * bindings/objc/DOMHTML.mm:
        (viewForElement):
        * bridge/mac/KWQKHTMLView.cpp:
        (WebCore::FrameView::topLevelWidget):
        * bridge/mac/MacFrame.h:
        * bridge/mac/MacFrame.mm:
        (WebCore::MacFrame::createPlugin):
        (WebCore::MacFrame::nextKeyViewInFrame):
        (WebCore::MacFrame::nextKeyViewForWidget):
        (WebCore::MacFrame::currentEventIsMouseDownInWidget):
        (WebCore::MacFrame::bridgeForWidget):
        (WebCore::MacFrame::passMouseDownEventToWidget):
        (WebCore::MacFrame::passSubframeEventToSubframe):
        (WebCore::MacFrame::passWheelEventToChildWidget):
        (WebCore::MacFrame::getAppletInstanceForWidget):
        (WebCore::MacFrame::getEmbedInstanceForWidget):
        (WebCore::MacFrame::getObjectInstanceForWidget):
        * bridge/mac/WebCoreFrameBridge.mm:
        (-[WebCoreFrameBridge createFrameViewWithNSView:marginWidth:marginHeight:]):
        (-[WebCoreFrameBridge copyRenderNode:copier:]):
        (-[WebCoreFrameBridge elementForView:]):
        (-[WebCoreFrameBridge RenderObject::nodeInfoAtPoint:]):
        * dom/DocumentImpl.cpp:
        (WebCore::widgetForNode):
        (WebCore::DocumentImpl::setFocusNode):
        * khtml/ecma/kjs_window.cpp:
        (KJS::Screen::getValueProperty):
        (KJS::WindowFunc::callAsFunction):
        * khtml/html/HTMLGenericFormElementImpl.cpp:
        (WebCore::HTMLGenericFormElementImpl::isKeyboardFocusable):
        (WebCore::HTMLGenericFormElementImpl::isMouseFocusable):
        * khtml/html/html_objectimpl.cpp:
        (WebCore::HTMLEmbedElementImpl::getEmbedInstance):
        (WebCore::HTMLObjectElementImpl::getObjectInstance):
        * kwq/KWQAccObject.mm:
        (-[KWQAccObject addChildrenToArray:]):
        (-[KWQAccObject attachmentView]):
        (-[KWQAccObject doAXTextMarkerForPosition:]):
        * kwq/KWQComboBox.h:
        * kwq/KWQComboBox.mm:
        (QComboBox::frameGeometry):
        (QComboBox::setFrameGeometry):
        (QComboBox::setFont):
        (QComboBox::focusPolicy):
        (-[KWQPopUpButtonCell widget]):
        (-[KWQPopUpButton widget]):
        (-[KWQPopUpButton mouseDown:]):
        (-[KWQPopUpButton becomeFirstResponder]):
        (-[KWQPopUpButton resignFirstResponder]):
        (-[KWQPopUpButton nextKeyView]):
        (-[KWQPopUpButton previousKeyView]):
        * kwq/KWQFileButton.h:
        * kwq/KWQFileButton.mm:
        (KWQFileButton::focusPolicy):
        * kwq/KWQFrame.h:
        * kwq/KWQKCursor.h:
        * kwq/KWQKJavaAppletWidget.h:
        * kwq/KWQKJavaAppletWidget.mm:
        (KJavaAppletWidget::KJavaAppletWidget):
        * kwq/KWQLineEdit.h:
        * kwq/KWQLineEdit.mm:
        (QLineEdit::setFont):
        (QLineEdit::setPalette):
        (QLineEdit::focusPolicy):
        * kwq/KWQListBox.h:
        * kwq/KWQListBox.mm:
        (QListBox::QListBox):
        (QListBox::focusPolicy):
        (QListBox::setFont):
        (-[KWQListBoxScrollView widget]):
        (-[KWQListBoxScrollView becomeFirstResponder]):
        (-[KWQTableView mouseDown:]):
        (-[KWQTableView widget]):
        * kwq/KWQPainter.h:
        * kwq/KWQRenderTreeDebug.cpp:
        (write):
        * kwq/KWQScrollBar.h:
        * kwq/KWQScrollBar.mm:
        (-[KWQScrollBar widget]):
        (-[KWQScrollBar mouseDown:]):
        (QScrollBar::QScrollBar):
        (QScrollBar::~QScrollBar):
        * kwq/KWQScrollView.h:
        (QScrollView::QScrollView):
        * kwq/KWQScrollView.mm:
        (QScrollView::viewport):
        (QScrollView::childX):
        (QScrollView::childY):
        (QScrollView::addChild):
        (QScrollView::removeChild):
        * kwq/KWQSlider.h:
        * kwq/KWQSlider.mm:
        (-[KWQSlider mouseDown:]):
        (-[KWQSlider widget]):
        (QSlider::setFont):
        (QSlider::focusPolicy):
        * kwq/KWQTextArea.mm:
        (-[KWQTextAreaTextView widget]):
        * kwq/KWQTextEdit.h:
        * kwq/KWQTextEdit.mm:
        (QTextEdit::QTextEdit):
        (QTextEdit::setFont):
        (QTextEdit::focusPolicy):
        (QTextEdit::setPalette):
        * kwq/KWQTextField.mm:
        (-[KWQTextFieldController widget]):
        (-[KWQTextFieldController textView:shouldHandleEvent:]):
        (-[KWQTextFieldController textView:didHandleEvent:]):
        (-[KWQTextField widget]):
        (-[KWQTextField nextKeyView]):
        (-[KWQTextField previousKeyView]):
        (-[KWQSecureTextField widget]):
        (-[KWQSecureTextField nextKeyView]):
        (-[KWQSecureTextField previousKeyView]):
        (-[KWQSearchField widget]):
        (-[KWQSearchField nextKeyView]):
        (-[KWQSearchField previousKeyView]):
        * kwq/KWQView.h:
        * kwq/KWQWindowWidget.h:
        * kwq/KWQWindowWidget.mm:
        (KWQWindowWidget::topLevelWidget):
        * page/Frame.cpp:
        (WebCore::isFrameElement):
        (WebCore::Frame::frameForWidget):
        (WebCore::Frame::nodeForWidget):
        (WebCore::Frame::setDocumentFocus):
        (WebCore::Frame::clearDocumentFocus):
        (WebCore::Frame::passWidgetMouseDownEventToWidget):
        * page/Frame.h:
        * page/FrameView.cpp:
        (WebCore::FrameView::FrameView):
        (WebCore::FrameView::init):
        * page/FrameView.h:
        * page/Plugin.h:
        (WebCore::Plugin::Plugin):
        (WebCore::Plugin::view):
        * platform/Screen.h:
        * platform/mac/ScreenMac.mm:
        (WebCore::screen):
        (WebCore::screenDepth):
        (WebCore::screenRect):
        (WebCore::usableScreenRect):
        * rendering/render_applet.cpp:
        (WebCore::RenderApplet::layout):
        * rendering/render_form.cpp:
        (WebCore::ComboBoxWidget::ComboBoxWidget):
        (WebCore::RenderSelect::createListBox):
        * rendering/render_form.h:
        * rendering/render_frames.cpp:
        (WebCore::RenderPart::setWidget):
        * rendering/render_frames.h:
        * rendering/render_object.cpp:
        * rendering/render_replaced.cpp:
        (WebCore::RenderWidget::resizeWidget):
        (WebCore::RenderWidget::setQWidget):
        * rendering/render_replaced.h:
        (WebCore::RenderWidget::widget):
        Change name from QWidget to Widget, a few other changes to get compiling.

=== WebCore-521.7 ===

2006-02-12  Darin Adler  <darin@apple.com>

        Reviewed by Hyatt.

        - fix http://bugs.webkit.org/show_bug.cgi?id=7206
          REGRESSION: PDF "images" no longer render within HTML pages

        Test: fast/replaced/page-as-image.html

        * platform/Image.cpp: (WebCore::Image::setNativeData):
        Return false in the case where the PDF document has not been created yet.

2006-02-12  Darin Adler  <darin@apple.com>

        Reviewed by Maciej.

        - http://bugs.webkit.org/show_bug.cgi?id=7209
          reimplement Timer so it uses only a single timer from the underlying OS

        * WebCore.vcproj/WebCore/WebCore.vcproj: Removed old files, added new.
        * WebCore.xcodeproj/project.pbxproj: Ditto.

        * platform/Timer.h: Updated for new timer implementation.
        * platform/Timer.cpp: Added. Platform-independent implementation of timers
        in terms of a single shared timer. Uses a heap to implement a priority queue
        so we know which timer to fire first.

        * platform/SharedTimer.h: Added.
        * platform/mac/SharedTimerMac.cpp: Added.
        * platform/win/SharedTimerWin.cpp: Added.

        * platform/mac/TimerMac.cpp: Removed.
        * platform/win/TimerWin.cpp: Removed.

2006-02-12  Eric Seidel  <eseidel@apple.com>

        Reviewed by mjs.

        * loader/CachedXSLStyleSheet.cpp: removed duplicate copy of xbl code.

2006-02-12  Maciej Stachowiak  <mjs@apple.com>

        Unreviewed build fix.

        - fix build

        * bindings/scripts/CodeGeneratorJS.pm: Update for splitting of the
        dom_textimpl.h header.

2006-02-11  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by Darin.

        - rename FrameTreeNode to FrameTree and treeNode() to tree()
        http://bugs.webkit.org/show_bug.cgi?id=7210
        
        This may be slightly less accurate, but reads better.

        * WebCore.xcodeproj/project.pbxproj:
        * bridge/mac/BrowserExtensionMac.mm:
        (WebCore::BrowserExtensionMac::createNewWindow):
        * bridge/mac/MacFrame.mm:
        (WebCore::MacFrame::submitForm):
        (WebCore::MacFrame::nextKeyViewInFrameHierarchy):
        * bridge/mac/WebCoreFrameBridge.mm:
        (-[WebCoreFrameBridge firstChild]):
        (-[WebCoreFrameBridge lastChild]):
        (-[WebCoreFrameBridge childCount]):
        (-[WebCoreFrameBridge previousSibling]):
        (-[WebCoreFrameBridge nextSibling]):
        (-[WebCoreFrameBridge appendChild:]):
        (-[WebCoreFrameBridge removeChild:]):
        (-[WebCoreFrameBridge setParent:]):
        (-[WebCoreFrameBridge parent]):
        (-[WebCoreFrameBridge setName:]):
        (-[WebCoreFrameBridge name]):
        * dom/DocumentImpl.cpp:
        (WebCore::DocumentImpl::parentDocument):
        * khtml/ecma/kjs_window.cpp:
        (KJS::Window::getValueProperty):
        (KJS::Window::put):
        (KJS::Window::isSafeScript):
        (KJS::WindowFunc::callAsFunction):
        * khtml/html/html_baseimpl.cpp:
        (WebCore::HTMLFrameElementImpl::isURLAllowed):
        * khtml/html/html_headimpl.cpp:
        (WebCore::HTMLLinkElementImpl::process):
        * page/Frame.cpp:
        (WebCore::Frame::stopLoading):
        (WebCore::Frame::clear):
        (WebCore::Frame::stopAnimations):
        (WebCore::Frame::checkCompleted):
        (WebCore::Frame::checkEmitLoadEvent):
        (WebCore::Frame::slotChildCompleted):
        (WebCore::Frame::findFrame):
        (WebCore::Frame::setZoomFactor):
        (WebCore::Frame::frameNames):
        (WebCore::Frame::frames):
        (WebCore::Frame::childFrameNamed):
        (WebCore::Frame::incrementFrameCount):
        (WebCore::Frame::decrementFrameCount):
        (WebCore::Frame::topLevelFrameCount):
        (WebCore::Frame::selectFrameElementInParentIfFullySelected):
        (WebCore::Frame::userGestureHint):
        (WebCore::Frame::canCachePage):
        (WebCore::Frame::updatePolicyBaseURL):
        (WebCore::Frame::setPolicyBaseURL):
        (WebCore::Frame::tree):
        (WebCore::Frame::frameDetached):
        (WebCore::Frame::updateBaseURLForEmptyDocument):
        * page/Frame.h:
        * page/FramePrivate.h:
        * page/FrameTree.cpp: Added.
        (WebCore::FrameTree::~FrameTree):
        (WebCore::FrameTree::setName):
        (WebCore::FrameTree::appendChild):
        (WebCore::FrameTree::removeChild):
        * page/FrameTree.h: Added.
        (WebCore::FrameTree::FrameTree):
        * page/FrameTreeNode.cpp: Removed.
        * page/FrameTreeNode.h: Removed.
        * rendering/render_frames.cpp:
        (WebCore::isURLAllowed):

2006-02-12  Dave Hyatt <hyatt@apple.com>

        Fix for bug 7182, animated GIFs don't clear previous animation
        frames.  This checkin fixes the decoders in our tree (used on
        Win32 only).  It does not address the problem with ImageIO
        on Mac (which has the same bug).  This has been filed separately
        as Radar bug #4442031.

        Reviewed by mjs

        * platform/image-decoders/ImageDecoder.h:
        (WebCore::RGBA32Buffer::rect):
        (WebCore::RGBA32Buffer::setRect):
        (WebCore::RGBA32Buffer::ensureHeight):
        * platform/image-decoders/gif/GIFImageDecoder.cpp:
        (WebCore::GIFImageDecoder::initFrameBuffer):
        * platform/image-decoders/png/PNGImageDecoder.cpp:
        (WebCore::PNGImageDecoder::rowAvailable):

2006-02-11  Geoffrey Garen  <ggaren@apple.com>

        - Fixed bad free resulting from 0 legnth StringImpl

        No test case because currently this bug only has the effect of a bad
        free on exit().

        * platform/StringImpl.cpp:
        (WebCore::StringImpl::StringImpl): Factored varied approaches to
        initialization into two common routines: initWithChar and
        initWithQChar. The common rule is: if we're not going to allocate
        a string, make sure to set s to 0 so fastFree doesn't try to free it
        later. For speed, initWithQChar uses memcpy() -- that's the only
        difference between the two.
        (WebCore::StringImpl::initWithChar):
        (WebCore::StringImpl::initWithQChar):
        * platform/StringImpl.h:

2006-02-11  Maciej Stachowiak  <mjs@apple.com>

        Rubber stamped by Eric.

        - split dom_textimpl.{h,cpp} by class.

        * WebCore.xcodeproj/project.pbxproj:
        * bindings/objc/DOM.mm:
        * bridge/mac/MacFrame.mm:
        * dom/CDATASectionImpl.cpp: Added.
        * dom/CDATASectionImpl.h: Added.
        * dom/CharacterDataImpl.cpp: Added.
        * dom/CharacterDataImpl.h: Added.
        * dom/CommentImpl.cpp: Added.
        * dom/CommentImpl.h: Added.
        * dom/DocumentImpl.cpp:
        * dom/EditingTextImpl.cpp: Added.
        * dom/EditingTextImpl.h: Added.
        * dom/NodeImpl.cpp:
        * dom/TextImpl.cpp: Added.
        * dom/TextImpl.h: Added.
        * dom/dom2_rangeimpl.cpp:
        * dom/dom_elementimpl.cpp:
        * dom/dom_textimpl.cpp: Removed.
        * dom/dom_textimpl.h: Removed.
        * dom/xml_tokenizer.cpp:
        * khtml/ecma/kjs_dom.cpp:
        * khtml/ecma/kjs_html.cpp:
        * khtml/editing/SelectionController.cpp:
        * khtml/editing/apply_style_command.cpp:
        * khtml/editing/break_blockquote_command.cpp:
        * khtml/editing/composite_edit_command.cpp:
        * khtml/editing/delete_from_text_node_command.cpp:
        * khtml/editing/delete_selection_command.cpp:
        * khtml/editing/htmlediting.cpp:
        * khtml/editing/insert_into_text_node_command.cpp:
        * khtml/editing/insert_line_break_command.cpp:
        * khtml/editing/insert_paragraph_separator_command.cpp:
        * khtml/editing/insert_text_command.cpp:
        * khtml/editing/join_text_nodes_command.cpp:
        * khtml/editing/markup.cpp:
        * khtml/editing/rebalance_whitespace_command.cpp:
        * khtml/editing/replace_selection_command.cpp:
        * khtml/editing/split_text_node_command.cpp:
        * khtml/editing/split_text_node_containing_element.cpp:
        * khtml/editing/visible_position.cpp:
        * khtml/html/HTMLElementImpl.cpp:
        * khtml/html/HTMLKeygenElementImpl.cpp:
        * khtml/html/HTMLOptionElementImpl.cpp:
        * khtml/html/HTMLTextAreaElementImpl.cpp:
        * khtml/html/html_headimpl.cpp:
        * khtml/html/html_objectimpl.cpp:
        * khtml/html/htmlparser.cpp:
        * khtml/xsl/xslt_processorimpl.cpp:
        * page/Frame.cpp:
        * rendering/RenderText.h:
        * rendering/render_frames.cpp:

2006-02-11  Alexander Kellett  <lypanov@kde.org>

        Reviewed by eseidel.

        - Fixing http://bugs.webkit.org/show_bug.cgi?id=6942
          Implement support for "em" and "ex" relative lengths.

        - Layout tests changes:
            Fixed: svg/W3C-SVG-1.1/coords-units-03-b.svg
            New:   svg/custom/coords-relative-units-transforms.svg

        * ksvg2/svg/SVGLengthImpl.cpp:
        (SVGLengthImpl::SVGLengthImpl):
        (SVGLengthImpl::value):
        (SVGLengthImpl::updateValue):
        (SVGLengthImpl::updateValueInSpecifiedUnits):
        * ksvg2/svg/SVGLengthImpl.h:

2006-02-11  Darin Adler  <darin@apple.com>

        Rubber-stamped by Eric.

        - renamed all the platform/mac files to have a Mac suffix
          (Hyatt and I discussed this change recently)

        * WebCore.xcodeproj/project.pbxproj:
        * platform/mac/Color.mm: Removed.
        * platform/mac/ColorMac.mm: Added.
        * platform/mac/FloatPoint.mm: Removed.
        * platform/mac/FloatPointMac.mm: Added.
        * platform/mac/FloatRect.mm: Removed.
        * platform/mac/FloatRectMac.mm: Added.
        * platform/mac/FloatSize.mm: Removed.
        * platform/mac/FloatSizeMac.mm: Added.
        * platform/mac/Image.mm: Removed.
        * platform/mac/ImageMac.mm: Added.
        * platform/mac/ImageSource.cpp: Removed.
        * platform/mac/ImageSourceMac.cpp: Added.
        * platform/mac/IntPoint.mm: Removed.
        * platform/mac/IntPointMac.mm: Added.
        * platform/mac/IntRect.mm: Removed.
        * platform/mac/IntRectMac.mm: Added.
        * platform/mac/IntSize.mm: Removed.
        * platform/mac/IntSizeMac.mm: Added.
        * platform/mac/QString.mm: Removed.
        * platform/mac/QStringMac.mm: Added.
        * platform/mac/Screen.mm: Removed.
        * platform/mac/ScreenMac.mm: Added.
        * platform/mac/SystemTime.cpp: Removed.
        * platform/mac/SystemTimeMac.cpp: Added.
        * platform/mac/Timer.cpp: Removed.
        * platform/mac/TimerMac.cpp: Added.

2006-02-11  Eric Seidel  <eseidel@apple.com>

        Rubber-stamped by darin.

        Push kcanvas into WebCore namespace.
        Fix KSVG2 to use WebCore namespace.
        Remove all uses of khtml:: and KDOM:: from SVG code.
        
        Too many files changed to bother showing here.

2006-02-11  Mitz Pettel  <opendarwin.org@mitzpettel.com>
 
         Test: fast/table/edge-offsets.html
 
         Reviewed by Hyatt.
 
         - fix http://bugs.webkit.org/show_bug.cgi?id=7054
           Vertical scroll bars do not appear or do not scroll completely
 
         * rendering/RenderTableSection.cpp:
         (WebCore::RenderTableSection::lowestPosition): Override the superclass implementation
         to return the lowest of all the cells' lowest positions and the section's.
         (WebCore::RenderTableSection::rightmostPosition): Ditto for rightmost.
         (WebCore::RenderTableSection::leftmostPosition): Ditto for leftmost.
         * rendering/RenderTableSection.h:
 
2006-02-11  Mitz Pettel  <opendarwin.org@mitzpettel.com>
 
        No test until we figure out how to make one.

         Reviewed by Darin.
 
         - fix http://bugs.webkit.org/show_bug.cgi?id=7189
           XSLT result parsing stops prematurely
 
         * khtml/xsl/xslt_processorimpl.cpp:
         (DOM::XSLTProcessorImpl::createDocumentFromSource): Removed the call to setParsing(false) from here
         since it stopped parsing prematurely. Now the frame will call it when the tokenizer is finished.
         * page/Frame.cpp:
         (WebCore::Frame::clear): Disconnect the finishedParsing signal handler from the document.
         (WebCore::Frame::setDocument): Disconnect the signal handler from the old document and
         connect it to the new document.

2006-02-11  Mitz Pettel  <opendarwin.org@mitzpettel.com>
 
         Reviewed by Hyatt.
 
         - fix http://bugs.webkit.org/show_bug.cgi?id=6821
           Fix for 5983 will not always update hover correctly.
 
         * khtml/xml/DocumentImpl.cpp:
         (WebCore::DocumentImpl::hoveredNodeDetached): Added this method. Moved the hover logic from
         NodeImpl::detach here, modified to use the DOM tree instead of hoverAncestor,
         to handle the case that the hover node is a text node, and to schedule an update
         of hover state.
         (WebCore::DocumentImpl::activeChainNodeDetached): Added this method to trim the
         active chain above the node being detached.
         * khtml/xml/DocumentImpl.h:
         * khtml/xml/NodeImpl.cpp:
         (WebCore::NodeImpl::detach): Moved most of the hover logic out of here into
         DocumentImpl. Reset m_active and m_inActiveChain and call activeChainNodeDetached
         when detaching an active node. 
         * manual-tests/bugzilla-6821.html: Added.
         * page/FrameView.cpp:
         (WebCore::FrameViewPrivate::FrameViewPrivate): Added hover-state update timer.
         (WebCore::FrameViewPrivate::reset):
         (WebCore::FrameView::~FrameView):
         (WebCore::FrameView::viewportMouseMoveEvent):
         (WebCore::FrameView::hoverTimerFired): Call DocumentImpl::prepareMouseEvent
         when the timer fires to cause hover state to update.
         (WebCore::FrameView::scheduleHoverStateUpdate): Added.
         * page/FrameView.h:
 
2006-02-11  Alexey Proskuryakov  <ap@nypop.com>

        Reviewed by Darin.

       - fix http://bugs.webkit.org/show_bug.cgi?id=3400
         setting the .src of an iframe to the same value does not reload page

        Test cases: 
        * fast/frames/frame-set-same-location.html
        * fast/frames/frame-set-same-src.html
        * fast/frames/iframe-set-same-location.html
        * fast/frames/iframe-set-same-src.html

        * khtml/html/html_baseimpl.cpp:
        (WebCore::HTMLFrameElementImpl::setLocation):
        Remove the check for the new URL being different from the current one.
        Moved updateForNewURL() code into setLocation().
        * khtml/html/html_baseimpl.h:

2006-02-10  Eric Seidel  <eseidel@apple.com>

        Reviewed by hyatt.

        Adding support for external entity declarations in XSLT.
        http://bugs.webkit.org/show_bug.cgi?id=7184
        <rdar://problem/4271696> support external DTD references in XSLT

        * dom/xml_tokenizer.cpp:
        (WebCore::OffsetBuffer::OffsetBuffer): new support class
        (WebCore::OffsetBuffer::readOutBytes): read method
        (WebCore::shouldAllowExternalLoad): for preventing common urls
        (WebCore::openFunc): now does a synchronous data load
        (WebCore::readFunc): returns data from the offset buffer
        (WebCore::closeFunc): deletes offset buffer
        (WebCore::setLoaderForLibXMLCallbacks): helper function
        (WebCore::createQStringParser): cleanup
        (WebCore::XMLTokenizer::finish): 
        * dom/xml_tokenizer.h:
        * khtml/xsl/xsl_stylesheetimpl.cpp:
        (WebCore::XSLStyleSheetImpl::parseString):
        * khtml/xsl/xsl_stylesheetimpl.h:

2006-02-10  Beth Dakin  <bdakin@apple.com>

        Reviewed by Hyatt

        Fix for <rdar://problem/4149655> Frequently reported crash, repro 
        at lastminute.se in khtml::RenderBlock::createLineBoxes

        Some crazy combination of an anonymous table, an inline form, and 
        generated content caused table objects to be added to a flow and 
        then split. This is very bad. Once the crash was fixed, there were 
        still some rendering issues that this patch also fixes. We needed 
        to make sure we only special case forms for non-CSS tables so that 
        the form and generated content render as expected.

        * rendering/RenderContainer.cpp:
        (WebCore::RenderContainer::appendChildNode): Assert that if we are 
        a block flow, our child cannot be a table object.
        (WebCore::RenderContainer::insertChildNode): Same.
        * rendering/RenderTable.cpp:
        (WebCore::RenderTable::addChild): Only special-case forms if we are 
        not a CSS table.
        * rendering/RenderTableRow.cpp:
        (WebCore::RenderTableRow::addChild): Same.
        * rendering/RenderTableSection.cpp:
        (WebCore::RenderTableSection::addChild): Same.
        * rendering/render_inline.cpp:
        (WebCore::RenderInline::addChildToFlow): Here is the crash fix. Check to make sure our containing block is a block flow.

2006-02-10  Darin Adler  <darin@apple.com>

        - fixed the build, this time for sure

        * bindings/js/JSDOMCore.cpp: Touch this file, since the project doesn't get
        the dependencies right.
        * bindings/js/JSDOMEvents.cpp: Ditto.

        * bridge/mac/WebCoreFrameBridge.mm: (aeDescFromJSValue): Fix an uninitialized
        variable warning and also tightened the code for Boolean, String, and Number
        up a bit.

2006-02-10  Geoffrey Garen  <ggaren@apple.com>

        Reviewed by eric.

        - Fixed build.

        * bridge/mac/WebCoreFrameBridge.mm:
        * khtml/ecma/kjs_binding.h:
        (KJS::DOMFunction::toPrimitive):
        * khtml/ecma/kjs_dom.cpp:
        (KJS::DOMNode::toPrimitive):
        (KJS::DOMNodeList::toPrimitive):
        * khtml/ecma/kjs_dom.h:
        * khtml/ecma/kjs_window.cpp:
        (KJS::Location::toPrimitive):
        (KJS::Selection::toPrimitive):
        * khtml/ecma/kjs_window.h:

2006-02-09  Darin Adler  <darin@apple.com>

        Reviewed by Hyatt.

        - <rdar://problem/4430614> RenderThemeMac crashes under GC

        * rendering/render_theme_mac.mm:
        (WebCore::RenderThemeMac::RenderThemeMac): Initialize all the pointers.
        (WebCore::RenderThemeMac::setCheckboxCellState): Use KWQRetainNSRelease so
        we can retain a pointer to an ObjC object in a C++ class.
        (WebCore::RenderThemeMac::setRadioCellState): Ditto.
        (WebCore::RenderThemeMac::setButtonCellState): Ditto.
        (WebCore::RenderThemeMac::setTextFieldCellState): Ditto.

        * kwq/KWQResourceLoader.h: Remove unneeded forward declaration.

2006-02-09  Darin Adler  <darin@apple.com>

        Reviewed by Eric and Geoff.

        - changed basic DOM mutation calls to assert that "this"
          is not floating, then added more uses of RefPtr to prevent the
          assertion from firing (at least during my testing and layout tests)

        - removed use of PassRefPtr as the type of a local variable; after talking
          with Maciej and Eric, this type of use is now "deprecated"

        * bindings/js/JSDOMCore.cpp: Touched this file to get things to build.

        * bindings/objc/DOM.mm:
        (-[DOMRange extractContents]):
        (-[DOMRange cloneContents]):
        (-[DOMRange cloneRange]):
        * khtml/ecma/kjs_range.cpp:
        (KJS::DOMRange::getValueProperty):
        (KJS::DOMRangeProtoFunc::callAsFunction):
        * khtml/editing/Selection.cpp:
        (WebCore::Selection::toRange):
        * bridge/mac/WebCoreFrameBridge.mm:
        (-[WebCoreFrameBridge documentFragmentWithMarkupString:baseURLString:]):
        * dom/ContainerNodeImpl.cpp:
        (WebCore::ContainerNodeImpl::insertBefore):
        (WebCore::ContainerNodeImpl::replaceChild):
        (WebCore::ContainerNodeImpl::removeChild):
        (WebCore::ContainerNodeImpl::appendChild):
        * dom/DocPtr.h: Removed uses of NULL and unused deprecated functions.
        * dom/dom2_rangeimpl.h:
        * dom/dom2_rangeimpl.cpp:
        (WebCore::RangeImpl::RangeImpl):
        (WebCore::RangeImpl::startContainer):
        (WebCore::RangeImpl::endContainer):
        (WebCore::RangeImpl::commonAncestorContainer):
        (WebCore::RangeImpl::setStart):
        (WebCore::RangeImpl::setEnd):
        (WebCore::RangeImpl::collapse):
        (WebCore::RangeImpl::compareBoundaryPoints):
        (WebCore::RangeImpl::boundaryPointsValid):
        (WebCore::RangeImpl::processContents):
        (WebCore::RangeImpl::extractContents):
        (WebCore::RangeImpl::cloneContents):
        (WebCore::RangeImpl::insertNode):
        (WebCore::RangeImpl::createContextualFragment):
        (WebCore::RangeImpl::detach):
        (WebCore::RangeImpl::cloneRange):
        (WebCore::RangeImpl::selectNodeContents):
        (WebCore::RangeImpl::surroundContents):
        (WebCore::RangeImpl::containedByReadOnly):
        (WebCore::RangeImpl::startPosition):
        (WebCore::RangeImpl::endPosition):
        (WebCore::RangeImpl::startNode):
        (WebCore::RangeImpl::editingStartPosition):
        (WebCore::rangeOfContents):
        * dom/dom_elementimpl.h:
        * dom/dom_elementimpl.cpp:
        (WebCore::AttrImpl::AttrImpl):
        (WebCore::AttrImpl::~AttrImpl):
        (WebCore::AttrImpl::setValue):
        (WebCore::AttrImpl::childTypeAllowed):
        (WebCore::AttrImpl::childrenChanged):
        (WebCore::ElementImpl::removeAttributeNode):
        (WebCore::NamedAttrMapImpl::clearAttributes):
        (WebCore::CSSMappedAttributeDeclarationImpl::~CSSMappedAttributeDeclarationImpl):
        (WebCore::MappedAttributeImpl::clone):
        * dom/DocumentFragmentImpl.cpp:
        (DOM::DocumentFragmentImpl::cloneNode):
        * dom/dom_xmlimpl.cpp:
        (WebCore::EntityReferenceImpl::cloneNode):
        (WebCore::ProcessingInstructionImpl::ProcessingInstructionImpl):
        (WebCore::ProcessingInstructionImpl::checkStyleSheet):
        (WebCore::ProcessingInstructionImpl::setStyleSheet):
        * dom/dom_position.cpp:
        * khtml/editing/break_blockquote_command.cpp:
        (WebCore::BreakBlockquoteCommand::doApply):
        * khtml/editing/composite_edit_command.cpp:
        (WebCore::CompositeEditCommand::appendBlockPlaceholder):
        (WebCore::CompositeEditCommand::insertBlockPlaceholder):
        (WebCore::CompositeEditCommand::moveParagraphContentsToNewBlockIfNecessary):
        (WebCore::createBlockPlaceholderElement):
        * khtml/editing/delete_selection_command.cpp:
        (WebCore::DeleteSelectionCommand::insertPlaceholderForAncestorBlockContent):
        (WebCore::DeleteSelectionCommand::moveNodesAfterNode):
        * khtml/editing/html_interchange.cpp:
        * khtml/editing/htmlediting.cpp:
        (WebCore::rebalanceWhitespaceInTextNode):
        (WebCore::nonBreakingSpaceString):
        (WebCore::createDefaultParagraphElement):
        (WebCore::createBreakElement):
        (WebCore::createTabSpanElement):
        * khtml/editing/insert_line_break_command.cpp:
        (khtml::InsertLineBreakCommand::doApply):
        * khtml/editing/insert_paragraph_separator_command.cpp:
        (WebCore::InsertParagraphSeparatorCommand::doApply):
        * khtml/editing/insert_paragraph_separator_command.h:
        * khtml/editing/insert_text_command.cpp:
        (khtml::InsertTextCommand::insertTab):
        * khtml/editing/markup.cpp:
        (khtml::createFragmentFromMarkup):
        (khtml::createParagraphContentsFromString):
        (khtml::createFragmentFromText):
        (khtml::createFragmentFromNodeList):
        * khtml/editing/rebalance_whitespace_command.cpp:
        * khtml/editing/replace_selection_command.cpp:
        (WebCore::ReplacementFragment::ReplacementFragment):
        (WebCore::ReplacementFragment::insertFragmentForTestRendering):
        (WebCore::ReplaceSelectionCommand::doApply):
        * khtml/editing/visible_text.cpp:
        (khtml::CharacterIterator::range):
        (khtml::findPlainText):
        * khtml/html/HTMLElementImpl.cpp:
        (WebCore::HTMLElementImpl::cloneNode):
        * khtml/html/htmlparser.cpp:
        (HTMLParser::handleResidualStyleCloseTagAcrossBlocks):
        * ksvg2/svg/SVGTransformableImpl.cpp:
        (SVGTransformableImpl::parseTransformAttribute):
        * ksvg2/svg/SVGUseElementImpl.cpp:
        (SVGUseElementImpl::closeRenderer):

2006-02-09  Alexander Kellett  <lypanov@kde.org>

        Reviewed and landed by Maciej. 
        
        Factor out common parts of Linear/Radial GradientQuartz 
        up into KRenderingPaintServerGradientQuartz.

        Cleanup only, no layout tests needed or affected.

        * kcanvas/device/KRenderingPaintServer.h:
        * kcanvas/device/quartz/KRenderingPaintServerGradientQuartz.mm:
        (KRenderingPaintServerGradientQuartz::updateQuartzGradientCache):
        (KRenderingPaintServerGradientQuartz::draw):
        (KRenderingPaintServerGradientQuartz::setup):
        (KRenderingPaintServerGradientQuartz::renderPath):
        (KRenderingPaintServerGradientQuartz::teardown):
        * kcanvas/device/quartz/KRenderingPaintServerQuartz.h:
        (KRenderingPaintServerLinearGradientQuartz::draw):
        (KRenderingPaintServerLinearGradientQuartz::setup):
        (KRenderingPaintServerLinearGradientQuartz::teardown):
        (KRenderingPaintServerLinearGradientQuartz::renderPath):
        (KRenderingPaintServerRadialGradientQuartz::draw):
        (KRenderingPaintServerRadialGradientQuartz::setup):
        (KRenderingPaintServerRadialGradientQuartz::teardown):
        (KRenderingPaintServerRadialGradientQuartz::renderPath):

2006-02-09  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by Hyatt.

        - various Frame cleanup:
        
        Make Frame-related classes Noncopyable.
        Remove nearly all of Frame's friends.
        Remove some unused stuff.
        Remove unneeded class forward declarations from Frame.h

        * page/Frame.cpp:
        * page/Frame.h:
        * page/FrameTreeNode.h:
        (WebCore::FrameTreeNode::FrameTreeNode):
        (WebCore::FrameTreeNode::name):
        (WebCore::FrameTreeNode::parent):
        (WebCore::FrameTreeNode::setParent):
        (WebCore::FrameTreeNode::nextSibling):
        (WebCore::FrameTreeNode::previousSibling):
        (WebCore::FrameTreeNode::firstChild):
        (WebCore::FrameTreeNode::lastChild):
        (WebCore::FrameTreeNode::childCount):
        * page/FrameView.cpp:
        (WebCore::FrameView::viewportMouseMoveEvent):
        * page/Page.h:
        (WebCore::Page::mainFrame):
        * page/Plugin.h:
        (WebCore::Plugin::Plugin):
        (WebCore::Plugin::view):

2006-02-09  Dave Hyatt <hyatt@apple.com

        Minor image cleanup.  Move some variables that all the
        image decoders have in common up into the base class.

        Stub out the boring parts of the JPEG decoder also, so that
        the patch that does the decoding will be all meat. :)

        Reviewed by mjs

        * WebCore.vcproj/WebCore/WebCore.vcproj:
        * platform/image-decoders/ImageDecoder.h:
        (WebCore::ImageDecoder::m_failed):
        (WebCore::ImageDecoder::size):
        (WebCore::ImageDecoder::failed):
        (WebCore::ImageDecoder::setFailed):
        * platform/image-decoders/gif/GIFImageDecoder.cpp:
        (WebCore::GIFImageDecoder::GIFImageDecoder):
        (WebCore::GIFImageDecoder::~GIFImageDecoder):
        (WebCore::GIFImageDecoder::setData):
        (WebCore::GIFImageDecoder::isSizeAvailable):
        (WebCore::GIFImageDecoder::repetitionCount):
        (WebCore::GIFImageDecoder::frameBufferAtIndex):
        (WebCore::GIFImageDecoder::decode):
        (WebCore::GIFImageDecoder::decodingHalted):
        (WebCore::GIFImageDecoder::haveDecodedRow):
        (WebCore::GIFImageDecoder::gifComplete):
        * platform/image-decoders/gif/GIFImageDecoder.h:
        * platform/image-decoders/jpeg/JPEGImageDecoder.cpp: Added.
        (WebCore::JPEGImageReader::JPEGImageReader):
        (WebCore::JPEGImageReader::~JPEGImageReader):
        (WebCore::JPEGImageReader::close):
        (WebCore::JPEGImageReader::decode):
        (WebCore::JPEGImageDecoder::JPEGImageDecoder):
        (WebCore::JPEGImageDecoder::~JPEGImageDecoder):
        (WebCore::JPEGImageDecoder::setData):
        (WebCore::JPEGImageDecoder::isSizeAvailable):
        (WebCore::JPEGImageDecoder::frameBufferAtIndex):
        (WebCore::JPEGImageDecoder::decode):
        * platform/image-decoders/jpeg/JPEGImageDecoder.h:
        * platform/image-decoders/png/PNGImageDecoder.cpp:
        (WebCore::PNGImageDecoder::PNGImageDecoder):
        * platform/image-decoders/png/PNGImageDecoder.h:

2006-02-09  Maciej Stachowiak  <mjs@apple.com>

        Rubber-stamped by Hyatt.
        
        - moved khtml/xml to dom

        * dom: moved from khtml/xml
        * WebCore.xcodeproj/project.pbxproj: Updated for new file locations.
        * WebCore+SVG/KDOMHeaders.h: Updated for new header locations.
        * dom/dom2_rangeimpl.cpp: ditto
        * dom/dom2_traversalimpl.cpp: ditto
        * dom/dom_textimpl.cpp: ditto
        * dom/dom_xmlimpl.cpp: ditto
        * khtml/dom/dom2_events.cpp: ditto
        * khtml/ecma/kjs_binding.cpp: ditto
        * khtml/ecma/kjs_dom.cpp: ditto
        * khtml/ecma/kjs_events.cpp: ditto
        * khtml/ecma/kjs_html.cpp: ditto
        * khtml/ecma/kjs_range.cpp: ditto
        * khtml/ecma/kjs_views.cpp: ditto
        * khtml/editing/Selection.cpp: ditto
        * khtml/editing/SelectionController.cpp: ditto
        * khtml/editing/delete_from_text_node_command.cpp: ditto
        * khtml/editing/edit_command.cpp: ditto
        * khtml/editing/insert_into_text_node_command.cpp: ditto
        * khtml/editing/insert_line_break_command.cpp: ditto
        * khtml/editing/insert_paragraph_separator_command.cpp: ditto
        * khtml/editing/insert_text_command.cpp: ditto
        * khtml/editing/join_text_nodes_command.cpp: ditto
        * khtml/editing/markup.cpp: ditto
        * khtml/editing/merge_identical_elements_command.cpp: ditto
        * khtml/editing/rebalance_whitespace_command.cpp: ditto
        * khtml/editing/remove_node_attribute_command.cpp: ditto
        * khtml/editing/set_node_attribute_command.cpp: ditto
        * khtml/editing/split_element_command.cpp: ditto
        * khtml/editing/split_text_node_command.cpp: ditto
        * khtml/editing/split_text_node_containing_element.cpp: ditto
        * khtml/editing/visible_position.cpp: ditto
        * khtml/editing/visible_position.h: ditto
        * khtml/editing/visible_text.cpp: ditto
        * khtml/editing/visible_text.h: ditto
        * khtml/editing/visible_units.cpp: ditto
        * khtml/editing/wrap_contents_in_dummy_span_command.cpp: ditto
        * khtml/html/HTMLElementImpl.h: ditto
        * khtml/html/html_documentimpl.cpp: ditto
        * khtml/html/html_headimpl.cpp: ditto
        * khtml/xbl/xbl_binding_manager.cpp: ditto
        * khtml/xbl/xbl_tokenizer.cpp: ditto
        * khtml/xbl/xbl_tokenizer.h: ditto
        * ksvg2/svg/SVGAElementImpl.cpp: ditto
        * rendering/InlineTextBox.cpp: ditto
        * rendering/RenderContainer.cpp: ditto
        * rendering/RenderText.h: ditto
        * rendering/RenderTextField.cpp: ditto
        * rendering/render_frames.cpp: ditto
        * rendering/render_layer.cpp: ditto

2006-02-08  Mitz Pettel  <opendarwin.org@mitzpettel.com>

        Test: fast/block/positioning/window-height-change.html

        Reviewed by Hyatt.
        
        - fix http://bugs.webkit.org/show_bug.cgi?id=5813
          positioned blocks don't update when resizing the window vertically

        * rendering/RenderBlock.cpp:
        (WebCore::RenderBlock::layoutBlock): Always relayout positioned children of
        the root, since their positions may depend on the viewport's height which
        may have changed.
        * rendering/render_flexbox.cpp:
        (khtml::RenderFlexibleBox::layoutBlock): Ditto.

2006-02-08  Dave Hyatt <hyatt@apple.com>

        Add support for tiling of backgrounds using Cairo.

        Reviewed by darin

        * Image Viewer/ImageView.cpp:
        * platform/cairo/ImageCairo.cpp:
        (WebCore::Image::tileInRect):

2006-02-08  Boris Daljevic  <boris@backbase.com>

        Reviewed and tweaked by Darin.

        - fix http://bugs.webkit.org/show_bug.cgi?id=6648
          Safari strips namespace prefix when using setAttribute(), but should treat it as part of name

        Test: fast/dom/Element/setAttribute-with-colon.html

        * khtml/xml/dom_elementimpl.h: (ElementImpl::setAttribute): Removed body
        * khtml/xml/dom_elementimpl.cpp: (ElementImpl::setAttribute): Changed code so that
        attribute is not parsed into prefix and local name.

2006-02-08  Justin Garcia  <justin.garcia@apple.com>

        Original patch by Graham Dennis, reviewed by me
        Changes made by me, reviewed by thatcher

        <http://bugs.webkit.org/show_bug.cgi?id=3982>
        webViewDidBeginEditing, webViewDidEndEditing notification methods not called on delegate

        * bridge/mac/MacFrame.h:
        * bridge/mac/MacFrame.mm:
        (WebCore::MacFrame::didBeginEditing):
        (WebCore::MacFrame::didEndEditing):
        * bridge/mac/WebCoreFrameBridge.h:
        * khtml/xml/DocumentImpl.cpp:
        (WebCore::DocumentImpl::didBeginEditing):
        (WebCore::DocumentImpl::didEndEditing):
        (WebCore::DocumentImpl::setFocusNode):
        * khtml/xml/DocumentImpl.h:
        * khtml/xml/dom_elementimpl.cpp:
        (WebCore::ElementImpl::focus):
        * page/Frame.h:
        (WebCore::Frame::didBeginEditing):
        (WebCore::Frame::didEndEditing):

2006-02-08  Mitz Pettel  <opendarwin.org@mitzpettel.com>

        Test: fast/block/positioning/relayout-on-position-change.html

        Reviewed by Hyatt.

        - fix http://bugs.webkit.org/show_bug.cgi?id=7095
          Removing positioning from an element does not relayout properly

        * rendering/render_object.cpp:
        (WebCore::RenderObject::setStyle): The second call to setNeedsLayoutAndMinMaxRecalc
        did not mark containing blocks for relayout based on the new position value since
        the object itself was already marked as needing layout. Changed the first call to
        only mark the containing blocks (based on the old position value) and not the
        object itself.

2006-02-08  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by Eric.

        RenderPath refactoring:
        
        - Rename the files to RenderPath
        - Push the portable code from KCanvasItemQuartz down to RenderPath
        - Move most of the unportable code from KCanvasItemQuartz to KCanvasPathQuartz
        
        The only thing left in KCanvasItemQuartz is marker support. That should be factored to separate
        iterating the path elements (KCanvasPathQuartz needs to provide that) and drawing the markers
        (which should be done in portable code).

        * ForwardingHeaders/kcanvas/RenderPath.h: Removed.
        * WebCore.xcodeproj/project.pbxproj:
        * kcanvas/KCanvasItem.cpp: Removed.
        * kcanvas/KCanvasItem.h: Removed.
        * kcanvas/KCanvasPath.h:
        * kcanvas/RenderPath.cpp: Added.
        (RenderPath::mapAbsolutePointToLocal):
        (RenderPath::fillContains):
        (RenderPath::strokeContains):
        (RenderPath::strokeBBox):
        (RenderPath::relativeBBox):
        (RenderPath::setPath):
        (RenderPath::layout):
        (RenderPath::getAbsoluteRepaintRect):
        (RenderPath::requiresLayer):
        (RenderPath::lineHeight):
        (RenderPath::baselinePosition):
        (RenderPath::paint):
        (RenderPath::nodeAtPoint):
        * kcanvas/RenderPath.h: Added.
        * kcanvas/device/quartz/KCanvasItemQuartz.h:
        * kcanvas/device/quartz/KCanvasItemQuartz.mm:
        * kcanvas/device/quartz/KCanvasPathQuartz.h:
        * kcanvas/device/quartz/KCanvasPathQuartz.mm:
        (KCanvasPathQuartz::boundingBox):
        (scratchContext):
        (KCanvasPathQuartz::strokeBoundingBox):
        (pathContainsPoint):
        (KCanvasPathQuartz::containsPoint):
        (KCanvasPathQuartz::strokeContainsPoint):
        * kcanvas/device/quartz/KRenderingDeviceQuartz.mm:
        (KRenderingDeviceQuartz::createItem):
        * kcanvas/device/quartz/QuartzSupport.h:
        * kcanvas/device/quartz/QuartzSupport.mm:
        (applyStrokeStyleToContext):
        * ksvg2/svg/SVGStyledElementImpl.cpp:
        (SVGStyledElementImpl::updateCanvasItem):
        (SVGStyledElementImpl::pushAttributeContext):
        * ksvg2/svg/SVGStyledLocatableElementImpl.cpp:
        * ksvg2/svg/SVGStyledTransformableElementImpl.cpp:
        * kwq/KWQRenderTreeDebug.cpp:

2006-02-08  Adele Peterson  <adele@apple.com>

        Fix broken layout tests.

        * khtml/xml/NodeImpl.cpp:
        (WebCore::NodeImpl::dispatchGenericEvent): iterator is null, so we have to reset it to the first node in the chain.

2006-02-08  Adele Peterson  <adele@apple.com>

        Reviewed by Maciej.

        - Fixed <rdar://problem/4325160> 
          REGRESSION(416.12-420+): window events not stopped by stopPropagation (affects macnn forums)

        Tests:
        * fast/events/window-events-bubble.html
        * fast/events/window-events-bubble2.html
        * fast/events/window-events-capture.html

        * khtml/xml/DocumentImpl.cpp:
        (WebCore::DocumentImpl::handleWindowEvent): Added to send events directly to the window.  This code used to be in defaultEventHandler, but that wasn't sending them at the right time.
        (WebCore::DocumentImpl::defaultEventHandler): Moved code to send window events to handleWindowEvent.
        * khtml/xml/DocumentImpl.h: Added handleWindowEvent.
        * khtml/xml/NodeImpl.cpp:
        (WebCore::NodeImpl::dispatchGenericEvent): fire window events in capture and bubble phases.
        (WebCore::NodeImpl::dispatchWindowEvent): call handleWindowEvent.

2006-02-08  Anders Carlsson  <andersca@mac.com>

        Rubber stamped by Maciej.

        Move JSCore.cpp to bindings/js/JSDOMCore.cpp and
        rename JSEvents.cpp to JSDOMEvents.cpp
        
        * JSCore.cpp: Removed.
        * WebCore.vcproj/WebCore/WebCore.vcproj:
        * WebCore.xcodeproj/project.pbxproj:
        * bindings/js/JSDOMCore.cpp: Added.
        * bindings/js/JSDOMEvents.cpp: Added.
        * bindings/js/JSEvents.cpp: Removed.

2006-02-08  Anders Carlsson  <andersca@mac.com>

        Reviewed by Maciej.

        - http://bugs.webkit.org/show_bug.cgi?id=7108
        Autogenerate most of Element
        
        * JSCore.cpp:
        Add JSElement.cpp.
        
        * bindings/scripts/CodeGeneratorJS.pm:
        Handle a bunch of new types.
        
        * khtml/ecma/kjs_dom.cpp:
        (KJS::DOMElement::getValueProperty):
        (KJS::DOMElementProtoFunc::callAsFunction):
        Remove code that is autogenerated now.
        
        (KJS::getDOMNode):
        Create a JSElement instead of a DOMElement.
        
        (KJS::getDOMNodeList):
        Take a PassRefPtr like some of the other get methods.
        
        * khtml/ecma/kjs_dom.h:        
        (KJS::DOMElement::):
        Remove the now unused enums.
        
        * khtml/ecma/kjs_html.cpp:
        (KJS::):
        (KJS::HTMLElement::HTMLElement):
        (KJS::HTMLElement::getOwnPropertySlot):
        (KJS::KJS::HTMLElement::toString):
        (KJS::KJS::HTMLElement::put):
        * khtml/ecma/kjs_html.h:
        Have HTMLElement inherit from JSElement.

        * khtml/xml/Element.idl: Added.

2006-02-08  Dave Hyatt <hyatt@apple.com>

        Make the Cairo image surface only reflect the portion of
        the image that has been decoded so far.   That way we don't
        have to zero fill our RGBA32 buffers, and we avoid painting
        the empty portion.

        Reviewed by timo

        * Viewer/ImageView.cpp:
        * WebCore.vcproj/WebCore/WebCore.vcproj:
        * platform/cairo/ImageSourceCairo.cpp:
        (WebCore::createDecoder):
        (WebCore::ImageSource::createFrameAtIndex):
        * platform/image-decoders/ImageDecoder.h:
        (WebCore::RGBA32Buffer::RGBA32Buffer):
        (WebCore::RGBA32Buffer::height):
        (WebCore::RGBA32Buffer::ensureHeight):
        (WebCore::RGBA32Buffer::setStatus):
        (WebCore::RGBA32Buffer::setDuration):
        (WebCore::RGBA32Buffer::setIncludeInNextFrame):
        * platform/image-decoders/gif/GIFImageDecoder.cpp:
        (WebCore::GIFImageDecoder::haveDecodedRow):
        (WebCore::GIFImageDecoder::frameComplete):
        * platform/image-decoders/png/PNGImageDecoder.cpp:
        (WebCore::PNGImageDecoder::rowAvailable):
        (WebCore::PNGImageDecoder::pngComplete):

2006-02-08  Dave Hyatt <hyatt@apple.com>

        Implement support for PNGs on Win32.  Includes support for
        interlacing and transparency.

        Also optimized the GIF loop that sets the RGBA values to
        increment the pointer through the loop instead of doing multiplies
        and adds from the base every time.

        Reviewed by mjs

        * platform/image-decoders/ImageDecoder.h:
        (WebCore::RGBA32Buffer::setRGBA):
        * platform/image-decoders/gif/GIFImageDecoder.cpp:
        (WebCore::GIFImageDecoder::haveDecodedRow):
        * platform/image-decoders/png/PNGImageDecoder.cpp:
        (WebCore::PNGImageReader::PNGImageReader):
        (WebCore::PNGImageReader::~PNGImageReader):
        (WebCore::PNGImageReader::close):
        (WebCore::PNGImageReader::decode):
        (WebCore::PNGImageReader::decodingSizeOnly):
        (WebCore::PNGImageReader::pngPtr):
        (WebCore::PNGImageReader::infoPtr):
        (WebCore::PNGImageReader::interlaceBuffer):
        (WebCore::PNGImageReader::hasAlpha):
        (WebCore::PNGImageReader::setReadOffset):
        (WebCore::PNGImageReader::setHasAlpha):
        (WebCore::PNGImageReader::createInterlaceBuffer):
        (WebCore::PNGImageDecoder::PNGImageDecoder):
        (WebCore::PNGImageDecoder::~PNGImageDecoder):
        (WebCore::PNGImageDecoder::setData):
        (WebCore::PNGImageDecoder::isSizeAvailable):
        (WebCore::PNGImageDecoder::frameBufferAtIndex):
        (WebCore::PNGImageDecoder::decode):
        (WebCore::decodingFailed):
        (WebCore::decodingWarning):
        (WebCore::headerAvailable):
        (WebCore::PNGImageDecoder::headerAvailable):
        (WebCore::rowAvailable):
        (WebCore::PNGImageDecoder::rowAvailable):
        (WebCore::pngComplete):
        (WebCore::PNGImageDecoder::pngComplete):
        * platform/image-decoders/png/PNGImageDecoder.h:
        (WebCore::PNGImageDecoder::setFailed):
        (WebCore::PNGImageDecoder::reader):
        (WebCore::PNGImageDecoder::decodingFailed):
        * platform/image-decoders/png/mozpngconf.h:

2006-02-07  Maciej Stachowiak  <mjs@apple.com>

        Rubber stamped by Hyatt.

        - move kwq/KWQString.mm to platform/QString.cpp, split out nonportable parts, speculative
        port of one remaining nonportable bit to windows.

        * ForwardingHeaders/qstring.h:
        * WebCore+SVG/KDOMSettings.h:
        * WebCore+SVG/kdom.h:
        * WebCore.xcodeproj/project.pbxproj:
        * css/cssparser.h:
        * css/cssstyleselector.cpp:
        * kcanvas/KCanvasResources.h:
        * kcanvas/KCanvasTreeDebug.h:
        * khtml/ecma/kjs_window.h:
        * khtml/editing/html_interchange.cpp:
        * khtml/editing/visible_position.h:
        * khtml/editing/visible_text.h:
        * khtml/editing/visible_units.cpp:
        * khtml/html/FormDataList.h:
        * khtml/html/html_objectimpl.cpp:
        * khtml/html/htmltokenizer.h:
        * khtml/misc/decoder.h:
        * khtml/misc/formdata.h:
        * khtml/xbl/xbl_protohandler.cpp:
        * khtml/xml/dom_position.cpp:
        * khtml/xsl/xslt_processorimpl.h:
        * ksvg2/svg/SVGHelper.h:
        * ksvg2/svg/SVGPreserveAspectRatioImpl.cpp:
        * ksvg2/svg/SVGStyleElementImpl.cpp:
        * ksvg2/svg/SVGURIReferenceImpl.h:
        * ksvg2/svg/svgpathparser.cpp:
        * kwq/KWQAccObjectCache.mm:
        * kwq/KWQBuffer.h:
        * kwq/KWQEvent.h:
        * kwq/KWQFont.mm:
        * kwq/KWQFontFamily.h:
        * kwq/KWQFontMetrics.h:
        * kwq/KWQKConfigBase.h:
        * kwq/KWQKDebug.h:
        * kwq/KWQKHTMLSettings.h:
        * kwq/KWQKJobClasses.h:
        * kwq/KWQKJobClasses.mm:
        * kwq/KWQKLocale.mm:
        * kwq/KWQKSSLKeyGen.mm:
        * kwq/KWQKURL.h:
        * kwq/KWQLineEdit.h:
        * kwq/KWQRegExp.h:
        * kwq/KWQRenderTreeDebug.h:
        * kwq/KWQString.h: Removed.
        * kwq/KWQString.mm: Removed.
        * kwq/KWQStringList.h:
        * kwq/KWQTextCodec.h:
        * kwq/KWQTextStream.h:
        * kwq/KWQTextUtilities.mm:
        * kwq/WebCoreScriptDebugger.mm:
        * loader/Cache.h:
        * platform/Color.cpp:
        * platform/Color.h:
        * platform/QString.cpp: Added.
        (allocateHandle):
        (KWQStringData::KWQStringData):
        (QString::QString):
        (QString::insert):
        (QString::detach):
        (QString::remove):
        (QString::setLength):
        (QString::fill):
        (initializeHandleNodeBlock):
        (allocateNode):
        (freeHandle):
        * platform/QString.h: Added.
        * platform/SegmentedString.h:
        * platform/StringImpl.h:
        * platform/mac/Image.mm:
        * platform/mac/QString.mm: Added.
        (QString::setBufferFromCFString):
        (QString::fromCFString):
        (QString::fromNSString):
        (QString::getNSString):
        (QString::utf8):
        (QString::fromUtf8):
        * rendering/bidi.h:
        * rendering/break_lines.cpp:

2006-02-07  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by Adele.

        - remove all remains of old-style frame tree, ChildFrame, ObjectContents and FrameList are all gone

        * WebCore.xcodeproj/project.pbxproj:
        * bridge/BrowserExtension.h:
        * bridge/mac/BrowserExtensionMac.h:
        * bridge/mac/BrowserExtensionMac.mm:
        (WebCore::BrowserExtensionMac::createNewWindow):
        * khtml/ecma/kjs_window.cpp:
        (KJS::createNewWindow):
        (KJS::Window::indexGetter):
        (KJS::Window::getOwnPropertySlot):
        (KJS::WindowFunc::callAsFunction):
        (KJS::FrameArray::getValueProperty):
        (KJS::FrameArray::indexGetter):
        (KJS::FrameArray::nameGetter):
        (KJS::FrameArray::getOwnPropertySlot):
        * kwq/KWQFrame.mm:
        (QFrame::setFrameStyle):
        * page/Frame.cpp:
        (WebCore::Frame::Frame):
        (WebCore::Frame::stopLoading):
        (WebCore::Frame::clear):
        (WebCore::Frame::stopAnimations):
        (WebCore::Frame::checkCompleted):
        (WebCore::Frame::checkEmitLoadEvent):
        (WebCore::Frame::requestFrame):
        (WebCore::Frame::requestObject):
        (WebCore::Frame::loadSubframe):
        (WebCore::Frame::findFrame):
        (WebCore::Frame::frameExists):
        (WebCore::Frame::setZoomFactor):
        (WebCore::Frame::frameNames):
        (WebCore::Frame::frames):
        (WebCore::Frame::childFrameNamed):
        (WebCore::Frame::slotPartRemoved):
        (WebCore::Frame::connectChild):
        (WebCore::Frame::disconnectChild):
        (WebCore::Frame::canCachePage):
        (WebCore::Frame::setPolicyBaseURL):
        (WebCore::Frame::treeNode):
        (WebCore::Frame::frameDetached):
        * page/Frame.h:
        * page/FramePrivate.h:
        * page/FrameTreeNode.h:
        (WebCore::FrameTreeNode::name):
        (WebCore::FrameTreeNode::parent):
        (WebCore::FrameTreeNode::nextSibling):
        (WebCore::FrameTreeNode::previousSibling):
        (WebCore::FrameTreeNode::firstChild):
        (WebCore::FrameTreeNode::lastChild):
        (WebCore::FrameTreeNode::childCount):
        * page/ObjectContents.h: Removed.
        * page/Plugin.h:
        (WebCore::Plugin::view):

2006-02-07  Adele Peterson  <adele@apple.com>

        Reviewed by Maciej.

        - Fixed <rdar://problem/3727939> Safari strips \0 characters from HTML tags making them valid 

        Test: fast/encoding/decoder-allow-null-chars.html

        * kwq/KWQTextCodec.cpp:
        (KWQTextDecoder::convertLatin1): Removed stripping of null characters
        (unwanted): ditto.

2006-02-07  David Hyatt <hyatt@apple.com>

        Land the skeleton of a PNG decoder for Win32.

        Reviewed by Eric

        * WebCore.vcproj/WebCore/WebCore.vcproj:
        * platform/cairo/ImageSourceCairo.cpp:
        (WebCore::createDecoder):
        * platform/image-decoders/png/PNGImageDecoder.cpp: Added.
        (WebCore::PNGImageDecoderPrivate::PNGImageDecoderPrivate):
        (WebCore::PNGImageDecoderPrivate::~PNGImageDecoderPrivate):
        (WebCore::PNGImageDecoderPrivate::decode):
        (WebCore::PNGImageDecoder::PNGImageDecoder):
        (WebCore::PNGImageDecoder::~PNGImageDecoder):
        (WebCore::PNGImageDecoder::setData):
        (WebCore::PNGImageDecoder::isSizeAvailable):
        (WebCore::PNGImageDecoder::size):
        (WebCore::PNGImageDecoder::frameBufferAtIndex):
        (WebCore::PNGImageDecoder::decode):
        * platform/image-decoders/png/PNGImageDecoder.h: Added.

2006-02-07  Eric Seidel  <eseidel@apple.com>

        Reviewed by hyatt.

        Removed ImageSubset, making ImageViewer link directly to WebCore.

        * Viewer.vcproj:
        * WebCore.vcproj/ImageSubset: Removed.
        * WebCore.vcproj/ImageSubset/ImageSubset.vcproj: Removed.
        * WebCore.vcproj/WebCore.sln:
        * WebCore.vcproj/WebCore/WebCore.vcproj:

2006-02-07  Geoffrey Garen  <ggaren@apple.com>

        Reviewed by darin.

        - Fixed <rdar://problem/4425269> REGRESSION: wrong size pop-up when 
        downloading attachment at webmail.mac.com (6882)

        The bug was that the feature string parser didn't always initialize the
        *Set variables, so WebCore assumed a height was set when it wasn't,
        and used a garbage height variable.

        While there, I fixed two other bugs: (1) The parser wasn't chewing up 
        as many characters as I thought it was. (Chewing up extra characters 
        is necessary to match Win IE.) (2) We considered \t and \f to be 
        whitespace, but Win IE doesn't.

        * manual-tests/window-open-features-parsing.html: Added these cases,
        fixed up comments.

        * bridge/BrowserExtension.h: Cleaned up declaration order a bit.
        * khtml/ecma/kjs_window.cpp:
        (KJS::isSeparator): New function, tells you if a character is a
        separator
        (KJS::parseWindowFeatures): Always initialize *Set to false. Drive
        parsing based on invalid characters ('separators') rather than valid 
        ones, to match Win IE.

2006-02-07  Alexey Proskuryakov  <ap@nypop.com>

        Reviewed by Timothy.

        Convert JavaScript objects to appropriate AppleScript types, instead of only strings
        http://bugs.webkit.org/show_bug.cgi?id=7012

        Tests: fast/AppleScript/*

        * bridge/mac/WebCoreFrameBridge.h:
        * bridge/mac/WebCoreFrameBridge.mm:
        (aeDescFromJSValue):
        (-[WebCoreFrameBridge aeDescByEvaluatingJavaScriptFromString:]):

2006-02-07  Dave Hyatt <hyatt@apple.com>

        Rename ImageDecoderPlugin to ImageDecoder.  Rename
        GIFReader to GIFImageReder.  Rename GIFDecoderPlugin to
        GIFImageDecoder.

        Reviewed by mjs

        * WebCore.vcproj/WebCore/WebCore.vcproj:
        * platform/cairo/ImageSourceCairo.cpp:
        (WebCore::createDecoder):
        (WebCore::ImageSource::setData):
        * platform/image-decoders/ImageDecoder.h: Added.
        (WebCore::ImageDecoder::~ImageDecoder):
        * platform/image-decoders/ImageDecoderPlugin.h: Removed.
        * platform/image-decoders/gif/GIFDecoderPlugin.cpp: Removed.
        * platform/image-decoders/gif/GIFDecoderPlugin.h: Removed.
        * platform/image-decoders/gif/GIFImageDecoder.cpp: Added.
        (WebCore::GIFImageDecoderPrivate::GIFImageDecoderPrivate):
        (WebCore::GIFImageDecoderPrivate::~GIFImageDecoderPrivate):
        (WebCore::GIFImageDecoderPrivate::decode):
        (WebCore::GIFImageDecoder::GIFImageDecoder):
        (WebCore::GIFImageDecoder::~GIFImageDecoder):
        (WebCore::GIFImageDecoder::setData):
        (WebCore::GIFImageDecoder::isSizeAvailable):
        (WebCore::GIFImageDecoder::size):
        (WebCore::GIFImageDecoder::frameCount):
        (WebCore::GIFImageDecoder::repetitionCount):
        (WebCore::GIFImageDecoder::frameBufferAtIndex):
        (WebCore::GIFImageDecoder::decode):
        (WebCore::GIFImageDecoder::sizeNowAvailable):
        (WebCore::GIFImageDecoder::decodingHalted):
        (WebCore::GIFImageDecoder::haveDecodedRow):
        (WebCore::GIFImageDecoder::frameComplete):
        (WebCore::GIFImageDecoder::gifComplete):
        * platform/image-decoders/gif/GIFImageDecoder.h: Added.
        * platform/image-decoders/gif/GIFImageReader.cpp: Added.
        (GIFImageReader::output_row):
        (GIFImageReader::do_lzw):
        (GIFImageReader::read):
        * platform/image-decoders/gif/GIFImageReader.h: Added.
        (GIFImageReader::GIFImageReader):
        (GIFImageReader::~GIFImageReader):
        * platform/image-decoders/gif/GIFReader.cpp: Removed.
        * platform/image-decoders/gif/GIFReader.h: Removed.

2006-02-07  David Hyatt  <hyatt@apple.com>

        Rename ImageDecoder to ImageSource.

        Reviewed by mjs

        * WebCore.xcodeproj/project.pbxproj:
        * platform/Image.cpp:
        (WebCore::Image::cacheFrame):
        (WebCore::Image::size):
        (WebCore::Image::setNativeData):
        (WebCore::Image::frameCount):
        (WebCore::Image::isSizeAvailable):
        * platform/Image.h:
        * platform/ImageDecoder.h: Removed.
        * platform/ImageSource.h: Added.
        * platform/cairo/ImageCairo.cpp:
        (WebCore::Image::drawInRect):
        * platform/cairo/ImageDecoderCairo.cpp: Removed.
        * platform/cairo/ImageSourceCairo.cpp: Added.
        (WebCore::createDecoderPlugin):
        (WebCore::ImageSource::ImageSource):
        (WebCore::ImageSource::~ImageSource):
        (WebCore::ImageSource::initialized):
        (WebCore::ImageSource::setData):
        (WebCore::ImageSource::isSizeAvailable):
        (WebCore::ImageSource::size):
        (WebCore::ImageSource::repetitionCount):
        (WebCore::ImageSource::frameCount):
        (WebCore::ImageSource::createFrameAtIndex):
        (WebCore::ImageSource::frameDurationAtIndex):
        * platform/mac/Image.mm:
        (WebCore::Image::drawInRect):
        * platform/mac/ImageData.mm: Removed.
        * platform/mac/ImageDecoder.cpp: Removed.
        * platform/mac/ImageSource.cpp: Added.
        (WebCore::ImageSource::ImageSource):
        (WebCore::ImageSource::~ImageSource):
        (WebCore::ImageSource::initialized):
        (WebCore::ImageSource::setData):
        (WebCore::ImageSource::isSizeAvailable):
        (WebCore::ImageSource::size):
        (WebCore::ImageSource::repetitionCount):
        (WebCore::ImageSource::frameCount):
        (WebCore::ImageSource::createFrameAtIndex):
        (WebCore::ImageSource::frameDurationAtIndex):

2006-02-07  David Hyatt  <hyatt@apple.com>

        Combine ImageData and Image (the result ends up in Image).

        Reviewed by mjs

        * WebCore.xcodeproj/project.pbxproj:
        * bindings/objc/DOM.mm:
        (-[DOMElement _image]):
        (-[DOMElement _imageTIFFRepresentation]):
        * bridge/mac/MacFrame.mm:
        (WebCore::MacFrame::fileWrapperForElement):
        * kcanvas/device/quartz/KCanvasFilterQuartz.mm:
        (KCanvasFEImageQuartz::getCIFilter):
        * khtml/ecma/kjs_html.cpp:
        (KJS::KJS::Context2DFunction::callAsFunction):
        (KJS::drawPattern):
        (KJS::_rh):
        (KJS::ImagePattern::createPattern):
        * kwq/KWQClipboard.mm:
        (WebCore::KWQClipboard::dragNSImage):
        * kwq/KWQCursor.h:
        * kwq/KWQCursor.mm:
        (WebCore::createCustomCursor):
        (WebCore::QCursor::QCursor):
        * kwq/KWQPainter.h:
        * kwq/KWQPainter.mm:
        (WebCore::QPainter::drawImageAtPoint):
        (WebCore::QPainter::drawImageInRect):
        (WebCore::QPainter::drawImage):
        (WebCore::QPainter::drawFloatImage):
        (WebCore::QPainter::drawTiledImage):
        (WebCore::QPainter::drawScaledAndTiledImage):
        * loader/CachedImage.cpp:
        (WebCore::CachedImage::image):
        * loader/CachedImage.h:
        * page/FrameView.cpp:
        (WebCore::selectCursor):
        * platform/Image.cpp:
        (WebCore::Image::Image):
        (WebCore::Image::~Image):
        (WebCore::Image::invalidateData):
        (WebCore::Image::cacheFrame):
        (WebCore::Image::isNull):
        (WebCore::Image::size):
        (WebCore::Image::setData):
        (WebCore::Image::setNativeData):
        (WebCore::Image::frameCount):
        (WebCore::Image::isSizeAvailable):
        (WebCore::Image::frameAtIndex):
        (WebCore::Image::frameDurationAtIndex):
        (WebCore::Image::shouldAnimate):
        (WebCore::Image::startAnimation):
        (WebCore::Image::stopAnimation):
        (WebCore::Image::resetAnimation):
        (WebCore::Image::advanceAnimation):
        (WebCore::Image::rect):
        * platform/Image.h:
        (KXMLCore::):
        (WebCore::FrameData::m_duration):
        (WebCore::FrameData::~FrameData):
        (WebCore::Image::currentFrame):
        (WebCore::Image::animationObserver):
        (WebCore::Image::setIsPDF):
        * platform/ImageData.cpp: Removed.
        * platform/ImageData.h: Removed.
        * platform/cairo/ImageCairo.cpp:
        (WebCore::FrameData::clear):
        (WebCore::Image::initNativeData):
        (WebCore::Image::destroyNativeData):
        (WebCore::Image::invalidateNativeData):
        (WebCore::Image::drawInRect):
        (WebCore::Image::tileInRect):
        (WebCore::Image::scaleAndTileInRect):
        * platform/mac/Image.mm:
        (WebCore::FrameData::clear):
        (WebCore::Image::initNativeData):
        (WebCore::Image::destroyNativeData):
        (WebCore::Image::invalidateNativeData):
        (WebCore::Image::loadResource):
        (WebCore::Image::supportsType):
        (WebCore::Image::checkForSolidColor):
        (WebCore::Image::getTIFFRepresentation):
        (WebCore::Image::getNSImage):
        (WebCore::Image::getCGImageRef):
        (WebCore::Image::drawInRect):
        (WebCore::drawPattern):
        (WebCore::Image::tileInRect):
        (WebCore::Image::scaleAndTileInRect):
        * rendering/render_image.cpp:
        (WebCore::RenderImage::imageChanged):
        (WebCore::RenderImage::resetAnimation):
        (WebCore::RenderImage::paint):
        (WebCore::RenderImage::nullImage):
        * rendering/render_image.h:
        (WebCore::RenderImage::image):
        * rendering/render_list.cpp:
        (RenderListItem::getAbsoluteRepaintRect):
        (RenderListMarker::paint):
        (RenderListMarker::calcMinMaxWidth):
        * rendering/render_object.cpp:
        (WebCore::RenderObject::paintBorderImage):

2006-02-06  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by Eric.

        - fixed "remove frame, renderer and completed flag from ChildFrame, make Frame track these"
        http://bugs.webkit.org/show_bug.cgi?id=7125
        
        - fixed "onload event never called for iframe element with emtpy or about:blank src"
        http://bugs.webkit.org/show_bug.cgi?id=3609
        
        * bridge/mac/MacFrame.h:
        * bridge/mac/MacFrame.mm:
        (WebCore::MacFrame::MacFrame): pass along renderer
        (WebCore::MacFrame::nextKeyViewInFrameHierarchy): get owner element in newfangled way
        * bridge/mac/WebCoreFrameBridge.h:
        * bridge/mac/WebCoreFrameBridge.mm:
        (-[WebCoreFrameBridge removeChild:]): don't mess with renderer
        (-[WebCoreFrameBridge init]): call new designated initializer
        (-[WebCoreFrameBridge initWithRenderer:]): new designated initializer
        (-[WebCoreFrameBridge dealloc]): don't mess with renderer
        (-[WebCoreFrameBridge finalize]): ditto
        (-[WebCoreFrameBridge installInFrame:]): ditto
        * page/Frame.cpp:
        (WebCore::FrameList::find): get name from frame not ChildFrame
        (WebCore::Frame::init): take renderer parameter
        (WebCore::Frame::clear): clear m_plugins, not m_objects
        (WebCore::Frame::childBegin): updated comment
        (WebCore::Frame::stop): add check-completed for documentless case here
        (WebCore::Frame::checkCompleted): don't track separate completed flag
        in ChildFrame, use the sub Frame object's own
        (WebCore::Frame::checkEmitLoadEvent): ditto
        (WebCore::Frame::requestFrame): don't store renderer and name in ChildFrame,
        instead pass them along
        (WebCore::Frame::requestObject): ditto above
        (WebCore::Frame::loadPlugin): expect renderer parameter
        (WebCore::Frame::loadSubframe): expect renderer and name parameters
        (WebCore::Frame::slotChildStarted): don't mess with ChildFrame
        (WebCore::Frame::slotChildCompleted): ditto
        (WebCore::Frame::childFrame): don't check m_objects
        (WebCore::Frame::frameExists): fix spacing, remove obsolete check and comment
        (WebCore::Frame::frameNames): get name from frame
        (WebCore::Frame::ownerElement): simplify a lot since the Frame knows its owner
        renderer now
        (WebCore::Frame::ownerRenderer): added
        (WebCore::Frame::canCachePage): check m_plugins not m_objects
        * page/Frame.h:
        * page/FramePrivate.h:
        (WebCore::ChildFrame): Remove constructor, most fields.
        (WebCore::FramePrivate::FramePrivate): Pass ownerRenderer
        * rendering/render_frames.cpp:
        (WebCore::RenderPartObject::updateWidget): Make sure to pass name attr
        to requestObject.

2006-02-06  Adele Peterson  <adele@apple.com>

        Reviewed by Maciej.

        - fix http://bugs.webkit.org/show_bug.cgi?id=6944
          REGRESSION: crash when loading page w/ <link> that has a DOMSubtreeModified event listener

        Test: fast/events/event-listener-on-link.html

        * khtml/xml/dom_elementimpl.h: Added createAttrImplIfNeeded, removed allocateImpl, 
         changed AttrImpl contructor to remove createTextChild bool, added createTextChild method, 
         changed getAttributeNode, getAttributeNodeNS, getNamedItem, getNamedItemNS, and item to return PassRefPtrs.
        (DOM::ElementImpl::getAttributeNode):
        * khtml/xml/dom_elementimpl.cpp:
        (WebCore::AttributeImpl::createAttrImplIfNeeded): New method to replace allocateImpl.  
         This will use a RefPtr for the AttrImpl, check for an existing AttrImpl, create one if there isn't one,
         and will call the new createTextChild.
        (WebCore::AttrImpl::AttrImpl):  Moved creation of text child to new createTextChild method.  
         If done in the constructor, the ref count is still 0, and the act of appending the text node 
         could cause the AttrImpl to be destroyed.
        (WebCore::AttrImpl::createTextChild): Moved code from AttrImpl contructor.  
         Also, I've added an assert to make sure that any callers of this have ref'd the AttrImpl.
        (WebCore::AttrImpl::cloneNode): Used RefPtr instead of PassRefPtr, and then called release() on it before returning.
        (WebCore::ElementImpl::cloneNode): ditto.
        (WebCore::ElementImpl::getAttributeNodeNS): Changed return type to PassRefPtr.
        (WebCore::NamedAttrMapImpl::getNamedItemNS): ditto.
        (WebCore::NamedAttrMapImpl::getNamedItem): ditto. Changed use of allocateImpl to createAttrImplIfNeeded
        (WebCore::NamedAttrMapImpl::setNamedItem): ditto.
        (WebCore::NamedAttrMapImpl::removeNamedItem): ditto.
        (WebCore::NamedAttrMapImpl::item): ditto.
        * khtml/xml/DocumentImpl.cpp:
        (WebCore::DocumentImpl::createAttributeNS): Changed return type to PassRefPtr and removed bool from AttrImpl contructor call.
        * khtml/xml/DocumentImpl.h: Now returns a PassRefPtr for createAttribute and createAttributeNS. 
        (WebCore::DocumentImpl::createAttribute):
        * khtml/xml/NamedNodeMapImpl.h: Now returns a PassRefPtr for getNamedItem, getNamedItemNS, and item.
        (WebCore::NamedNodeMapImpl::getNamedItem):
        * bindings/objc/DOM.mm:
        (-[DOMNamedNodeMap getNamedItem:]): Call get() since the methods discussed above now return PassRefPtrs.
        (-[DOMNamedNodeMap item:]): ditto.
        (-[DOMNamedNodeMap getNamedItemNS::]): ditto.
        (-[DOMDocument createAttribute:]): ditto.
        (-[DOMDocument createAttributeNS::]): ditto.
        (-[DOMElement getAttributeNode:]): ditto.
        (-[DOMElement getAttributeNodeNS::]): ditto.

2006-02-06  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by Darin.
        
        - fixed 7094: onfocus/onblur on non-form-controls bubble
        http://bugs.webkit.org/show_bug.cgi?id=7094

        * khtml/html/HTMLElementImpl.cpp:
        (WebCore::HTMLElementImpl::parseMappedAttribute): connect onfocus/onblur to
        focus/blur, not DOMFocusIn/DOMFocusOut

2006-02-06  Eric Seidel  <eseidel@apple.com>

        Add svn:ignore properties for visual studio internals.

2006-02-06  Dave Hyatt <hyatt@apple.com>

        Commit the image viewer test app, and all the Win32 project
        changes to build both it and Cairo.

        Reviewed by eric

        * Viewer: Added.
        * Viewer.aps: Added.
        * Viewer.cpp: Added.
        * Viewer.h: Added.
        * Viewer.ico: Added.
        * Viewer.rc: Added.
        * Viewer.reg: Added.
        * Viewer.vcproj: Added.
        * Viewer/ImageDocument.cpp: Added.
        * Viewer/ImageDocument.h: Added.
        * Viewer/ImageMainFrame.cpp: Added.
        * Viewer/ImageMainFrame.h: Added.
        * Viewer/ImageView.cpp: Added.
        * Viewer/ImageView.h: Added.
        * Viewer/Resource.h: Added.
        * Viewer/res: Added.
        * Viewer/res/ImageViewer.rc2: Added.
        * Viewer/res/Toolbar.bmp: Added.
        * Viewer/stdafx.cpp: Added.
        * Viewer/stdafx.h: Added.
        * ViewerDoc.ico: Added.
        * WebCore.vcproj/WebCore.sln:
        * WebCore.vcproj/WebCore/WebCore.vcproj:

2006-02-06  Dave Hyatt <hyatt@apple.com>

        Reviewed by darin

        * khtml/html/html_imageimpl.h:
        (WebCore::HTMLImageElementImpl::compositeOperator):
        * loader/CachedImage.cpp:
        * platform/Array.h:
        * platform/FloatSize.h:
        * platform/Image.cpp:
        (WebCore::Image::Image):
        (WebCore::Image::compositeOperatorFromString):
        * platform/Image.h:
        * platform/ImageData.cpp:
        (WebCore::FrameData::clear):
        (WebCore::ImageData::ImageData):
        (WebCore::ImageData::frameAtIndex):
        * platform/ImageData.h:
        * platform/ImageDecoder.h:
        * platform/Timer.h:
        * platform/cairo/.cvsignore: Added.
        * platform/cairo/ImageCairo.cpp: Added.
        (WebCore::Image::loadResource):
        (WebCore::Image::supportsType):
        (WebCore::graphicsContext):
        (WebCore::setCompositingOperation):
        (WebCore::Image::drawInRect):
        (WebCore::Image::tileInRect):
        (WebCore::Image::scaleAndTileInRect):
        * platform/cairo/ImageDecoderCairo.cpp: Added.
        (WebCore::createDecoderPlugin):
        (WebCore::ImageDecoder::ImageDecoder):
        (WebCore::ImageDecoder::~ImageDecoder):
        (WebCore::ImageDecoder::initialized):
        (WebCore::ImageDecoder::setData):
        (WebCore::ImageDecoder::isSizeAvailable):
        (WebCore::ImageDecoder::size):
        (WebCore::ImageDecoder::repetitionCount):
        (WebCore::ImageDecoder::frameCount):
        (WebCore::ImageDecoder::createFrameAtIndex):
        (WebCore::ImageDecoder::frameDurationAtIndex):
        (WebCore::RGBA32Buffer::setDuration):
        (WebCore::RGBA32Buffer::setIncludeInNextFrame):
        (WebCore::RGBA32Buffer::bytes):
        (WebCore::RGBA32Buffer::status):
        (WebCore::RGBA32Buffer::duration):
        (WebCore::RGBA32Buffer::includeInNextFrame):
        (WebCore::RGBA32Buffer::setRGBA):
        (WebCore::ImageDecoderPlugin::~ImageDecoderPlugin):
        (WebCore::ImageDecoderPlugin::setData):
        (WebCore::ImageDecoderPlugin::frameCount):
        (WebCore::ImageDecoderPlugin::repetitionCount):
        * platform/image-decoders/gif: Added.
        * platform/image-decoders/gif/GIFDecoderPlugin.cpp: Added.
        (WebCore::GIFDecoderPluginPrivate::GIFDecoderPluginPrivate):
        (WebCore::GIFDecoderPluginPrivate::~GIFDecoderPluginPrivate):
        (WebCore::GIFDecoderPluginPrivate::decode):
        (WebCore::GIFDecoderPluginPrivate::frameCount):
        (WebCore::GIFDecoderPluginPrivate::repetitionCount):
        (WebCore::GIFDecoderPluginPrivate::setReadOffset):
        (WebCore::GIFDecoderPluginPrivate::isTransparent):
        (WebCore::GIFDecoderPluginPrivate::getColorMap):
        (WebCore::GIFDecoderPluginPrivate::frameXOffset):
        (WebCore::GIFDecoderPluginPrivate::frameYOffset):
        (WebCore::GIFDecoderPluginPrivate::transparentPixel):
        (WebCore::GIFDecoderPluginPrivate::duration):
        (WebCore::GIFDecoderPlugin::GIFDecoderPlugin):
        (WebCore::GIFDecoderPlugin::~GIFDecoderPlugin):
        (WebCore::GIFDecoderPlugin::setData):
        (WebCore::GIFDecoderPlugin::isSizeAvailable):
        (WebCore::GIFDecoderPlugin::size):
        (WebCore::GIFDecoderPlugin::frameCount):
        (WebCore::GIFDecoderPlugin::repetitionCount):
        (WebCore::GIFDecoderPlugin::frameBufferAtIndex):
        (WebCore::GIFDecoderPlugin::decode):
        (WebCore::GIFDecoderPlugin::sizeNowAvailable):
        (WebCore::GIFDecoderPlugin::decodingHalted):
        (WebCore::GIFDecoderPlugin::haveDecodedRow):
        (WebCore::GIFDecoderPlugin::frameComplete):
        (WebCore::GIFDecoderPlugin::gifComplete):
        * platform/image-decoders/gif/GIFDecoderPlugin.h: Added.
        (WebCore::GIFDecoderPlugin::frameDurationAtIndex):
        (WebCore::GIFDecoderPlugin::):
        * platform/image-decoders/gif/GIFReader.cpp: Added.
        (GIFReader::output_row):
        (GIFReader::do_lzw):
        (GIFReader::read):
        * platform/image-decoders/gif/GIFReader.h: Added.
        (GIFFrameReader::GIFFrameReader):
        (GIFFrameReader::~GIFFrameReader):
        (GIFReader::GIFReader):
        (GIFReader::~GIFReader):
        (GIFReader::close):
        * platform/win/ImageDecoderPlugin.h: Added.
        (WebCore::RGBA32Buffer::):
        (WebCore::RGBA32Buffer::RGBA32Buffer):
        (WebCore::RGBA32Buffer::setStatus):
        (WebCore::RGBA32Buffer::setDuration):
        (WebCore::RGBA32Buffer::setIncludeInNextFrame):
        (WebCore::RGBA32Buffer::bytes):
        (WebCore::RGBA32Buffer::status):
        (WebCore::RGBA32Buffer::duration):
        (WebCore::RGBA32Buffer::includeInNextFrame):
        (WebCore::RGBA32Buffer::setRGBA):
        (WebCore::ImageDecoderPlugin::ImageDecoderPlugin):
        (WebCore::ImageDecoderPlugin::~ImageDecoderPlugin):
        (WebCore::ImageDecoderPlugin::setData):
        (WebCore::ImageDecoderPlugin::isSizeAvailable):
        (WebCore::ImageDecoderPlugin::size):
        (WebCore::ImageDecoderPlugin::frameCount):
        (WebCore::ImageDecoderPlugin::repetitionCount):
        (WebCore::ImageDecoderPlugin::frameBufferAtIndex):
        * platform/win/TimerWin.cpp: Added.
        (WebCore::timerFired):
        (WebCore::TimerBase::TimerBase):
        (WebCore::TimerBase::~TimerBase):
        (WebCore::TimerBase::start):
        (WebCore::TimerBase::startRepeating):
        (WebCore::TimerBase::startOneShot):
        (WebCore::TimerBase::stop):
        (WebCore::TimerBase::isActive):
        (WebCore::TimerBase::nextFireInterval):
        (WebCore::TimerBase::repeatInterval):
        (WebCore::TimerBase::fire):
        (WebCore::isDeferringTimers):
        (WebCore::setDeferringTimers):

2006-02-06  Vicki Murley  <vicki@apple.com>

        Reviewed by Darin and Eric.

        - fix <rdar://problem/4414918> REGRESSION: images dragged into contenteditable area
        end up outside of editable area (6525)

        * bridge/mac/WebCoreFrameBridge.mm:
        (-[WebCoreFrameBridge RenderObject::nodeInfoAtPoint:]): Moved code from
        elementAtPoint to this new method.  This method takes a point and returns a NodeInfo
        for the deepest node at that point.
        (-[WebCoreFrameBridge elementAtPoint:]): Use new nodeInfoAtPoint method.
        (-[WebCoreFrameBridge _visiblePositionForPoint:]): Ditto.

2006-02-04  Darin Adler  <darin@apple.com>

        Reviewed by Adele.

        - fix http://bugs.webkit.org/show_bug.cgi?id=7071
          REGRESSION: Jumping to an anchor identifier makes page scroll horizontally

        Test: fast/overflow/scroll-vertical-not-horizontal.html

        * rendering/render_layer.cpp: (WebCore::RenderLayer::getRectToExpose):
        Fixed rectangle intersections so that the X and Y dimensions are independent,
        to fix the bug. Also restructured the function a bit so it's even easier to
        read and understand.

2006-02-06  David Harrison  <harrison@apple.com>

        Suggested by Darin.
        
        * khtml/html/HTMLElementImpl.cpp:
        (WebCore::HTMLElementImpl::createContextualFragment):
        - make nextChild a RefPtr to survive possible DOM changes

2006-02-06  Beth Dakin  <bdakin@apple.com>

        Reviewed by John and Adele

        Fix for <rdar://problem/4323167> REGRESSION (TOT): Crash in 
        RenderTable::colToEffCol entering text into text input field

        Some of the autofill code assumes that the form's label is in a 
        table cell, but this is not necessarily the case. This fix checks 
        that the renderer is actually a table cell before treating it as 
        such. 

        * bridge/mac/MacFrame.mm:
        (WebCore::MacFrame::searchForLabelsAboveCell): Check if the 
        renderer is a table cell.

2006-02-06  Darin Adler  <darin@apple.com>

        Reviewed by John.

        - fix <rdar://problem/4432562> REGRESSION (TOT):
          Safari's "stop loading" active, "view source" inactive after page load [7058]
          http://bugs.webkit.org/show_bug.cgi?id=7058

        * page/Frame.h: Make redirectionTimerFired virtual.
        * bridge/mac/MacFrame.h: Override redirectionTimerFired.
        * bridge/mac/MacFrame.mm: (WebCore::MacFrame::redirectionTimerFired):
        Send the redirectionTimerCancelled callback here, even though it has
        fired rather than being cancelled.

        * manual-tests/redirect.html: Added.
        * manual-tests/redirection-target.html: Added.

2006-02-06  David Harrison  <harrison@apple.com>

        Reviewed by John.
        
        Fix TOT regression where Mail.app replies were getting truncated.
        Was caused by 1/26/2006 checkin for http://bugs.webkit.org/show_bug.cgi?id=6754

        No layout test because this code cannot be reached via JS operations.
        
        * khtml/html/HTMLElementImpl.cpp:
        (WebCore::HTMLElementImpl::createContextualFragment):
        - restore code that sampled nextSibling() before node is removed
        - also, add asserts that the DOM mutation methods yield a 0 exception code, so problems
          can be caught closer to the cause.

2006-02-05  Anders Carlsson  <andersca@mac.com>

        Reviewed by Maciej.

        - http://bugs.webkit.org/show_bug.cgi?id=7091
        Autogenerate even more.

        * JSCore.cpp:
        Add new generated files.
        
        * bindings/scripts/CodeGeneratorJS.pm:
        Add "IsIndex" extended attribute for parameters. Any parameter that is "unsigned long" 
        and has this attribute will be checked to make sure that it's not < 0. If it is, an index size error
        exception will be thrown.
        
        * khtml/ecma/kjs_dom.cpp:
        (KJS::toAttr):
        Use JSAttr::info.
        
        (KJS::getDOMNode):
        Use new constructors.
        
        * khtml/ecma/kjs_dom.h:
        Remove classes that are generated now.
        
        * khtml/xml/Attr.idl: Added.
        * khtml/xml/CharacterData.idl: Added.
        * khtml/xml/Entity.idl: Added.
        * khtml/xml/Notation.idl: Added.
        * khtml/xml/ProcessingInstruction.idl: Added.
        * khtml/xml/Text.idl: Added.

2006-02-05  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by Darin.
        
        Re-landed the following with more fixes so it does not break tests:

        - various event cleanup, including fixing of the load event for iframes
        http://bugs.webkit.org/show_bug.cgi?id=7079
        
        Specific changes:
        
        - don't bother to nil-check the document, a node can never have a null document now
        - move temp event forgetting from dispatchEvent to dispatchGenericEvent
        - pass event down using RefPtr::release() to avoid ref thrashing
        - support default handlers even for non-bubbling events (only on
          target node) and skip calling default event handler explicitly in
          callers
        - dispatch a whole separate load event to a frame document's containing frame
        - don't let propagationStopped prevent this new event
        - remove bogus security check for iframe onload
        - dispatch window events on the document, not the body, and also for non-html
        - set onload, onunload, onbeforeunload from frameset tags on the window object
        - don't restrict load/unload events to HTML
        - send default handler to the dispatch object as previously

        * bridge/mac/MacFrame.mm:
        (WebCore::MacFrame::shouldClose):
        * khtml/html/html_baseimpl.cpp:
        (WebCore::HTMLFrameElementImpl::parseMappedAttribute):
        (WebCore::HTMLFrameSetElementImpl::parseMappedAttribute):
        * khtml/xml/DocumentImpl.cpp:
        (WebCore::DocumentImpl::implicitClose):
        * khtml/xml/NodeImpl.cpp:
        (WebCore::NodeImpl::dispatchEvent):
        (WebCore::NodeImpl::dispatchGenericEvent):
        (WebCore::NodeImpl::dispatchWindowEvent):
        * khtml/xml/NodeImpl.h:
        * page/Frame.cpp:
        (WebCore::Frame::stopLoading):
        (WebCore::Frame::setWindowHasFocus):

2006-02-05  Darin Adler  <darin@apple.com>

        Reviewed by Geoff.

        - fix <rdar://problem/4197997> -[DOMHTMLSelectElement options] always returns an empty list

        * khtml/html/HTMLOptionsCollectionImpl.h: Changed to be a subclass of HTMLCollectionImpl.
        * khtml/html/HTMLOptionsCollectionImpl.cpp: Added.

        * WebCore.vcproj/WebCore/WebCore.vcproj: Added new source file.
        * WebCore.xcodeproj/project.pbxproj: Ditto.

        * bindings/objc/DOMHTML.mm:
        (-[DOMHTMLOptionsCollection setLength:]): Handle possible exception. 
        (-[DOMHTMLSelectElement options]): Add get() since this is now a PassRefPtr.

        * khtml/ecma/kjs_html.cpp:
        (KJS::HTMLElement::selectIndexGetter): Call options() instead of optionsHTMLCollection().
        (KJS::HTMLElement::selectGetter): Ditto.
        (KJS::KJS::HTMLElement::put): Ditto.
        (KJS::HTMLElement::selectSetter): Ditto.
        (KJS::KJS::HTMLSelectCollection::put): Ditto.

        * khtml/html/HTMLSelectElementImpl.h: Tweaked formatting. Eliminated m_options.
        Changed m_minwidth and m_size to int instead of short. Removed optionsHTMLCollection().
        Changed options() to return a PassRefPtr.
        * khtml/html/HTMLSelectElementImpl.cpp:
        (WebCore::HTMLSelectElementImpl::~HTMLSelectElementImpl): Get rid of code to drop m_options.
        (WebCore::HTMLSelectElementImpl::remove): Remove unnecesssary RefPtr use, since that's
        handled fine by removeChild.
        (WebCore::HTMLSelectElementImpl::options): Change to create a new HTMLOptionsCollectionImpl
        each time, like other collection calls. Maybe we should change this eventually to use a
        HashMap so we can pass out the same collection over and over again, or could have a pointer
        stored in the select element that's managed by the collection itself.

2006-02-05  Darin Adler  <darin@apple.com>

        Reviewed by Maciej.

        - fix http://bugs.webkit.org/show_bug.cgi?id=6908
          REGRESSION: Replacing existing <option> shuffles it to the end of the list

        Test: fast/forms/select-replace-option.html

        * khtml/ecma/kjs_html.cpp: (KJS::KJS::HTMLSelectCollection::put):
        Use optionsHTMLCollection, because options isn't really implemented yet.

2006-02-05  Darin Adler  <darin@apple.com>

        Reviewed by Maciej.

        - fix http://bugs.webkit.org/show_bug.cgi?id=6941
          Assertion failure in MacFrame::bridgeForWidget() on manual-tests/textfield-onblur.html

        * kwq/KWQTextField.mm: (-[KWQTextFieldController setHasFocus:]):
        Add check for nil in case the blur event causes the KWQLineEdit to be
        destroyed.

2006-02-05  Darin Adler  <darin@apple.com>

        Reviewed by Maciej.

        - fix http://bugs.webkit.org/show_bug.cgi?id=6962
          REGRESSION: www.usa.phillips.com crashes due to <param> with no name

        Test: fast/replaced/object-param-no-name.html

        * rendering/render_frames.cpp: (WebCore::RenderPartObject::updateWidget):
        Check for empty name, and skip processing the name/value of that <param> element.

2006-02-05  Darin Adler  <darin@apple.com>

        - rolled out Maciej's event cleanup patch, which is causing problems

        I believe he has a fix, and he'll re-land the patch with the fix later.

        Original fix was <http://bugs.webkit.org/show_bug.cgi?id=7079>.
        Problems described in <http://bugs.webkit.org/show_bug.cgi?id=7084>.

2006-02-05  Darin Adler  <darin@apple.com>

        * ksvg2/css/KSVGCSSParser.cpp: Remove config.h, since this is included by another
        .cpp file -- oops!

2006-02-05  Darin Adler  <darin@apple.com>

        Discussed with Anders (didn't get real review).

        - fix build

        * WebCore+SVG/SVGNamesWrapper.cpp: Touch file, not getting rebuilt even though
        it includes config.h which changed.
        * WebCore+SVG/XLinkNamesWrapper.cpp: Ditto.

        * ksvg2/css/KSVGCSSParser.cpp: Added include of config.h.
        * platform/mac/ImageDecoder.cpp: Ditto.

        * WebCore.vcproj/WebCore/WebCore.vcproj: Removed IntPoint.cpp and IntSize.cpp.
        * WebCore.xcodeproj/project.pbxproj: Ditto.
        * platform/IntPoint.cpp: Removed. Was empty.
        * platform/IntSize.cpp: Removed. Was empty.

2006-02-05  Darin Adler  <darin@apple.com>

        Reviewed by Maciej.

        - fix http://bugs.webkit.org/show_bug.cgi?id=7048
          Reproducible crash when onscroll handler deletes the layer or its object

        Test: onscroll-layer-self-destruct.html

        * rendering/render_layer.cpp: (WebCore::RenderLayer::scrollToOffset):
        Don't send the scroll event until after we've done everything else we
        need to do.

2006-02-05  Darin Adler  <darin@apple.com>

        Rubber stamped by Maciej.

        - renamed DOMString and DOMStringImpl to String and StringImpl, and moved into platform

        * config.h: Put in transitional defines so old code can still refer to the classes
        as DOMString and DOMStringImpl.

        * platform/AtomicString.cpp: Added.
        * platform/AtomicString.h: Added.
        * platform/AtomicStringImpl.h: Added.
        * platform/PlatformString.h: Added.
        * platform/String.cpp: Added.
        * platform/StringImpl.cpp: Added.
        * platform/StringImpl.h: Added.
        Moved files here and renamed them. PlatformString.h would be named String.h except
        that conflicts with <string.h> on non-case-sensitive file systems.

        * khtml/xml/dom_atomicstring.cpp: Removed.
        * khtml/xml/dom_atomicstring.h: Removed.
        * khtml/xml/dom_stringimpl.cpp: Removed.
        * khtml/xml/dom_stringimpl.h: Removed.
        * khtml/dom/dom_string.cpp: Removed.
        * khtml/dom/dom_string.h: Removed.

        * WebCore.xcodeproj/project.pbxproj: Updated for file adds and removes.
        * WebCore.vcproj/WebCore/WebCore.vcproj: Ditto.

        * WebCore+SVG/KDOMHeaders.h:
        * WebCore+SVG/Namespace.h:
        * WebCore+SVG/kdom.h:
        * bindings/objc/DOM.mm:
        * bindings/objc/DOMCSS.mm:
        * bindings/objc/DOMHTML.mm:
        * bindings/objc/DOMInternal.mm:
        * bridge/BrowserExtension.h:
        * css/css_base.h:
        * css/css_computedstyle.cpp:
        * css/css_grammar.y:
        * css/css_ruleimpl.h:
        * css/css_stylesheetimpl.cpp:
        * css/css_stylesheetimpl.h:
        * css/css_valueimpl.cpp:
        * css/csshelper.cpp:
        * css/csshelper.h:
        * css/cssparser.h:
        * css/cssstyleselector.h:
        * kcanvas/KCanvasTreeDebug.cpp:
        * khtml/dom/dom2_events.h:
        * khtml/ecma/JSXMLHttpRequest.cpp:
        * khtml/ecma/kjs_html.cpp:
        * khtml/ecma/kjs_window.cpp:
        * khtml/editing/SelectionController.cpp:
        * khtml/editing/apply_style_command.cpp:
        * khtml/editing/delete_from_text_node_command.h:
        * khtml/editing/insert_into_text_node_command.h:
        * khtml/editing/jsediting.h:
        * khtml/editing/rebalance_whitespace_command.h:
        * khtml/editing/remove_css_property_command.h:
        * khtml/editing/typing_command.h:
        * khtml/html/FormDataList.h:
        * khtml/html/HTMLNameCollectionImpl.h:
        * khtml/html/html_baseimpl.cpp:
        * khtml/html/html_objectimpl.cpp:
        * khtml/khtml_events.h:
        * khtml/xbl/xbl_binding.h:
        * khtml/xbl/xbl_protobinding.h:
        * khtml/xbl/xbl_protohandler.h:
        * khtml/xbl/xbl_protoimplementation.h:
        * khtml/xml/DOMImplementationImpl.cpp:
        * khtml/xml/EventNames.h:
        * khtml/xml/NameNodeListImpl.h:
        * khtml/xml/NamedNodeMapImpl.h:
        * khtml/xml/NodeImpl.cpp:
        * khtml/xml/NodeImpl.h:
        * khtml/xml/dom2_eventsimpl.h:
        * khtml/xml/dom_atomicstringlist.h:
        * khtml/xml/dom_elementimpl.h:
        * khtml/xml/dom_qname.h:
        * khtml/xml/dom_xmlimpl.cpp:
        * khtml/xml/xml_tokenizer.h:
        * khtml/xsl/xsl_stylesheetimpl.cpp:
        * khtml/xsl/xslt_processorimpl.h:
        * ksvg2/misc/KCanvasRenderingStyle.cpp:
        * ksvg2/svg/SVGAngleImpl.h:
        * ksvg2/svg/SVGAnimateColorElementImpl.cpp:
        * ksvg2/svg/SVGAnimatedStringImpl.h:
        * ksvg2/svg/SVGAnimationElementImpl.cpp:
        * ksvg2/svg/SVGColorImpl.h:
        * ksvg2/svg/SVGDOMImplementationImpl.cpp:
        * ksvg2/svg/SVGElementImpl.cpp:
        * ksvg2/svg/SVGFitToViewBoxImpl.cpp:
        * ksvg2/svg/SVGLangSpaceImpl.cpp:
        * ksvg2/svg/SVGLangSpaceImpl.h:
        * ksvg2/svg/SVGLengthImpl.h:
        * ksvg2/svg/SVGMarkerElementImpl.cpp:
        * ksvg2/svg/SVGPaintImpl.h:
        * ksvg2/svg/SVGPathSegImpl.h:
        * ksvg2/svg/SVGPreserveAspectRatioImpl.cpp:
        * ksvg2/svg/SVGSVGElementImpl.cpp:
        * ksvg2/svg/SVGScriptElementImpl.cpp:
        * ksvg2/svg/SVGStringListImpl.h:
        * ksvg2/svg/SVGStylableImpl.h:
        * ksvg2/svg/SVGStyleElementImpl.cpp:
        * ksvg2/svg/SVGStyledElementImpl.cpp:
        * ksvg2/svg/SVGSymbolElementImpl.cpp:
        * ksvg2/svg/SVGViewElementImpl.cpp:
        * kwq/KWQAccObject.mm:
        * kwq/KWQFontFamily.h:
        * kwq/KWQFontFamily.mm:
        * kwq/KWQKJobClasses.h:
        * kwq/KWQKJobClasses.mm:
        * loader/Cache.h:
        * loader/CachedObject.h:
        * loader/CachedXBLDocument.h:
        * loader/CachedXSLStyleSheet.h:
        * loader/DocLoader.h:
        * page/Frame.cpp:
        * page/FrameTreeNode.h:
        * platform/SegmentedString.h:
        * rendering/render_image.h:
        * rendering/render_style.cpp:
        * xml/xmlhttprequest.cpp:
        Updated all includes to use new filenames.

2006-02-05  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by Darin.

        - various event cleanup, including fixing of the load event for iframes
        http://bugs.webkit.org/show_bug.cgi?id=7079
        
        Specific changes:
        
        - don't bother to nil-check the document, a node can never have a null document now
        - move temp event forgetting from dispatchEvent to dispatchGenericEvent
        - pass event down using RefPtr::release() to avoid ref thrashing
        - support default handlers even for non-bubbling events (only on
          target node) and skip calling default event handler explicitly in
          callers
        - dispatch a whole separate load event to a frame document's containing frame
        - don't let propagationStopped prevent this new event
        - remove bogus security check for iframe onload

        * bridge/mac/MacFrame.mm:
        (WebCore::MacFrame::shouldClose):
        * khtml/xml/NodeImpl.cpp:
        (WebCore::NodeImpl::dispatchEvent):
        (WebCore::NodeImpl::dispatchGenericEvent):
        (WebCore::NodeImpl::dispatchWindowEvent):
        * khtml/xml/NodeImpl.h:

2006-02-05  Maciej Stachowiak  <mjs@apple.com>

        Reviewed and landed by Anders.

        * bindings/objc/DOM.mm:
        (-[DOMNode replaceChild::]):
        (KJS::DOMNodeProtoFunc::callAsFunction):
        Return correct child. Fixes test case failures introduced by the fix to
        http://bugs.webkit.org/show_bug.cgi?id=7076
        
2006-02-05  David Kilzer  <ddkilzer@kilzer.net>

        Reviewed by Darin, landed by ap (with a tweak suggested by Darin).

        - Fixed --no-svg build on http://build.webkit.org/.

        * kwq/KWQPainter.mm: Include "FloatRect.h".

2006-02-04  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by Darin.

        - Just return bool from DOM child mutation methods instead of the node
        http://bugs.webkit.org/show_bug.cgi?id=7076

        * bindings/objc/DOM.mm:
        (-[DOMNode insertBefore::]):
        (-[DOMNode replaceChild::]):
        (-[DOMNode removeChild:]):
        (-[DOMNode appendChild:]):
        * khtml/ecma/kjs_dom.cpp:
        (KJS::DOMNodeProtoFunc::callAsFunction):
        * khtml/html/HTMLOptGroupElementImpl.cpp:
        (WebCore::HTMLOptGroupElementImpl::insertBefore):
        (WebCore::HTMLOptGroupElementImpl::replaceChild):
        (WebCore::HTMLOptGroupElementImpl::removeChild):
        (WebCore::HTMLOptGroupElementImpl::appendChild):
        * khtml/html/HTMLOptGroupElementImpl.h:
        * khtml/html/HTMLSelectElementImpl.cpp:
        (WebCore::HTMLSelectElementImpl::insertBefore):
        (WebCore::HTMLSelectElementImpl::replaceChild):
        (WebCore::HTMLSelectElementImpl::removeChild):
        (WebCore::HTMLSelectElementImpl::appendChild):
        * khtml/html/HTMLSelectElementImpl.h:
        * khtml/html/HTMLTextAreaElementImpl.cpp:
        (WebCore::HTMLTextAreaElementImpl::setDefaultValue):
        * khtml/html/html_tableimpl.cpp:
        (WebCore::HTMLTableElementImpl::createTFoot):
        * khtml/xml/ContainerNodeImpl.cpp:
        (WebCore::ContainerNodeImpl::insertBefore):
        (WebCore::ContainerNodeImpl::replaceChild):
        (WebCore::ContainerNodeImpl::removeChild):
        (WebCore::ContainerNodeImpl::appendChild):
        * khtml/xml/ContainerNodeImpl.h:
        * khtml/xml/NodeImpl.cpp:
        (WebCore::NodeImpl::insertBefore):
        (WebCore::NodeImpl::replaceChild):
        (WebCore::NodeImpl::removeChild):
        (WebCore::NodeImpl::appendChild):
        * khtml/xml/NodeImpl.h:
        * khtml/xml/xml_tokenizer.cpp:
        (WebCore::XMLTokenizer::insertErrorMessageBlock):

2006-02-04  Maciej Stachowiak  <mjs@apple.com>

        - reverted CSS media queries patch, as it causes random crashes on the
        layout tests with a debug build.
        
        * WebCore.xcodeproj/project.pbxproj:
        * css/css_grammar.y:
        * css/css_mediaqueryeval.cpp: Removed.
        * css/css_mediaqueryeval.h: Removed.
        * css/css_mediaqueryimpl.cpp: Removed.
        * css/css_mediaqueryimpl.h: Removed.
        * css/css_stylesheetimpl.cpp:
        (MediaListImpl::MediaListImpl):
        (MediaListImpl::contains):
        (MediaListImpl::deleteMedium):
        (MediaListImpl::mediaText):
        (MediaListImpl::setMediaText):
        * css/css_stylesheetimpl.h:
        (DOM::MediaListImpl::length):
        (DOM::MediaListImpl::item):
        (DOM::MediaListImpl::appendMedium):
        * css/css_valueimpl.h:
        * css/csshelper.h:
        * css/cssmediafeatures.in: Removed.
        * css/cssparser.cpp:
        * css/cssparser.h:
        * css/cssstyleselector.cpp:
        (WebCore::CSSStyleSelector::CSSStyleSelector):
        (WebCore::CSSStyleSelector::init):
        (WebCore::CSSStyleSelector::~CSSStyleSelector):
        (WebCore::CSSStyleSelector::loadDefaultStyle):
        (WebCore::CSSStyleSelector::styleForElement):
        (WebCore::CSSStyleSelector::styleRulesForElement):
        (WebCore::CSSRuleSet::addRulesFromSheet):
        (WebCore::CSSStyleSelector::getColorFromPrimitiveValue):
        * css/cssstyleselector.h:
        * css/makemediafeatures: Removed.
        * css/maketokenizer:
        * css/tokenizer.flex:
        * khtml/html/html_headimpl.cpp:
        (WebCore::HTMLLinkElementImpl::process):
        (WebCore::HTMLLinkElementImpl::setStyleSheet):
        (WebCore::HTMLStyleElementImpl::childrenChanged):
        * platform/Screen.h:
        * platform/mac/Screen.mm:

2006-02-04  Andrew Wellington  <proton@wiretapped.net>

        Reviewed and tweaked by Darin.

        - fixed regressions caused by fix for bug 5776 earlier today

        * rendering/render_list.h: Remove m_value from RenderListMarker, add it to RenderListItem.
        A few other tweaks, including getting rid of "friend" relationship.
        * rendering/render_list.cpp:
        (RenderListItem::RenderListItem): Initialize m_value.
        (RenderListItem::setStyle): Restore old behavior of making no marker for LNONE case.
        (RenderListItem::calcValue): Work on m_value, not m_marker->m_value.
        (RenderListItem::resetValue): Reset m_value, even if there's no marker.
        (RenderListMarker::RenderListMarker): Remove code to set up m_value.
        (RenderListMarker::calcMinMaxWidth): Get marker value from list item.

        * rendering/RenderContainer.cpp: (updateListMarkerNumbers): Call resetValue by its new name.

2006-02-04  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by Hyatt.

        - change JavaScript collector statistics calls to use HashCountedSet instead
        of CFSet; other misc cleanup
        http://bugs.webkit.org/show_bug.cgi?id=7072

        * kwq/WebCoreJavaScript.h:
        * kwq/WebCoreJavaScript.mm:
        (+[WebCoreJavaScript protectedObjectCount]): Renamed from referencedObjectCounts
        (+[WebCoreJavaScript rootObjectTypeCounts]): Renamed from rootObjectClasses,
        changed from NSSet to NSCountedSet.

2006-02-04  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by Darin.

        - refactor and simplify code using ChildFrame in preparation for removing it
        http://bugs.webkit.org/show_bug.cgi?id=7065

        * WebCore.xcodeproj/project.pbxproj: reordered slightly.
        * bridge/mac/MacFrame.h:
        * bridge/mac/MacFrame.mm:
        (WebCore::MacFrame::createFrame): Don't take isObject parameter, just check tag name
        * khtml/html/HTMLFormElementImpl.cpp:
        (WebCore::HTMLFormElementImpl::prepareSubmit): remove obsolete hasOnlyLocalReferences check
        * khtml/html/html_baseimpl.cpp:
        (WebCore::HTMLFrameElementImpl::isURLAllowed): remove obsolete hasOnlyLocalReferences check
        * loader/DocLoader.cpp:
        (khtml::DocLoader::requestImage): remove obsolete hasOnlyLocalReferences check
        (khtml::DocLoader::requestStyleSheet): remove obsolete hasOnlyLocalReferences check
        (khtml::DocLoader::requestScript): remove obsolete hasOnlyLocalReferences check
        (khtml::DocLoader::requestXSLStyleSheet): remove obsolete hasOnlyLocalReferences check
        * page/Frame.cpp:
        (WebCore::Frame::requestFrame): refactored and simplified
        (WebCore::Frame::requestObject): ditto
        (WebCore::Frame::shouldUsePlugin): ditto
        (WebCore::Frame::loadPlugin): ditto
        (WebCore::Frame::loadSubframe): ditto
        (WebCore::Frame::frameNames): remove obsolete m_bPreloaded check
        (WebCore::Frame::frames): ditto
        (WebCore::Frame::connectChild): check isFrame, not child type
        (WebCore::Frame::disconnectChild): ditto
        (WebCore::Frame::handleFallbackContent): greatly simplify using onwerElement
        (WebCore::Frame::updateBaseURLForEmptyDocument): use ownerElement, notChildFrame
        (WebCore::Frame::onlyLocalReferences): removed
        (WebCore::Frame::setOnlyLocalReferences): removed
        * page/Frame.h:
        * page/FramePrivate.h:
        (WebCore::ChildFrame::ChildFrame): remove most fields.
        * rendering/render_frames.cpp:
        (WebCore::RenderPartObject::updateWidget): Remove redundant setting of base URL for child document
        of iframe, Frame itself takes care of this already

2006-02-03  Andrew Wellington  <proton@wiretapped.net>

        Reviewed and tweaked by Darin.
        
        - fix http://bugs.webkit.org/show_bug.cgi?id=5776
          Generated numbers of ordered lists (OL) are not calculated right
  
        Uses the DOM tree to calculate previous nodes and nest correctly

        Tests:
        * fast/lists/olstart.html
        * fast/lists/ol-display-types.html

        * khtml/html/html_listimpl.cpp:
        (DOM::HTMLLIElementImpl::attach): remove calculation of start node value
        * rendering/render_list.cpp:
        (RenderListItem::setStyle): set up an m_marker even if the style is to
        not display the marker, to get the numbering right
        (enclosingList): gets the list enclosing the given node
        (previousListItemElement): gets the previous element in the list
        (RenderListItem::calcListValue): calculate the value correctly

2006-02-03  Geoffrey Garen  <ggaren@apple.com>

        Reviewed by beth.

        - Fixed <rdar://problem/4394868> window.open fails to parse 
        "width=200px"

        Cause: QString::toInt() is too aggressive; it parses letters as numbers.
        The fix is to switch to DOMString. It's all the rage these days,
        and its toInt() behavior matches what we want.

        * manual-tests/window-open-features-parsing.html: Added "px" case to
        giant evil string.

        * khtml/ecma/kjs_window.cpp:
        (KJS::setWindowFeature):
        (KJS::parseWindowFeatures):
        (KJS::WindowFunc::callAsFunction):

2006-02-03  Kimmo Kinnunen  <kimmo.t.kinnunen@nokia.com>

        Reviewed by Dave Hyatt and Tim H.

        Bug 4127: WebCore doesn't support Media Queries (CSS3 module)
        http://bugs.webkit.org/show_bug.cgi?id=4127

        http://www.w3.org/TR/css3-mediaqueries/

        * WebCore.xcodeproj/project.pbxproj:
        * css/css_grammar.y:
        * css/css_mediaqueryeval.cpp: Added.
        (MediaQueryEvaluator):
        (MediaQueryEvaluator::~MediaQueryEvaluator):
        (MediaQueryEvaluator::mediaTypeMatch):
        (applyRestrictor):
        (MediaQueryEvaluator::eval):
        (parseAspectRatio):
        * css/css_mediaqueryeval.h: Added.
        * css/css_mediaqueryimpl.cpp: Added.
        (MediaQueryExpImpl::MediaQueryExpImpl):
        (MediaQueryExpImpl::~MediaQueryExpImpl):
        (MediaQueryExpImpl::mediaFeature):
        (MediaQueryExpImpl::value):
        (MediaQueryImpl::MediaQueryImpl):
        (MediaQueryImpl::~MediaQueryImpl):
        (MediaQueryImpl::restrictor):
        (MediaQueryImpl::expressions):
        (MediaQueryImpl::mediaType):
        (MediaQueryImpl::operator==):
        * css/css_mediaqueryimpl.h: Added.
        (DOM::MediaQueryExpImpl::operator==):
        (DOM::MediaQueryExpListImpl::MediaQueryExpListImpl):
        (DOM::MediaQueryExpListImpl::append):
        (DOM::MediaQueryExpListImpl::list):
        (DOM::MediaQueryImpl::):
        * css/css_stylesheetimpl.cpp:
        (MediaListImpl::MediaListImpl):
        (MediaListImpl::deleteMedium):
        (mediaQueryAsDOMString):
        (MediaListImpl::mediaText):
        (MediaListImpl::setMediaText):
        (MediaListImpl::item):
        (MediaListImpl::appendMedium):
        (MediaListImpl::appendMediaQuery):
        * css/css_stylesheetimpl.h:
        (DOM::MediaListImpl::length):
        (DOM::MediaListImpl::mediaQueries):
        * css/css_valueimpl.h:
        * css/csshelper.h:
        * css/cssmediafeatures.in: Added.
        * css/cssparser.cpp:
        (CSSParser::parseMediaQuery):
        * css/cssparser.h:
        * css/cssstyleselector.cpp:
        (WebCore::CSSStyleSelector::CSSStyleSelector):
        (WebCore::CSSStyleSelector::init):
        (WebCore::CSSStyleSelector::~CSSStyleSelector):
        (WebCore::CSSStyleSelector::loadDefaultStyle):
        (WebCore::CSSStyleSelector::styleForElement):
        (WebCore::CSSStyleSelector::styleRulesForElement):
        (WebCore::CSSRuleSet::addRulesFromSheet):
        (WebCore::CSSStyleSelector::defaultStyleForRoot):
        * css/cssstyleselector.h:
        * css/makemediafeatures: Added.
        * css/maketokenizer:
        * css/tokenizer.flex:
        * khtml/html/html_headimpl.cpp:
        (WebCore::HTMLLinkElementImpl::process):
        (WebCore::HTMLLinkElementImpl::setStyleSheet):
        (WebCore::HTMLStyleElementImpl::childrenChanged):
        * platform/Screen.h:
        * platform/mac/Screen.mm:
        (WebCore::screenDepthPerComponent):
        (WebCore::screenIsMonochrome):

2006-02-03  Timothy Hatcher  <timothy@apple.com>

        Reviewed by Justin.

        Renamed configuration names to Debug, Release and Production.

        * WebCore.xcodeproj/project.pbxproj:

2006-02-03  Beth Dakin  <bdakin@apple.com>

        Reviewed by Hyatt.

        No test cases added because this is an unreproducible crash.

        This is a speculative fix for <rdar://problem/4048026> 
        CrashTracer: [BOUNCE BACK] 1219 crashes in Safari at 
        com.apple.WebCore: KHTMLParser::popOneBlock + 36

        It seems possible that current could be nil when this function is 
        called, so the speculative fix is to add a nil check.

        * khtml/html/htmlparser.cpp:
        (HTMLParser::popOneBlock): Added nil check.

2006-02-03  David Hyatt  <hyatt@apple.com>

        Refactoring of the image classes to make them even more
        portable.

        Reviewed by mjs

        * WebCore.xcodeproj/project.pbxproj:
        * platform/Image.cpp:
        (WebCore::m_animationObserver):
        (WebCore::Image::Image):
        (WebCore::Image::~Image):
        (WebCore::Image::resetAnimation):
        (WebCore::Image::setData):
        (WebCore::Image::isNull):
        (WebCore::Image::size):
        (WebCore::Image::rect):
        (WebCore::Image::width):
        (WebCore::Image::height):
        (WebCore::):
        (WebCore::Image::compositeOperatorFromString):
        * platform/ImageData.cpp: Added.
        (WebCore::FrameData::clear):
        (WebCore::ImageData::ImageData):
        (WebCore::ImageData::~ImageData):
        (WebCore::ImageData::invalidateData):
        (WebCore::ImageData::cacheFrame):
        (WebCore::ImageData::isNull):
        (WebCore::ImageData::size):
        (WebCore::ImageData::setData):
        (WebCore::ImageData::setNativeData):
        (WebCore::ImageData::frameCount):
        (WebCore::ImageData::isSizeAvailable):
        (WebCore::ImageData::frameAtIndex):
        (WebCore::ImageData::frameDurationAtIndex):
        (WebCore::ImageData::shouldAnimate):
        (WebCore::ImageData::startAnimation):
        (WebCore::ImageData::stopAnimation):
        (WebCore::ImageData::resetAnimation):
        (WebCore::ImageData::advanceAnimation):
        * platform/ImageData.h: Added.
        (KXMLCore::):
        (WebCore::FrameData::m_duration):
        (WebCore::FrameData::~FrameData):
        (WebCore::ImageData::setIsPDF):
        (WebCore::ImageData::currentFrame):
        * platform/ImageDecoder.h:
        * platform/mac/Image.mm:
        (WebCore::Image::loadResource):
        (WebCore::Image::supportsType):
        (WebCore::Image::getCGImageRef):
        (WebCore::Image::getNSImage):
        (WebCore::Image::getTIFFRepresentation):
        (WebCore::graphicsContext):
        (WebCore::setCompositingOperation):
        (WebCore::fillSolidColorInRect):
        (WebCore::Image::drawInRect):
        (WebCore::drawPattern):
        (WebCore::Image::tileInRect):
        (WebCore::Image::scaleAndTileInRect):
        * platform/mac/ImageData.mm: Added.
        (WebCore::setCompositingOperation):
        (WebCore::ImageData::invalidateAppleSpecificData):
        (WebCore::ImageData::checkForSolidColor):
        (WebCore::ImageData::getTIFFRepresentation):
        (WebCore::ImageData::getNSImage):
        * platform/mac/PDFDocumentImage.h: Added.
        * platform/mac/PDFDocumentImage.mm: Added.
        (WebCore::releasePDFDocumentData):
        (WebCore::PDFDocumentImage::PDFDocumentImage):
        (WebCore::PDFDocumentImage::~PDFDocumentImage):
        (WebCore::PDFDocumentImage::documentRef):
        (WebCore::PDFDocumentImage::mediaBox):
        (WebCore::PDFDocumentImage::bounds):
        (WebCore::PDFDocumentImage::adjustCTM):
        (WebCore::PDFDocumentImage::setCurrentPage):
        (WebCore::PDFDocumentImage::currentPage):
        (WebCore::PDFDocumentImage::pageCount):
        (WebCore::PDFDocumentImage::draw):

2006-02-03  David Hyatt  <hyatt@apple.com>

        Make a new class called ImageDecoder that wraps a CGImageSource.
        This paves the way for ImageData to become portable as well.

        Reviewed by mjs

        * WebCore.xcodeproj/project.pbxproj:
        * platform/ImageDecoder.h: Added.
        * platform/mac/Image.mm:
        (WebCore::ImageData::~ImageData):
        (WebCore::ImageData::invalidateData):
        (WebCore::ImageData::cacheFrame):
        (WebCore::ImageData::size):
        (WebCore::ImageData::setCFData):
        (WebCore::ImageData::frameCount):
        (WebCore::ImageData::isSizeAvailable):
        (WebCore::ImageData::drawInRect):
        * platform/mac/ImageDecoder.cpp: Added.
        (WebCore::ImageDecoder::ImageDecoder):
        (WebCore::ImageDecoder::~ImageDecoder):
        (WebCore::imageSourceOptions):
        (WebCore::ImageDecoder::initialized):
        (WebCore::ImageDecoder::setData):
        (WebCore::ImageDecoder::isSizeAvailable):
        (WebCore::ImageDecoder::size):
        (WebCore::ImageDecoder::repetitionCount):
        (WebCore::ImageDecoder::frameCount):
        (WebCore::ImageDecoder::createFrameAtIndex):
        (WebCore::ImageDecoder::frameDurationAtIndex):

2006-02-02  David Hyatt  <hyatt@apple.com>

        Move ImageAnimationObserver into its own file.

        Reviewed by mjs

        * WebCore.xcodeproj/project.pbxproj:
        * loader/CachedImage.h:
        * platform/Image.h:
        * platform/ImageAnimationObserver.h: Added.
        (WebCore::ImageAnimationObserver::~ImageAnimationObserver):
        * platform/mac/Image.mm:

2006-02-02  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by Adele.

        - remove all use of the ChildFrame from outside Frame.cpp, in preparation for removing it

        * bridge/mac/MacFrame.h:
        * bridge/mac/MacFrame.mm:
        (WebCore::MacFrame::frameDetached): Factor out the ChildFrame manipulations into a base
        class method.
        (WebCore::MacFrame::objectContentType): factored out from createPart, calls the bridge to
        determine contents for an Object tag.
        (WebCore::MacFrame::createPlugin): factor out code from createPart that makes a Plugin.
        (WebCore::MacFrame::createFrame): ditto for code that makes a Frame.
        (WebCore::MacFrame::createEmptyDocument): factored out part into the superclass
        * khtml/xml/DocumentImpl.cpp:
        (WebCore::DocumentImpl::ownerElement): Call new ownerElement method on Frame
        instead of mucking at Frame internals.
        * page/Frame.cpp:
        (WebCore::Frame::createPart): Moved here from MacFrame, but some of the guts were
        factored out.
        (WebCore::Frame::ownerElement): New method, logic moved from DocumentImpl.
        (WebCore::Frame::frameDetached): New virtual method, the part of this that
        pokes at ChildFrame structures.
        (WebCore::Frame::updateBaseURLForEmptyDocument): Helper that looks at the ChildFrame
        array for the benefit of createEmptyDocument.
        * page/Frame.h:
        * page/Page.h: Fix up modeline.
        * page/Plugin.h: Added.
        (WebCore::Plugin::Plugin): Moved here from MacFrame.mm, since it is now used by Frame.
        (WebCore::Plugin::view): ditto

2006-02-02  David Hyatt  <hyatt@apple.com>

        Avoid extra copies of all the decoded image bytes.

        Reviewed by mjs

        * platform/mac/Image.mm:
        (WebCore::ImageData::setData):

2006-02-02  Justin Garcia  <justin.garcia@apple.com>

        Reviewed by darin, harrison
        
        <http://bugs.webkit.org/show_bug.cgi?id=6586>
        REGRESSION: visible_text.cpp assertion failure in Mail.app

        Calling range() on a WordIterator destroyed its RangeImpl, use
        RefPtr instead of PassRefPtr.
        Turned on continuous spell checking to test the fix, found
        a crasher caused by invalid positions created in
        previousBoundary.

        Added layout test:
        * editing/selection/end-of-document.html

        * khtml/editing/visible_text.h:
        * khtml/editing/visible_units.cpp:
        (khtml::previousBoundary):

2006-02-02  David Hyatt  <hyatt@apple.com>

        Vectorize Image.  Optimize so that we no longer throw away
        all CGImageRefs.  Now we just throw away the last frame.

        Reviewed by mjs

        * platform/mac/Image.mm:
        (WebCore::FrameData::m_duration):
        (WebCore::FrameData::~FrameData):
        (WebCore::FrameData::clear):
        (WebCore::ImageData::invalidateData):
        (WebCore::ImageData::cacheFrame):
        (WebCore::ImageData::frameAtIndex):
        (WebCore::ImageData::frameDurationAtIndex):

2006-01-31  Geoffrey Garen  <ggaren@apple.com>

        Reviewed by mjs.

        Cleaned up some stuff I came across when working with JS enabled/
        disabled code:

        (1) Renamed initScript to initScriptIfNeeded, because that's what it
            does
        (2) Removed dead or otherwise irrelevent code
        (3) Fixed up comments
        (4) Removed NULL checks for interpreter() since it never returns NULL,
            replaced with single assert().

        No test case because there's no change in behavior.

        * khtml/ecma/kjs_proxy.cpp:
        (WebCore::KJSProxyImpl::evaluate): 1
        (WebCore::KJSProxyImpl::createHTMLEventHandler): 1
        (WebCore::KJSProxyImpl::createSVGEventHandler): 1
        (WebCore::KJSProxyImpl::interpreter): 4
        (WebCore::KJSProxyImpl::initScriptIfNeeded): 1
        * khtml/ecma/kjs_proxy.h: 1
        * page/Frame.cpp:
        (Frame::didOpenURL): 2, 3
        (Frame::stopLoading): 2
        (Frame::jScriptEnabled): 2
        (Frame::jScript): changed method call to data member access to match
                          style of rest of class
        (Frame::javaEnabled): 2
        (Frame::pluginsEnabled): 2
        (Frame::begin): 3
        (Frame::userGestureHint): 4
        (Frame::pauseTimeouts): collapsed a line
        (Frame::resumeTimeouts): ditto
        (Frame::saveInterpreterBuiltins): 4
        (Frame::restoreInterpreterBuiltins): 4
        * page/Frame.h: 2
        * page/FramePrivate.h: 2
        (FramePrivate::FramePrivate): 2

2006-02-02  David Hyatt  <hyatt@apple.com>

        Fix for PLT performance regression.  Make sure that the document's load event timer
        isn't started again if it's already active.

        Reviewed by mjs

        * khtml/xml/DocumentImpl.cpp:
        (WebCore::DocumentImpl::dispatchImageLoadEventSoon):

2006-02-02  Darin Adler  <darin@apple.com>

        Reviewed by Maciej.

        - fix http://bugs.webkit.org/show_bug.cgi?id=7000
          REGRESSION: Scrolling is triggering onunload in TOT

        Tests:
        - fast/events/onunload-body-property.html
        - fast/events/onunload-window-property.html

        * khtml/ecma/kjs_dom.cpp:
        (KJS::DOMNode::getValueProperty): Change onunload case to use unloadEvent, not scrollEvent.
        (KJS::DOMNode::putValueProperty): Ditto.
        * khtml/ecma/kjs_window.cpp:
        (KJS::Window::getValueProperty): Ditto.
        (KJS::Window::putValueProperty): Ditto.

2006-02-02  Darin Adler  <darin@apple.com>

        Reviewed by Hyatt.

        - fix http://bugs.webkit.org/show_bug.cgi?id=6998
          setTimeout(0) tight loop uses almost all CPU (need 10ms minimum for timeout?)

        * khtml/ecma/kjs_window.cpp: (KJS::WindowQObject::installTimeout): When converting
        the timeout number from an integer ms to a double seconds, use a 10 ms minimum.

2006-02-02  Darin Adler  <darin@apple.com>

        - added a FIXME about an incorrect change made to FloatRect
          to fix the Win32 compile

        * platform/FloatRect.cpp: (WebCore::enclosingIntRect): Added FIXME
        because this should do a ceil operation, not a round operation.

2006-02-02  David Hyatt  <hyatt@apple.com>

       Fix for bug 6957, rewrite image rendering in C++ and move it to
       WebCore.  Animation now stops lazily and just uses the CachedObject
       notification system to push updates so that rects no longer need to
       be cached (or sets of animating renderers in specific views).
       
       Reviewed by darin

        * WebCore.exp:
        * bindings/objc/DOM.mm:
        (-[DOMElement _image]):
        (-[DOMElement _imageTIFFRepresentation]):
        * bindings/objc/DOMPrivate.h:
        * bridge/mac/MacFrame.mm:
        (WebCore::MacFrame::khtmlMouseMoveEvent):
        (WebCore::MacFrame::fileWrapperForElement):
        * bridge/mac/WebCoreFrameBridge.h:
        * bridge/mac/WebCoreFrameBridge.mm:
        (-[WebCoreFrameBridge elementAtPoint:]):
        * kcanvas/RenderSVGImage.cpp:
        (RenderSVGImage::imageChanged):
        * kcanvas/RenderSVGImage.h:
        * kcanvas/device/quartz/KCanvasFilterQuartz.mm:
        (KCanvasFEImageQuartz::getCIFilter):
        * khtml/ecma/kjs_html.cpp:
        (KJS::drawPattern):
        * kwq/KWQClipboard.h:
        (WebCore::KWQClipboard::setDragHasStarted):
        * kwq/KWQClipboard.mm:
        (WebCore::KWQClipboard::dragNSImage):
        * kwq/KWQCursor.mm:
        (WebCore::createCustomCursor):
        * kwq/KWQPainter.h:
        (WebCore::QPainter::):
        * kwq/KWQPainter.mm:
        (WebCore::QPainter::drawFloatImage):
        (WebCore::QPainter::drawTiledImage):
        (WebCore::QPainter::drawScaledAndTiledImage):
        * kwq/KWQScrollView.h:
        * kwq/KWQScrollView.mm:
        (QScrollView::inWindow):
        * kwq/WebCoreImageRendererFactory.h:
        * kwq/WebCoreImageRendererFactory.m:
        * loader/CachedImage.cpp:
        (WebCore::CachedImage::ref):
        (WebCore::CachedImage::imageRect):
        (WebCore::CachedImage::notifyObservers):
        (WebCore::CachedImage::data):
        (WebCore::CachedImage::error):
        (WebCore::CachedImage::shouldStopAnimation):
        (WebCore::CachedImage::animationAdvanced):
        * loader/CachedImage.h:
        (WebCore::CachedImage::canRender):
        * loader/CachedObjectClient.h:
        (WebCore::CachedObjectClient::imageChanged):
        (WebCore::CachedObjectClient::willRenderImage):
        * platform/Image.h:
        (WebCore::ImageAnimationObserver::~ImageAnimationObserver):
        (WebCore::Image::animationObserver):
        (WebCore::Image::):
        * platform/mac/Image.mm:
        (WebCore::releasePDFDocumentData):
        (WebCore::PDFDocumentImage::PDFDocumentImage):
        (WebCore::PDFDocumentImage::~PDFDocumentImage):
        (WebCore::PDFDocumentImage::documentRef):
        (WebCore::PDFDocumentImage::mediaBox):
        (WebCore::PDFDocumentImage::bounds):
        (WebCore::PDFDocumentImage::adjustCTM):
        (WebCore::PDFDocumentImage::setCurrentPage):
        (WebCore::PDFDocumentImage::currentPage):
        (WebCore::PDFDocumentImage::pageCount):
        (WebCore::PDFDocumentImage::draw):
        (WebCore::ImageData::setIsPDF):
        (WebCore::ImageData::currentFrame):
        (WebCore::m_PDFDoc):
        (WebCore::ImageData::~ImageData):
        (WebCore::ImageData::invalidateData):
        (WebCore::ImageData::cacheFrame):
        (WebCore::ImageData::checkForSolidColor):
        (WebCore::ImageData::isNull):
        (WebCore::ImageData::size):
        (WebCore::ImageData::setData):
        (WebCore::ImageData::setCFData):
        (WebCore::ImageData::imageSourceOptions):
        (WebCore::ImageData::frameCount):
        (WebCore::ImageData::isSizeAvailable):
        (WebCore::ImageData::frameAtIndex):
        (WebCore::ImageData::getTIFFRepresentation):
        (WebCore::ImageData::getNSImage):
        (WebCore::ImageData::frameDurationAtIndex):
        (WebCore::ImageData::shouldAnimate):
        (WebCore::ImageData::startAnimation):
        (WebCore::ImageData::stopAnimation):
        (WebCore::ImageData::resetAnimation):
        (WebCore::ImageData::advanceAnimation):
        (WebCore::ImageData::setCompositingOperation):
        (WebCore::ImageData::fillSolidColorInRect):
        (WebCore::ImageData::drawInRect):
        (WebCore::drawPattern):
        (WebCore::):
        (WebCore::ImageData::tileInRect):
        (WebCore::ImageData::scaleAndTileInRect):
        (WebCore::Image::loadResource):
        (WebCore::Image::supportsType):
        (WebCore::m_animationObserver):
        (WebCore::Image::Image):
        (WebCore::Image::~Image):
        (WebCore::Image::getCGImageRef):
        (WebCore::Image::getNSImage):
        (WebCore::Image::getTIFFRepresentation):
        (WebCore::Image::resetAnimation):
        (WebCore::Image::setData):
        (WebCore::Image::isNull):
        (WebCore::Image::size):
        (WebCore::Image::rect):
        (WebCore::graphicsContext):
        (WebCore::Image::drawInRect):
        (WebCore::Image::tileInRect):
        (WebCore::Image::scaleAndTileInRect):
        * rendering/render_box.cpp:
        (WebCore::RenderBox::paintBackgroundExtended):
        * rendering/render_image.cpp:
        (WebCore::RenderImage::setCachedImage):
        (WebCore::RenderImage::imageChanged):
        * rendering/render_image.h:
        * rendering/render_line.cpp:
        (WebCore::InlineFlowBox::paintBackground):
        (WebCore::InlineFlowBox::paintBackgroundAndBorder):
        * rendering/render_list.cpp:
        (RenderListMarker::imageChanged):
        * rendering/render_list.h:
        * rendering/render_object.cpp:
        (WebCore::RenderObject::mustRepaintBackgroundOrBorder):
        (WebCore::RenderObject::paintBorderImage):
        (WebCore::RenderObject::paintBorder):
        (WebCore::RenderObject::imageChanged):
        (WebCore::RenderObject::willRenderImage):
        * rendering/render_object.h:

2006-02-02  Mitz Pettel  <opendarwin.org@mitzpettel.com>

        Test: fast/block/positioning/height-change.html

        Reviewed by Hyatt.

        - fix http://bugs.webkit.org/show_bug.cgi?id=6881
          Block with position:absolute bottom:0 doesn't always move when height
          of containing block changes (affects Safari RSS)

        * rendering/RenderBlock.cpp:
        (WebCore::RenderBlock::layoutBlock): Relayout positioned children if the
        block's height changed during layout.
        * rendering/render_flexbox.cpp:
        (WebCore::RenderFlexibleBox::layoutBlock): Ditto.

2006-02-02  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by Darin.

        - Move name and parent from Frame to FrameTreeNode
        http://bugs.webkit.org/show_bug.cgi?id=6994

        * bridge/mac/BrowserExtensionMac.mm:
        (WebCore::BrowserExtensionMac::createNewWindow):
        * bridge/mac/MacFrame.h:
        * bridge/mac/MacFrame.mm:
        (WebCore::MacFrame::generateFrameName):
        (WebCore::MacFrame::submitForm):
        (WebCore::Frame::frameDetached):
        (WebCore::MacFrame::nextKeyViewInFrameHierarchy):
        (WebCore::MacFrame::createEmptyDocument):
        * bridge/mac/WebCoreFrameBridge.mm:
        (-[WebCoreFrameBridge setParent:]):
        (-[WebCoreFrameBridge parent]):
        (-[WebCoreFrameBridge setName:]):
        (-[WebCoreFrameBridge name]):
        * khtml/ecma/kjs_window.cpp:
        (KJS::Window::getValueProperty):
        (KJS::Window::put):
        (KJS::Window::isSafeScript):
        (KJS::WindowFunc::callAsFunction):
        * khtml/html/html_baseimpl.cpp:
        (WebCore::HTMLFrameElementImpl::isURLAllowed):
        * khtml/html/html_headimpl.cpp:
        (WebCore::HTMLLinkElementImpl::process):
        * khtml/xml/DocumentImpl.cpp:
        (WebCore::DocumentImpl::ownerElement):
        (WebCore::DocumentImpl::parentDocument):
        * page/Frame.cpp:
        (WebCore::Frame::checkCompleted):
        (WebCore::Frame::redirectionTimerFired):
        (WebCore::Frame::requestFrameName):
        (WebCore::Frame::slotChildCompleted):
        (WebCore::Frame::incrementFrameCount):
        (WebCore::Frame::decrementFrameCount):
        (WebCore::Frame::topLevelFrameCount):
        (WebCore::Frame::selectFrameElementInParentIfFullySelected):
        (WebCore::Frame::handleFallbackContent):
        (WebCore::Frame::userGestureHint):
        (WebCore::Frame::canCachePage):
        (WebCore::Frame::updatePolicyBaseURL):
        * page/Frame.h:
        * page/FramePrivate.h:
        (WebCore::FramePrivate::FramePrivate):
        * page/FrameTreeNode.cpp:
        (WebCore::FrameTreeNode::setName):
        (WebCore::FrameTreeNode::appendChild):
        (WebCore::FrameTreeNode::removeChild):
        * page/FrameTreeNode.h:
        (WebCore::FrameTreeNode::FrameTreeNode):
        (WebCore::FrameTreeNode::name):
        (WebCore::FrameTreeNode::parent):
        (WebCore::FrameTreeNode::setParent):
        * rendering/render_frames.cpp:
        (WebCore::isURLAllowed):

2006-02-01  Darin Adler  <darin@apple.com>

        Checking in without review because I *just* broke this with my last check-in.

        - fix http://bugs.webkit.org/show_bug.cgi?id=7018
          REGRESSION: clearTimeout no longer works

        Test: fast/dom/Window/clear-timeout.html

        * khtml/ecma/kjs_window.cpp: (WindowQObject::clearTimeout): Fixed a
        != that should have been a ==.

2006-02-01  Darin Adler  <darin@apple.com>

        Reviewed by Hyatt.

        - use Timer for everything, kill timer features of QObject, QTimer, QTimerEvent

        * ForwardingHeaders/kxmlcore/Noncopyable.h: Added.
        * ForwardingHeaders/kxmlcore/OwnArrayPtr.h: Added.
        * ForwardingHeaders/kxmlcore/OwnPtr.h: Added.
        * ForwardingHeaders/qtimer.h: Removed.
        * kwq/KWQTimer.cpp: Removed.
        * kwq/KWQTimer.h: Removed.

        * kwq/KWQObject.h:
        * kwq/KWQObject.cpp: Remove timer-related features.

        * kwq/KWQEvent.h: Remove QTimerEvent.

        * WebCore.xcodeproj/project.pbxproj: Updated for file changes.
        * WebCore.vcproj/WebCore/WebCore.vcproj: Ditto.

        * platform/Timer.h: Change to use nextFireInterval rather than nextFireTime.
        More convenient and also no need to define what the epoch is. Change TimerBase
        to use a virtual function rather than a function pointer. Added setDeferringTimers
        function to ensure timers don't fire while handling an event.
        * platform/mac/Timer.cpp:
        (WebCore::timerFired): Added deferral support.
        (WebCore::fireDeferred): Added.
        (WebCore::TimerBase::TimerBase): Simplify to remove function pointer.
        (WebCore::TimerBase::~TimerBase): Put in here, no longer inline.
        (WebCore::TimerBase::start): Change to use interval.
        (WebCore::TimerBase::startRepeating): Change since we use interval now.
        (WebCore::TimerBase::startOneShot): Ditto.
        (WebCore::TimerBase::stop): Added deferral support.
        (WebCore::TimerBase::nextFireInterval): Added.
        (WebCore::TimerBase::fire): Added.
        (WebCore::isDeferringTimers): Added.
        (WebCore::setDeferringTimers): Added.

        * bridge/mac/MacFrame.mm:
        (WebCore::MacFrame::startRedirectionTimer): Update for change to Timer class.
        (WebCore::MacFrame::passMouseDownEventToWidget): Update to use setDeferringTimers
        instead of QObject::setDefersTimers.

        * khtml/ecma/kjs_window.h:
        * khtml/ecma/kjs_window.cpp:
        (KJS::DOMWindowTimer): Added. Class for JavaScript "timeout".
        (KJS::WindowQObject::parentDestroyed): Update to use DOMWindowTimer.
        (KJS::WindowQObject::installTimeout): Ditto.
        (KJS::WindowQObject::pauseTimeouts): Ditto.
        (KJS::WindowQObject::resumeTimeouts): Ditto.
        (KJS::WindowQObject::clearTimeout): Ditto.
        (KJS::WindowQObject::timerFired): Ditto.
        (KJS::DOMWindowTimer::fired): Added.

        * khtml/html/htmltokenizer.h:
        * khtml/html/htmltokenizer.cpp:
        (WebCore::HTMLTokenizer::HTMLTokenizer): Use Timer instead of timer ID.
        (WebCore::HTMLTokenizer::reset): Ditto.
        (WebCore::HTMLTokenizer::continueProcessing): Ditto.
        (WebCore::HTMLTokenizer::write): Ditto.
        (WebCore::HTMLTokenizer::stopParsing): Ditto.
        (WebCore::HTMLTokenizer::processingData): Ditto.
        (WebCore::HTMLTokenizer::timerFired): Ditto.
        (WebCore::HTMLTokenizer::end): Ditto.
        (WebCore::HTMLTokenizer::finish): Ditto.

        * khtml/xml/DocumentImpl.h:
        * khtml/xml/DocumentImpl.cpp:
        (WebCore::DocumentImpl::DocumentImpl): Updated for changes to use RefPtr
        more cases, and not use it for m_svgExtensions.
        (WebCore::DocumentImpl::~DocumentImpl): Delete m_svgExtensions instead of
        just deref'ing it since it's no longer shared.
        (WebCore::DocumentImpl::implementation): Update for RefPtr.
        (WebCore::DocumentImpl::elementSheet): Ditto.
        (WebCore::DocumentImpl::styleSheets): Ditto.
        (WebCore::DocumentImpl::recalcStyleSelector): Ditto.
        (WebCore::DocumentImpl::dispatchImageLoadEventSoon): Update to use new style timer.
        (WebCore::DocumentImpl::removeImage): Ditto.
        (WebCore::DocumentImpl::dispatchImageLoadEventsNow): Ditto.
        (WebCore::DocumentImpl::imageLoadEventTimerFired): Ditto.
        (WebCore::DocumentImpl::svgExtensions): Update for RefPtr.
        (WebCore::DocumentImpl::accessSVGExtensions): Ditto.

        * ksvg2/misc/KSVGTimeScheduler.h:
        (WebCore::TimeScheduler::document):
        * ksvg2/misc/KSVGTimeScheduler.cpp:
        (WebCore::SVGTimer::downcast):
        (WebCore::SVGTimer::SVGTimer):
        (WebCore::SVGTimer::start):
        (WebCore::SVGTimer::calculateTimePercentage):
        (WebCore::SVGTimer::notifyAll):
        (WebCore::SVGTimer::addNotify):
        (WebCore::SVGTimer::removeNotify):
        (WebCore::TimeScheduler::TimeScheduler):
        (WebCore::TimeScheduler::~TimeScheduler):
        (WebCore::TimeScheduler::addTimer):
        (WebCore::TimeScheduler::connectIntervalTimer):
        (WebCore::TimeScheduler::disconnectIntervalTimer):
        (WebCore::TimeScheduler::startAnimations):
        (WebCore::TimeScheduler::toggleAnimations):
        (WebCore::TimeScheduler::timerFired):
        Rework to use new timer.

        * ksvg2/misc/SVGDocumentExtensions.h:
        * ksvg2/misc/SVGDocumentExtensions.cpp:
        Make SVGDocumentExtensions no longer be shared, be solely owned by the document.

        * ksvg2/svg/SVGDocumentImpl.cpp:
        (WebCore::SVGDocumentImpl::createStyleSelector): Update for RefPtr use.

        * kwq/KWQSlot.cpp: Remove endLifeSupport and timerNotify slots.

        * page/Frame.h:
        * page/Frame.cpp:
        (WebCore::Frame::selectionLayoutChanged): Update to use new style timer.
        (WebCore::Frame::caretBlinkTimerFired): Ditto.
        * page/FramePrivate.h: (WebCore::FramePrivate::FramePrivate): Ditto.

        * page/FrameView.h:
        * page/FrameView.cpp:
        (WebCore::FrameViewPrivate::FrameViewPrivate): Update to use new style timer.
        (WebCore::FrameView::clear): Ditto.
        (WebCore::FrameView::layout): Ditto.
        (WebCore::FrameView::layoutTimerFired): Ditto.
        (WebCore::FrameView::scheduleRelayout): Ditto.
        (WebCore::FrameView::layoutPending): Ditto.
        (WebCore::FrameView::haveDelayedLayoutScheduled): Ditto.
        (WebCore::FrameView::unscheduleRelayout): Ditto.

        * page/ObjectContents.h: Remove unneeded includes.

        * rendering/render_frames.cpp: Removed include of <qtimer.h>.

        * rendering/render_layer.h:
        * rendering/render_layer.cpp:
        (WebCore::Marquee::Marquee): Use new style timers.
        (WebCore::Marquee::start): Ditto.
        (WebCore::Marquee::suspend): Ditto.
        (WebCore::Marquee::stop): Ditto.
        (WebCore::Marquee::updateMarqueeStyle): Ditto.
        (WebCore::Marquee::timerFired): Ditto.

2006-02-01  Darin Adler  <darin@apple.com>

        Reviewed by Beth.

        Fix for <rdar://problem/4424126> REGRESSION(412-420+): yellow 
        highlight fails to follow cursor when mousing over star rating
        (6232)

        Event coordinates cannot be calculated until there is a target. 
        This patch restructures the code so that the coordinates are 
        initialized when the mouse event is created but are not calculated
        until the target is set.

        * khtml/xml/dom2_eventsimpl.cpp:
        (WebCore::EventImpl::setTarget): Now calls receivedTarget() if the
        target is not nil.
        (WebCore::EventImpl::receivedTarget): virtual receivedTarget()
        (WebCore::MouseRelatedEventImpl::MouseRelatedEventImpl): Call 
        initCoordinates()
        (WebCore::MouseRelatedEventImpl::initCoordinates): Formerly called 
        computePositions(), this now only initializes the coordinates and 
        lets receivedTarget() take care of the computations. 
        (WebCore::MouseRelatedEventImpl::receivedTarget): Takes care of 
        computing the coordinates.
        (WebCore::MouseEventImpl::initMouseEvent): Call initCoordinates()
        * khtml/xml/dom2_eventsimpl.h:
        (WebCore::EventImpl::target): Fix spacing.
        (WebCore::EventImpl::currentTarget): Same.
        (WebCore::EventImpl::setCurrentTarget): Same.

2006-01-31  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by Darin.

        - fixed REGRESSION: assertion failure mousing over DHTML menus at www.worldofwarcraft.com
        http://bugs.webkit.org/show_bug.cgi?id=6931

        * rendering/render_layer.cpp:
        (WebCore::RenderLayer::hitTestLayer): Iterate vectors in a way that won't break on empty ones.

2006-01-31  Adele Peterson  <adele@apple.com>

        Reviewed by Darin.

        http://bugs.webkit.org/show_bug.cgi?id=6862
        Input's value doesn't get updated after typing in new text field

        Added test:
        fast/forms/input-changing-value.html

        Added an event listener for a DOMCharacterDataModifiedEvent on the inner div.
        When we get the event, then we update the input element's value field.

        There may be performance problems with this approach that we will have to
        address before flipping the switch to use these new text fields.

        * rendering/RenderTextField.cpp:
        (WebCore::InputMutationListener::handleEvent): calls subtreeHasChanged
        (WebCore::m_mutationListener):
        (WebCore::RenderTextField::~RenderTextField): remove the event listener.
        (WebCore::RenderTextField::setStyle): Remove unnecessary setStyle on text node.  
         It should inherit style from the div already.
        (WebCore::RenderTextField::updateFromElement): add the event listener.
        (WebCore::RenderTextField::subtreeHasChanged): updates the input element's value.
        * rendering/RenderTextField.h:
        (WebCore::InputMutationListener::InputMutationListener): Added.
        (WebCore::InputMutationListener::renderTextField): Added.
        (WebCore::InputMutationListener::setInputElement): Added.

2006-01-31  Antti Koivisto <koivisto@iki.fi>

        Reviewed by Dave Hyatt.
        Landed by Timothy Hatcher.

        http://bugs.webkit.org/show_bug.cgi?id=4959
        Bug 4959: inline style not terminated properly after <form>

        * khtml/html/htmlparser.cpp:
        (HTMLParser::isResidualStyleTag): add <span> as residual style tag
        (HTMLParser::isAffectedByResidualStyle): add <form> as tag affected by residual style

2006-01-31  Vicki Murley <vicki@apple.com>

        Reviewed by Geoff.

        - fix <rdar://problem/4426668> REGRESSION: sometimes URLs with named anchors in a
        page don't jump to proper location in document (6916). Added test cases for this
        fix and past link jumping bug fixes.

        * khtml/xml/ContainerNodeImpl.cpp:
        (WebCore::ContainerNodeImpl::getUpperLeftCorner): Traverse up the parent node chain
        until you find one that has a sibling.
        * manual-tests/linkjump-1.html: Added a note here - the bug for this test case is
        still broken in TOT.
        * manual-tests/linkjump-2.html: Added. Renamed scrollToAnchor.html, to group it with the
        rest of the link jumping tests.
        * manual-tests/linkjump-3.html: Added. Test case for this bug, <rdar://problem/4426668>.
        * manual-tests/linkjump-4.html: Added. Test case for past fix, <rdar://problem/4247537>.
        * manual-tests/linkjump-5.html: Added. Test case for past fix, <rdar://problem/4256060>.
        * manual-tests/scrollToAnchor.html: Removed.

2006-01-31  David Harrison  <harrison@apple.com>

        Reviewed by John.
        <rdar://problem/4423922> TOT REGRESSION (r12358): first iframe in pair fails to copy

        Layout test added:
        * editing/pasteboard/paste-empty-startcontainer.html
        
        * khtml/xml/dom2_rangeimpl.cpp:
        (DOM::RangeImpl::startNode):
        - use empty non-textual m_startContainer itself if m_startOffset is 0, rather then nextSibling()

2006-01-31  Mitz Pettel  <opendarwin.org@mitzpettel.com>

        Test: fast/forms/selected-index-assert.html.

        Reviewed by Adele.
        
        - fix http://bugs.webkit.org/show_bug.cgi?id=6942
          Assertion failure in HTMLSelectElementImpl::selectedIndex (m_multiple)

        * khtml/html/HTMLSelectElementImpl.cpp:
        (WebCore::HTMLSelectElementImpl::selectedIndex): Removed bogus assert.
        -1 is the correct value to return if no option is selected.

2006-01-31  Beth Dakin  <bdakin@apple.com>

        Reviewed by Adele.

        Fixing build bustage. Removing include of khtml_factory.h since it 
        has been removed.

        * rendering/font.cpp: No longer include khtml_factory.h

2006-01-31  David Kilzer  <ddkilzer@kilzer.net>

        Reviewed by Hyatt.

        - fix http://bugs.webkit.org/show_bug.cgi?id=6584
          REGRESSION: button after unclosed button gives trouble

        * khtml/html/htmlparser.cpp: (HTMLParser::getNode):
        Add buttonTag to error handling table to take care of unclosed tags.

2006-01-31  Mitz Pettel  <opendarwin.org@mitzpettel.com>

        Test: fast/parser/script-after-frameset-assert.html

        Reviewed by Darin.
        
        - fix http://bugs.webkit.org/show_bug.cgi?id=6959
          REGRESSION: Assertion failure in HTMLTokenizer::parseTag (!scriptNode) on page with ignored scripts

        * khtml/html/htmltokenizer.cpp:
        (WebCore::HTMLTokenizer::scriptHandler): Reset scriptNode to 0 if the
        script is being skipped.

2006-01-31  Mitz Pettel  <opendarwin.org@mitzpettel.com>

        Reviewed by Darin.

        - fix http://bugs.webkit.org/show_bug.cgi?id=6960
          REGRESSION: Assertion failure in table_layout.cpp:216 calcWidthArray()

        * rendering/table_layout.cpp: (WebCore::FixedTableLayout::calcWidthArray):
        Remove the assertion.

2006-01-31  Anders Carlsson  <andersca@mac.com>

        Reviewed by John.

        - fix http://bugs.webkit.org/show_bug.cgi?id=6964
        ImagePatterns are always rendered mirrored
        
        * khtml/ecma/kjs_html.cpp:
        (KJS::ImagePattern::createPattern):
        Don't mirror the x coordinate when creating the pattern.

2006-01-31  Darin Adler  <darin@apple.com>

        Reviewed by Hyatt.

        - added a Timer class
        - used the Timer class for the redirection timer
        - moved Frame, FrameView, MacFrame, and FrameNodeTree into WebCore namespace
        - removed more KWQ

        * ForwardingHeaders/khtml_factory.h: Removed.
        * kwq/KWQKHTMLFactory.cpp: Removed.
        * kwq/KWQKHTMLFactory.h: Removed.

        * platform/Timer.h: Added.
        * platform/mac/Timer.cpp: Added.

        * WebCore.vcproj/WebCore/WebCore.vcproj: Updated for added and removed files.
        * WebCore.xcodeproj/project.pbxproj: Ditto.

        * page/Frame.h:
        * page/Frame.cpp:
        (WebCore::Frame::init): Remove code to set up slotRedirect.
        (WebCore::Frame::checkCompleted): Call start/stopRedirectionTimer instead of using
        the redirection timer directly.
        (WebCore::Frame::scheduleRedirection): Ditto.
        (WebCore::Frame::scheduleLocationChange): Ditto.
        (WebCore::Frame::scheduleHistoryNavigation): Ditto.
        (WebCore::Frame::cancelRedirection): Ditto.
        (WebCore::Frame::redirectionTimerFired): Renamed from slotRedirect.
        (WebCore::Frame::slotParentCompleted): More startRedirectionTimer.
        (WebCore::Frame::startRedirectionTimer): Added. Virtual bottleneck to start the
        redirection timer.
        (WebCore::Frame::stopRedirectionTimer): Added. Virtual bottleneck to stop the
        redirection timer.

        * page/FramePrivate.h: Changed m_redirectionTimer from a QTimer to a Timer.

        * bridge/mac/MacFrame.mm:
        (WebCore::MacFrame::startRedirectionTimer): Added. Avoids the need for the QTimer
        "monitor" feature that I had added a while back to implement the client-redirected
        callback.
        (WebCore::MacFrame::stopRedirectionTimer): Ditto.

        * kwq/KWQSlot.cpp: Removed slotRedirected.

        * ForwardingHeaders/ksvg2/KSVGPart.h: Removed using to put Frame into various
        namespaces (all of which are WebCore now anyway).

        * bindings/objc/DOMInternal.mm:
        * bridge/mac/BrowserExtensionMac.h:
        * bridge/mac/KWQKHTMLView.cpp:
        * bridge/mac/MacFrame.h:
        * bridge/mac/WebCoreFrameBridge.h:
        * bridge/mac/WebCoreFrameBridge.mm:
        * bridge/mac/WebCorePageBridge.h:
        * bridge/mac/WebCorePageBridge.mm:
        * css/cssstyleselector.cpp:
        * css/cssstyleselector.h:
        * khtml/ecma/kjs_binding.cpp:
        * khtml/ecma/kjs_binding.h:
        * khtml/ecma/kjs_navigator.cpp:
        * khtml/ecma/kjs_navigator.h:
        * khtml/ecma/kjs_proxy.h:
        * khtml/ecma/kjs_window.h:
        * khtml/editing/SelectionController.h:
        * khtml/editing/jsediting.h:
        * khtml/html/html_baseimpl.h:
        * khtml/html/html_documentimpl.cpp:
        * khtml/html/html_documentimpl.h:
        * khtml/html/html_headimpl.h:
        * khtml/html/htmlparser.h:
        * khtml/html/htmltokenizer.h:
        * khtml/xml/DOMImplementationImpl.h:
        * khtml/xml/DocumentImpl.h:
        * khtml/xml/dom2_eventsimpl.h:
        * khtml/xml/xml_tokenizer.h:
        * khtml/xsl/xslt_processorimpl.h:
        * ksvg2/svg/SVGDocumentImpl.cpp:
        * kwq/KWQClipboard.h:
        * kwq/KWQComboBox.mm:
        * kwq/KWQFileButton.h:
        * kwq/KWQFrame.mm:
        * kwq/KWQKJavaAppletWidget.h:
        * kwq/KWQListBox.mm:
        * kwq/KWQSignalStubs.cpp:
        * kwq/KWQSlider.mm:
        * kwq/KWQTextField.mm:
        * kwq/KWQWidget.mm:
        * kwq/WebCoreSettings.mm:
        * kwq/WebCoreTextRendererFactory.mm:
        * loader/DocLoader.h:
        * page/FrameTreeNode.cpp:
        * page/FrameTreeNode.h:
        * page/FrameView.cpp:
        * page/FrameView.h:
        * page/Page.cpp:
        * page/Page.h:
        * rendering/InlineTextBox.h:
        * rendering/font.cpp:
        * rendering/render_canvas.h:
        * rendering/render_frames.h:
        * rendering/render_object.h:
        * rendering/render_replaced.h:
        Updated for namespace and header changes.

2006-01-31  Anders Carlsson  <andersca@mac.com>

        Reviewed by Darin.

        The WebCore part of http://bugs.webkit.org/show_bug.cgi?id=6907
        REGRESSION: United.com menus messed up due to document.all/MSIE sniff
        
        * khtml/ecma/kjs_html.h:
        (KJS::HTMLAllCollection::masqueradeAsUndefined):
        Update for name change.
        
2006-01-30  Geoffrey Garen  <ggaren@apple.com>

        Reviewed by mjs.

        - Speculative fix for <rdar://problem/4135845> Crash executing 
        cross-frame script on timeout in KJS::ScheduledAction::execute

        If we ever get a reproducible case of 4135845, I'll add a test for it.

        This is a re-working of Maciej's fix for 3157014 (circa 2003!). Since
        you can't reliably predict what the state of the page will be when
        a timer fires, I've made the timer responsbile for making sure that
        everything is OK to execute.

        I tested @ http://www.javascriptkit.com/script/cut3.shtml with various
        combinations of reload, back, and regular navigations with JS enabled/
        disabled to ensure that the previous crash didn't return. I also ran a 
        leaks test and discovered some, but none unique to this patch. (See 
        <rdar://problem/4427420> TOT REGRESSION: Leaks seen on page with 
        JavaScript timer.)

        * khtml/ecma/kjs_window.cpp:
        (KJS::ScheduledAction::execute): Return early if there's no window
        object. (This happens when JavaScript is disabled.)
        (KJS::Window::retrieveWindow): Reversed a backwards ASSERT, increased
        prettiness. (The assert fired while I was testing. Not sure why we
        haven't seen it before.)
        * page/Frame.cpp:
        (Frame::didOpenURL): Returned setting of JavaScript enabled/disabled
        preference to its rightful place. This introduces a new behavior: now,
        the unload event does not fire after you've disabled JavaScript. That 
        seems like a good thing. (See <rdar://problem/4426506> Disabling 
        JavaScript should immediately end JavaScript execution.)
        (Frame::begin): Ditto.

2006-01-30  Geoffrey Garen  <ggaren@apple.com>

        Reviewed by Dave Harrison.

        - Fixed <rdar://problem/4378159> crash in KWQKHTMLPart::userGestureHint
        from javascript enabled/disabled inconsistency when pasting webpage 
        into email or blot

        * page/Frame.cpp:
        (Frame::userGestureHint): Check root frame's jScript() for NULL instead
        of checking inner frame's jScript().
        
        After init() has been called on a frame, but before begin() has been 
        called, the frame can have JavaScript enabled when its parent doesn't.
        (That seems wrong, so I've filed <rdar://problem/4426499> Child frame 
        momentarily has JavaScript enabled even though parent frame doesn't.)
        
        Regardless, it's better programming practice to NULL check the actual 
        pointer you're going to use, so that's what I've done here.

        * manual-tests/paste-crash.html: Added.
        (No automated test because the crash depends on JavaScript being
        disabled.)

2006-01-30  Beth Dakin  <bdakin@apple.com>

        Reviewed by Geoff

        Fix for <rdar://problem/4298052> Crash in KWQCheckIfReloading at 
        http://www.inquisitorx.com/beta/

        It is possible for the DocLoader's frame to be nil when the 
        DocLoader is not nil, so we need nil checks.

        * kwq/KWQLoader.mm:
        (KWQServeRequest): Nil check.
        (KWQServeSynchronousRequest): Same.
        (KWQCheckIfReloading): Same.
        (KWQCheckCacheObjectStatus): Same.
        (KWQCacheObjectExpiresTime): Same.
        * kwq/KWQPageState.mm: Same.

2006-01-30  Eric Seidel  <eseidel@apple.com>

        Add #import "KWQFontMetrics.h" to fix no-svg build.

        * kwq/KWQPainter.mm:

2006-01-30  Darin Adler  <darin@apple.com>

        Reviewed by Eric.

        - cleanup of Int/Float-Size/Point/Rect classes

        I did this as part of a redo of QMatrix, but I decided I should
        land this part separately.

        Eliminated the concept of a null rect or point, which used to be
        indicated by negative width and height.

        Changed right and bottom to to be, e.g., 2 for a rect at (0,0) 2x2.
        The old code followed Qt's system that says right is 1 in those cases,
        which is inappropriate for floating point, and old fashioned because
        modern graphics systems use coordinates for lines between pixels, not
        the pixels themselves.

        Other API improvements to the point, size, and rect classes. For example,
        functions named with verbs now always modify the object itself.

        * rendering/render_theme_mac.mm: (RenderThemeMac::paintButton): Fixed
        a bug where it said x() where it should say y().

        * bridge/mac/MacFrame.h:
        * bridge/mac/MacFrame.mm:
        * bridge/mac/WebCoreFrameBridge.mm:
        * kcanvas/KCanvasContainer.cpp:
        * kcanvas/KCanvasItem.cpp:
        * kcanvas/RenderSVGImage.cpp:
        * kcanvas/device/quartz/KCanvasFilterQuartz.mm:
        * kcanvas/device/quartz/KCanvasItemQuartz.mm:
        * kcanvas/device/quartz/KCanvasResourcesQuartz.mm:
        * khtml/ecma/kjs_dom.cpp:
        * khtml/ecma/kjs_window.cpp:
        * khtml/editing/SelectionController.cpp:
        * khtml/html/html_inlineimpl.cpp:
        * khtml/html/html_objectimpl.cpp:
        * khtml/html/html_objectimpl.h:
        * khtml/misc/khtmllayout.h:
        * ksvg2/svg/SVGSVGElementImpl.cpp:
        * kwq/KWQAccObject.mm:
        * kwq/KWQComboBox.mm:
        * kwq/KWQFileButton.mm:
        * kwq/KWQFontMetrics.mm:
        * kwq/KWQPainter.h:
        * kwq/KWQPainter.mm:
        * kwq/KWQRegion.cpp:
        * kwq/KWQRenderTreeDebug.cpp:
        * kwq/KWQScrollView.mm:
        * kwq/KWQWMatrix.cpp:
        * kwq/KWQWidget.h:
        * kwq/KWQWidget.mm:
        * kwq/KWQWindowWidget.mm:
        * loader/CachedImage.cpp:
        * page/Frame.cpp:
        * page/FrameView.cpp:
        * platform/FloatPoint.cpp:
        * platform/FloatPoint.h:
        * platform/FloatRect.cpp:
        * platform/FloatRect.h:
        * platform/FloatSize.cpp:
        * platform/FloatSize.h:
        * platform/Image.h:
        * platform/IntPoint.cpp:
        * platform/IntPoint.h:
        * platform/IntPointArray.cpp:
        * platform/IntPointArray.h:
        * platform/IntRect.cpp:
        * platform/IntRect.h:
        * platform/IntSize.cpp:
        * platform/IntSize.h:
        * platform/mac/FloatPoint.mm:
        * platform/mac/FloatRect.mm:
        * platform/mac/FloatSize.mm:
        * platform/mac/Image.mm:
        * platform/mac/IntPoint.mm:
        * platform/mac/IntRect.mm:
        * platform/mac/IntSize.mm:
        * platform/mac/Screen.mm:
        * rendering/InlineTextBox.cpp:
        * rendering/RenderBlock.cpp:
        * rendering/RenderBlock.h:
        * rendering/RenderTable.cpp:
        * rendering/RenderTableCell.cpp:
        * rendering/RenderText.cpp:
        * rendering/render_box.cpp:
        * rendering/render_canvas.cpp:
        * rendering/render_canvasimage.cpp:
        * rendering/render_flow.cpp:
        * rendering/render_form.cpp:
        * rendering/render_frames.cpp:
        * rendering/render_layer.cpp:
        * rendering/render_line.cpp:
        * rendering/render_list.cpp:
        * rendering/render_object.cpp:
        * rendering/render_object.h:
        * rendering/render_replaced.cpp:

2006-01-29  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by Darin.

        - Remove QSortedList and QPtrList sorting support
        http://bugs.webkit.org/show_bug.cgi?id=6929

        * WebCore.xcodeproj/project.pbxproj:
        * kcanvas/device/KRenderingPaintServerGradient.cpp:
        (operator<<): Implement for Vector<KCGradientStop>
        (KRenderingPaintServerGradient::gradientStops): Use a Vector, not a subclass of
        QPtrList that sorts on every insert
        (compareStopOffset): Comparison function for sorting.
        (KRenderingPaintServerGradient::setGradientStops): Add a version that takes a Vector which sorts,
        and another which knows how to copy from another gradient paint server.
        * kcanvas/device/KRenderingPaintServerGradient.h:
        (makeGradientStop): Make a gradient stop pair.
        * kcanvas/device/quartz/KRenderingPaintServerGradientQuartz.mm:
        (KRenderingPaintServerGradientQuartz::~KRenderingPaintServerGradientQuartz): use delete
        on stops cache
        (KRenderingPaintServerGradientQuartz::updateQuartzGradientStopsCache): adapt to Vector
        * kcanvas/device/quartz/KRenderingPaintServerQuartz.h:
        * khtml/editing/visible_text.cpp:
        (khtml::compareBoxStart): Comparison function for sorting.
        (khtml::TextIterator::handleTextNode): Use Vector and std::sort instead of QSortedList
        for sorting. Keep current position as an index.
        (khtml::TextIterator::handleTextBox): Adapt for Vector use.
        * khtml/editing/visible_text.h:
        * ksvg2/svg/SVGGradientElementImpl.cpp:
        (SVGGradientElementImpl::rebuildStops): Use a Vector. Instead of modifying the existing one,
        make a fresh one and assign it.
        * ksvg2/svg/SVGLinearGradientElementImpl.cpp:
        (SVGLinearGradientElementImpl::buildGradient): don't copy item by item, just assign directly.
        * ksvg2/svg/SVGRadialGradientElementImpl.cpp:
        (SVGRadialGradientElementImpl::buildGradient): ditto
        * ksvg2/svg/SVGStopElementImpl.h:
        * kwq/KWQListImpl.cpp:
        * kwq/KWQPtrList.h:
        (QPtrList::sort): Removed.
        * kwq/KWQSortedList.h: Removed.
        * rendering/InlineTextBox.h: Remove now unneeded operator< and operator=

2006-01-29  Darin Adler  <darin@apple.com>

        Reviewed by Maciej.

        - killed more KWQ, KWinModule and QVariant

        * ForwardingHeaders/kwinmodule.h: Removed.
        * ForwardingHeaders/qvariant.h: Removed.

        * kwq/KWQKWinModule.h: Removed.
        * kwq/KWQKWinModule.mm: Removed.
        * kwq/KWQVariant.cpp: Removed.
        * kwq/KWQVariant.h: Removed.

        * WebCore.vcproj/WebCore/WebCore.vcproj: Updated for removal.
        * WebCore.xcodeproj/project.pbxproj: Ditto.

        * khtml/ecma/kjs_binding.h:
        * khtml/ecma/kjs_binding.cpp: Remove QVariant stuff.

        * bridge/mac/WebCoreFrameBridge.mm:
        (-[WebCoreFrameBridge stringByEvaluatingJavaScriptFromString:forceUserGesture:]):
        * khtml/ecma/kjs_events.cpp: (KJS::JSAbstractEventListener::handleEvent):
        * khtml/ecma/kjs_proxy.h:
        * khtml/ecma/kjs_proxy.cpp: (WebCore::KJSProxyImpl::evaluate):
        * page/Frame.h:
        * page/Frame.cpp:
        (getString):
        (Frame::replaceContentsWithScriptResult):
        (Frame::executeScript):
        (Frame::executeScheduledScript):
        (Frame::changeLocation):
        (Frame::urlSelected):
        (Frame::submitForm):
        Changed to use JSValue instead of QVariant for result of executing JavaScript.

        * kwq/KWQObject.h: Removed a bunch of unneeded includes and forward declarations.

        * bridge/mac/MacFrame.mm:
        * khtml/ecma/kjs_window.h:
        * khtml/ecma/kjs_window.cpp:
        * khtml/html/html_inlineimpl.cpp:
        * khtml/html/htmltokenizer.cpp:
        * khtml/xml/DocumentImpl.cpp:
        * khtml/xml/NodeImpl.cpp:
        * khtml/xml/dom2_eventsimpl.cpp:
        * khtml/xml/xml_tokenizer.cpp:
        * kwq/KWQComboBox.mm:
        * kwq/KWQFileButton.mm:
        * kwq/KWQListBox.mm:
        * kwq/KWQObject.cpp:
        * kwq/KWQSlider.mm:
        * kwq/KWQTextArea.mm:
        * kwq/KWQTextField.mm:
        * loader/CachedImage.h:
        * page/FrameView.h:
        * page/FrameView.cpp:
        * rendering/render_form.cpp:
        Updated includes, since KWQObject.h now includes less.
        Also updated callers to executeScript since one overload was removed.

2006-01-29  Eric Seidel <eseidel@apple.com>

        Reviewed by darin.

        Added back #include <qvaluelist.h> to fix WIN32 build.

        * rendering/render_style.h:

2006-01-29  Darin Adler  <darin@apple.com>

        Reviewed by Hyatt (drag image fix) and Maciej (the rest).

        - fixed just-introduced crash dragging images

        I don't know how to make a layout test for this.

        * kwq/KWQClipboard.mm: (WebCore::KWQClipboard::dragImage): Fixed crash on
        dragging by initializing m_dragImage to 0.

        - http://bugs.webkit.org/show_bug.cgi?id=6923
          remove more of KWQ, including the screen functions from QDesktopWidget

        * kwq/KWQApplication.h: Removed.
        * kwq/KWQApplication.mm: Removed.
        * kwq/KWQGlobal.cpp: Removed.
        * kwq/KWQKPartsEvent.cpp: Removed.
        * kwq/KWQKPartsEvent.h: Removed.
        * kwq/KWQPair.h: Removed.
        * kwq/KWQStyle.cpp: Removed.
        * kwq/KWQStyle.h: Removed.

        * ForwardingHeaders/kparts/event.h: Removed.
        * ForwardingHeaders/qapplication.h: Removed.
        * ForwardingHeaders/qstyle.h: Removed.

        * WebCore.vcproj/WebCore/WebCore.vcproj: Updated for above changes.
        * WebCore.xcodeproj/project.pbxproj: Ditto.

        * platform/Screen.h: Added. Replaces the desktop widget stuff in KWQApplication.mm.
        * platform/mac/Screen.mm: Added.

        * kwq/KWQDef.h: Removed everything except for kMin and kMax from here.
        We should port to std::min and std::max, and then we can get rid of this
        header altogether.

        * kwq/KWQKCursor.h: Removed setAutoHideCursor.
        * kwq/KWQKCursor.mm: Ditto.

        * kwq/KWQWidget.h: Removed style() and setStyle() functions.
        * kwq/KWQWidget.mm: Ditto.

        * khtml/ecma/kjs_window.h:
        * khtml/ecma/kjs_window.cpp:
        (KJS::Screen::Screen): Store a pointer to the Frame.
        (KJS::Screen::getValueProperty): Port to use the new Screen.h functions.
        (KJS::showModalDialog): Ditto.
        (KJS::Window::getValueProperty): Ditto.
        (KJS::WindowFunc::callAsFunction): Ditto.

        * khtml/khtml_events.h:
        * khtml/khtml_events.cpp: Removed much of the code here.
        This can be cut down even more.

        * khtml/misc/khtmllayout.h: Removed unused stuff and updated for KWQ changes.

        * kwq/KWQCString.cpp:
        * kwq/KWQKURL.mm:
        * kwq/KWQPainter.mm:
        * kwq/KWQRegExp.cpp:
        * kwq/KWQRenderTreeDebug.cpp:
        * kwq/KWQString.h:
        * kwq/KWQString.mm:
        * kwq/KWQTextCodec.cpp:
        * WebCore+SVG/KDOMSettings.cpp:
        * bridge/mac/MacFrame.mm:
        * bridge/mac/WebCoreFrameBridge.mm:
        * css/cssparser.cpp:
        * kcanvas/KCanvasItem.cpp:
        * khtml/ecma/kjs_navigator.cpp:
        * khtml/html/HTMLSelectElementImpl.cpp:
        * khtml/html/html_tableimpl.h:
        * khtml/html/htmltokenizer.cpp:
        * khtml/misc/decoder.cpp:
        * ksvg2/css/KSVGCSSParser.cpp:
        * ksvg2/css/SVGRenderStyle.h:
        * page/Frame.h:
        * page/Frame.cpp:
        * page/FrameView.cpp:
        * platform/IntPointArray.cpp:
        * rendering/RenderBlock.cpp:
        * rendering/RenderTable.cpp:
        * rendering/bidi.cpp:
        * rendering/bidi.h:
        * rendering/render_form.cpp:
        * rendering/render_object.cpp:
        * rendering/render_object.h:
        * rendering/render_replaced.cpp:
        * rendering/render_style.h:
        * rendering/table_layout.cpp:
        Updated for above KWQ changes. Changed tabs to spaces.

2006-01-29  Eric Seidel <eseidel@apple.com>

        Reviewed by hyatt.

        Fix build for Win32.

        * WebCore.vcproj/WebCore/WebCore.vcproj:

2006-01-29  David Hyatt  <hyatt@apple.com>

        Fix for bug 6910, don't let Image be assignable or copiable.  It will soon represent  the actual
        original Image (including the data) and as such must remain unique.

        Reviewed by darin

        * kcanvas/KCanvasFilters.cpp:
        (KCanvasFEImage::~KCanvasFEImage):
        (KCanvasFEImage::setCachedImage):
        * kcanvas/KCanvasFilters.h:
        (KCanvasFEImage::KCanvasFEImage):
        (KCanvasFEImage::cachedImage):
        * kcanvas/device/quartz/KCanvasFilterQuartz.mm:
        (KCanvasFEImageQuartz::getCIFilter):
        * khtml/ecma/kjs_events.cpp:
        (KJS::ClipboardProtoFunc::callAsFunction):
        * khtml/ecma/kjs_html.cpp:
        (KJS::KJS::Context2DFunction::callAsFunction):
        (KJS::drawPattern):
        (KJS::_rh):
        (KJS::ImagePattern::~ImagePattern):
        (KJS::ImagePattern::createPattern):
        * khtml/ecma/kjs_html.h:
        (KJS::ImagePattern::cachedImage):
        * khtml/html/html_imageimpl.h:
        (WebCore::HTMLImageElementImpl::cachedImage):
        * khtml/xml/dom2_eventsimpl.h:
        * ksvg2/svg/SVGCursorElementImpl.cpp:
        (SVGCursorElementImpl::~SVGCursorElementImpl):
        (SVGCursorElementImpl::parseMappedAttribute):
        * ksvg2/svg/SVGCursorElementImpl.h:
        (KSVG::SVGCursorElementImpl::cachedImage):
        * ksvg2/svg/SVGFEImageElementImpl.cpp:
        (SVGFEImageElementImpl::~SVGFEImageElementImpl):
        (SVGFEImageElementImpl::parseMappedAttribute):
        (SVGFEImageElementImpl::notifyFinished):
        * kwq/KWQClipboard.h:
        * kwq/KWQClipboard.mm:
        (WebCore::KWQClipboard::dragImage):
        (WebCore::KWQClipboard::setDragImage):
        (WebCore::KWQClipboard::setDragImageElement):
        (WebCore::KWQClipboard::imageChanged):
        (WebCore::KWQClipboard::dragNSImage):
        * platform/Image.h:

2006-01-29  Darin Adler  <darin@apple.com>

        Reviewed by Hyatt.

        - fix http://bugs.webkit.org/show_bug.cgi?id=6914
          REGRESSION: fast/block/basic/014.html crashes Safari

        * rendering/render_image.h:
        (WebCore::RenderImage::image): Return a null image when m_cachedImage is 0.
        (WebCore::RenderImage::errorOccurred): Return false when m_cachedImage is 0.
        * rendering/render_image.cpp: (WebCore::RenderImage::nullImage): Added.
        Returns a global null image for use when we have no cached image.

        - fix http://bugs.webkit.org/show_bug.cgi?id=6919
          REGRESSION: Background images don't paint when they are finished loading

        * rendering/render_object.h: Renamed the old setImage to imageChanged, the
        new name for the same function.
        * rendering/render_object.cpp: (WebCore::RenderObject::imageChanged): Ditto.
        * rendering/render_list.cpp: (RenderListMarker::imageChanged): Changed the
        call to parent to call the new imageChanged instead of the old setImage.

        - fixed something else that was causing some layout test crashes

        * kwq/KWQRenderTreeDebug.cpp: (externalRepresentation): Rearrange so we won't
        ever dereference a null pointer here.

2006-01-29  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by Darin.

        - replace QValueVector and QPtrVector use with Vector, and remove them.
        http://bugs.webkit.org/show_bug.cgi?id=6909

        * ForwardingHeaders/q3valuevector.h: Removed.
        * ForwardingHeaders/qptrvector.h: Removed.
        * ForwardingHeaders/qvector.h: Removed.
        * WebCore+SVG/KDOMSettings.cpp:
        (KDOMSettings::init):
        (KDOMSettings::isAdFiltered):
        * WebCore.xcodeproj/project.pbxproj:
        * bridge/mac/WebCoreFrameBridge.mm:
        (-[WebCoreFrameBridge elementWithName:inForm:]):
        (-[WebCoreFrameBridge controlsInForm:]):
        * css/cssstyleselector.h:
        * khtml/html/HTMLCollectionImpl.cpp:
        (WebCore::HTMLCollectionImpl::updateNameCache):
        (WebCore::HTMLCollectionImpl::namedItems):
        * khtml/html/HTMLCollectionImpl.h:
        * khtml/html/HTMLFormCollectionImpl.cpp:
        (WebCore::HTMLFormCollectionImpl::HTMLFormCollectionImpl):
        (WebCore::HTMLFormCollectionImpl::calcLength):
        (WebCore::HTMLFormCollectionImpl::item):
        (WebCore::HTMLFormCollectionImpl::getNamedFormItem):
        (WebCore::HTMLFormCollectionImpl::updateNameCache):
        * khtml/html/HTMLFormElementImpl.cpp:
        (WebCore::HTMLFormElementImpl::~HTMLFormElementImpl):
        (WebCore::HTMLFormElementImpl::length):
        (WebCore::HTMLFormElementImpl::submitClick):
        (WebCore::HTMLFormElementImpl::formData):
        (WebCore::HTMLFormElementImpl::submit):
        (WebCore::HTMLFormElementImpl::reset):
        (WebCore::insertIntoVector):
        (WebCore::removeFromVector):
        (WebCore::HTMLFormElementImpl::formElementIndex):
        (WebCore::HTMLFormElementImpl::registerImgElement):
        * khtml/html/HTMLFormElementImpl.h:
        * ksvg2/svg/SVGTextElementImpl.cpp:
        * kwq/KWQComboBox.h:
        * kwq/KWQListBox.h:
        * kwq/KWQPtrVector.h: Removed.
        * kwq/KWQRenderTreeDebug.cpp:
        (writeLayers):
        * kwq/KWQValueVector.h: Removed.
        * kwq/KWQVectorImpl.cpp: Removed.
        * kwq/KWQVectorImpl.h: Removed.
        * loader/loader.cpp:
        (WebCore::Loader::cancelRequests):
        * rendering/render_layer.cpp:
        (WebCore::RenderLayer::paintLayer):
        (WebCore::RenderLayer::hitTestLayer):
        (WebCore::compareZIndex):
        (WebCore::RenderLayer::updateZOrderLists):
        (WebCore::RenderLayer::collectLayers):
        * rendering/render_layer.h:
        (khtml::RenderLayer::posZOrderList):
        (khtml::RenderLayer::negZOrderList):

2006-01-29  Mitz Pettel  <opendarwin.org@mitzpettel.com>

        Test: fast/table/border-collapsing/rtl-border-collapsing.html

        Reviewed by Darin.

        - fix http://bugs.webkit.org/show_bug.cgi?id=6888
          Collapsed borders appear on the wrong side or on the wrong cell in RTL tables

        * rendering/RenderTable.cpp:
        (WebCore::RenderTable::cellBefore): Renamed cellLeft to this.
        (WebCore::RenderTable::cellAfter): Renamed cellRight to this.
        * rendering/RenderTable.h:
        * rendering/RenderTableCell.cpp:
        (WebCore::RenderTableCell::collapsedLeftBorder): Added the RTL case.
        (WebCore::RenderTableCell::collapsedRightBorder): Ditto.
        (WebCore::RenderTableCell::borderLeft):
        (WebCore::RenderTableCell::borderRight):
        (WebCore::RenderTableCell::collectBorders):
        (WebCore::RenderTableCell::paintCollapsedBorder):
        * rendering/RenderTableCell.h:

2006-01-29  Darin Adler  <darin@apple.com>

        Reviewed by Maciej.

        - fix http://bugs.webkit.org/show_bug.cgi?id=6550
          REGRESSION: window.open('myurl', '_self') fails to load myurl in current window

        Tests:
        * fast/dom/Window/window-open-parent-no-parent.html: Added.
        * fast/dom/Window/window-open-parent.html: Added.
        * fast/dom/Window/window-open-self.html: Added.
        * fast/dom/Window/window-open-top.html: Added.

        * khtml/ecma/kjs_window.cpp: (KJS::WindowFunc::callAsFunction):
        Fix check for special frame names. These special frame names are supposed
        to always be unaffected by pop-up blocking. But the code instead was
        saying that the special frame names are always blocked. Oops!

2006-01-29  Darin Adler  <darin@apple.com>

        Suggested by Alexey.

        - fixed something Alexey noticed in the new exception names

        Test: fast/dom/Range/range-exceptions.html

        * khtml/ecma/kjs_binding.cpp: Added 0 to fix an off-by-one error for the
        names of the two DOM range exceptions.

2006-01-29  David Harrison  <harrison@apple.com>

        Reviewed by John.

        Fix two problems with editing around empty list items:
        1) Arrowing up or down to an empty list item skipped the list item
        2) Deleting the content of a list item made it so you could never get the cursor inside the empty item

        Added tests:
        * selection/move-by-line-002.html
        * deleting/delete-listitem-002.html
        
        * khtml/editing/composite_edit_command.cpp:
        (WebCore::CompositeEditCommand::addBlockPlaceholderIfNeeded):
        - special check for empty list item because list marker assures non-zero height()
        
        * khtml/xml/dom_position.cpp:
        (DOM::Position::inRenderedContent):
        - fix check wrt BRs because text box is not required
        
        * rendering/bidi.cpp:
        (khtml::RenderBlock::constructLine):
        - make sure that br by itself in a list item gets a text-style box
        
        (khtml::RenderBlock::findNextLineBreak):
        - make sure that br by itself in a list item gets a box at all

2006-01-29  Eric Seidel  <eseidel@apple.com>

        Reviewed by hyatt & darin.

        There are a few small, but intertwined fixes in this patch:

        Remaining fixes for SVGTetris:
        http://bugs.webkit.org/show_bug.cgi?id=6889

        Testing blocked by: http://bugs.webkit.org/show_bug.cgi?id=6905

        Fix for CDF support:
        http://bugs.webkit.org/show_bug.cgi?id=6025

        Updated test: svg/custom/simpleCDF.xml

        Fix for filter updating:
        http://bugs.webkit.org/show_bug.cgi?id=6849

        Testing blocked by: http://bugs.webkit.org/show_bug.cgi?id=6904

        Also, as a side effect of 6849, fixed double-apply of filters, improving:
        http://bugs.webkit.org/show_bug.cgi?id=6713

        Results updated for most tests, pixel results improved for filter tests.

        * kcanvas/KCanvasFilters.cpp:
        (KCanvasFilter::filterBBoxForItemBBox): moved into baseclass
        * kcanvas/KCanvasFilters.h:
        * kcanvas/RenderSVGImage.cpp:
        (RenderSVGImage::paint): use relativeBBox
        (RenderSVGImage::relativeBBox): added
        (RenderSVGImage::imageChanged): added
        (RenderSVGImage::getAbsoluteRepaintRect): fixed
        * kcanvas/RenderSVGImage.h:
        (KSVG::RenderSVGImage::imageChanged): added.
        * kcanvas/device/quartz/KCanvasFilterQuartz.h:
        * kcanvas/device/quartz/KCanvasFilterQuartz.mm:
        (KCanvasFilterQuartz::applyFilter): use new baseclass method
        (KCanvasFEFloodQuartz::getCIFilter): fixed.
        * kcanvas/device/quartz/KCanvasItemQuartz.h:
        * kcanvas/device/quartz/KCanvasItemQuartz.mm:
        (KCanvasItemQuartz::layout): update width/height
        (KCanvasItemQuartz::getAbsoluteRepaintRect): fixed.
        (KCanvasItemQuartz::requiresLayer): moved to .cpp
        (KCanvasItemQuartz::lineHeight): added.
        (KCanvasItemQuartz::baselinePosition): added.
        * kcanvas/device/quartz/KCanvasResourcesQuartz.h:
        * kcanvas/device/quartz/KCanvasResourcesQuartz.mm:
        (KCanvasContainerQuartz::canHaveChildren): moved to .cpp
        (KCanvasContainerQuartz::requiresLayer): moved to .cpp
        (KCanvasContainerQuartz::lineHeight): added.
        (KCanvasContainerQuartz::baselinePosition): added.
        (KCanvasContainerQuartz::paint): fixed.
        (KCanvasContainerQuartz::viewportTransform): fixed.
        (KCanvasContainerQuartz::getAbsoluteRepaintRect): fixed.
        (KCanvasContainerQuartz::absoluteTransform): fixed.
        * rendering/render_object.cpp:
        (WebCore::RenderObject::absoluteTransform): fixed apply order.

2006-01-29  Eric Seidel  <eseidel@apple.com>

        Reviewed by hyatt.

        First set of fixes for SVG Tetris:
        http://bugs.webkit.org/show_bug.cgi?id=6889

        Tests:
        * svg/custom/viewport-update.svg
        Key press test not yet possible:
        http://bugs.webkit.org/show_bug.cgi?id=6906

        * bridge/mac/MacFrame.mm:
        (MacFrame::keyEvent): pass key events to things other than HTML
        * ksvg2/svg/SVGSVGElementImpl.cpp:
        (WebCore::SVGSVGElementImpl::parseMappedAttribute): update viewport

2006-01-29  Eric Seidel  <eseidel@apple.com>

        Reviewed by mjs.

        Fix SVG layout tests crash due to Vector change.

        * kcanvas/device/KRenderingDevice.cpp:
        (KRenderingDevice::currentContext): check isEmpty, return 0

2006-01-28  Eric Seidel  <eseidel@apple.com>

        Reviewed by mjs.

        Remove bogus IntRect operator.

        * platform/FloatRect.h:

2006-01-28  David Hyatt  <hyatt@apple.com>

        Cleanup of RenderImage.  Eliminate unneeded members and methods.

        Reviewed by darin

        * bridge/mac/WebCoreFrameBridge.mm:
        (-[WebCoreFrameBridge elementAtPoint:]):
        * khtml/ecma/kjs_html.cpp:
        (KJS::KJS::Context2DFunction::callAsFunction):
        (KJS::drawPattern):
        * khtml/html/HTMLInputElementImpl.cpp:
        (WebCore::HTMLInputElementImpl::attach):
        * khtml/html/html_imageimpl.cpp:
        (WebCore::HTMLImageLoader::notifyFinished):
        (WebCore::HTMLImageElementImpl::attach):
        * khtml/html/html_imageimpl.h:
        (WebCore::HTMLImageElementImpl::compositeOperator):
        * khtml/html/html_objectimpl.cpp:
        (WebCore::HTMLObjectElementImpl::attach):
        * ksvg2/svg/SVGImageElementImpl.cpp:
        (SVGImageElementImpl::attach):
        * kwq/KWQPainter.h:
        * kwq/KWQPainter.mm:
        (WebCore::QPainter::drawImageAtPoint):
        (WebCore::QPainter::drawImageInRect):
        (WebCore::QPainter::drawImage):
        (WebCore::QPainter::drawFloatImage):
        (WebCore::QPainter::drawTiledImage):
        (WebCore::QPainter::drawScaledAndTiledImage):
        * kwq/WebCoreImageRenderer.h:
        * loader/CachedImage.cpp:
        (WebCore::CachedImage::ref):
        (WebCore::CachedImage::notifyObservers):
        (WebCore::CachedImage::data):
        (WebCore::CachedImage::error):
        * loader/CachedImage.h:
        * loader/CachedObjectClient.h:
        (WebCore::CachedObjectClient::imageChanged):
        * platform/Image.h:
        (WebCore::Image::):
        * platform/mac/Image.mm:
        (WebCore::Image::Image):
        (WebCore::Image::resetAnimation):
        (WebCore::Image::operator=):
        (WebCore::Image::stopAnimations):
        (WebCore::):
        (WebCore::Image::compositeOperatorFromString):
        * rendering/render_box.cpp:
        (WebCore::RenderBox::paintBackgroundExtended):
        * rendering/render_canvasimage.cpp:
        (WebCore::RenderCanvasImage::paint):
        * rendering/render_image.cpp:
        (WebCore::RenderImage::RenderImage):
        (WebCore::RenderImage::~RenderImage):
        (WebCore::RenderImage::setContentObject):
        (WebCore::RenderImage::setCachedImage):
        (WebCore::RenderImage::imageChanged):
        (WebCore::RenderImage::resetAnimation):
        (WebCore::RenderImage::paint):
        (WebCore::RenderImage::layout):
        (WebCore::RenderImage::updateAltText):
        (WebCore::RenderImage::calcReplacedWidth):
        (WebCore::RenderImage::calcReplacedHeight):
        * rendering/render_image.h:
        (WebCore::RenderImage::cachedImage):
        (WebCore::RenderImage::image):
        (WebCore::RenderImage::errorOccurred):
        * rendering/render_list.cpp:
        (RenderListMarker::paint):
        (RenderListMarker::imageChanged):
        * rendering/render_list.h:
        * rendering/render_object.cpp:
        (WebCore::RenderObject::paintBorderImage):
        (WebCore::RenderObject::setImage):
        * rendering/render_object.h:

2006-01-28  Darin Adler  <darin@apple.com>

        Reviewed by Eric.

        - fix http://bugs.webkit.org/show_bug.cgi?id=6711
          crash if an event is dispatched to a listener that uses handleEvent

        Test: fast/events/dispatch-to-handle-event.html

        * khtml/ecma/kjs_events.cpp: (KJS::JSAbstractEventListener::handleEvent):
        Remove boolean that is always false, and correct the one place that was
        checking it to check the correct pointer instead.

2006-01-28  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by Darin.

        - remove QPtrStack, replace with Vector or traverseNextNode as appropriate

        * WebCore.xcodeproj/project.pbxproj:
        * kcanvas/device/KRenderingDevice.cpp:
        (KRenderingDevice::currentContext):
        (KRenderingDevice::popContext):
        (KRenderingDevice::pushContext):
        * kcanvas/device/KRenderingDevice.h:
        * khtml/html/html_documentimpl.cpp:
        * khtml/xml/DocumentImpl.cpp:
        * khtml/xml/xml_tokenizer.cpp:
        (WebCore::XMLTokenizer::XMLTokenizer):
        * kwq/KWQAccObject.mm:
        (-[KWQAccObject addChildrenToArray:]):
        * kwq/KWQPainter.mm:
        (WebCore::QPainter::save):
        (WebCore::QPainter::restore):
        * kwq/KWQPtrStack.h: Removed.
        * ForwardingHeaders/qptrstack.h: Removed.
        * ForwardingHeaders/q3ptrstack.h: Removed.

2006-01-28  Maciej Stachowiak  <mjs@apple.com>

        - added missing forwarding header to fix build.
        
        * ForwardingHeaders/kxmlcore/Vector.h: Added.

2006-01-28  Darin Adler  <darin@apple.com>

        * khtml/ecma/kjs_binding.cpp: (KJS::setDOMException): Removed extra parameter
        to fix the build.

2006-01-28  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by Darin.

        - converted KWQKURL to use Vector
        http://bugs.webkit.org/show_bug.cgi?id=6900

        Use Vector in place of Array, and in place of the custom stack
        buffers with overflow.
        
        * kwq/KWQKURL.mm:
        (KURL::KURL):
        (KURL::decode_string):
        (KURL::parse):
        (KURL::encode_string):
        (findHostnamesInMailToURL):
        (encodeHostnames):

2006-01-28  Darin Adler  <darin@apple.com>

        Reviewed by Maciej.

        - http://bugs.webkit.org/show_bug.cgi?id=6895
          include exception names in JavaScript form of DOM exception

        * khtml/ecma/kjs_binding.cpp: (KJS::setDOMException): Include the name of the
        exception in the error message.

2006-01-28  Mitz Pettel  <opendarwin.org@mitzpettel.com>

        Test: fast/table/add-before-anonymous-child.html

        Reviewed by Darin.

        - fix http://bugs.webkit.org/show_bug.cgi?id=5868
          Crash on HP.com with ToT and Safari 2.0.2 in khtml::RenderContainer::detach()

        * rendering/RenderTableRow.cpp:
        (WebCore::RenderTableRow::addChild): If beforeChild is inside an anonymous
        cell, insert into the cell.
        * rendering/RenderTableSection.cpp:
        (WebCore::RenderTableSection::addChild): Changed comment.

2006-01-28  David Hyatt  <hyatt@apple.com>

        Eliminate the mask() method on Image.  It's unused.

        * platform/Image.h:
        * platform/mac/Image.mm:

2006-01-28  David Hyatt  <hyatt@apple.com>

        Clean up the Image class.  Eliminate the MIME type member variable.
        Eliminate an unused constructor.  Fix the constructor to take
        a QString rather than an NSString so that it's portable.  Rename
        the receivedData method to decode.  Move canRenderImageType into
        the Image class as a static method.

        Reviewed by mjs

        * khtml/html/html_objectimpl.cpp:
        (WebCore::HTMLObjectElementImpl::isImageType):
        * kwq/KWQLoader.h:
        * kwq/KWQLoader.mm:
        (KWQResponseMIMEType):
        * loader/CachedImage.cpp:
        (WebCore::CachedImage::data):
        * platform/Image.h:
        * platform/mac/Image.mm:
        (WebCore::Image::supportsType):
        (WebCore::Image::Image):
        (WebCore::Image::~Image):
        (WebCore::Image::decode):
        (WebCore::Image::operator=):

2006-01-28  Alexander Kellett  <lypanov@kde.org>

        Reviewed by eseidel.

        SourceAlpha does not display until window is redrawn (resized)
        http://bugs.webkit.org/show_bug.cgi?id=6375

        Test: svg/custom/filter-source-alpha.svg

        * kcanvas/device/quartz/KCanvasFilterQuartz.mm:
        (KCanvasFilterQuartz::inputImage):

2006-01-28  David Hyatt  <hyatt@apple.com>

        Fix CachedImage.h/.cpp up.  Lots of cleanup.  Eliminated
        unused code and cleaned up method and member names.

        Reviewed by darin

        * WebCore.xcodeproj/project.pbxproj:
        * khtml/html/html_imageimpl.cpp:
        (WebCore::HTMLImageElementImpl::width):
        (WebCore::HTMLImageElementImpl::height):
        * loader/CachedImage.cpp:
        (WebCore::CachedImage::CachedImage):
        (WebCore::CachedImage::ref):
        (WebCore::CachedImage::deref):
        (WebCore::CachedImage::image):
        (WebCore::CachedImage::imageSize):
        (WebCore::CachedImage::decodedRect):
        (WebCore::CachedImage::notifyObservers):
        (WebCore::CachedImage::clear):
        (WebCore::CachedImage::data):
        (WebCore::CachedImage::error):
        (WebCore::CachedImage::checkNotify):
        * loader/CachedImage.h:
        (WebCore::CachedImage::isDecoded):
        (WebCore::CachedImage::isErrorImage):
        (WebCore::CachedImage::schedule):
        (WebCore::CachedImage::isImage):
        * loader/CachedImageCallback.cpp: Removed.
        * loader/CachedImageCallback.h: Removed.
        * loader/loader.cpp:
        (WebCore::Loader::servePendingRequests):
        (WebCore::Loader::slotFinished):
        * platform/Image.h:
        * platform/mac/Image.mm:
        (WebCore::Image::receivedData):
        * rendering/render_box.cpp:
        (WebCore::RenderBox::paintBackgroundExtended):
        * rendering/render_image.cpp:
        (WebCore::RenderImage::setImage):
        (WebCore::RenderImage::paint):
        * rendering/render_line.cpp:
        (WebCore::InlineFlowBox::paintBackground):
        (WebCore::InlineFlowBox::paintBackgroundAndBorder):
        * rendering/render_list.cpp:
        (RenderListMarker::setImage):
        * rendering/render_object.cpp:
        (WebCore::RenderObject::mustRepaintBackgroundOrBorder):
        (WebCore::RenderObject::paintBorder):
        (WebCore::RenderObject::setImage):

2006-01-27  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by Geoff.

        - GC after destroying the very last frame to avoid node leak false positives
        http://bugs.webkit.org/show_bug.cgi?id=6884

        * ForwardingHeaders/JSLock.h: added
        * page/Page.cpp:
        (Page::~Page): In debug mode, when destroying the last page,
        0 out m_mainFrame to destroy the very last frame and then garbage collect,
        so a GC happens at a time when the stack won't have references into the JS
        heap for the conservative GC to catch.

2006-01-27  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by Eric.

        - remove nearly all the substance of ObjectContents and put it on Frame
        http://bugs.webkit.org/show_bug.cgi?id=6885

        * ForwardingHeaders/kjs/JSLock.h: Added.
        * bridge/mac/MacFrame.mm:
        (Plugin::Plugin): renamed from KWQPluginPart, make it able to store a view.
        (Plugin::view): And return the QWidget* view.
        (MacFrame::createPart): Use Plugin instead of KWQPluginPart, avoid setWidget.
        (MacFrame::setView): Don't use m_url directly so much, and use through d-> if
        needed.
        (MacFrame::userAgent): ditto
        (MacFrame::openURLFromPageCache): ditto
        * kwq/KWQObject.cpp:
        (QObject::inherits): Removed case for ObjectContents, which is not long for this
        world.
        * kwq/KWQObject.h:
        * page/Frame.cpp:
        (Frame::init): Don't pass parent() to FramePrivate, we can't possibly have one
        yet.
        (Frame::restoreURL): d->m_url, not m_url
        (Frame::didOpenURL): ditto
        (Frame::executeScript): ditto
        (Frame::receivedFirstData): ditto
        (Frame::begin): ditto
        (Frame::gotoAnchor): ditto
        (Frame::requestObject): ditto, plus only use Frame methods when we really have a Frame.
        (Frame::processObjectRequest): ditto, also get view() not widget().
        (Frame::childFrame): remove excess spaces and pointless assert.
        (Frame::parentFrame): just call parent() (could probably remove this).
        (Frame::reparseConfiguration): d->m_url not m_url
        (Frame::canCachePage): ditto
        (Frame::updatePolicyBaseURL): ditto
        (Frame::scrollToAnchor): ditto
        (Frame::setName): set in FramePrivate
        (Frame::name): get from FramePrivate
        (Frame::setParent): similarly
        (Frame::parent): similarly
        (Frame::url): similarly
        * page/Frame.h:
        * page/FramePrivate.h:
        (FramePrivate::FramePrivate): Added m_parent, m_name and m_url.
        * page/FrameView.cpp:
        (FrameView::viewportMousePressEvent): Call frame directly instead of
        sending through QApplication.
        (FrameView::viewportMouseDoubleClickEvent): ditto
        (FrameView::viewportMouseMoveEvent): ditto
        (FrameView::viewportMouseReleaseEvent): ditto
        * page/ObjectContents.h:
        (ObjectContents::ObjectContents): Removed url, setParent, parent, name,
        setName, openURL, closeURL, widget, setWidget, event and customEvent methods,
        and corresponding fields. Add pure virtual view() method.

2006-01-27  Darin Adler  <darin@apple.com>

        Reviewed by Adele.

        - fix http://bugs.webkit.org/show_bug.cgi?id=6075
          REGRESSION: event.relatedTarget not working, breaks menus at www.ati.com

        Test: fast/events/related-target.html

        * khtml/xml/NodeImpl.h:
        * khtml/xml/NodeImpl.cpp: (WebCore::NodeImpl::dispatchMouseEvent): Added a
        relatedTarget parameter to a couple overloads.

        * page/FrameView.cpp:
        (FrameView::viewportMouseMoveEvent): Moved code to set prevMouseX/Y out of here
        and into dispatchMouseEvent, because it now handles mouseout and mouseover events,
        and that's what these globals are used for. This fixes DumpRenderTree to work
        properly with mouseout and mouseover (because it delivers only mouse down and up,
        no mouse move events).
        (FrameView::dispatchMouseEvent): Passed in the "other" node as the related target
        for mouseout and mouseover events. Also set prevMouseX/Y.

2006-01-27  David Hyatt  <hyatt@apple.com>

        Fix for 6867.  Rename QPixmap to Image and move it to platform/.
        Eliminate QPaintDevice and QPaintDeviceMetrics completely, since
        they aren't necessary.

        Reviewed by anders

        * ForwardingHeaders/q3paintdevicemetrics.h: Removed.
        * ForwardingHeaders/qpaintdevice.h: Removed.
        * ForwardingHeaders/qpaintdevicemetrics.h: Removed.
        * ForwardingHeaders/qpixmap.h: Removed.
        * WebCore.xcodeproj/project.pbxproj:
        * bridge/mac/MacFrame.mm:
        (MacFrame::fileWrapperForElement):
        * bridge/mac/WebCoreFrameBridge.mm:
        (-[WebCoreFrameBridge reapplyStylesForDeviceType:]):
        (nowPrinting):
        (-[WebCoreFrameBridge elementAtPoint:]):
        * css/css_valueimpl.cpp:
        (WebCore::CSSPrimitiveValueImpl::computeLength):
        (WebCore::CSSPrimitiveValueImpl::computeLengthFloat):
        * css/css_valueimpl.h:
        * css/csshelper.cpp:
        * css/cssstyleselector.cpp:
        (WebCore::CSSStyleSelector::CSSStyleSelector):
        (WebCore::CSSStyleSelector::init):
        (WebCore::CSSStyleSelector::initForStyleResolve):
        (WebCore::CSSStyleSelector::styleForElement):
        (WebCore::CSSStyleSelector::pseudoStyleForElement):
        (WebCore::convertToLength):
        (WebCore::CSSStyleSelector::applyProperty):
        (WebCore::CSSStyleSelector::mapBackgroundXPosition):
        (WebCore::CSSStyleSelector::mapBackgroundYPosition):
        * css/cssstyleselector.h:
        * kcanvas/KCanvasFilters.h:
        (KCanvasFEImage::image):
        (KCanvasFEImage::setImage):
        * kcanvas/KCanvasImage.h:
        * kcanvas/device/quartz/KCanvasFilterQuartz.mm:
        (KCanvasFEImageQuartz::getCIFilter):
        * kcanvas/device/quartz/KCanvasResourcesQuartz.h:
        (KCanvasImageQuartz::init):
        * khtml/ecma/kjs_events.cpp:
        (KJS::ClipboardProtoFunc::callAsFunction):
        * khtml/ecma/kjs_html.cpp:
        (KJS::KJS::Context2DFunction::callAsFunction):
        (KJS::drawPattern):
        (KJS::_rh):
        (KJS::ImagePattern::createPattern):
        * khtml/ecma/kjs_html.h:
        (KJS::ImagePattern::image):
        * khtml/ecma/kjs_window.cpp:
        (KJS::Screen::getValueProperty):
        * khtml/editing/SelectionController.h:
        * khtml/html/html_imageimpl.h:
        (WebCore::HTMLImageElementImpl::image):
        * khtml/misc/helper.h:
        * khtml/xml/DocumentImpl.cpp:
        (WebCore::DocumentImpl::DocumentImpl):
        (WebCore::DocumentImpl::~DocumentImpl):
        (WebCore::DocumentImpl::recalcStyle):
        (WebCore::DocumentImpl::attach):
        (WebCore::DocumentImpl::detach):
        * khtml/xml/DocumentImpl.h:
        (WebCore::DocumentImpl::printing):
        (WebCore::DocumentImpl::setPrinting):
        * khtml/xml/dom2_eventsimpl.h:
        * ksvg2/css/SVGCSSStyleSelector.cpp:
        * ksvg2/misc/KCanvasRenderingStyle.cpp:
        (WebCore::KSVGPainterFactory::cssPrimitiveToLength):
        (WebCore::KSVGPainterFactory::strokePainter):
        * ksvg2/svg/SVGCursorElementImpl.cpp:
        (SVGCursorElementImpl::notifyFinished):
        * ksvg2/svg/SVGCursorElementImpl.h:
        (KSVG::SVGCursorElementImpl::image):
        * ksvg2/svg/SVGDocumentImpl.cpp:
        (SVGDocumentImpl::SVGDocumentImpl):
        * ksvg2/svg/SVGFEImageElementImpl.cpp:
        (SVGFEImageElementImpl::notifyFinished):
        * ksvg2/svg/SVGMaskElementImpl.cpp:
        (KSVG::SVGMaskElementImpl::drawMaskerContent):
        * ksvg2/svg/SVGSVGElementImpl.cpp:
        * kwq/KWQApplication.h:
        * kwq/KWQApplication.mm:
        (QDesktopWidget::screenDepth):
        * kwq/KWQClipboard.h:
        * kwq/KWQClipboard.mm:
        (WebCore::KWQClipboard::dragImage):
        (WebCore::KWQClipboard::setDragImage):
        (WebCore::KWQClipboard::setDragImageElement):
        * kwq/KWQComboBox.mm:
        * kwq/KWQCursor.h:
        * kwq/KWQCursor.mm:
        (WebCore::createCustomCursor):
        (WebCore::QCursor::QCursor):
        * kwq/KWQKPartsEvent.h:
        * kwq/KWQObject.h:
        * kwq/KWQPaintDevice.h: Removed.
        * kwq/KWQPaintDeviceMetrics.h: Removed.
        * kwq/KWQPaintDeviceMetrics.mm: Removed.
        * kwq/KWQPainter.h:
        (WebCore::QPainter::printing):
        * kwq/KWQPainter.mm:
        (WebCore::QPainter::drawImage):
        (WebCore::QPainter::drawFloatImage):
        (WebCore::QPainter::drawTiledImage):
        (WebCore::QPainter::drawScaledAndTiledImage):
        * kwq/KWQPixmap.h: Removed.
        * kwq/KWQPixmap.mm: Removed.
        * kwq/KWQPrinter.h:
        (QPrinter::QPrinter):
        * kwq/KWQWidget.h:
        * loader/Cache.cpp:
        (khtml::Cache::init):
        (khtml::Cache::clear):
        (khtml::Cache::requestImage):
        (khtml::Cache::getStatistics):
        * loader/Cache.h:
        * loader/CachedImage.cpp:
        (WebCore::CachedImage::CachedImage):
        (WebCore::CachedImage::ref):
        (WebCore::CachedImage::tiled_image):
        (WebCore::CachedImage::image):
        (WebCore::CachedImage::image_size):
        (WebCore::CachedImage::do_notify):
        (WebCore::CachedImage::data):
        (WebCore::CachedImage::error):
        * loader/CachedImage.h:
        * loader/CachedImageCallback.cpp:
        (WebCore::CachedImageCallback::notifyUpdate):
        (WebCore::CachedImageCallback::notifyFinished):
        (WebCore::CachedImageCallback::handleError):
        * loader/CachedObject.h:
        (WebCore::CachedObject::):
        * loader/CachedObjectClient.h:
        (WebCore::CachedObjectClient::setImage):
        * loader/DocLoader.cpp:
        (khtml::DocLoader::setAutoloadImages):
        (khtml::DocLoader::setShowAnimations):
        * loader/loader.cpp:
        (WebCore::Loader::servePendingRequests):
        (WebCore::Loader::slotFinished):
        * page/Frame.cpp:
        (Frame::paint):
        * page/Frame.h:
        * page/FrameView.cpp:
        (selectCursor):
        * page/FrameView.h:
        * platform/Image.h: Added.
        * platform/mac/Image.mm: Added.
        (WebCore::Image::loadResource):
        (WebCore::Image::Image):
        (WebCore::Image::~Image):
        (WebCore::Image::imageRef):
        (WebCore::Image::resetAnimation):
        (WebCore::Image::setAnimationRect):
        (-[WebImageCallback initWithCallback:WebCore::]):
        (WebCore::Image::shouldUseThreadedDecoding):
        (WebCore::Image::receivedData):
        (WebCore::Image::mask):
        (WebCore::Image::isNull):
        (WebCore::Image::size):
        (WebCore::Image::rect):
        (WebCore::Image::width):
        (WebCore::Image::height):
        (WebCore::Image::resize):
        (WebCore::Image::operator=):
        (WebCore::Image::increaseUseCount):
        (WebCore::Image::decreaseUseCount):
        (WebCore::Image::stopAnimations):
        (WebCore::Image::flushRasterCache):
        * rendering/InlineTextBox.cpp:
        (khtml::InlineTextBox::paint):
        * rendering/InlineTextBox.h:
        * rendering/RenderBlock.cpp:
        (WebCore::RenderBlock::paintChildren):
        (WebCore::RenderBlock::paintObject):
        * rendering/RenderText.h:
        * rendering/font.cpp:
        (khtml::Font::update):
        * rendering/font.h:
        * rendering/render_box.cpp:
        (WebCore::RenderBox::paintBackgroundExtended):
        * rendering/render_canvasimage.cpp:
        (WebCore::RenderCanvasImage::paint):
        * rendering/render_flow.cpp:
        (RenderFlow::paintLines):
        * rendering/render_image.cpp:
        (WebCore::RenderImage::RenderImage):
        (WebCore::RenderImage::~RenderImage):
        (WebCore::RenderImage::setContentObject):
        (WebCore::RenderImage::setImage):
        (WebCore::RenderImage::paint):
        (WebCore::RenderImage::layout):
        (WebCore::RenderImage::calcReplacedWidth):
        (WebCore::RenderImage::calcReplacedHeight):
        * rendering/render_image.h:
        (WebCore::RenderImage::image):
        (WebCore::RenderImage::getImage):
        * rendering/render_line.cpp:
        (WebCore::InlineFlowBox::paintBackground):
        (WebCore::InlineFlowBox::paintBackgroundAndBorder):
        * rendering/render_list.cpp:
        (RenderListItem::getAbsoluteRepaintRect):
        (RenderListMarker::paint):
        (RenderListMarker::setImage):
        (RenderListMarker::calcMinMaxWidth):
        * rendering/render_list.h:
        * rendering/render_object.cpp:
        (WebCore::RenderObject::mustRepaintBackgroundOrBorder):
        (WebCore::RenderObject::paintBorderImage):
        (WebCore::RenderObject::paintBorder):
        (WebCore::RenderObject::setImage):
        * rendering/render_object.h:
        * rendering/render_replaced.cpp:
        (WebCore::RenderWidget::paint):
        * rendering/render_replaced.h:
        * rendering/render_theme_mac.mm:
        (khtml::RenderThemeMac::setFontFromControlSize):

2006-01-27  Darin Adler  <darin@apple.com>

        Reviewed by Maciej.

        - fix another part of http://bugs.webkit.org/show_bug.cgi?id=6731
          REGRESSION: change event fires at load time for checked items

        Revised test: fast/forms/radio-button-no-change-event.html

        * khtml/html/HTMLInputElementImpl.cpp: (WebCore::HTMLInputElementImpl::setChecked):
        Don't send a change event for a radio button getting unchecked (matches Gecko at least).

2006-01-26  Eric Seidel  <eseidel@apple.com>

        Reviewed by mjs.

        Leak fixes in SVG code.
        http://bugs.webkit.org/show_bug.cgi?id=6588

        * kcanvas/device/quartz/KRenderingPaintServerGradientQuartz.mm:
        (teardownShadingWithStyle): delete image and context when through.
        (KRenderingPaintServerGradientQuartz::KRenderingPaintServerGradientQuartz): zero out cached mask
        (KRenderingPaintServerGradientQuartz::~KRenderingPaintServerGradientQuartz): destroy cached mask image.
        (KRenderingPaintServerLinearGradientQuartz::setup): delete mask before making new
        (KRenderingPaintServerRadialGradientQuartz::setup): delete mask before making new
        * ksvg2/misc/KCanvasRenderingStyle.cpp:
        (WebCore::sharedSolidPaintServer): forgot "static" keyword
        * ksvg2/svg/SVGPolyElementImpl.cpp:
        (SVGPolyElementImpl::notifyAttributeChange): use RefPtr

2006-01-26  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by Eric.

        - various leaks on "fast" LayoutTests
        
        http://bugs.webkit.org/show_bug.cgi?id=6819
        http://bugs.webkit.org/show_bug.cgi?id=6823
        http://bugs.webkit.org/show_bug.cgi?id=6824
        
        It turns out these all had the same cause.
        
        * page/Frame.cpp:
        (Frame::clear): If we have a document, make sure to cancel parsing,
        in case it has a tokenizer and parser that are keeping it alive. Use
        cancelParsing to avoid possibly accidentally firing the onload handler.
        * khtml/xml/DocumentImpl.cpp:
        (WebCore::DocumentImpl::cancelParsing): Factored out of implicitOpen.
        (WebCore::DocumentImpl::implicitOpen): Call cancelParsing now.
        * khtml/xml/DocumentImpl.h:

2006-01-26  Beth Dakin  <bdakin@apple.com>

        Reviewed by Hyatt.

        Fix for <rdar://problem/4256504> khtml::RenderBlock::skipWhitespace 
        crashes upon interaction with radio buttons.

        The old code held an assumption that positioned elements would 
        always have line boxes. This is not necessarily the case, so this 
        patch makes sure that the lines are dirtied appropriately.

        * rendering/RenderContainer.cpp:
        (WebCore::RenderContainer::removeChildNode): Call 
        dirtyLinesFromChangedChild() if oldChild is positioned and has
        inline children.
        (WebCore::RenderContainer::insertChildNode): Only check the the 
        child is not floating; it can be positioned.

2006-01-26  Mitz Pettel  <opendarwin.org@mitzpettel.com>

        Test: fast/dom/HTMLImageElement/image-without-renderer-width.html

        Reviewed and landed by Anders.

        - fix http://bugs.webkit.org/show_bug.cgi?id=6841
          REGRESSION: WebKit (Thursday, January 26, 2006) crash in HTMLImageElementImpl::width()

        * khtml/html/html_imageimpl.cpp:
        (WebCore::HTMLImageElementImpl::width): Return the image's dimensions only if it isn't
        null, but even if it hasn't finished loading.
        (WebCore::HTMLImageElementImpl::height): Ditto.

2006-01-26  Adele Peterson  <adele@apple.com>

        Reviewed by Hyatt and Vicki.

        Fix for broken layout tests.

        * khtml/html/HTMLInputElementImpl.cpp: (WebCore::HTMLInputElementImpl::focus): 

2006-01-26  Anders Carlsson  <andersca@mac.com>

        Reviewed by Eric.

        - http://bugs.webkit.org/show_bug.cgi?id=6845
        Autogenerate more classes
        
        This makes DocumentType and DOMImplementation autogenerated.
        
        * JSCore.cpp: Added.
        
        * WebCore.xcodeproj/project.pbxproj:
        Add JSCore.cpp
        
        * bindings/scripts/CodeGeneratorJS.pm:
        Add attributes for controlling how null values should be converted
        to and from DOMString objects.
        
        * bindings/scripts/IDLParser.pm:
        * bindings/scripts/IDLStructure.pm:
        Remove the extended attributes hash on attribute objects and
        use the one on the signature.

        * khtml/ecma/kjs_dom.cpp:
        (KJS::DOMNodeProtoFunc::callAsFunction):
        For isSupported, just convert the version argument to an empty string if
        null is passed in. The reason for this change is that the autogenerated
        binding for DOMImplementation::hasFeature does the same thing. This also makes
        us behave like Mozilla and Opera.
        
        (KJS::toDocumentType):
        (KJS::getDOMNode):
        Use JSDocumentType.
        
        (KJS::getDOMDOMImplementation):
        Use JSDOMImplementation.
        
        * khtml/ecma/kjs_dom.h:
        Remove DOMDOMImplementation and DOMDocumentType
        
        * khtml/xml/DOMImplementation.idl: Added.
        * khtml/xml/DocumentType.idl: Added.

2006-01-26  Alexander Kellett  <lypanov@kde.org>

        Reviewed by eseidel.  Landed by eseidel.

        <text> elements with a scale on a parent <g> breaks nodeAtPoint
        Fix http://bugs.webkit.org/show_bug.cgi?id=6843
        
        Test: svg/custom/text-hit-test.svg

        * kcanvas/RenderSVGText.cpp:
        (RenderSVGText::nodeAtPoint):

2006-01-26  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by Geoff.

        - fixed a couple hundred node leaks on the traversal layout tests
        http://bugs.webkit.org/show_bug.cgi?id=6828

        There were three basic problems here, any one of which was enough
        to cause the leak.
        
        1) If the filter function for a NodeFilter, NodeIterator or TreeWalker
        had that object in scope, it would cause a GC reference cycle. I fixed
        this by making these JS functions get marked by the corresponding JS object,
        as for XMLHttpRequest.
        
        2) The TraversalImpl class that's a base class for NodeIteratorImpl and 
        TreeWalkerImpl did not have a virtual destructor, leading the Shared
        template to call the base class destructor on deref.
        
        3) ref/deref on the document were mismatched, I fixed all that sort of nonsense
        by using RefPtr instead of manual ref/deref.
        
        * khtml/dom/dom2_traversal.h:
        (DOM::NodeFilterCondition::mark): Add no-op virtual mark method, JS subclass
        will do something useful here.
        * khtml/ecma/kjs_traversal.cpp:
        (KJS::DOMNodeIterator::mark): Mark the DOM-level filter.
        (KJS::DOMNodeFilter::mark): ditto
        (KJS::DOMTreeWalker::mark): ditto
        (KJS::JSNodeFilterCondition::JSNodeFilterCondition): reformatted.
        (KJS::JSNodeFilterCondition::mark): Mark the filter function.
        * khtml/ecma/kjs_traversal.h:
        * khtml/xml/dom2_traversalimpl.cpp:
        (DOM::NodeFilterImpl::NodeFilterImpl): diligently applied RefPtr
        (DOM::TraversalImpl::TraversalImpl): ditto
        (DOM::TraversalImpl::~TraversalImpl): ditto
        (DOM::NodeIteratorImpl::NodeIteratorImpl): ditto
        (DOM::NodeIteratorImpl::~NodeIteratorImpl): ditto
        (DOM::NodeIteratorImpl::setReferenceNode): ditto
        (DOM::TreeWalkerImpl::TreeWalkerImpl): ditto
        (DOM::TreeWalkerImpl::setCurrentNode): ditto
        * khtml/xml/dom2_traversalimpl.h:
        (DOM::NodeFilterImpl::mark): call mark() on the codition
        (DOM::TraversalImpl::root): Use .get()
        (DOM::TraversalImpl::filter): ditto
        (DOM::NodeIteratorImpl::referenceNode): ditto
        (DOM::NodeIteratorImpl::document): ditto
        (DOM::TreeWalkerImpl::currentNode): ditto

2006-01-26  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by Geoff.

        - fixed ~40 DOM nodes leaked when running any two of the outerHTML DOM tests (actually just a false positive)
        http://bugs.webkit.org/show_bug.cgi?id=6822

        * kwq/KWQPageState.mm:
        (-[KWQPageState clear]): Garbage collect after deleting a bunch of
        stuff that holds onto JS objects. This should avoid false positive leaks
        and is good in any case since page state deallocation is already deferred.

2006-01-26  Adele Peterson  <adele@apple.com>

        Reviewed by Vicki.

        - fix for <rdar://problem/4422624> REGRESSION: crash loading webmail.mac.com

        Test added:
        fast/forms/input-no-renderer.html

        * khtml/html/HTMLInputElementImpl.cpp:
        (WebCore::HTMLInputElementImpl::focus): Nil check for renderer.

2006-01-26  David Harrison  <harrison@apple.com>

        Reviewed by Timothy.

        - fix http://bugs.webkit.org/show_bug.cgi?id=6835
          REGRESSION: WebKit crashes when loading a script on Wikipedia

        Test added:
        editing/deleting/delete-listitem-001.html
        
        * rendering/render_list.cpp:
        (RenderListItem::setStyle):
        (RenderListItem::resetMarkerValue):
        (RenderListItem::getAbsoluteRepaintRect):
        (RenderListMarker::paint):

2006-01-26  Mitz Pettel  <opendarwin.org@mitzpettel.com>

        Reviewed by Darin, landed by ap.
        
        - fix http://bugs.webkit.org/show_bug.cgi?id=6388
          REGRESSION: Incomplete repaint when dragging the map on Google maps

        * manual-tests/bugzilla-6388.html: Added.
        * rendering/render_layer.cpp:
        (WebCore::RenderLayer::computeRepaintRects): Cache the object's absolute position
        before update.
        (WebCore::RenderLayer::updateLayerPositions): Use the cached position to determine if
        the object moved. If it did, do a full repaint.
        * rendering/render_layer.h:

2006-01-26  Eric Seidel  <eseidel@apple.com>

        Fixes xcode project to better notice when generated files change.
        Also fixes failing test cases on build slaves.

        * WebCore.xcodeproj/project.pbxproj:

2006-01-26  Mitz Pettel  <opendarwin.org@mitzpettel.com>

        Reviewed by Darin, committed by ap.
        
        - fix http://bugs.webkit.org/show_bug.cgi?id=6278
          REGRESSION: Incomplete repaint when table cell width changes during layout

        * manual-tests/bugzilla-6278.html: Added.
        * rendering/RenderTableSection.cpp:
        (WebCore::RenderTableSection::setCellWidths): If during layout a cell changes from
        not needing layout to needing layout, call repaintObjectsBeforeLayout on it.

2006-01-26  Eric Seidel  <eseidel@apple.com>

        Reviewed by mjs.

        SVG shows up blank in WebKit+SVG
        http://bugs.webkit.org/show_bug.cgi?id=6620
        
        Test: svg/custom/viewport-no-width-height.svg

        * css/svg.css: default to width/height 100% for <svg>

2006-01-26  Anders Carlsson  <andersca@mac.com>

        Reviewed by Darin.

        http://bugs.webkit.org/show_bug.cgi?id=6805
        Support constants in IDL files

        * bindings/scripts/CodeGeneratorJS.pm:
        If an interface has constants, generate a constructor
        object and add the constants as properties. Also add a
        getConstructor method to the interface object.
        
        * bindings/scripts/CodeGenerator.pm:
        * bindings/scripts/generate-bindings.pl:
        Add a --force-generation flag to force regeneration of files
        even though nothing has changed.
        
        * khtml/ecma/kjs_events.cpp:
        * khtml/ecma/kjs_events.h:
        Remove MutationEventConstructor and DOMMutationEvent,
        those are autogenerated now.
        
        * bindings/js/JSEvents.cpp:
        Include JSMutationEvent.cpp

        * khtml/ecma/kjs_window.cpp:        
        (KJS::Window::getValueProperty):
        * khtml/ecma/kjs_window.h:
        (KJS::Window::):
        Add MutationEvent property.
        
        * khtml/xml/MutationEvent.idl: Added.

2006-01-25  Alexander Kellett  <lypanov@kde.org>

        Reviewed by eseidel.  Landed by eseidel

        Percentage values for width, height are not rendered correctly.
        http://bugs.webkit.org/show_bug.cgi?id=5331
        
        Tests:
        * svg/custom/percentage-rect.svg
        * svg/custom/percentage-rect2.svg

        Create items for even empty paths to prevent an empty render tree.
        Calculate the viewport element on the fly rather than caching it,
        unless there is no context from which to calculate it. Call 
        notifyAttributeChange() on layout to fix usage of viewport
        percentages for lengths. Remove portion of code which appears to 
        do nothing but worsen the situation.

        * kcanvas/device/quartz/KCanvasItemQuartz.h:
        * kcanvas/device/quartz/KCanvasItemQuartz.mm:
        (KCanvasItemQuartz::layout):
        * ksvg2/svg/SVGLengthImpl.cpp:
        (SVGLengthImpl::value):
        * ksvg2/svg/SVGStyledElementImpl.cpp:
        (SVGStyledElementImpl::createRenderer):

2006-01-26  Eric Seidel  <eseidel@apple.com>

        Reviewed by hyatt.

        Disable <animateTransform> to stop layout test crashes.
        http://bugs.webkit.org/show_bug.cgi?id=6780

        * ksvg2/misc/KSVGTimeScheduler.cpp: hack out animateTransform.

2006-01-26  Eric Seidel  <eseidel@apple.com>

        Reviewed by mjs.

        Deploy RefPtr throughout more of WebCore
        http://bugs.webkit.org/show_bug.cgi?id=6754

        * bridge/mac/MacFrame.mm:
        (MacFrame::shouldClose): no need to call .get()
        * khtml/html/HTMLElementImpl.cpp:
        (WebCore::HTMLElementImpl::createContextualFragment):
        * khtml/html/HTMLSelectElementImpl.cpp:
        (WebCore::HTMLSelectElementImpl::remove):
        * khtml/html/HTMLTextAreaElementImpl.cpp:
        (WebCore::HTMLTextAreaElementImpl::setDefaultValue):
        * khtml/html/html_baseimpl.cpp:
        (WebCore::HTMLBodyElementImpl::HTMLBodyElementImpl):
        (WebCore::HTMLBodyElementImpl::~HTMLBodyElementImpl):
        (WebCore::HTMLBodyElementImpl::createLinkDecl):
        (WebCore::HTMLBodyElementImpl::parseMappedAttribute):
        * khtml/html/html_baseimpl.h:
        * khtml/html/html_headimpl.cpp:
        (WebCore::HTMLLinkElementImpl::HTMLLinkElementImpl):
        (WebCore::HTMLLinkElementImpl::~HTMLLinkElementImpl):
        (WebCore::HTMLLinkElementImpl::process):
        (WebCore::HTMLLinkElementImpl::setStyleSheet):
        (WebCore::HTMLLinkElementImpl::isLoading):
        (WebCore::HTMLStyleElementImpl::HTMLStyleElementImpl):
        (WebCore::HTMLStyleElementImpl::childrenChanged):
        (WebCore::HTMLStyleElementImpl::isLoading):
        * khtml/html/html_headimpl.h:
        (DOM::HTMLLinkElementImpl::sheet):
        (DOM::HTMLStyleElementImpl::sheet):
        * khtml/html/html_tableimpl.cpp:
        (WebCore::HTMLTableElementImpl::parseMappedAttribute):
        (WebCore::HTMLTableSectionElementImpl::insertRow):
        (WebCore::HTMLTableSectionElementImpl::deleteRow):
        (WebCore::HTMLTableRowElementImpl::deleteCell):
        * khtml/xml/NodeImpl.cpp:
        (WebCore::NodeImpl::dispatchEvent):
        (WebCore::NodeImpl::dispatchGenericEvent):
        (WebCore::NodeImpl::dispatchWindowEvent):
        (WebCore::NodeImpl::dispatchMouseEvent):
        (WebCore::NodeImpl::dispatchKeyEvent):
        (WebCore::NodeImpl::createRendererIfNeeded):
        * khtml/xml/NodeImpl.h:
        * khtml/xml/dom_elementimpl.cpp:
        (WebCore::MappedAttributeImpl::clone):
        (WebCore::StyledElementImpl::StyledElementImpl):
        (WebCore::StyledElementImpl::createInlineStyleDecl):
        (WebCore::StyledElementImpl::destroyInlineStyleDecl):
        (WebCore::StyledElementImpl::getInlineStyleDecl):
        * khtml/xml/dom_elementimpl.h:
        (DOM::MappedAttributeImpl::MappedAttributeImpl):
        (DOM::MappedAttributeImpl::style):
        (DOM::MappedAttributeImpl::decl):
        (DOM::MappedAttributeImpl::setDecl):
        (DOM::StyledElementImpl::inlineStyleDecl):
        * khtml/xml/dom_position.cpp:
        (DOM::Position::Position):
        (DOM::Position::clear):
        * khtml/xml/dom_position.h:
        (DOM::Position::node):

2006-01-25  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by Dave Hyatt.
        
        - garbage collect a bit later when destroying Frame (fixes node leak false positives)
        http://bugs.webkit.org/show_bug.cgi?id=6818       

        * khtml/ecma/kjs_proxy.cpp:
        (WebCore::KJSProxyImpl::~KJSProxyImpl): Garbage collect after destroying
        the script interpreter.
        * page/Frame.cpp:
        (Frame::clear): Add a boolean parameter to indicate whether properties
        of the window object should also be cleared (defaults to true).
        (Frame::~Frame): Call clear(false) instead of clear()
        * page/Frame.h:

2006-01-25  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by Darin.

        - Turn on NodeImpl leak counter for debug builds
        http://bugs.webkit.org/show_bug.cgi?id=6808

        * khtml/xml/NodeImpl.cpp:
        (WebCore::NodeImplCounter::~NodeImplCounter): Uncomment node
        counter now tit won't give a lot of false positives.

2006-01-25  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by Dave Hyatt.
        
        - fixed "Whole DOM tree can leak if Document is hover/active/focus node on quit"
        http://bugs.webkit.org/show_bug.cgi?id=6809
        
        This fixes 175 reproducible node leaks in the editing layout tests.
        
        * khtml/xml/DocumentImpl.cpp:
        (WebCore::DocumentImpl::detach): Clear hover, focus and active nodes. It doesn't
        make sense to have these without a view anyway, and if any of them is the document
        it can cause a leak of the whole DOM.

2006-01-25  Adele Peterson  <adele@apple.com>

        Reviewed by Maciej.

        http://bugs.webkit.org/show_bug.cgi?id=6816
        Crash in dispatchMouseEvent - Missing nil check

        No test added because I was not able to reproduce the crash reliably. 

        * page/FrameView.cpp: (FrameView::dispatchMouseEvent):

2006-01-25  Justin Garcia  <justin.garcia@apple.com>

        Reviewed by mjs
        
        <http://bugs.webkit.org/show_bug.cgi?id=6644>
        TinyMCE: Undo operation crashes Safari
        <rdar://problem/4343068>
        Some shouldChangeSelection calls are nonsensical

        Notify the SelectionController of node removals,
        and blow away the selection when end points are removed.

        Tests added:
        * editing/selection/remove-node-1.html
        * editing/selection/remove-node-2.html
        
        * khtml/editing/SelectionController.cpp:
        (WebCore::MutationListener::handleEvent):
        (WebCore::SelectionController::SelectionController):
        (WebCore::SelectionController::~SelectionController):
        (WebCore::SelectionController::operator=):
        (WebCore::SelectionController::moveTo):
        (WebCore::SelectionController::setSelection):
        (WebCore::SelectionController::nodeWillBeRemoved):
        (WebCore::SelectionController::clear):
        (WebCore::SelectionController::setBase):
        (WebCore::SelectionController::setExtent):
        * khtml/editing/SelectionController.h:
        (WebCore::MutationListener::MutationListener):
        (WebCore::MutationListener::selectionController):
        (WebCore::MutationListener::setSelectionController):
        * rendering/RenderContainer.cpp:
        (WebCore::RenderContainer::removeChildNode):
        * rendering/render_flow.cpp:
        (RenderFlow::destroy):

2006-01-25  Adele Peterson  <adele@apple.com>

        Reviewed by Hyatt.

        This change lets us display an aqua appearance for the new text fields.

        Updated results for:
        * fast/forms/input-appearance-focus.html

        * rendering/RenderTextField.cpp: (WebCore::RenderTextField::createDivStyle): 
          remove styling of the div, since RenderTheme handles that now.
        * rendering/render_theme.cpp:
        (khtml::RenderTheme::adjustStyle): call adjustTextFieldStyle.
        (khtml::RenderTheme::paint): call paintTextField.
        (khtml::RenderTheme::adjustTextFieldStyle): added FIXME to turn off appearance later.
        * rendering/render_theme.h: added adjustTextFieldStyle, paintTextField
        * rendering/render_theme_mac.h: added paintTextField, setTextFieldState, and NSTextFieldCell.
        * rendering/render_theme_mac.mm:
        (khtml::): Added static textFieldMargins.
        (khtml::RenderThemeMac::adjustRepaintRect): update text field state and size.
        (khtml::RenderThemeMac::paintTextField): Added. Paints the NSTextFieldCell
        (khtml::RenderThemeMac::setTextFieldCellState): Initialize NSTextFieldCell, and update enabled state.

2006-01-25  David Hyatt  <hyatt@apple.com>

        Rename QBrush to Brush and move it to platform/.  Remove unused QPoint/Size/RectF forwarding
        headers.

        * ForwardingHeaders/QPointF: Removed.
        * ForwardingHeaders/QRectF: Removed.
        * ForwardingHeaders/QSizeF: Removed.
        * WebCore.xcodeproj/project.pbxproj:
        * khtml/editing/SelectionController.cpp:
        (WebCore::SelectionController::paintCaret):
        * kwq/KWQBrush.h: Removed.
        * kwq/KWQNamespace.h:
        * kwq/KWQObject.h:
        * kwq/KWQPainter.h:
        * kwq/KWQPainter.mm:
        (QPainter::setBrush):
        (QPainter::brush):
        (QPainter::drawRect):
        (QPainter::drawEllipse):
        (QPainter::drawConvexPolygon):
        (QPainter::fillRect):
        * kwq/KWQPalette.h:
        (QColorGroup::brush):
        * platform/Brush.h: Added.
        (WebCore::Brush::):
        (WebCore::Brush::Brush::Brush):
        (WebCore::Brush::operator==):
        (WebCore::Brush::operator!=):
        * rendering/RenderBlock.cpp:
        (WebCore::RenderBlock::fillHorizontalSelectionGap):
        (WebCore::RenderBlock::fillVerticalSelectionGap):
        (WebCore::RenderBlock::fillLeftSelectionGap):
        (WebCore::RenderBlock::fillRightSelectionGap):
        * rendering/render_box.cpp:
        (WebCore::RenderBox::outlineBox):
        * rendering/render_canvasimage.cpp:
        (WebCore::RenderCanvasImage::paint):
        * rendering/render_image.cpp:
        (WebCore::RenderImage::paint):
        * rendering/render_list.cpp:
        (RenderListMarker::paint):
        * rendering/render_replaced.cpp:
        (WebCore::RenderWidget::paint):

2006-01-25  Anders Carlsson  <andersca@mac.com>

        Reviewed by Timothy Hatcher.

        http://bugs.webkit.org/show_bug.cgi?id=6807
        generate-bindings.pl should not use find command
        
        * bindings/scripts/generate-bindings.pl:
        Use opendir and readdir instead of find.

2006-01-25  David Hyatt <hyatt@apple.com

        Fix Win32 build bustage. Make the autogeneration from .idl work
        just like it does on Mac.  Also update the project to account for
        the move of QPen.

        * WebCore.vcproj/WebCore/WebCore.vcproj:
        * WebCore.vcproj/WebCore/build-generated-files.sh:
        * bindings/scripts/generate-bindings.pl:

2006-01-25  David Hyatt  <hyatt@apple.com>

        Rename QPen to Pen and move it to the platform/ directory.

        * ForwardingHeaders/qpen.h: Removed.
        * WebCore.xcodeproj/project.pbxproj:
        * kwq/KWQNamespace.h:
        (Qt::):
        * kwq/KWQPainter.h:
        * kwq/KWQPainter.mm:
        (QPainter::pen):
        (QPainter::setPen):
        (QPainter::drawRect):
        (QPainter::drawLine):
        (QPainter::drawEllipse):
        (QPainter::drawArc):
        (QPainter::drawConvexPolygon):
        * kwq/KWQPen.cpp: Removed.
        * kwq/KWQPen.h: Removed.
        * platform/Pen.cpp: Added.
        (WebCore::Pen::Pen):
        (WebCore::Pen::color):
        (WebCore::Pen::width):
        (WebCore::Pen::style):
        (WebCore::Pen::setColor):
        (WebCore::Pen::setWidth):
        (WebCore::Pen::setStyle):
        (WebCore::Pen::operator==):
        (WebCore::Pen::operator!=):
        * platform/Pen.h: Added.
        (WebCore::Pen::):
        * rendering/InlineTextBox.cpp:
        (khtml::InlineTextBox::paintMarkedTextUnderline):
        * rendering/RenderTableCell.cpp:
        (WebCore::outlineBox):
        * rendering/RenderText.cpp:
        * rendering/render_box.cpp:
        (WebCore::RenderBox::outlineBox):
        * rendering/render_frames.cpp:
        (WebCore::RenderFrameSet::userResize):
        * rendering/render_image.cpp:
        * rendering/render_line.cpp:
        * rendering/render_list.cpp:
        * rendering/render_object.cpp:
        (WebCore::RenderObject::drawBorder):

2006-01-25  Timothy Hatcher  <timothy@apple.com>

        Move off of -[NSFont widthOfString:] since it is now deprecated.
        Use the NSStringDrawing -[NSString sizeWithAttributes:] API.

        * bridge/mac/MacFrame.mm:
        (MacFrame::attributedString):
        * kwq/KWQTextArea.mm:
        (-[KWQTextAreaTextView sizeWithColumns:rows:]):

2006-01-24  Tim Omernick  <timo@apple.com>

        Reviewed by Dave Harrison.

        <rdar://problem/4339024>
        <http://bugs.webkit.org/show_bug.cgi?id=6785> "Fix for possible leak of applet, object, or embed
        (and plugin view)"
        
        No test cases added.  This is a fix for a leak which is difficult to trigger under normal page load
        circumstances, because it requires that the host application modify an <embed> using the Objective C
        API.

        * khtml/html/html_objectimpl.cpp:
        (WebCore::HTMLAppletElementImpl::~HTMLAppletElementImpl):
        Assert that appletInstance has been deleted by detach().
        (WebCore::HTMLAppletElementImpl::detach):
        Delete appletInstance, because it references the widget owned by the renderer we're about to destroy.
        It is assumed elsewhere (getRuntimeObject(), kjs_dom.cpp) that the instance is owned by the applet
        element.  Therefore, it is required that the element destroy the instance in its tear-down phase.
        (WebCore::HTMLEmbedElementImpl::~HTMLEmbedElementImpl):
        Assert that embedInstance has been deleted by detach().
        (WebCore::HTMLEmbedElementImpl::detach):
        Delete embedInstance, same reason.  This is the one that fixes <rdar://problem/4339024>.
        (WebCore::HTMLObjectElementImpl::~HTMLObjectElementImpl):
        Assert that objectInstance has been deleted by detach().
        (WebCore::HTMLObjectElementImpl::detach):
        Delete embedInstance, same reason.
        * khtml/html/html_objectimpl.h:
        Declared HTMLAppletElementImpl::detach() and HTMLEmbedElementImpl::detach().

2006-01-24  Anders Carlsson  <andersca@mac.com>

        Reviewed by Darin.

        - http://bugs.webkit.org/show_bug.cgi?id=5975
        WebCore needs to use KDOM-like DOM binding autogeneration
        
        This is a first cut at an autogeneration framework based on 
        what KDOM uses, but with some changes to be able to move
        gradually to using autogenerated files. Currently only Javascript
        is supported, but ObjC support could be added by writing a new code
        generator package.
        
        * WebCore.xcodeproj/project.pbxproj:
        Call generate-bindings.pl

        * bindings/js/JSEvents.cpp: Added.
        New file which #includes all generated files in the event module
        (Just JSWheelEvent.cpp for now)
        
        * khtml/xml/WheelEvent.idl: Added.
        
        * bindings/scripts: Added.
        * bindings/scripts/CodeGenerator.pm: Added.
        * bindings/scripts/CodeGeneratorJS.pm: Added.
        * bindings/scripts/IDLParser.pm: Added.
        * bindings/scripts/IDLStructure.pm: Added.
        * bindings/scripts/generate-bindings.pl: Added.
        
        * khtml/ecma/kjs_events.cpp:
        Remove DOMWheelEvent class.
        
        (KJS::getDOMEvent):
        Use JSWheelEvent here.
        
        * khtml/ecma/kjs_events.h:
        Remove DOMWheelEvent class.

2006-01-25  David Harrison  <harrison@apple.com>

        Reviewed by Justin.

        <rdar://problem/3907635> copy/paste of list item text moves list item up one <LI>
        <rdar://problem/3907647> Enhance list editing: return inserts <li></li>
        <rdar://problem/4060158> deleting selection within table deletes more than intended
        <rdar://problem/4061232> Deleting a list can delete unselected content
        <rdar://problem/4062212> after pasting in contents of web.apple.com, typing before start adds to table instead of before table
        <rdar://problem/4064437> After copy/paste from bugweb cannot go back to entering text at left side of page
        <rdar://problem/4259845> Table editing in design mode is broken
        <rdar://problem/4287667> Insertion point goes before table instead of inside first cell
        <rdar://problem/4345749> Editing HTML - Enter at end of <LI> inserts uneditable blank <LI>
        <rdar://problem/4345794> HTML editing: Enter at end of last <LI> does not add new <LI>
        <rdar://problem/4345825> HTML Editing: editing first <LI> element removes first <LI> and more
        <rdar://problem/4345835> HTML editing: editing last <LI> removes everything within <BODY>
        <rdar://problem/4345879> HTML editing: editing first <TD> moves data out of table

        ...also added showTree() static functions because switch to gcc 4.0 makes calling instance methods unreliable

        - numerous small changes to handle empty list items
        - fix numeric list marker updating when adding/deleting list items
        - start to decompose "special element" handling, replacing it with appropriate handling of the different
          kinds of special elements in various situations, rather than giving a blanket treatment.  I will do more
          of this in subsequent checkins.
        - numerous small editing/selection changes to handle VisiblePosition at table offset childNodeCount()
        - simplify and fix equivalentRangeCompliantPosition, rename it to rangeCompliantEquivalent and make it static
        - some minor reformatting to current standards
        - the comments in the list below are for changes not covered by the above comments
        
        * khtml/editing/Selection.cpp:
        (WebCore::Selection::toRange):
        (WebCore::Selection::validate):
        * khtml/editing/SelectionController.cpp:
        (WebCore::SelectionController::modifyExtendingLeftBackward):
        - character selection backward from after table selects the table
        (WebCore::showTree):
        * khtml/editing/composite_edit_command.cpp:
        (WebCore::CompositeEditCommand::removeFullySelectedNode):
        - make sure empty cell has some height
        (WebCore::CompositeEditCommand::positionOutsideTabSpan):
        - check for !isTabSpanTextNode() to make calling this function easier
        (WebCore::CompositeEditCommand::addBlockPlaceholderIfNeeded):
        * khtml/editing/delete_selection_command.cpp:
        (WebCore::positionBeforePossibleContainingSpecialElement):
        (WebCore::positionAfterPossibleContainingSpecialElement):
        (WebCore::DeleteSelectionCommand::initializeStartEnd):
        - new.  more consistent handling of special element boundaries.
        (WebCore::DeleteSelectionCommand::initializePositionData):
        (WebCore::DeleteSelectionCommand::handleGeneralDelete):
        - handle childless block (e.g. empty table cell)
        - allow merging across list items
        (WebCore::DeleteSelectionCommand::moveNodesAfterNode):
        - use new isEmpty() method for renderers, to handle empty list items
        * khtml/editing/delete_selection_command.h:
        * khtml/editing/htmlediting.cpp:
        (WebCore::isAtomicNode):
        (WebCore::editingIgnoresContent):
        - new.  smarter check than isReplaced()
        (WebCore::rangeCompliantEquivalent):
        (WebCore::maxDeepOffset):
        (WebCore::isFirstVisiblePositionInSpecialElement):
        (WebCore::positionBeforeContainingSpecialElement):
        (WebCore::isLastVisiblePositionInSpecialElement):
        (WebCore::positionAfterContainingSpecialElement):
        (WebCore::positionOutsideContainingSpecialElement):
        (WebCore::positionBeforeNode):
        (WebCore::positionAfterNode):
        (WebCore::isListElement):
        (WebCore::isTableElement):
        (WebCore::isFirstVisiblePositionAfterTableElement):
        (WebCore::positionBeforePrecedingTableElement):
        (WebCore::positionAvoidingSpecialElementBoundary):
        * khtml/editing/htmlediting.h:
        * khtml/editing/insert_line_break_command.cpp:
        (khtml::InsertLineBreakCommand::doApply):
        * khtml/editing/insert_paragraph_separator_command.cpp:
        (khtml::InsertParagraphSeparatorCommand::doApply):
        * khtml/editing/insert_text_command.cpp:
        (khtml::InsertTextCommand::prepareForTextInsertion):
        (khtml::InsertTextCommand::input):
        * khtml/editing/replace_selection_command.cpp:
        (WebCore::isMailPasteAsQuotationNode):
        (WebCore::ReplacementFragment::countRenderedBlocks):
        (WebCore::ReplaceSelectionCommand::doApply):
        - allow for fact that fragments have no VisiblePositions
        * khtml/editing/visible_position.cpp:
        (khtml::VisiblePosition::isCandidate):
        (khtml::showTree):
        (khtml::makeRange):
        (khtml::setStart):
        (khtml::setEnd):
        * khtml/editing/visible_position.h:
        * khtml/editing/visible_units.cpp:
        (khtml::previousBoundary):
        (khtml::nextBoundary):
        (khtml::startOfLine):
        - allow for fact that renderers for list markers and other generated content
          have no corresponding NodeImpl.
        (khtml::endOfLine):
        - ditto
        (khtml::nextLinePosition):
        (khtml::startOfParagraph):
        (khtml::endOfParagraph):
        * khtml/xml/ContainerNodeImpl.cpp:
        (WebCore::ContainerNodeImpl::getUpperLeftCorner):
        (WebCore::ContainerNodeImpl::childNode):
        * khtml/xml/ContainerNodeImpl.h:
        * khtml/xml/NodeImpl.cpp:
        (WebCore::NodeImpl::childNode):
        (WebCore::NodeImpl::traversePreviousNode):
        (WebCore::NodeImpl::nextEditable):
        (WebCore::showTree):
        * khtml/xml/NodeImpl.h:
        * khtml/xml/dom_position.cpp:
        (DOM::Position::upstream):
        (DOM::Position::downstream):
        (DOM::Position::inRenderedContent):
        (DOM::showTree):
        * khtml/xml/dom_position.h:
        * rendering/render_canvas.cpp:
        (RenderCanvas::selectionRect):
        * rendering/render_list.cpp:
        (RenderListItem::calcListValue):
        (RenderListItem::isEmpty):
        (getParentOfFirstLineBox):
        (RenderListItem::resetMarkerValue):
        (RenderListItem::updateMarkerLocation):
        * rendering/render_list.h:
        (khtml::RenderListMarker::isListMarker):
        * rendering/render_object.cpp:
        (WebCore::RenderObject::nextRenderer):
        (WebCore::RenderObject::previousRenderer):
        (WebCore::showTree):
        * rendering/render_object.h:
        (WebCore::RenderObject::getBaselineOfLastLineBox):
        (WebCore::RenderObject::isEmpty):

2006-01-25  Timothy Hatcher  <timothy@apple.com>

        Build fix, -[NSFont defaultLineHeightForFont] is deprecated.
        We need to use -[NSLayoutManager defaultLineHeightForFont:] instead.

        * kwq/KWQLineEdit.mm:
        (QLineEdit::sizeForCharacterWidth):
        (QLineEdit::baselinePosition):

2006-01-24  Darin Adler  <darin@apple.com>

        Reviewed by Adele.

        - fix http://bugs.webkit.org/show_bug.cgi?id=6731
          REGRESSION: change event fires at load time for checked items

        Test: fast/forms/radio-button-no-change-event.html

        * khtml/html/HTMLInputElementImpl.cpp: (WebCore::HTMLInputElementImpl::setChecked):
        One of many possible fixes: Don't send the event if the element is not yet in
        a document (as in when parsing the initial attributes).

2006-01-24  Adele Peterson  <adele@apple.com>

        Reviewed by Hyatt.

        This change will allow the new text field elements to get focus, and to respond to the focus and blur events.

        Added: fast/forms/input-appearance-focus.html

        * khtml/html/HTMLElementImpl.cpp: (WebCore::HTMLElementImpl::isFocusable): 
          Removed recently added code that allowed editable elements with no parent to be focusable.  
          We don't need to do this now that we try to focus the input element, instead of the inner div.
        * khtml/html/HTMLGenericFormElementImpl.cpp: (WebCore::HTMLGenericFormElementImpl::isMouseFocusable): Added case to for text fields.
        * khtml/html/HTMLInputElementImpl.cpp:
        (WebCore::HTMLInputElementImpl::focus): Added. Selects contents of text field.
        (WebCore::HTMLInputElementImpl::setSelectionStart): Added break; in switch statement.
        (WebCore::HTMLInputElementImpl::setSelectionEnd): ditto.
        (WebCore::HTMLInputElementImpl::select): ditto.
        (WebCore::HTMLInputElementImpl::setSelectionRange): ditto.
        * khtml/html/HTMLInputElementImpl.h: Added focus()
        * khtml/xml/dom_elementimpl.h: Made focus() virtual.
        * page/Frame.cpp: (Frame::setFocusNodeIfNeeded):
          Walk up the Render Tree instead of the DOM tree when trying to find a node to focus.  
          This will let us choose the input node instead of one of the nodes in the shadow tree.
        * page/FrameView.cpp: (FrameView::dispatchMouseEvent): ditto.
        * rendering/RenderContainer.cpp: (WebCore::RenderContainer::destroyLeftoverChildren): Corrected misspelling. 
        * rendering/RenderTextField.cpp:
        (WebCore::RenderTextField::select): Implemented.  Select contents of inner div.
        * rendering/RenderTextField.h:
        (WebCore::RenderTextField::renderName): Changed order.
        (WebCore::RenderTextField::removeLeftoverAnonymousBoxes): ditto.

2006-01-24  Darin Adler  <darin@apple.com>

        Reviewed by Eric.

        - fix http://bugs.webkit.org/show_bug.cgi?id=6782
          REGRESSION: replaceChild broken when node to replace is first (TinyMCE test app broken)

        - fix http://bugs.webkit.org/show_bug.cgi?id=6784
          REGRESSION: 25 layout tests failing (basic DOM operations)

        Test: fast/dom/replace-first-child.html

        * khtml/xml/ContainerNodeImpl.cpp:
        (WebCore::ContainerNodeImpl::insertBefore): Change one place that hands off ownership of
        as PassRefPtr that causes us to almost always return 0. Fix test that would screw up when
        both "prev" and "refChild->previousSibling()" were 0.
        (WebCore::ContainerNodeImpl::appendChild): Changed a nearly-identical place handing off
        ownership as above.

2006-01-24  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by Dave Hyatt.
        
        - fixed crash if a node is removed from the DOM before being reparented due to residual style
        http://bugs.webkit.org/show_bug.cgi?id=6778

        * khtml/html/htmlparser.cpp:
        (HTMLParser::handleResidualStyleCloseTagAcrossBlocks): If the
        block has been removed from the document, then do not remove it
        from its parent or add it to its new location. This prevents the
        crash and matches Mozilla.

2006-01-24  Darin Adler  <darin@apple.com>

        Reviewed by John Sullivan.

        - http://bugs.webkit.org/show_bug.cgi?id=6750
          replace QDateTime with a simpler platform abstraction

        * ForwardingHeaders/qdatetime.h: Removed.
        * kwq/KWQDateTime.cpp: Removed.
        * kwq/KWQDateTime.h: Removed.

        * platform/SystemTime.h: Added.
        * platform/mac/SystemTime.cpp: (WebCore::currentTime): Added.
        * platform/win: Added.
        * platform/win/SystemTime.cpp: (WebCore::currentTime): Added.

        * WebCore.vcproj/WebCore/WebCore.vcproj: Added new files, removed old.
        * WebCore.xcodeproj/project.pbxproj: Ditto.

        * css/css_base.h: Removed include of <qdatetime.h>.
        * css/cssstyleselector.cpp: Ditto.

        * khtml/html/htmltokenizer.h:
        * khtml/html/htmltokenizer.cpp: Convert tabs to spaces.
        (WebCore::HTMLTokenizer::continueProcessing): Change parameter from QTime to double.
        Use currentTime() instead of QTime::elapsed().
        (WebCore::HTMLTokenizer::write): Use currentTime() instead of QTime::elapsed().

        * config.h: Added HAVE_FUNC_USLEEP for now, not sure this is really a
        good way to handle this.
        * khtml/xml/ContainerNodeImpl.cpp: (WebCore::ContainerNodeImpl::setActive):
        Use currentTime() instead of QTime::elapsed(). Use HAVE_FUNC_USLEEP for the if.

        * khtml/xml/DocumentImpl.h:
        * khtml/xml/DocumentImpl.cpp:
        (WebCore::DocumentImpl::DocumentImpl): Use currentTime() instead of QTime::elapsed().
        (WebCore::DocumentImpl::implicitClose): Ditto.
        (WebCore::DocumentImpl::minimumLayoutDelay): Ditto.
        (WebCore::DocumentImpl::elapsedTime): Ditto.

        * khtml/xml/dom2_eventsimpl.cpp: (WebCore::EventImpl::EventImpl): Use currentTime()
        instead of local function called currentTimeStamp().

        * khtml/xml/xml_tokenizer.h: Removed declaration of class QTime.

        * ksvg2/misc/KSVGTimeScheduler.h:
        * ksvg2/misc/KSVGTimeScheduler.cpp:
        (KSVG::TimeScheduler::TimeScheduler): Use currentTime instead of QTime::elapsed.
        (KSVG::TimeScheduler::startAnimations): Ditto.
        (KSVG::TimeScheduler::toggleAnimations): Ditto.
        (KSVG::TimeScheduler::elapsed): Ditto.

        * page/Frame.cpp: (Frame::clear): Removed unused m_parsetime.
        * page/FramePrivate.h: Ditto.

2006-01-24  David Hyatt  <hyatt@apple.com>

        Fix for bug 6781, convert QColor to Color (and QRgb to RGBA32).  r=maciej.

        * ForwardingHeaders/qcolor.h: Removed.
        * WebCore+SVG/KDOMSettings.h:
        * WebCore+SVG/RGBColorImpl.cpp:
        (RGBColorImpl::RGBColorImpl):
        (RGBColorImpl::red):
        (RGBColorImpl::green):
        (RGBColorImpl::blue):
        * WebCore+SVG/RGBColorImpl.h:
        * WebCore.xcodeproj/project.pbxproj:
        * bindings/objc/DOMCSS.mm:
        (getWrapperForRGB):
        (setWrapperForRGB):
        (removeWrapperForRGB):
        (-[DOMRGBColor dealloc]):
        (-[DOMRGBColor finalize]):
        (-[DOMRGBColor red]):
        (-[DOMRGBColor green]):
        (-[DOMRGBColor blue]):
        (-[DOMRGBColor _initWithRGB:]):
        (+[DOMRGBColor _RGBColorWithRGB:]):
        (-[DOMRGBColor alpha]):
        (-[DOMRGBColor _color]):
        * bridge/mac/MacFrame.mm:
        (MacFrame::attributedString):
        (MacFrame::fontAttributesForSelectionStart):
        (MacFrame::bodyBackgroundColor):
        (convertAttributesToUnderlines):
        * css/css_valueimpl.cpp:
        (WebCore::CSSPrimitiveValueImpl::CSSPrimitiveValueImpl):
        (WebCore::CSSPrimitiveValueImpl::cssText):
        * css/csshelper.h:
        * css/cssparser.cpp:
        (CSSParser::parseColor):
        (CSSParser::parseColorFromValue):
        * css/cssparser.h:
        * css/cssstyleselector.cpp:
        (WebCore::CSSStyleSelector::canShareStyleWithElement):
        (WebCore::):
        (WebCore::colorForCSSValue):
        (WebCore::CSSStyleSelector::applyProperty):
        (WebCore::CSSStyleSelector::getColorFromPrimitiveValue):
        * css/cssstyleselector.h:
        * kcanvas/KCanvasFilters.h:
        (KCanvasFEDiffuseLighting::lightingColor):
        (KCanvasFEDiffuseLighting::setLightingColor):
        (KCanvasFEFlood::floodColor):
        (KCanvasFEFlood::setFloodColor):
        (KCanvasFESpecularLighting::lightingColor):
        (KCanvasFESpecularLighting::setLightingColor):
        * kcanvas/KCanvasTreeDebug.cpp:
        (operator<<):
        * kcanvas/KCanvasTreeDebug.h:
        * kcanvas/device/KRenderingDevice.h:
        * kcanvas/device/KRenderingPaintServerGradient.cpp:
        (KCSortedGradientStopList::addStop):
        * kcanvas/device/KRenderingPaintServerGradient.h:
        * kcanvas/device/KRenderingPaintServerSolid.cpp:
        (KRenderingPaintServerSolid::color):
        (KRenderingPaintServerSolid::setColor):
        * kcanvas/device/KRenderingPaintServerSolid.h:
        * kcanvas/device/quartz/KCanvasFilterQuartz.mm:
        (ciColor):
        * kcanvas/device/quartz/KRenderingPaintServerGradientQuartz.mm:
        (setupShadingWithStyle):
        * kcanvas/device/quartz/KRenderingPaintServerQuartz.mm:
        (KRenderingPaintServerPatternQuartz::setup):
        * khtml/ecma/kjs_css.h:
        * khtml/ecma/kjs_html.cpp:
        (KJS::KJS::Context2DFunction::callAsFunction):
        (KJS::colorRefFromValue):
        (KJS::colorFromValue):
        (KJS::Context2D::putValueProperty):
        (KJS::GradientFunction::callAsFunction):
        * khtml/ecma/kjs_html.h:
        * khtml/editing/apply_style_command.cpp:
        (WebCore::StyleChange::checkForLegacyHTMLStyleChange):
        * khtml/html/html_baseimpl.cpp:
        (WebCore::HTMLBodyElementImpl::parseMappedAttribute):
        * khtml/misc/helper.h:
        * khtml/xml/DocumentImpl.cpp:
        (WebCore::DocumentImpl::DocumentImpl):
        (WebCore::DocumentImpl::resetLinkColor):
        (WebCore::DocumentImpl::resetVisitedLinkColor):
        * khtml/xml/DocumentImpl.h:
        (WebCore::DocumentImpl::setTextColor):
        (WebCore::DocumentImpl::textColor):
        (WebCore::DocumentImpl::linkColor):
        (WebCore::DocumentImpl::visitedLinkColor):
        (WebCore::DocumentImpl::activeLinkColor):
        (WebCore::DocumentImpl::setLinkColor):
        (WebCore::DocumentImpl::setVisitedLinkColor):
        (WebCore::DocumentImpl::setActiveLinkColor):
        * ksvg2/css/SVGCSSStyleSelector.cpp:
        (KDOM::CSSStyleSelector::applySVGProperty):
        * ksvg2/css/SVGRenderStyle.h:
        * ksvg2/css/SVGRenderStyleDefs.h:
        * ksvg2/misc/KCanvasRenderingStyle.cpp:
        (WebCore::KSVGPainterFactory::fillPaintServer):
        * ksvg2/misc/KSVGTimeScheduler.cpp:
        (KSVG::SVGTimer::notifyAll):
        * ksvg2/svg/SVGAnimateColorElementImpl.cpp:
        (SVGAnimateColorElementImpl::handleTimerEvent):
        (SVGAnimateColorElementImpl::clampColor):
        (SVGAnimateColorElementImpl::color):
        (SVGAnimateColorElementImpl::initialColor):
        * ksvg2/svg/SVGAnimateColorElementImpl.h:
        * ksvg2/svg/SVGAnimateElementImpl.cpp:
        (SVGAnimateElementImpl::handleTimerEvent):
        * ksvg2/svg/SVGColorImpl.cpp:
        (SVGColorImpl::setRGBColor):
        (SVGColorImpl::color):
        * ksvg2/svg/SVGColorImpl.h:
        * ksvg2/svg/SVGGradientElementImpl.cpp:
        (SVGGradientElementImpl::rebuildStops):
        * kwq/KWQAccObject.mm:
        (AXAttributeStringSetStyle):
        * kwq/KWQBrush.h:
        (QBrush::QBrush::QBrush):
        (QBrush::color):
        (QBrush::setColor):
        * kwq/KWQColor.h: Removed.
        * kwq/KWQColor.mm: Removed.
        * kwq/KWQColorData.gperf: Removed.
        * kwq/KWQKConfigBase.h:
        * kwq/KWQKConfigBase.mm:
        (KConfig::readColorEntry):
        * kwq/KWQLineEdit.mm:
        (QLineEdit::setPalette):
        * kwq/KWQNamespace.h:
        (Qt::):
        * kwq/KWQObject.h:
        * kwq/KWQPainter.h:
        * kwq/KWQPainter.mm:
        (QPainter::setPen):
        (QPainter::setBrush):
        (QPainter::drawText):
        (QPainter::drawHighlightForText):
        (QPainter::selectedTextBackgroundColor):
        (_fillRectXX):
        (QPainter::setShadow):
        (QPainter::initFocusRing):
        * kwq/KWQPalette.h:
        (QColorGroup::QColorGroup):
        (QColorGroup::color):
        (QColorGroup::setColor):
        (QColorGroup::background):
        (QColorGroup::foreground):
        (QColorGroup::base):
        (QPalette::QPalette):
        (QPalette::background):
        (QPalette::foreground):
        * kwq/KWQPen.cpp:
        (QPen::QPen):
        (QPen::color):
        (QPen::setColor):
        * kwq/KWQPen.h:
        * kwq/KWQRenderTreeDebug.cpp:
        (operator<<):
        * kwq/KWQTextEdit.mm:
        (QTextEdit::setPalette):
        * loader/CachedImage.cpp:
        (WebCore::CachedImage::tiled_pixmap):
        * loader/CachedImage.h:
        * page/Frame.cpp:
        (Frame::paint):
        * page/Frame.h:
        (MarkedTextUnderline::MarkedTextUnderline):
        * platform/Color.cpp: Added.
        (WebCore::makeRGB):
        (WebCore::makeRGBA):
        (WebCore::parseHexColor):
        (WebCore::Color::Color):
        (WebCore::Color::name):
        (WebCore::Color::setNamedColor):
        (WebCore::Color::hsv):
        (WebCore::Color::setHsv):
        (WebCore::Color::light):
        (WebCore::Color::dark):
        (WebCore::Color::getRgbaF):
        * platform/Color.h: Added.
        (WebCore::Color::Color):
        (WebCore::Color::rgb):
        (WebCore::Color::setRgb):
        (WebCore::operator==):
        (WebCore::operator!=):
        * platform/ColorData.gperf: Added.
        * rendering/InlineTextBox.cpp:
        (khtml::simpleDifferenceBetweenColors):
        (khtml::correctedTextColor):
        (khtml::InlineTextBox::paint):
        (khtml::InlineTextBox::paintSelection):
        (khtml::InlineTextBox::paintMarkedTextBackground):
        (khtml::InlineTextBox::paintDecoration):
        * rendering/RenderTable.h:
        (WebCore::RenderTable::bgColor):
        * rendering/RenderTableCell.cpp:
        (WebCore::outlineBox):
        (WebCore::RenderTableCell::paintBoxDecorations):
        * rendering/font.cpp:
        (khtml::Font::drawHighlightForText):
        (khtml::Font::drawText):
        * rendering/font.h:
        * rendering/render_box.cpp:
        (WebCore::RenderBox::paintRootBoxDecorations):
        (WebCore::RenderBox::paintBackgrounds):
        (WebCore::RenderBox::paintBackground):
        (WebCore::RenderBox::paintBackgroundExtended):
        (WebCore::RenderBox::outlineBox):
        * rendering/render_box.h:
        * rendering/render_flow.cpp:
        (RenderFlow::paintFocusRing):
        (RenderFlow::paintOutlineForLine):
        * rendering/render_form.cpp:
        (RenderFieldset::paintBorderMinusLegend):
        * rendering/render_frames.cpp:
        (WebCore::RenderFrameSet::userResize):
        * rendering/render_image.cpp:
        (WebCore::RenderImage::paint):
        * rendering/render_layer.h:
        * rendering/render_line.cpp:
        (WebCore::InlineFlowBox::paintBackgrounds):
        (WebCore::InlineFlowBox::paintBackground):
        (WebCore::InlineFlowBox::paintBackgroundAndBorder):
        (WebCore::InlineFlowBox::paintDecorations):
        (WebCore::EllipsisBox::paint):
        * rendering/render_line.h:
        * rendering/render_list.cpp:
        (RenderListMarker::paint):
        * rendering/render_object.cpp:
        (WebCore::RenderObject::drawBorder):
        (WebCore::RenderObject::paintBorder):
        (WebCore::RenderObject::paintOutline):
        (WebCore::RenderObject::selectionColor):
        (WebCore::RenderObject::getTextDecorationColors):
        * rendering/render_object.h:
        (WebCore::RenderObject::paintBackgroundExtended):
        * rendering/render_replaced.cpp:
        (WebCore::RenderReplaced::selectionColor):
        * rendering/render_replaced.h:
        * rendering/render_style.h:
        (khtml::BorderValue::isTransparent):
        (khtml::CollapsedBorderValue::color):
        (khtml::RenderStyle::hasBackground):
        (khtml::RenderStyle::borderLeftColor):
        (khtml::RenderStyle::borderRightColor):
        (khtml::RenderStyle::borderTopColor):
        (khtml::RenderStyle::borderBottomColor):
        (khtml::RenderStyle::outlineColor):
        (khtml::RenderStyle::color):
        (khtml::RenderStyle::backgroundColor):
        (khtml::RenderStyle::setBackgroundColor):
        (khtml::RenderStyle::setBorderLeftColor):
        (khtml::RenderStyle::setBorderRightColor):
        (khtml::RenderStyle::setBorderTopColor):
        (khtml::RenderStyle::setBorderBottomColor):
        (khtml::RenderStyle::setOutlineColor):
        (khtml::RenderStyle::setColor):
        (khtml::RenderStyle::initialColor):
        * rendering/render_theme.cpp:
        (khtml::RenderTheme::isControlStyled):
        * rendering/render_theme.h:

2006-01-24  Darin Adler  <darin@apple.com>

        Reviewed by John and Anders.

        - fix http://bugs.webkit.org/show_bug.cgi?id=6732
          REGRESSION: Repro crash at Google Maps

        * khtml/ecma/JSXMLHttpRequest.cpp:
        (KJS::JSXMLHttpRequest::getValueProperty): Clean up a bit, using PassRefPtr where appropriate.
        (KJS::JSXMLHttpRequest::mark): Remove get calls now that getter functions don't return PassRefPtr.
        (KJS::JSXMLHttpRequest::JSXMLHttpRequest): Put the object into the DOM objects map.
        (KJS::JSXMLHttpRequest::~JSXMLHttpRequest): Remove the object from the DOM objects map. Also clear
        out both listeners so the implementation object isn't left with dangling pointers (since we won't
        be around to mark those objects any more).
        (KJS::JSXMLHttpRequestProtoFunc::callAsFunction): Tightened up the code a bit.

        * xml/xmlhttprequest.h:
        * xml/xmlhttprequest.cpp:
        (WebCore::XMLHttpRequest::getResponseXML): Change to return just a plain old pointer. Remove
        the unnecessary typeIsXML boolean.
        (WebCore::XMLHttpRequest::onReadyStateChangeListener): Change to return just a plain old pointer.
        Update for name changes.
        (WebCore::XMLHttpRequest::setOnReadyStateChangeListener): Ditto.
        (WebCore::XMLHttpRequest::onLoadListener): Ditto.
        (WebCore::XMLHttpRequest::setOnLoadListener): Ditto.
        (WebCore::XMLHttpRequest::send): Protect the DOM wrapper if any as well as ourselves while
        the load is in progress.
        (WebCore::XMLHttpRequest::abort): Unprotect to balance out the above.
        (WebCore::XMLHttpRequest::slotFinished): Ditto.

        * khtml/ecma/JSXMLHttpRequest.h: Just formatting changes.

2006-01-24  Darin Adler  <darin@apple.com>

        Reviewed by Justin.

        - fix http://bugs.webkit.org/show_bug.cgi?id=6753
          REGRESSION (r12282-12292): Crash loading TinyMCE test app

        * khtml/xml/ContainerNodeImpl.h: Remove some internals that don't need
        to be member functions.
        * khtml/xml/ContainerNodeImpl.cpp:
        (WebCore::ContainerNodeImpl::insertBefore): Improved algorithm to keep
        refs to more things so that we don't end up with a dangling pointer (fixes
        the crash) and so that we do not crash if someone modifies the tree inside
        a DOM mutation event handler (theoretical only at this point, needs test
        cases).
        (WebCore::ContainerNodeImpl::replaceChild): Ditto.
        (WebCore::willRemoveChild): Changed from member function to free function.
        (WebCore::ContainerNodeImpl::removeChild): Fix potential problem if the
        mutation event handler moves the node into a different parent.
        (WebCore::ContainerNodeImpl::appendChild): Made changes like those in
        insertBefore above.
        (WebCore::dispatchChildInsertionEvents): Changed from member function to
        free function. Tightened up handling of some edge cases.
        (WebCore::dispatchChildRemovalEvents): Ditto.

2006-01-24  Darin Adler  <darin@apple.com>

        Reviewed by John Sullivan.

        - fix http://bugs.webkit.org/show_bug.cgi?id=6696
          REGRESSION: JavaScript window.opener set incorrectly

        * khtml/ecma/kjs_window.cpp: (KJS::WindowFunc::callAsFunction):
        Fix local variable "frame" that was shadowing another local variable
        named "frame" by naming the one for the new frame "newFrame".

2006-01-24  Maciej Stachowiak  <mjs@apple.com>

        - fix build

        * ksvg2/scripts/make_names.pl: Update script to generate code that
        works with the new HashMap.

2006-01-23  Darin Adler  <darin@apple.com>

        Reviewed by Eric.

        - fixed a storage leak found by running run-webkit-tests fast --leak

        * khtml/xml/dom_xmlimpl.cpp:
        (ProcessingInstructionImpl::checkStyleSheet): Removed bogus deref call,
        since the RefPtr handles it for us. Also deployed PassRefPtr in one place.
        (ProcessingInstructionImpl::setStyleSheet): Removed more bogus ref/deref calls.

2006-01-23  Maciej Stachowiak  <mjs@apple.com>

        Rubber stamped by Eric.

        - Made some functions return const AtomicString& instead of
        AtomicString because they could. 
        
        Result of Darin's and Eric's comments on the last patch.

        * khtml/html/HTMLGenericFormElementImpl.cpp:
        (WebCore::HTMLGenericFormElementImpl::name):
        * khtml/html/HTMLGenericFormElementImpl.h:
        * khtml/html/HTMLInputElementImpl.cpp:
        (WebCore::HTMLInputElementImpl::name):
        * khtml/html/HTMLInputElementImpl.h:

2006-01-23  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by Eric.

        - renamed PointerHash to PtrHash
        - made PtrHash the default hash function for int and pointer types that aren't further specialized
        - added an AtomicStringImpl class to make it easier and more typesafe to identity hash atomic strings
        - did appropriate consequent cleanup (very few places now need to declare a hash function)
        http://bugs.webkit.org/show_bug.cgi?id=6752
        
        * bindings/objc/DOM.mm:
        * bridge/mac/WebCoreFrameBridge.mm:
        (-[WebCoreFrameBridge elementWithName:inForm:]):
        * css/cssstyleselector.cpp:
        (WebCore::CSSRuleSet::getIDRules):
        (WebCore::CSSRuleSet::getClassRules):
        (WebCore::CSSRuleSet::getTagRules):
        (WebCore::CSSRuleSet::addToRuleSet):
        * khtml/dom/dom_string.h:
        (KXMLCore::):
        * khtml/ecma/kjs_binding.cpp:
        (KJS::UString::UString):
        * khtml/ecma/kjs_dom.cpp:
        (KJS::DOMNode::mark):
        * khtml/ecma/kjs_html.cpp:
        (KJS::KJS::HTMLElement::classInfo):
        (KJS::HTMLElement::accessors):
        (KJS::HTMLElement::selectSetter):
        (KJS::HTMLElement::inputSetter):
        (KJS::HTMLElement::textAreaSetter):
        (KJS::HTMLElement::buttonSetter):
        * khtml/ecma/kjs_window.h:
        * khtml/editing/apply_style_command.cpp:
        (WebCore::ApplyStyleCommand::applyRelativeFontStyleChange):
        * khtml/html/HTMLCollectionImpl.h:
        * khtml/html/HTMLElementImpl.cpp:
        (WebCore::HTMLElementImpl::isRecognizedTagName):
        (WebCore::inlineTagList):
        (WebCore::blockTagList):
        * khtml/html/HTMLFormCollectionImpl.cpp:
        (WebCore::HTMLFormCollectionImpl::updateNameCache):
        * khtml/html/HTMLGenericFormElementImpl.cpp:
        (WebCore::HTMLGenericFormElementImpl::name):
        (WebCore::HTMLGenericFormElementImpl::setName):
        * khtml/html/HTMLGenericFormElementImpl.h:
        * khtml/html/HTMLInputElementImpl.cpp:
        (WebCore::HTMLInputElementImpl::name):
        * khtml/html/HTMLInputElementImpl.h:
        * khtml/html/htmlfactory.cpp:
        (DOM::HTMLElementFactory::createHTMLElement):
        * khtml/html/htmlparser.cpp:
        (HTMLParser::isHeaderTag):
        (HTMLParser::isResidualStyleTag):
        (HTMLParser::isAffectedByResidualStyle):
        * khtml/xml/DocumentImpl.cpp:
        (WebCore::DocumentImpl::checkedRadioButtonForGroup):
        (WebCore::DocumentImpl::removeRadioButtonGroup):
        * khtml/xml/DocumentImpl.h:
        * khtml/xml/NodeImpl.h:
        * khtml/xml/dom_atomicstring.h:
        (DOM::AtomicString::AtomicString):
        (DOM::AtomicString::impl):
        (KXMLCore::):
        * khtml/xml/dom_stringimpl.cpp:
        (DOM::equal):
        * khtml/xml/dom_stringimpl.h:
        (KXMLCore::):
        * khtml/xml/xml_tokenizer.h:
        * ksvg2/misc/KSVGTimeScheduler.cpp:
        (KSVG::SVGTimer::notifyAll):
        * kwq/KWQKJobClasses.h:
        * kwq/KWQObject.cpp:
        * loader/CachedObject.h:
        * loader/CachedObjectClientWalker.h:
        * loader/loader.h:
        * page/Frame.cpp:
        (Frame::endAllLifeSupport):
        * rendering/render_canvas.cpp:
        (RenderCanvas::selectionRect):
        (RenderCanvas::setSelection):
        * rendering/render_canvas.h:
        * rendering/render_object.h:
        * xml/xmlhttprequest.h:

2006-01-23 Mitz Pettel  <opendarwin.org@mitzpettel.com>

        Reviewed by Darin.

        - fix http://bugs.webkit.org/show_bug.cgi?id=6733
          REGRESSION: html input doesn't honor change to value

        * rendering/render_form.cpp: (RenderLineEdit::slotTextChanged): Made newText a
        DOMString. Assigning the empty DOMString to a QString and back to a DOMString
        resulted in a null string, which should be avoided here.

        * khtml/dom/dom_string.cpp: (DOM::DOMString::qstring): Don't turn an empty
        DOMString into a null QString; make an empty QString instead.

2006-01-23  Darin Adler  <darin@apple.com>

        Reviewed by Maciej.

        - fix http://bugs.webkit.org/show_bug.cgi?id=6385
          REGRESSION: Unnamed frames return a generated name as window.frameElement.name

        Test: fast/frames/frame-element-name.html

        * khtml/ecma/kjs_html.cpp: (KJS::HTMLElement::getOwnPropertySlot):
        Remove the quirk where frame and iframe elements reflect all the
        properties of the window inside the frame. Testing indicates that
        no other browser does this -- not sure why we were doing it.

2006-01-23  Maciej Stachowiak  <mjs@apple.com>

        Rubber stamped by Tim Hatcher.
        
        - renamed insert() operation on HashSet, HashCountedSet and HashTable to add()
        for consistency with HashMap

        * bridge/mac/MacFrame.mm:
        (MacFrame::didTellBridgeAboutLoad):
        * khtml/ecma/kjs_dom.cpp:
        (KJS::DOMNode::mark):
        * khtml/html/HTMLElementImpl.cpp:
        (WebCore::HTMLElementImpl::isRecognizedTagName):
        (WebCore::inlineTagList):
        (WebCore::blockTagList):
        * khtml/html/HTMLFormCollectionImpl.cpp:
        (WebCore::HTMLFormCollectionImpl::updateNameCache):
        * khtml/html/htmlparser.cpp:
        (HTMLParser::isHeaderTag):
        (HTMLParser::isResidualStyleTag):
        (HTMLParser::isAffectedByResidualStyle):
        * khtml/xml/DocumentImpl.cpp:
        (WebCore::DocumentImpl::addElementById):
        (WebCore::DocumentImpl::registerDisconnectedNodeWithEventListeners):
        * khtml/xml/NodeImpl.cpp:
        (WebCore::NodeImpl::registerNodeList):
        * khtml/xml/dom_atomicstring.cpp:
        (DOM::AtomicString::add):
        * khtml/xml/dom_qname.cpp:
        (DOM::QualifiedName::QualifiedName):
        * loader/CachedObject.cpp:
        (WebCore::CachedObject::ref):
        * page/Frame.cpp:
        (Frame::keepAlive):
        * rendering/render_canvas.cpp:
        (RenderCanvas::addWidget):
        * rendering/render_frames.cpp:
        (WebCore::RenderPartObject::updateWidget):
        * rendering/render_line.cpp:
        (WebCore::InlineFlowBox::paint):
        * xml/xmlhttprequest.cpp:
        (WebCore::XMLHttpRequest::addToRequestsByDocument):

2006-01-23  Justin Garcia  <justin.garcia@apple.com>

        Reviewed by thatcher
        
        Turned on -O2 for B&I build.

        * WebCore.xcodeproj/project.pbxproj:

2006-01-23  Darin Adler  <darin@apple.com>

        Reviewed by John Sullivan.

        - fix http://bugs.webkit.org/show_bug.cgi?id=6617
          REGRESSION: Crash in cloneChildNodes when clicking element

        Test: fast/dom/clone-node-form-elements-with-attr.html

        Changed cloneNode and some other functions to return PassRefPtr.
        Also made m_render private and changed its name to m_renderer.

        * bindings/objc/DOM.mm: (-[DOMNode cloneNode:]): Add call to get() needed
        now that cloneNode returns a PassRefPtr.

        * khtml/editing/break_blockquote_command.cpp:
        (WebCore::BreakBlockquoteCommand::doApply):
        * khtml/editing/insert_paragraph_separator_command.cpp:
        (khtml::InsertParagraphSeparatorCommand::doApply):
        * khtml/editing/split_element_command.cpp:
        (khtml::SplitElementCommand::doApply):
        * khtml/html/htmlparser.cpp:
        (HTMLParser::handleResidualStyleCloseTagAcrossBlocks):
        (HTMLParser::reopenResidualStyleTags):
        * khtml/xml/dom2_rangeimpl.cpp: (DOM::RangeImpl::processContents):
        * ksvg2/svg/SVGUseElementImpl.cpp: (SVGUseElementImpl::closeRenderer):
        Use RefPtr and PassRefPtr as appropriate, since the result of cloneNode
        is now a referenced object in a PassRefPtr rather than a floating one and
        so needs to be kept referenced until used.

        * khtml/html/HTMLElementImpl.h:
        * khtml/html/HTMLElementImpl.cpp:
        (WebCore::HTMLElementImpl::cloneNode): Changed to return a PassRefPtr.
        (WebCore::HTMLElementImpl::children): Ditto.
        * khtml/xml/DocumentFragmentImpl.h:
        * khtml/xml/DocumentFragmentImpl.cpp:
        (DOM::DocumentFragmentImpl::cloneNode): Changed to return a PassRefPtr.
        * khtml/xml/DocumentImpl.h:
        * khtml/xml/DocumentTypeImpl.h:
        * khtml/xml/DocumentTypeImpl.cpp:
        (DOM::DocumentTypeImpl::cloneNode): Changed to return a PassRefPtr.
        * khtml/xml/NamedNodeMapImpl.h:
        (WebCore::NamedNodeMapImpl::getNamedItem): Changed to return PassRefPtr.
        (WebCore::NamedNodeMapImpl::removeNamedItem): Ditto.
        (WebCore::NamedNodeMapImpl::setNamedItemNS): Ditto.

        * khtml/html/HTMLGenericFormElementImpl.cpp:
        (WebCore::HTMLGenericFormElementImpl::attach): Use renderer() instead of
        getting at m_render directly.
        (WebCore::HTMLGenericFormElementImpl::recalcStyle): Ditto.
        (WebCore::HTMLGenericFormElementImpl::isFocusable): Ditto.
        (WebCore::HTMLGenericFormElementImpl::isKeyboardFocusable): Ditto.
        (WebCore::HTMLGenericFormElementImpl::isMouseFocusable): Ditto.
        * khtml/html/HTMLInputElementImpl.cpp:
        (WebCore::HTMLInputElementImpl::selectionStart): Ditto.
        (WebCore::HTMLInputElementImpl::selectionEnd): Ditto.
        (WebCore::HTMLInputElementImpl::setSelectionStart): Ditto.
        (WebCore::HTMLInputElementImpl::setSelectionEnd): Ditto.
        (WebCore::HTMLInputElementImpl::select): Ditto.
        (WebCore::HTMLInputElementImpl::setSelectionRange): Ditto.
        (WebCore::HTMLInputElementImpl::parseMappedAttribute): Ditto.
        (WebCore::HTMLInputElementImpl::setValue): Ditto.
        (WebCore::HTMLInputElementImpl::defaultEventHandler): Ditto.
        * khtml/html/HTMLSelectElementImpl.cpp:
        (WebCore::HTMLSelectElementImpl::recalcStyle): Ditto.
        (WebCore::HTMLSelectElementImpl::setRecalcListItems): Ditto.
        (WebCore::HTMLSelectElementImpl::reset): Ditto.
        (WebCore::HTMLSelectElementImpl::notifyOptionSelected): Ditto.
        (WebCore::HTMLSelectElementImpl::defaultEventHandler): Ditto.
        * khtml/html/HTMLTextAreaElementImpl.cpp:
        (WebCore::HTMLTextAreaElementImpl::selectionStart): Ditto.
        (WebCore::HTMLTextAreaElementImpl::selectionEnd): Ditto.
        (WebCore::HTMLTextAreaElementImpl::setSelectionStart): Ditto.
        (WebCore::HTMLTextAreaElementImpl::setSelectionEnd): Ditto.
        (WebCore::HTMLTextAreaElementImpl::select): Ditto.
        (WebCore::HTMLTextAreaElementImpl::setSelectionRange): Ditto.
        (WebCore::HTMLTextAreaElementImpl::updateValue): Ditto.
        (WebCore::HTMLTextAreaElementImpl::setValue): Ditto.
        * khtml/html/html_baseimpl.cpp:
        (WebCore::HTMLFrameElementImpl::updateForNewURL): Ditto.
        (WebCore::HTMLFrameElementImpl::openURL): Ditto.
        (WebCore::HTMLFrameElementImpl::attach): Ditto.
        (WebCore::HTMLFrameElementImpl::close): Ditto.
        (WebCore::HTMLFrameElementImpl::willRemove): Ditto.
        (WebCore::HTMLFrameElementImpl::isFocusable): Ditto.
        (WebCore::HTMLFrameElementImpl::setFocus): Ditto.
        (WebCore::HTMLFrameElementImpl::frameWidth): Ditto.
        (WebCore::HTMLFrameElementImpl::frameHeight): Ditto.
        (WebCore::HTMLFrameSetElementImpl::defaultEventHandler): Ditto.
        (WebCore::HTMLFrameSetElementImpl::recalcStyle): Ditto.
        (WebCore::HTMLIFrameElementImpl::attach): Ditto.
        (WebCore::HTMLIFrameElementImpl::recalcStyle): Ditto.
        * khtml/html/html_imageimpl.cpp:
        (WebCore::HTMLImageElementImpl::parseMappedAttribute): Ditto.
        (WebCore::HTMLImageElementImpl::width): Ditto.
        (WebCore::HTMLImageElementImpl::height): Ditto.
        * khtml/html/html_inlineimpl.cpp:
        (WebCore::HTMLAnchorElementImpl::isFocusable): Ditto.
        * khtml/html/html_listimpl.cpp:
        (DOM::HTMLLIElementImpl::parseMappedAttribute): Ditto.
        (DOM::HTMLLIElementImpl::attach): Ditto.
        * khtml/html/html_objectimpl.cpp:
        (WebCore::HTMLAppletElementImpl::getAppletInstance): Ditto.
        (WebCore::HTMLAppletElementImpl::closeRenderer): Ditto.
        (WebCore::HTMLEmbedElementImpl::getEmbedInstance): Ditto.
        (WebCore::HTMLEmbedElementImpl::attach): Ditto.
        (WebCore::HTMLObjectElementImpl::getObjectInstance): Ditto.
        (WebCore::HTMLObjectElementImpl::parseMappedAttribute): Ditto.
        (WebCore::HTMLObjectElementImpl::attach): Ditto.
        (WebCore::HTMLObjectElementImpl::detach): Ditto.
        (WebCore::HTMLObjectElementImpl::recalcStyle): Ditto.
        * khtml/html/html_tableimpl.cpp:
        (WebCore::HTMLTableElementImpl::parseMappedAttribute): Ditto.
        (WebCore::HTMLTableElementImpl::attach): Ditto.
        * khtml/xml/ContainerNodeImpl.cpp:
        (WebCore::ContainerNodeImpl::getUpperLeftCorner): Ditto.
        (WebCore::ContainerNodeImpl::getLowerRightCorner): Ditto.
        (WebCore::ContainerNodeImpl::setActive): Ditto.
        (WebCore::ContainerNodeImpl::setHovered): Ditto.
        * khtml/xml/DocumentImpl.cpp:
        (WebCore::DocumentImpl::~DocumentImpl): Ditto.
        (WebCore::DocumentImpl::elementFromPoint): Ditto.
        (WebCore::DocumentImpl::recalcStyle): Ditto.
        (WebCore::DocumentImpl::attach): Ditto.
        (WebCore::DocumentImpl::restoreRenderer): Ditto.
        (WebCore::DocumentImpl::detach): Ditto.
        (WebCore::DocumentImpl::setVisuallyOrdered): Ditto.
        (WebCore::DocumentImpl::updateSelection): Ditto.
        (WebCore::DocumentImpl::prepareMouseEvent): Ditto.
        (WebCore::DocumentImpl::cloneNode): Changed to return PassRefPtr.
        (WebCore::DocumentImpl::recalcStyleSelector): Use renderer() instead
        of getting at m_render directly.
        (WebCore::DocumentImpl::setInPageCache): Ditto.

        * khtml/xml/NodeImpl.h:
        * khtml/xml/NodeImpl.cpp:
        (WebCore::NodeImpl::NodeImpl): Changed m_render to m_renderer.
        (WebCore::NodeImpl::~NodeImpl): Changed use of m_render to renderer().
        (WebCore::NodeImpl::getRect): Ditto.
        (WebCore::NodeImpl::attach): Ditto.
        (WebCore::NodeImpl::detach): Ditto.
        (WebCore::NodeImpl::createRendererIfNeeded): Ditto.
        (WebCore::NodeImpl::getElementsByTagName): Changed to return PassRefPtr.
        (WebCore::NodeImpl::getElementsByTagNameNS): Ditto.

        * khtml/xml/dom_elementimpl.h:
        * khtml/xml/dom_elementimpl.cpp:
        (WebCore::AttrImpl::cloneNode): Changed to return PassRefPtr.
        (WebCore::ElementImpl::cloneNode): Ditto.
        (WebCore::ElementImpl::scrollIntoView): Use renderer() instead of m_render.
        (WebCore::ElementImpl::scrollIntoViewIfNeeded): Ditto.
        (WebCore::ElementImpl::recalcStyle): Ditto.
        (WebCore::ElementImpl::setAttributeNode): Changed to return PassRefPtr.
        (WebCore::ElementImpl::removeAttributeNode): Ditto.
        (WebCore::NamedAttrMapImpl::removeNamedItemNS): Ditto.
        (WebCore::NamedAttrMapImpl::setNamedItem): Ditto.
        (WebCore::NamedAttrMapImpl::removeNamedItem): Ditto.
        (DOM::ElementImpl::setAttributeNodeNS): Ditto.

        * khtml/xml/dom_textimpl.h:
        * khtml/xml/dom_textimpl.cpp:
        (CharacterDataImpl::setData): Changed use of m_render to renderer().
        (CharacterDataImpl::appendData): Ditto.
        (CharacterDataImpl::insertData): Ditto.
        (CharacterDataImpl::deleteData): Ditto.
        (CharacterDataImpl::replaceData): Ditto.
        (CommentImpl::cloneNode): Changed to return PassRefPtr.
        (TextImpl::splitText): Changed use of m_render to renderer().
        (TextImpl::cloneNode): Changed to return PassRefPtr.
        (TextImpl::recalcStyle): Changed use of m_render to renderer().
        (CDATASectionImpl::cloneNode): Changed to return PassRefPtr.

        * khtml/xml/dom_xmlimpl.h:
        * khtml/xml/dom_xmlimpl.cpp:
        (DOM::EntityImpl::cloneNode): Changed to return PassRefPtr.
        (DOM::EntityReferenceImpl::cloneNode): Ditto.
        (DOM::NotationImpl::cloneNode): Ditto.
        (DOM::ProcessingInstructionImpl::cloneNode): Ditto.

        - removed unused code

        * khtml/html/html_documentimpl.cpp: Removed unused slotHistoryChanged function.
        * khtml/html/html_documentimpl.h: Ditto.
        * kwq/KWQObject.cpp: (QObject::connect): Removed special case for
        slotHistoryChanged, no longer used.

        - fixed storage leak

        * bridge/mac/MacFrame.mm: (MacFrame::~MacFrame): Delete window widget.

2006-01-23  Anders Carlsson  <andersca@mac.com>

        Forgot to add this as part of 
        http://bugs.webkit.org/show_bug.cgi?id=3869
        
        * manual-tests/resources/webkit-background.png: Added.

2006-01-22  Darin Adler  <darin@apple.com>

        - fix layout tests

        * rendering/RenderTable.cpp: (WebCore::RenderTable::addChild): Added
        missing code to set wrapInAnonymousSection false in the case where
        adding a footer.

2006-01-22  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by Darin.
        
        - Set up Page class and invert Frame / WebCoreFrameBridge ownership
        http://bugs.webkit.org/show_bug.cgi?id=6577

        * bridge/mac/MacFrame.h:
        * bridge/mac/MacFrame.mm:
        (MacFrame::MacFrame): Initialize _bridge
        (MacFrame::~MacFrame): Clear the bridge's frame pointer and release it.
        (Frame::frameDetached): Reverse order of removing from old-style frames
        array and calling frameDetached.
        (MacFrame::createPart): Don't ref the part when creating it, since the child
        bridge is no longer going to own a ref.
        (MacFrame::setBridge): KWQRetain / KWQRelease since we know own the bridge.
        (MacFrame::detachFromView): New method; clear out the view.
        * bridge/mac/WebCoreFrameBridge.h:
        * bridge/mac/WebCoreFrameBridge.mm:
        (Bridge): Helper method to get a WebCoreFrameBridge from a Frame.
        (-[WebCoreFrameBridge firstChild]): Call through Frame.
        (-[WebCoreFrameBridge lastChild]): ditto
        (-[WebCoreFrameBridge childCount]): ditto
        (-[WebCoreFrameBridge previousSibling]): ditto
        (-[WebCoreFrameBridge nextSibling]): ditto
        (-[WebCoreFrameBridge isDescendantOfFrame:]): No need to cast parent
        pointer.
        (-[WebCoreFrameBridge appendChild:]): Call through Frame.
        (-[WebCoreFrameBridge _clearRenderPart]): New helper method to free
        the renderPart when removing a child.
        (-[WebCoreFrameBridge removeChild:]): Clear child's render part
        and call through to Frame.
        (-[WebCoreFrameBridge dealloc]): Remove unneeded m_frame-related code.
        (-[WebCoreFrameBridge finalize]): ditto
        (-[WebCoreFrameBridge clearFrame]): New helper method, needed now that
        bridge can outlive frame.
        (-[WebCoreFrameBridge handleFallbackContent]): Make safe against a null
        frame.
        (-[WebCoreFrameBridge removeFromFrame]): ditto
        * bridge/mac/WebCorePageBridge.h:
        * bridge/mac/WebCorePageBridge.mm:
        (-[WebCorePageBridge initWithMainFrame:]): Create a Page instance.
        (-[WebCorePageBridge dealloc]): Delete the Page.
        (-[WebCorePageBridge mainFrame]): Get the main frame from the Page.
        * khtml/ecma/kjs_binding.cpp:
        (KJS::ScriptInterpreter::globalExec): Override; keep frame alive, then
        call superclass.
        * khtml/ecma/kjs_binding.h:
        * khtml/ecma/kjs_proxy.cpp:
        (KJSProxyImpl::clear): Don't pass exec to window.
        (KJSProxyImpl::interpreter): Don't do keepAlive.
        * khtml/ecma/kjs_window.cpp:
        (KJS::Window::isSafeScript): If the active part's document is gone, use the frame's
        URL for security check purposes.
        (KJS::Window::clear): Don't take an ExecState parameter any more - it
        wasn't used.
        * khtml/ecma/kjs_window.h:
        * khtml/xml/DocumentImpl.cpp:
        (WebCore::DocumentImpl::implicitOpen): If we've got a tokenizer, delete
        it before closing - you don't ever want to fire an onload handler because of
        an open.
        * page/Frame.cpp:
        (Frame::init): Pass `this' to FramePrivate constructor.
        (FrameCounter::~FrameCounter): Added debug counting of leftover
        Frame objects on exit.
        (Frame::Frame): Moved out-of-line. Increment debug counter.
        (Frame::~Frame): Assert that there is no life support going, either at the
        start or end of this method. Decrement frame counter.
        (Frame::stopLoading): tweaked for the fact that ChildFrame::m_frame is now
        a RefPtr.
        (Frame::clear): ditto
        (Frame::stop): ditto
        (Frame::stopAnimations): ditto
        (Frame::checkEmitLoadEvent): ditto
        (Frame::processObjectRequest): ditto
        (Frame::childFrame): ditto
        (Frame::findFrame): ditto
        (Frame::setZoomFactor): ditto
        (Frame::frames): ditto
        (Frame::connectChild): ditto
        (Frame::disconnectChild): ditto
        (Frame::endAllLifeSupport): Method that, in debug mode, will clear
        all life suppor timers so the Frame exit counter works.
        (Frame::keepAlive): In debug mode, add proper support for
        endAllLifeSupport
        (Frame::slotEndLifeSupport): ditto
        (Frame::setPolicyBaseURL): Update for the fact that ChildFrame::m_frame is now
        a RefPtr.
        (Frame::treeNode): New helper method, get the FrameTreeNode class that implements
        frame tree traversal.
        (Frame::nextSibling): Simple wrapper that calls through to treeNode().
        (Frame::previousSibling): ditto
        (Frame::firstChild): ditto
        (Frame::lastChild): ditto
        (Frame::childCount): ditto
        (Frame::appendChild): ditto
        (Frame::removeChild): ditto
        (Frame::detachFromView): no-op, just a virtual base for the MAcFrame method.
        * page/Frame.h:
        * page/FramePrivate.h:
        (FramePrivate::FramePrivate): Add FrameTreeNode member.
        * page/FrameTreeNode.cpp: Added.
        (FrameTreeNode::~FrameTreeNode): detach all children from their view
        (FrameTreeNode::appendChild): implemented
        (FrameTreeNode::removeChild): implemented - make sure to detach child
        from its view.
        * page/FrameTreeNode.h: Added.
        (FrameTreeNode::FrameTreeNode): New; initialize fields tht need it.
        (FrameTreeNode::nextSibling): Trivial inline.
        (FrameTreeNode::previousSibling): ditto
        (FrameTreeNode::firstChild): ditto
        (FrameTreeNode::lastChild): ditto
        (FrameTreeNode::childCount): ditto
        * page/Page.cpp: Added.
        (Page::Page): Initialize mainFrame and bump pageCount appropriately.
        (Page::~Page): Detach main frame from view, handle ending life support
        when last frame is destroyed.
        * page/Page.h: Added.
        (Page::mainFrame): Trivial inline.
        * WebCore.xcodeproj/project.pbxproj: Add new files.

2006-01-22  Darin Adler  <darin@apple.com>

        * Info.plist: Updated Apple copyright date. Need to update others
        too at some point.

        * WebCore-svg.exp: Removed unused empty file.

2006-01-22  Eric Seidel  <eseidel@apple.com>

        Reviewed by darin.

        Make <animateColor> work again (broke during DOM merger).
        http://bugs.webkit.org/show_bug.cgi?id=5964
        
        No layout test possible.

        * WebCore.xcodeproj/project.pbxproj:
        * kcanvas/device/quartz/KCanvasItemQuartz.h:
        * kcanvas/device/quartz/KCanvasItemQuartz.mm:
        (KCanvasItemQuartz::getAbsoluteRepaintRect): moved to .cpp file
        * khtml/xml/DocumentImpl.cpp:
        (WebCore::DocumentImpl::implicitClose): start svg animations
        (WebCore::DocumentImpl::svgExtensions): svg document extensions
        (WebCore::DocumentImpl::accessSVGExtensions): svg doc extensions
        * khtml/xml/DocumentImpl.h:
        * ksvg2/css/SVGCSSStyleSelector.cpp:
        (KDOM::CSSStyleSelector::applySVGProperty):
        * ksvg2/svg/SVGAElementImpl.cpp:
        (SVGAElementImpl::defaultEventHandler): cleanup
        * ksvg2/svg/SVGAnimateColorElementImpl.cpp:
        (SVGAnimateColorElementImpl::handleTimerEvent): update css lookup
        * ksvg2/svg/SVGAnimateElementImpl.cpp:
        (SVGAnimateElementImpl::handleTimerEvent): fix css property lookup
        * ksvg2/svg/SVGAnimateTransformElementImpl.cpp:
        (SVGAnimateTransformElementImpl::handleTimerEvent):
        * ksvg2/svg/SVGAnimationElementImpl.cpp:
        (SVGAnimationElementImpl::closeRenderer): use doc extensions
        (SVGAnimationElementImpl::targetAttribute): fix css properties
        (SVGAnimationElementImpl::setTargetAttribute): fix css properties
        * ksvg2/svg/SVGDocumentImpl.cpp:
        (SVGDocumentImpl::svgView): remove unnecessary static cast
        (SVGDocumentImpl::executeScripts):
        * ksvg2/svg/SVGDocumentImpl.h:
        * ksvg2/svg/SVGElementImpl.cpp:
        (WebCore::SVGElementImpl::addSVGEventListener): helper function
        (WebCore::SVGElementImpl::parseMappedAttribute): use helper
        * ksvg2/svg/SVGElementImpl.h:
        * ksvg2/svg/SVGGElementImpl.cpp:
        * ksvg2/svg/SVGGElementImpl.h:
        * ksvg2/svg/SVGSVGElementImpl.cpp:
        (WebCore::SVGSVGElementImpl::SVGSVGElementImpl):
        (WebCore::SVGSVGElementImpl::~SVGSVGElementImpl):
        (WebCore::SVGSVGElementImpl::addSVGWindowEventListner): helper
        (WebCore::SVGSVGElementImpl::parseMappedAttribute): use helper
        * ksvg2/svg/SVGSVGElementImpl.h:
        * ksvg2/svg/SVGSetElementImpl.cpp:
        (SVGSetElementImpl::handleTimerEvent): use doc extensions
        * ksvg2/svg/SVGStyledElementImpl.h:
        * page/Frame.cpp:
        (Frame::pauseTimeouts): pause svg animation
        (Frame::resumeTimeouts): resume svg animation
        * rendering/render_canvas.h:

2006-01-22  Darin Adler  <darin@apple.com>

        - fix deployment builds

        * rendering/RenderTable.cpp: (WebCore::RenderTable::addChild): Init bool.

2006-01-22  Darin Adler  <darin@apple.com>

        Reviewed by Maciej.

        - fix http://bugs.webkit.org/show_bug.cgi?id=5731
          Form element as display table-cell hangs Safari (will eventually crash)

        Test: fast/table/form-with-table-style.html

        Hang was caused by the fact that RenderContainer has code to wrap table
        styled elements in appropriate anonymous table elements, but the table
        elements themselves have a special case for form elements that causes them
        to call through, which led to infinite recursion as RenderContainer kept
        making new tables which kept calling through to RenderContainer::addChild.

        * rendering/RenderTable.cpp:
        (WebCore::RenderTable::addChild): Improved logic about wrapping children
        in anonymous table sections in the following ways: (1) Do wrap a form
        properly it has a table display style (such as table-cell or table-row).
        (2) When an item has a particular display style, check that it has the
        right type of render object before casting it to that type. Also
        restructured the code a little to make it slightly more readable.
        (WebCore::RenderTable::layout): Added a FIXME about forms that have a
        display style that makes it a table section, since they will be skipped
        here in the loop to lay children out.
        (WebCore::RenderTable::recalcSections): Added checks similar to the ones
        in addChild above.

        * rendering/RenderTableSection.cpp: (WebCore::RenderTableSection::addChild):
        Moved form tag logic inside render object type check so that a table row
        that happens to be a form element won't be affected by the special form
        tag logic. Also added an explicit check for the table-cell style so we
        will wrap it in a row rather than just putting the form at this level.

        * rendering/RenderTableRow.h: Removed removeChildNode and dump functions
        that just called through to the base class.
        * rendering/RenderTableRow.cpp: (WebCore::RenderTableRow::addChild):
        Moved form tag logic inside render object type check so that a table cell
        that happens to be a form element won't be affected by the special form
        tag logic. Removed unnecessary null check of section() at end of function.

        * rendering/RenderTableCol.h: Removed addChild because all it did was
        assert (incorrectly) and then call through to the base class. Changed
        _span to be m_span.
        * rendering/RenderTableCol.cpp: Removed addChild function. Updated for
        change in name of m_span field.

2006-01-22  Darin Adler  <darin@apple.com>

        Reviewed by Maciej.

        - fix http://bugs.webkit.org/show_bug.cgi?id=3518
          REGRESSION (312-412): mojibake left behind when scrolling a clipped <select>

        * kwq/KWQListBox.mm: (QListBox::QListBox): Call setCopiesOnScroll:NO.
        * kwq/KWQTextArea.mm: (-[KWQTextArea initWithFrame:]): Ditto.

2006-01-22  David Kilzer  <ddkilzer@kilzer.net>

        Reviewed by Maciej.

        - fix for http://bugs.webkit.org/show_bug.cgi?id=5656
        REGRESSION: Buttons on Yahoo! Mail misplaced in ToT
        <rdar://problem/4404335>
        Tests whether white-space mode on buttons is inheritied and not forced.
        Originally broken in Subversion revision r10909.

        * css/html4.css: Remove default white-space value for <button> tag to
        allow it to be inherited.
        * rendering/render_theme_mac.mm:
        (khtml::RenderThemeMac::adjustButtonStyle): Fix misleading comment.

        * css/UserAgentStyleSheets.cpp: Touched this file to make the rebuild
        of html4.css work (shouldn't have to do this).

2006-01-22  Darin Adler  <darin@apple.com>

        * css/make-css-file-arrays.pl: Fix typo that was resulting in a bunch
        of whitespace that was supposed to go into a derived source file going
        to the console instead.

2006-01-22  Eric Seidel  <eseidel@apple.com>

        Reviewed by darin.

        SVG needs to support "evt" instead of "event" in event handlers.
        http://bugs.webkit.org/show_bug.cgi?id=5874
        
        Test: svg/custom/evt-onload.svg

        * WebCore.xcodeproj/project.pbxproj: added new classes
        * khtml/ecma/kjs_events.cpp:
        * khtml/ecma/kjs_events.h:
        * khtml/ecma/kjs_proxy.cpp:
        (WebCore::KJSProxyImpl::createHTMLEventHandler): simplified
        (WebCore::KJSProxyImpl::createSVGEventHandler): new
        * khtml/ecma/kjs_proxy.h:
        * khtml/ecma/kjs_window.cpp:
        * khtml/ecma/kjs_window.h:
        * khtml/xml/DocumentImpl.cpp:
        (WebCore::DocumentImpl::createHTMLEventListener): simplified
        (WebCore::DocumentImpl::createSVGEventListener): new
        * khtml/xml/DocumentImpl.h:
        * khtml/xml/NodeImpl.cpp:
        (WebCore::NodeImpl::dispatchEvent): use RefPtr
        * ksvg2/events/JSSVGLazyEventListener.cpp: Added.
        (WebCore::JSSVGLazyEventListener::JSSVGLazyEventListener): added.
        (WebCore::JSSVGLazyEventListener::eventParameterName): added.
        * ksvg2/events/JSSVGLazyEventListener.h: Added.
        * ksvg2/svg/SVGElementImpl.cpp:
        (SVGElementImpl::parseMappedAttribute): use new SVG event handler
        * ksvg2/svg/SVGSVGElementImpl.cpp:
        (SVGSVGElementImpl::parseMappedAttribute): use new SVG event handler
        * page/Frame.cpp: updated KJSProxyImpl namespace
        * page/Frame.h: updated KJSProxyImpl namespace
        * page/FramePrivate.h: updated KJSProxyImpl namespace

2006-01-22  Darin Adler  <darin@apple.com>

       Reviewed by Maciej.

       - fix http://bugs.webkit.org/show_bug.cgi?id=3508
         REGRESSION (125-412): problem with negative margin-top and position: absolute (vre.aitg.com)
         <rdar://problem/4093277> REGRESSION (125-312): layout problem at vre.aitg.com (3508)

       Test: fast/css/position-negative-top-margin.html

       * rendering/RenderBlock.cpp: (WebCore::RenderBlock::adjustPositionedBlock):
       Fixed two different problems that contributed to the bug: (1) Added a call to calcVerticalMargins
       otherwise the margin will always be 0. (2) Corrected logic for the negative margin case, which
       was comparing a negative margin-top to a number representing the absolute value of the margin.

2006-01-22  Alexey Proskuryakov  <ap@nypop.com>

        Reviewed by Darin.

       - fix http://bugs.webkit.org/show_bug.cgi?id=3702
         Web page is laid out incorrectly after printing with print-specific style sheet.
         <rdar://problem/3706259> Web page distorts after printing with print-specific style sheet (3702)

        Also replaced tabs with spaces in the changed files.

        Test cases: 
        * fast/table/append-cells.html
        * fast/table/append-cells2.html
        * fast/table/remove-td-display-none.html

        * rendering/RenderTable.cpp:
        (WebCore::RenderTable::recalcSections): Shrink columns and columnPos to the
          actual number of columns.

        * rendering/RenderTableSection.cpp:
        (WebCore::RenderTableSection::numColumns): New function.
        (WebCore::RenderTableSection::dump): Use gridRows instead of grid.size() for row count,
          preventing crashes.

        * rendering/RenderTableSection.h: Added numColumns() and a comment about cCol/cRow.

2006-01-22  Darin Adler  <darin@apple.com>

        Reviewed by Anders.

        - http://bugs.webkit.org/show_bug.cgi?id=6705
          use PassRefPtr in more of the basic DOM operations

        Once we do the same with cloneNode, I believe we'll fix one of our P1 bugs,
        but cloneNode was a little too much to do without doing this first pass.

        * khtml/xml/NodeImpl.cpp:
        (WebCore::NodeImpl::childNodes): Updated for parameter changes.
        (WebCore::NodeImpl::insertBefore): Ditto.
        (WebCore::NodeImpl::replaceChild): Ditto.
        (WebCore::NodeImpl::removeChild): Ditto.
        (WebCore::NodeImpl::appendChild): Ditto.
        (WebCore::NodeImpl::addChild): Ditto.
        (WebCore::NodeImpl::addEventListener): Ditto.
        (WebCore::NodeImpl::setHTMLEventListener): Ditto.
        (WebCore::NodeImpl::isDefaultNamespace): Updated for changed name of ancestorElement.
        (WebCore::NodeImpl::lookupPrefix): Ditto.
        (WebCore::NodeImpl::lookupNamespaceURI): Ditto.
        (WebCore::NodeImpl::lookupNamespacePrefix): Ditto.
        (WebCore::NodeImpl::ancestorElement): Changed name from getAncestorElement.
        * khtml/xml/NodeImpl.h: Changed most functions where it makes sense to take and return
        PassRefPtr instead of raw pointers. Even non-obvious cases like appendChild, where the
        return value has to be PassRefPtr only because it might be removed when the JavaScript
        triggered by the DOM mutation event runs (normally, there's no need to return an "owning"
        pointer because the tree now owns the newly-inserted node). Made the ancestorElement
        function private.

        * khtml/xml/ContainerNodeImpl.cpp:
        (WebCore::ContainerNodeImpl::ContainerNodeImpl): Updated for changes from
        _first to m_firstChild and _last to m_lastChild.
        (WebCore::ContainerNodeImpl::removeAllChildren): Ditto.
        (WebCore::ContainerNodeImpl::firstChild): Ditto.
        (WebCore::ContainerNodeImpl::lastChild): Ditto.
        (WebCore::ContainerNodeImpl::insertBefore): Updated for parameter changes.
        (WebCore::ContainerNodeImpl::replaceChild): Ditto.
        (WebCore::ContainerNodeImpl::willRemove): Updated for m_lastChild.
        (WebCore::ContainerNodeImpl::removeChild): Updated for parameter changes.
        (WebCore::ContainerNodeImpl::removeChildren): Updated for m_first/lastChild.
        (WebCore::ContainerNodeImpl::appendChild): Updated for parameter changes.
        (WebCore::ContainerNodeImpl::hasChildNodes): Updated for m_firstChild.
        (WebCore::ContainerNodeImpl::addChild): Updated for parameter changes.
        (WebCore::ContainerNodeImpl::attach): Updated for m_firstChild.
        (WebCore::ContainerNodeImpl::detach): Ditto.
        (WebCore::ContainerNodeImpl::insertedIntoDocument): Ditto.
        (WebCore::ContainerNodeImpl::removedFromDocument): Ditto.
        (WebCore::ContainerNodeImpl::insertedIntoTree): Ditto.
        (WebCore::ContainerNodeImpl::removedFromTree): Ditto.
        * khtml/xml/ContainerNodeImpl.h: Removed unused checkSameDocument and checkIsChild.
        Made more things private, updated parameters for NodeImpl functions.

        * khtml/html/HTMLSelectElementImpl.cpp:
        (DOM::HTMLSelectElementImpl::insertBefore): Ditto.
        (DOM::HTMLSelectElementImpl::replaceChild): Ditto.
        (DOM::HTMLSelectElementImpl::removeChild): Ditto.
        (DOM::HTMLSelectElementImpl::appendChild): Ditto.
        (DOM::HTMLSelectElementImpl::addChild): Ditto.
        * khtml/html/HTMLSelectElementImpl.h: Ditto.

        * khtml/html/HTMLOptGroupElementImpl.cpp:
        (WebCore::HTMLOptGroupElementImpl::insertBefore): Updated for parameter type change.
        Also changed to look at return value, not exception code, to check for success.
        (WebCore::HTMLOptGroupElementImpl::replaceChild): Ditto.
        (WebCore::HTMLOptGroupElementImpl::removeChild): Ditto.
        (WebCore::HTMLOptGroupElementImpl::appendChild): Ditto.
        (WebCore::HTMLOptGroupElementImpl::addChild): Ditto.
        * khtml/html/HTMLOptGroupElementImpl.h: Ditto.

        * WebCore+SVG/kdom.h: Renamed enum from ExceptionCode to ExceptionCodes
        to avoid conflict with a typedef ExceptionCode I added.

        * bindings/objc/DOM.mm:
        (-[DOMNode insertBefore::]): Added get() call since return value is a PassRefPtr.
        (-[DOMNode replaceChild::]): Ditto.
        (-[DOMNode removeChild:]): Ditto.
        (-[DOMNode appendChild:]): Ditto.

        * khtml/ecma/kjs_dom.h: Changed getDOMNode to take PassRefPtr.
        * khtml/ecma/kjs_dom.cpp: (KJS::getDOMNode): Changed to take PassRefPtr.

        * khtml/html/HTMLElementImpl.cpp: Added dom2_events.h include, now needed.
        Re-sorted includes.
        * ksvg2/svg/SVGElementImpl.cpp: Ditto.

        * khtml/html/html_documentimpl.cpp: (WebCore::HTMLDocumentImpl::documentElement):
        Changed access to now-private data member _first to equivalent inline function
        fastFirstChild().
        * khtml/xml/DocumentImpl.cpp: (WebCore::DocumentImpl::recalcStyle): Ditto.
        * khtml/xml/dom_elementimpl.cpp: (WebCore::ElementImpl::recalcStyle): Ditto.

        * khtml/html/html_tableimpl.cpp:
        (WebCore::HTMLTableElementImpl::setCaption): Updated to work with new replaceChild
        that returns PassRefPtr.
        (WebCore::HTMLTableElementImpl::setTHead): Ditto.
        (WebCore::HTMLTableElementImpl::setTFoot): Ditto.
        (WebCore::HTMLTableElementImpl::setTBody): Ditto.
        (WebCore::HTMLTableElementImpl::addChild): Updated for parameter type change.
        (WebCore::HTMLTableSectionElementImpl::addChild): Ditto.
        (WebCore::HTMLTableRowElementImpl::addChild): Ditto.
        * khtml/html/html_tableimpl.h: Ditto.

        * khtml/html/htmlparser.cpp: (HTMLParser::handleResidualStyleCloseTagAcrossBlocks):
        Removed an unneeded explicit call to removeChild. appendChild already takes care of
        removing the child from its own location. This avoids the fact that removeChild was
        removing the parent, the only thing keeping the node alive. This is sort of the
        "flip side" of our removeChild leaks -- code that depended on the behavior that
        caused the leaks.

        * khtml/xml/xml_tokenizer.cpp: (WebCore::XMLTokenizer::startElementNs):
        Removed unneeded isHTMLElement() calls from before the "qualified name" change.

2006-01-22  Eric Seidel  <eseidel@apple.com>

        Rubber-stamped by anders.

        Remove WebCore-no-SVG target and wrap files in #if SVG_SUPPORT
        http://bugs.webkit.org/show_bug.cgi?id=6633

2006-01-22  Alexey Proskuryakov  <ap@nypop.com>

        Reviewed by Maciej.

        - http://bugs.webkit.org/show_bug.cgi?id=6642
          Split XMLHttpRequest class into JS binding and implementation

        * WebCore.xcodeproj/project.pbxproj: Adjusted for moved and renamed files.
        New group "xml" to match directory structure.
        * xml: Added.
        * khtml/ecma/JSXMLHttpRequest.cpp: Added.
        * khtml/ecma/JSXMLHttpRequest.h: Added.
        * khtml/ecma/xmlhttprequest.cpp: Removed.
        * khtml/ecma/xmlhttprequest.h: Removed.
        * xml/xmlhttprequest.cpp: Added.
        * xml/xmlhttprequest.h: Added.
        * khtml/ecma/kjs_binding.cpp:
        (KJS::jsStringOrUndefined): Moved from kjs_events.cpp.
        * khtml/ecma/kjs_binding.h: Added prototype for jsStringOrUndefined().
        * khtml/ecma/kjs_events.cpp: Removed jsStringOrUndefined().
        * khtml/ecma/kjs_window.cpp: 
        (KJS::Window::getValueProperty): Use new class name for JSXMLHttpRequest.
        * kwq/KWQSlot.cpp: XMLHttpRequestQObject is now in WebCore, not KJS.
        * page/Frame.cpp:
        (Frame::stopLoading): XMLHttpRequest is now in WebCore, not KJS.

2006-01-22  Alexander Kellett  <lypanov@kde.org>

        Reviewed by eseidel.  Landed by eseidel.

        Add support for custom fill/strokes on text.
        http://bugs.webkit.org/show_bug.cgi?id=6448
        
        40+ layout tests already cover this.

        * kcanvas/RenderSVGText.cpp:
        (RenderSVGText::paint): use new painter setup/teardown infrastructure
        * kcanvas/device/KRenderingPaintServer.h:
        (KRenderingPaintServer::KRenderingPaintServer):
        (KRenderingPaintServer::setup):
        (KRenderingPaintServer::render):
        (KRenderingPaintServer::teardown):
        (KRenderingPaintServer::isPaintingText):
        (KRenderingPaintServer::setPaintingText):
        * kcanvas/device/quartz/KRenderingPaintServerGradientQuartz.mm:
        (setupShadingWithStyle):
        (renderShadingWithStyle):
        (teardownShadingWithStyle):
        (KRenderingPaintServerLinearGradientQuartz::draw):
        (KRenderingPaintServerLinearGradientQuartz::setup):
        (KRenderingPaintServerLinearGradientQuartz::render):
        (KRenderingPaintServerLinearGradientQuartz::teardown):
        (KRenderingPaintServerRadialGradientQuartz::draw):
        (KRenderingPaintServerRadialGradientQuartz::setup):
        (KRenderingPaintServerRadialGradientQuartz::render):
        (KRenderingPaintServerRadialGradientQuartz::teardown):
        * kcanvas/device/quartz/KRenderingPaintServerQuartz.h:
        (KRenderingPaintServerPatternQuartz::KRenderingPaintServerPatternQuartz):
        * kcanvas/device/quartz/KRenderingPaintServerQuartz.mm:
        (KRenderingPaintServerQuartzHelper::strokePath):
        (KRenderingPaintServerQuartzHelper::clipToStrokePath):
        (KRenderingPaintServerQuartzHelper::fillPath):
        (KRenderingPaintServerQuartzHelper::clipToFillPath):
        (KRenderingPaintServerSolidQuartz::draw):
        (KRenderingPaintServerSolidQuartz::setup):
        (KRenderingPaintServerSolidQuartz::render):
        (KRenderingPaintServerSolidQuartz::teardown):
        (KRenderingPaintServerPatternQuartz::draw):
        (KRenderingPaintServerPatternQuartz::setup):
        (KRenderingPaintServerPatternQuartz::render):
        (KRenderingPaintServerPatternQuartz::teardown):
        * kcanvas/device/quartz/QuartzSupport.h: fix prototype
        * kcanvas/device/quartz/QuartzSupport.mm:
        (applyStrokeStyleToContext):
        * ksvg2/misc/KCanvasRenderingStyle.cpp:
        (KSVGPainterFactory::fillPaintServer):
        (KSVGPainterFactory::strokePaintServer):
        (KSVGPainterFactory::cssPrimitiveToLength):
        (KSVGPainterFactory::strokePainter):
        (KSVGPainterFactory::fillPainter):
        * ksvg2/misc/KCanvasRenderingStyle.h:

2006-01-21  Mitz Pettel  <opendarwin.org@mitzpettel.com>

        Reviewed by Darin.
        
        - fix http://bugs.webkit.org/show_bug.cgi?id=3509
          REGRESSION(125-412) Portion of nested table is not painted correctly on cafepress site
          <rdar://problem/4039615> REGRESSION(125-188) Portion of nested table is not painted correctly on cafepress site

        * manual-tests/bugzilla-3509.html: Added.
        * rendering/RenderBlock.cpp:
        (WebCore::RenderBlock::layoutBlockChildren): Force repaint if the child didn't move but
        didn't repaint correctly during layout because it was not at its final position then.

2006-01-21  Anders Carlsson  <andersca@mac.com>

        Reviewed by Darin.

        http://bugs.webkit.org/show_bug.cgi?id=3869
        Should use HTML Image element instead of JS Image object
        <rdar://problem/3852987> JavaScript image.complete property never returns true (3869)

        * khtml/ecma/kjs_events.cpp:
        (KJS::ClipboardProtoFunc::callAsFunction):
        Don't check Image object. Instead, if the element passed in
        is an image element which isn't in any document, use its pixmap.
        
        * khtml/ecma/kjs_html.cpp:
        (KJS::HTMLElement::imageGetter):
        Add complete.
        
        (KJS::ImageConstructorImp::construct):
        Take a QPixmap instead of an Image.
        
        (KJS::KJS::Context2DFunction::callAsFunction):
        Remove usage of Image and use HTMLImageElementImpl instead.

        * khtml/ecma/kjs_html.h:
        Remove Image class.
        
        (KJS::HTMLElement::):
        Add ImgComplete.
        
        * khtml/html/html_imageimpl.cpp:
        (WebCore::HTMLImageElementImpl::width):
        (WebCore::HTMLImageElementImpl::height):
        If the element has no renderer but its image size is known
        return that instead.
        
        (WebCore::HTMLImageElementImpl::complete):
        New function, returns true if an image has finished loading.
        
        * khtml/html/html_imageimpl.h:
        Add complete.
        
        * manual-tests/drag-image.html: Added.

2006-01-21  Anders Carlsson  <andersca@mac.com>

        Reviewed by Darin.

        - fixes http://bugs.webkit.org/show_bug.cgi?id=6691
        TinyMCE: strikethrough unimplemented
        
        * khtml/editing/jsediting.cpp:
        Add support for the "Strikethrough" command.
        
2006-01-21  Mitz Pettel  <opendarwin.org@mitzpettel.com>

        Test: fast/dynamic/hovered-detach.html

        Reviewed by Darin.

        - fix http://bugs.webkit.org/show_bug.cgi?id=5983
          REGRESSION: onmouseover-powered navbar at MacNN renders incorrectly
          <rdar://problem/4403730> REGRESSION: onmouseover powered navbar renders incorrectly at macnn.com (5983)

        * khtml/xml/NodeImpl.cpp:
        (WebCore::NodeImpl::detach): Set m_hovered to false and set the document's
        hoverNode to an hovered ancestor that still has a renderer.
        * rendering/render_layer.cpp: Changed static method hoverAncestor() into a
        RenderObject instance method.
        (WebCore::commonAncestor):
        (WebCore::RenderLayer::updateHoverActiveState):
        * rendering/render_object.cpp: Ditto.
        (WebCore::RenderObject::hoverAncestor)
        * rendering/render_object.h: Ditto.

2006-01-20  David Hyatt  <hyatt@apple.com>

        Fix for bug 6666, pseudo-element rules incorrectly displayed
        in Web Inspector.
        
        Reviewed by darin

        Added fast/inspector/matchedrules.html as test case.

        * css/cssstyleselector.cpp:
        (WebCore::CSSStyleSelector::matchRulesForList):

2006-01-20  Timothy Hatcher  <timothy@apple.com>

        Reviewed by John.

        Removes code that is no longer needed with the new Web Inspector.

        * bridge/mac/WebCoreFrameBridge.h: removes the WebCoreDOMTreeCopier protocol.
        * bridge/mac/WebCoreFrameBridge.mm: removes copyDOMNode:copier:

2006-01-21  Anders Carlsson  <andersca@mac.com>

        Reviewed by David Hyatt.

        Rename Frame::xmlDocImpl => Frame::document and
        Frame::replaceDocImpl => Frame::setDocument
        
        * bridge/mac/MacFrame.mm:
        (MacFrame::findString):
        (MacFrame::advanceToNextMisspelling):
        (MacFrame::nextKeyViewInFrame):
        (MacFrame::nextKeyViewInFrameHierarchy):
        (MacFrame::keyEvent):
        (MacFrame::dispatchCPPEvent):
        (MacFrame::setDisplaysWithFocusAttributes):
        (MacFrame::bodyBackgroundColor):
        (MacFrame::markMisspellings):
        (MacFrame::respondToChangedSelection):
        (MacFrame::setMarkedTextRange):
        (MacFrame::dashboardRegionsDictionary):
        (MacFrame::shouldClose):
        * bridge/mac/WebCoreFrameBridge.mm:
        (updateRenderingForBindings):
        (frameHasSelection):
        (-[WebCoreFrameBridge addData:]):
        (-[WebCoreFrameBridge didNotOpenURL:pageCache:]):
        (-[WebCoreFrameBridge saveDocumentState]):
        (-[WebCoreFrameBridge restoreDocumentState]):
        (-[WebCoreFrameBridge saveDocumentToPageCache]):
        (-[WebCoreFrameBridge _documentTypeString]):
        (-[WebCoreFrameBridge deselectAll]):
        (-[WebCoreFrameBridge reapplyStylesForDeviceType:]):
        (nowPrinting):
        (-[WebCoreFrameBridge _setupRootForPrinting:]):
        (-[WebCoreFrameBridge computePageRectsWithPrintWidthScaleFactor:printHeight:]):
        (-[WebCoreFrameBridge copyDOMTree:]):
        (-[WebCoreFrameBridge URLWithAttributeString:]):
        (-[WebCoreFrameBridge unmarkAllMisspellings]):
        (-[WebCoreFrameBridge nextKeyView]):
        (-[WebCoreFrameBridge previousKeyView]):
        (-[WebCoreFrameBridge nextKeyViewInsideWebFrameViews]):
        (-[WebCoreFrameBridge previousKeyViewInsideWebFrameViews]):
        (-[WebCoreFrameBridge DOMDocument]):
        (-[WebCoreFrameBridge baseURL]):
        (-[WebCoreFrameBridge domain]):
        (-[WebCoreFrameBridge numPendingOrLoadingRequests]):
        (-[WebCoreFrameBridge doneProcessingData]):
        (-[WebCoreFrameBridge selectionColor]):
        (-[WebCoreFrameBridge accessibilityTree]):
        (-[WebCoreFrameBridge setSelectedDOMRange:affinity:closeTyping:]):
        (-[WebCoreFrameBridge convertToNSRange:]):
        (-[WebCoreFrameBridge convertToDOMRange:]):
        (-[WebCoreFrameBridge replaceMarkedTextWithText:]):
        (-[WebCoreFrameBridge smartDeleteRangeForProposedRange:]):
        (-[WebCoreFrameBridge documentFragmentWithMarkupString:baseURLString:]):
        (-[WebCoreFrameBridge documentFragmentWithText:]):
        (-[WebCoreFrameBridge documentFragmentWithNodesAsParagraphs:]):
        (-[WebCoreFrameBridge replaceSelectionWithFragment:selectReplacement:smartReplace:matchStyle:]):
        (-[WebCoreFrameBridge insertLineBreak]):
        (-[WebCoreFrameBridge insertParagraphSeparator]):
        (-[WebCoreFrameBridge insertParagraphSeparatorInQuotedContent]):
        (-[WebCoreFrameBridge insertText:selectInsertedText:]):
        (-[WebCoreFrameBridge moveSelectionToDragCaret:smartMove:]):
        (-[WebCoreFrameBridge deleteSelectionWithSmartDelete:]):
        (-[WebCoreFrameBridge deleteKeyPressedWithSmartDelete:]):
        (-[WebCoreFrameBridge forwardDeleteKeyPressedWithSmartDelete:]):
        * khtml/ecma/kjs_html.cpp:
        (KJS::KJS::HTMLDocument::putValueProperty):
        * khtml/ecma/kjs_window.cpp:
        (KJS::createNewWindow):
        (KJS::Window::getValueProperty):
        (KJS::Window::namedItemGetter):
        (KJS::Window::getOwnPropertySlot):
        (KJS::Window::put):
        (KJS::Window::isSafeScript):
        (KJS::Window::setListener):
        (KJS::Window::getListener):
        (KJS::WindowFunc::callAsFunction):
        (KJS::Window::updateLayout):
        (KJS::ScheduledAction::execute):
        (KJS::Location::put):
        (KJS::LocationFunc::callAsFunction):
        * khtml/ecma/xmlhttprequest.cpp:
        (KJS::XMLHttpRequestProtoFunc::callAsFunction):
        * khtml/editing/jsediting.cpp:
        * khtml/html/html_baseimpl.cpp:
        (WebCore::HTMLFrameElementImpl::contentDocument):
        * khtml/html/htmltokenizer.cpp:
        (WebCore::HTMLTokenizer::scriptExecution):
        * khtml/xml/DocumentImpl.cpp:
        (WebCore::DocumentImpl::parentDocument):
        * khtml/xsl/xslt_processorimpl.cpp:
        (DOM::XSLTProcessorImpl::createDocumentFromSource):
        * kwq/KWQAccObject.mm:
        (-[KWQAccObject textUnderElement]):
        (-[KWQAccObject doAXTextMarkerForPosition:]):
        (-[KWQAccObject rendererForView:]):
        * kwq/KWQKJavaAppletWidget.mm:
        (KJavaAppletWidget::KJavaAppletWidget):
        * page/Frame.cpp:
        (Frame::document):
        (Frame::setDocument):
        (Frame::setFocusNodeIfNeeded):
        (Frame::isPointInsideSelection):
        (Frame::computeAndSetTypingStyle):
        (Frame::applyStyle):
        (Frame::applyParagraphStyle):
        (Frame::selectionComputedStyle):
        (Frame::selectFrameElementInParentIfFullySelected):
        (Frame::renderer):
        (Frame::scrollOverflow):
        (Frame::paint):
        (Frame::adjustPageHeight):
        (Frame::updatePolicyBaseURL):
        (Frame::setPolicyBaseURL):
        (Frame::forceLayoutWithPageWidthRange):
        (Frame::sendScrollEvent):
        (Frame::clearTimers):
        (Frame::styleForSelectionStart):
        (Frame::setSelectionFromNone):
        (Frame::setWindowHasFocus):
        (Frame::backslashAsCurrencySymbol):
        * page/Frame.h:
        * page/FrameView.cpp:
        (FrameView::~FrameView):
        (FrameView::clear):
        (FrameView::resizeEvent):
        (FrameView::adjustViewSize):
        (FrameView::layout):
        (FrameView::updateDashboardRegions):
        (FrameView::viewportMousePressEvent):
        (FrameView::viewportMouseDoubleClickEvent):
        (FrameView::viewportMouseMoveEvent):
        (FrameView::viewportMouseReleaseEvent):
        (FrameView::keyPressEvent):
        (FrameView::dispatchDragEvent):
        (FrameView::updateDragAndDrop):
        (FrameView::focusNextPrevNode):
        (FrameView::dispatchMouseEvent):
        (FrameView::viewportWheelEvent):
        (FrameView::timerEvent):
        (FrameView::scheduleRelayout):
        (FrameView::unscheduleRelayout):
        * rendering/render_frames.cpp:
        (WebCore::RenderPartObject::updateWidget):

2006-01-20  Chris Petersen  <cpetersen@apple.com>

        Reviewed by eseidel.

        Build fix.

        * khtml/xml/DocumentImpl.cpp:

2006-01-20  Eric Seidel  <eseidel@apple.com>

        Reviewed by beth.

        Unbreak build (partial commit of animation patch)

        * khtml/xml/DocumentImpl.cpp:
        (WebCore::DocumentImpl::implicitClose):
        * khtml/xml/DocumentImpl.h:

2006-01-20  Eric Seidel  <eseidel@apple.com>

        Reviewed by beth.

        Missed the kcanvas directory in my previous commit.
        http://bugs.webkit.org/show_bug.cgi?id=6683

        * kcanvas/KCanvasContainer.h:
        * kcanvas/RenderForeignObject.h:
        * kcanvas/RenderSVGText.h:

2006-01-20  Mitz Pettel  <opendarwin.org@mitzpettel.com>

        Test: fast/overflow/image-selection-highlight.html

        Reviewed by Darin, committed by Adele.
        
        - fix http://bugs.webkit.org/show_bug.cgi?id=6673
          Selection highlight doesn't scroll along with an image contained in an overflow:scroll block

        * rendering/render_replaced.cpp:
        (WebCore::RenderReplaced::selectionRect): Subtract the containing block's scroll offset.

2006-01-19  Eric Seidel  <eseidel@apple.com>

        Reviewed by beth.

        Break classes in render_table out into separate files.
        Move render_block to RenderBlock.
        Move render_container to RenderContainer.
        http://bugs.webkit.org/show_bug.cgi?id=6683

        * WebCore.xcodeproj/project.pbxproj:
        * bridge/mac/MacFrame.mm:
        * kcanvas/KCanvasContainer.h:
        * kcanvas/RenderForeignObject.h:
        * kcanvas/RenderSVGText.h:
        * khtml/editing/visible_units.cpp:
        * khtml/html/html_tableimpl.cpp:
        (WebCore::HTMLTableElementImpl::insertRow):
        * khtml/xml/dom2_rangeimpl.cpp:
        * khtml/xml/dom_position.cpp:
        * kwq/KWQRenderTreeDebug.cpp:
        * page/Frame.cpp:
        * rendering/InlineTextBox.cpp:
        * rendering/RenderBlock.cpp: Added.
        * rendering/RenderBlock.h: Added.
        * rendering/RenderContainer.cpp: Added.
        (WebCore::RenderContainer::addChild):
        * rendering/RenderContainer.h: Added.
        * rendering/RenderTable.cpp: Added.
        (WebCore::RenderTable::RenderTable):
        (WebCore::RenderTable::updateFirstLetter):
        * rendering/RenderTable.h: Added.
        * rendering/RenderTableCell.cpp: Added.
        (WebCore::RenderTableCell::RenderTableCell):
        (WebCore::RenderTableCell::updateFromElement):
        * rendering/RenderTableCell.h: Added.
        * rendering/RenderTableCol.cpp: Added.
        (WebCore::RenderTableCol::RenderTableCol):
        (WebCore::RenderTableCol::updateFromElement):
        * rendering/RenderTableCol.h: Added.
        * rendering/RenderTableRow.cpp: Added.
        (WebCore::RenderTableRow::RenderTableRow):
        * rendering/RenderTableRow.h: Added.
        * rendering/RenderTableSection.cpp: Added.
        (WebCore::RenderTableSection::RenderTableSection):
        * rendering/RenderTableSection.h: Added.
        * rendering/RenderText.cpp:
        * rendering/bidi.cpp:
        * rendering/render_block.cpp: Removed.
        * rendering/render_block.h: Removed.
        * rendering/render_box.cpp:
        * rendering/render_canvas.h:
        * rendering/render_container.cpp: Removed.
        * rendering/render_container.h: Removed.
        * rendering/render_flexbox.h:
        * rendering/render_flow.cpp:
        * rendering/render_flow.h:
        * rendering/render_form.h:
        * rendering/render_frames.h:
        * rendering/render_inline.cpp:
        * rendering/render_inline.h:
        * rendering/render_line.cpp:
        * rendering/render_list.h:
        * rendering/render_object.cpp:
        * rendering/render_replaced.h:
        * rendering/render_table.cpp: Removed.
        * rendering/render_table.h: Removed.
        * rendering/table_layout.cpp:

2006-01-19  Eric Seidel  <eseidel@apple.com>

        Reviewed by darin.

        <embed> and <object> tags show up blank when going back/forward.
        http://bugs.webkit.org/show_bug.cgi?id=6679

        No test currently possible.

        * page/Frame.cpp:
        (Frame::canCachePage):

2006-01-19  Eric Seidel  <eseidel@apple.com>

        Reviewed by darin.

        Split html_miscimpl.* into separate files and move html_elementimpl
        http://bugs.webkit.org/show_bug.cgi?id=6670

        * WebCore.xcodeproj/project.pbxproj:
        * bindings/objc/DOM.mm:
        * bindings/objc/DOMHTML.mm:
        * bridge/mac/WebCoreFrameBridge.mm:
        * css/css_valueimpl.cpp:
        * css/cssstyleselector.cpp:
        (WebCore::CSSStyleSelector::applyProperty):
        * khtml/ecma/kjs_dom.cpp:
        * khtml/ecma/kjs_html.cpp:
        * khtml/editing/apply_style_command.cpp:
        * khtml/editing/markup.cpp:
        * khtml/editing/replace_selection_command.cpp:
        * khtml/html/HTMLBaseFontElementImpl.cpp: Added.
        * khtml/html/HTMLBaseFontElementImpl.h: Added.
        * khtml/html/HTMLButtonElementImpl.cpp:
        * khtml/html/HTMLCollectionImpl.cpp: Added.
        (WebCore::HTMLCollectionImpl::traverseNextItem):
        * khtml/html/HTMLCollectionImpl.h: Added.
        * khtml/html/HTMLElementImpl.cpp: Added.
        * khtml/html/HTMLElementImpl.h: Added.
        * khtml/html/HTMLFieldSetElementImpl.cpp:
        * khtml/html/HTMLFormCollectionImpl.cpp: Added.
        * khtml/html/HTMLFormCollectionImpl.h: Added.
        * khtml/html/HTMLFormElementImpl.cpp:
        * khtml/html/HTMLFormElementImpl.h:
        * khtml/html/HTMLGenericFormElementImpl.cpp:
        * khtml/html/HTMLGenericFormElementImpl.h:
        * khtml/html/HTMLInputElementImpl.cpp:
        * khtml/html/HTMLIsIndexElementImpl.cpp:
        * khtml/html/HTMLLabelElementImpl.h:
        * khtml/html/HTMLLegendElementImpl.cpp:
        * khtml/html/HTMLNameCollectionImpl.cpp: Added.
        * khtml/html/HTMLNameCollectionImpl.h: Added.
        * khtml/html/HTMLOptGroupElementImpl.cpp:
        * khtml/html/HTMLOptGroupElementImpl.h:
        * khtml/html/HTMLOptionElementImpl.h:
        * khtml/html/HTMLSelectElementImpl.cpp:
        * khtml/html/HTMLTextAreaElementImpl.cpp:
        * khtml/html/html_baseimpl.cpp:
        * khtml/html/html_baseimpl.h:
        * khtml/html/html_blockimpl.cpp:
        * khtml/html/html_blockimpl.h:
        * khtml/html/html_canvasimpl.cpp:
        * khtml/html/html_documentimpl.cpp:
        * khtml/html/html_documentimpl.h:
        * khtml/html/html_elementimpl.cpp: Removed.
        * khtml/html/html_elementimpl.h: Removed.
        * khtml/html/html_headimpl.cpp:
        (WebCore::HTMLLinkElementImpl::setStyleSheet):
        (WebCore::HTMLLinkElementImpl::isLoading):
        * khtml/html/html_headimpl.h:
        * khtml/html/html_imageimpl.cpp:
        * khtml/html/html_inlineimpl.cpp:
        * khtml/html/html_inlineimpl.h:
        * khtml/html/html_listimpl.h:
        * khtml/html/html_miscimpl.cpp: Removed.
        * khtml/html/html_miscimpl.h: Removed.
        * khtml/html/html_objectimpl.cpp:
        * khtml/html/html_tableimpl.h:
        * khtml/html/htmlfactory.cpp:
        * khtml/html/htmlparser.cpp:
        * khtml/html/htmltokenizer.cpp:
        (WebCore::HTMLTokenizer::scriptHandler):
        (WebCore::HTMLTokenizer::scriptExecution):
        * khtml/xml/DocumentImpl.cpp:
        * khtml/xml/dom2_rangeimpl.cpp:
        * khtml/xml/dom_elementimpl.cpp:
        * kwq/KWQAccObject.mm:
        * loader/loader.cpp:
        * page/Frame.cpp:
        (Frame::restoreURL):
        (Frame::stopLoading):
        (Frame::receivedFirstData):
        (Frame::gotoAnchor):
        (Frame::requestObject):
        (Frame::processObjectRequest):
        (Frame::submitForm):
        (Frame::slotParentCompleted):
        (Frame::findFrame):
        (Frame::executeScript):
        * page/FrameView.cpp:
        (FrameView::useSlowRepaints):
        * rendering/render_applet.cpp:
        * rendering/render_applet.h:
        * rendering/render_box.cpp:
        (WebCore::RenderBox::contentWidth):
        (WebCore::RenderBox::paintRootBoxDecorations):
        (WebCore::RenderBox::paintBoxDecorations):
        (WebCore::RenderBox::getClipRect):
        (WebCore::RenderBox::calcWidth):
        (WebCore::RenderBox::calcHeight):
        * rendering/render_canvasimage.cpp:
        * rendering/render_canvasimage.h:
        * rendering/render_frames.cpp:
        * rendering/render_image.cpp:
        * rendering/render_image.h:
        * rendering/render_layer.cpp:

2006-01-19  Anders Carlsson  <andersca@mac.com>

        Reviewed by Darin.

        - fix http://bugs.webkit.org/show_bug.cgi?id=6653
        CSSStyleDeclaration returns empty string when trying to access shorthand 
        properties using JS accessors.
        
        * khtml/ecma/kjs_css.cpp:
        (KJS::DOMCSSStyleDeclaration::cssPropertyGetter):
        if getCSSPropertyValue returns 0 (which is true for shorthand properties), 
        try getPropertyValue instead.

2006-01-19  Adele Peterson  <adele@apple.com>

        Reviewed by Hyatt and Darin.

        http://bugs.webkit.org/show_bug.cgi?id=6665
        Implement NSView-less version of <input type="text">
        
        Initial implementation of new and improved text fields.  
        This will only be turned on if an input element has khtml-appearance: textfield.

        * WebCore.xcodeproj/project.pbxproj: Added RenderTextField.h and RenderTextField.cpp
        * css/cssvalues.in: Fixed omitted button-bevel value.  
          This was causing an off-by-one error when getting khtml-appearance value.
        * khtml/html/HTMLInputElementImpl.cpp: Added checks for khtml-appearance to decide 
          when to use RenderTextField instead of RenderLineEdit.
        (DOM::HTMLInputElementImpl::selectionStart):
        (DOM::HTMLInputElementImpl::selectionEnd):
        (DOM::HTMLInputElementImpl::setSelectionStart):
        (DOM::HTMLInputElementImpl::setSelectionEnd):
        (DOM::HTMLInputElementImpl::select):
        (DOM::HTMLInputElementImpl::setSelectionRange):
        (DOM::HTMLInputElementImpl::createRenderer):
        (DOM::HTMLInputElementImpl::defaultEventHandler):
        * khtml/html/HTMLInputElementImpl.h:
        * khtml/html/html_elementimpl.cpp:
        (HTMLElementImpl::isFocusable): Also allow editable elements with no parent to be focusable.
        * khtml/xml/NodeImpl.h:
        (WebCore::NodeImpl::setAttached): Added to set m_attached without having to call attach().
        * rendering/RenderTextField.cpp: Added.
        (khtml:::RenderBlock):
        (khtml::RenderTextField::~RenderTextField):
        (khtml::RenderTextField::addChild):
        (khtml::RenderTextField::removeChild):
        (khtml::RenderTextField::setStyle):
        (khtml::RenderTextField::getDivStyle):
        (khtml::RenderTextField::updateFromElement):
        (khtml::RenderTextField::selectionStart):
        (khtml::RenderTextField::selectionEnd):
        (khtml::RenderTextField::setSelectionStart):
        (khtml::RenderTextField::setSelectionEnd):
        (khtml::RenderTextField::select):
        (khtml::RenderTextField::setSelectionRange):
        * rendering/RenderTextField.h: Added.
        (khtml::RenderTextField::removeLeftoverAnonymousBoxes):
        (khtml::RenderTextField::renderName):
        * rendering/render_container.cpp:
        (RenderContainer::destroy): use renamed destroyLeftoverChildren.
        (RenderContainer::destroyLeftoverChildren): renamed from destroyLeftoverAnonymousChildren.
        * rendering/render_container.h:
        * rendering/render_flow.cpp:
        (RenderFlow::destroy): use renamed destroyLeftoverChildren.

2006-01-18  Darin Adler  <darin@apple.com>

        Reviewed by Hyatt.

        - removed all use of QMap

        * ForwardingHeaders/qmap.h: Removed.
        * WebCore.xcodeproj/project.pbxproj: Removed KWQMap.h, KWQMapImpl.h, KWQMapImpl.cpp.
        * kwq/KWQMap.h: Removed.
        * kwq/KWQMapImpl.cpp: Removed.
        * kwq/KWQMapImpl.h: Removed.

        * bridge/BrowserExtension.h: (WebCore::URLArgs::metaData): Converted from QMap of QString
        to HashMap of DOMString.
        * bridge/mac/BrowserExtensionMac.mm: Ditto.
        * bridge/mac/MacFrame.mm:
        (MacFrame::openURLRequest): Ditto.
        (MacFrame::urlSelected): Ditto.
        (MacFrame::createPart): Ditto.
        * khtml/ecma/kjs_window.cpp:
        (KJS::parseModalDialogFeatures): Ditto.
        (KJS::boolFeature): Ditto.
        (KJS::intFeature): Ditto.
        (KJS::createNewWindow): Ditto.
        (KJS::showModalDialog): Ditto.
        (KJS::WindowFunc::callAsFunction): Ditto.
        * khtml/html/html_objectimpl.cpp: (WebCore::HTMLAppletElementImpl::createRenderer): Ditto.
        * khtml/xml/dom_xmlimpl.cpp: (DOM::ProcessingInstructionImpl::checkStyleSheet): Ditto.
        * khtml/xml/xml_tokenizer.cpp:
        (WebCore::toString): Added. Converts to DOMString instead of QString.
        (WebCore::attributesStartElementNsHandler): Converted from QMap of QString to HashMap of DOMString.
        (WebCore::parseAttributes): Ditto.
        * khtml/xml/xml_tokenizer.h: (WebCore::Tokenizer::setTransformSource): Ditto.
        * ksvg2/misc/KSVGTimeScheduler.cpp: (KSVG::SVGTimer::notifyAll): Ditto.
        * kwq/KWQKJavaAppletWidget.h: Ditto.
        * kwq/KWQKJavaAppletWidget.mm: (KJavaAppletWidget::KJavaAppletWidget): Ditto.
        * kwq/KWQKJobClasses.h: Ditto.
        * kwq/KWQKJobClasses.mm: (KIO::TransferJob::addMetaData): Ditto.
        * page/Frame.cpp:
        (Frame::didOpenURL): Ditto.
        (Frame::changeLocation): Ditto.
        (Frame::mark): Ditto.
        (Frame::setMark): Ditto.
        (Frame::urlSelected): Ditto.
        (Frame::requestObject): Ditto.
        (Frame::processObjectRequest): Ditto.
        (Frame::submitForm): Ditto.
        * rendering/render_applet.cpp:
        (WebCore::RenderApplet::RenderApplet): Ditto.
        (WebCore::RenderApplet::createWidgetIfNecessary): Ditto.
        (WebCore::RenderApplet::layout): Ditto.
        * rendering/render_applet.h:
        (WebCore::RenderApplet::renderName): Ditto.
        (WebCore::RenderApplet::element): Ditto.
        (WebCore::RenderEmptyApplet::renderName): Ditto.

        * khtml/dom/dom_string.h:
        (WebCore::DOMString::createCFString): Added. Not yet implemented or used.
        (WebCore::DOMString::operator NSString*): Updated to call through to DOMStringImpl.
        Added hash functions and hash traits so you can use DOMString in hash tables.
        * khtml/xml/dom_stringimpl.h: Added conversion to and from CFStringRef/NSString.
        * khtml/xml/dom_stringimpl.cpp: Took out an excess "DOM::".

        * bindings/objc/DOMInternal.mm: (DOMStringImpl::operator NSString *): Moved from DOMString
        to DOMStringImpl.

        - changed the mark from a SelectionController to a Selection
          (maybe it can be a Position instead?)

        * page/Frame.h: Changed mark() and setMark() to use a Selection.
        * page/FramePrivate.h: Changed mark to a Selection.

        * bridge/mac/WebCoreFrameBridge.mm: (-[WebCoreFrameBridge setMarkDOMRange:]):
        Updated for change from SelectionController to Selection.

        - removed extraneous includes

        * kwq/KWQKHTMLSettings.h: Removed include of "KWQMap.h".
        * kwq/KWQKIOGlobal.h: Ditto.

        * khtml/editing/htmlediting.h: Removed extraneous includes and namespace prefixes.

        * khtml/html/html_canvasimpl.h: Removed extraneous includes and moved into the
        WebCore namespace.
        * khtml/html/html_canvasimpl.cpp: Ditto.
        * khtml/html/htmltokenizer.cpp: Ditto.
        * khtml/html/htmltokenizer.h: Ditto.
        * khtml/xml/DocumentImpl.cpp: Ditto.
        * kwq/KWQEditCommand.mm: Ditto.
        * rendering/render_canvasimage.h: Ditto.
        * rendering/render_image.h: Ditto.

        * khtml/editing/composite_edit_command.cpp: Updated includes because of ones
        that were removed from headers.
        * khtml/editing/htmlediting.cpp: Ditto.
        * khtml/editing/jsediting.cpp: Ditto.
        * khtml/editing/replace_selection_command.cpp: Ditto.
        * rendering/render_canvasimage.cpp: Ditto.
        * rendering/render_image.cpp: Ditto.

        * loader/loader.cpp: (WebCore::Loader::servePendingRequests): Removed code to add the
        cache control string, since that was hardcoded to empty string anyway.

2006-01-19  Eric Seidel  <eseidel@apple.com>

        Reviewed by darin & anders.

        Fix opacity crasher for <text> and <image>.
        http://bugs.webkit.org/show_bug.cgi?id=6668
        Even though the crash is fixed, opacity still doesn't work.
        http://bugs.webkit.org/show_bug.cgi?id=6669
        
        Test: svg/custom/text-image-opacity.svg

        * kcanvas/RenderSVGImage.cpp:
        (RenderSVGImage::paint):
        * kcanvas/RenderSVGText.cpp:
        (RenderSVGText::paint):

2006-01-19  Eric Seidel  <eseidel@apple.com>

        Reviewed by darin.

        Remove CFDictionary usage from KWQObject.*
        http://bugs.webkit.org/show_bug.cgi?id=6468

        * kwq/KWQObject.cpp:
        (KWQObjectTimer::KWQObjectTimer):
        (QObject::restartTimer):
        (QObject::timerIntervals):
        (KWQObjectTimer::deleteTimer):
        (QObject::killTimer):
        (QObject::killTimers):
        (sendDeferredTimerEvent):

2006-01-18  David Hyatt <hyatt@apple.com

        Fix for bug 6657, remove all uses of MacFrame from cross-platform
        code.  Also remove uses of BrowserExtensionMac (and make the
        frame responsible for instantiation of the appropriate
        platform-specific object).

        Also #ifdef out all the Dashboard code in the engine for non-Apple
        platforms.

        Reviewed by anders

        * ForwardingHeaders/khtml_ext.h: Removed.
        * ForwardingHeaders/kparts/browserextension.h: Removed.
        * WebCore.vcproj/WebCore/WebCore.vcproj:
        * bridge/BrowserExtension.h: Added.
        (WebCore::BrowserExtension::BrowserExtension):
        * bridge/mac/BrowserExtensionMac.h: Added.
        * bridge/mac/BrowserExtensionMac.mm: Added.
        * bridge/mac/KWQKHTMLPartBrowserExtension.h: Removed.
        * bridge/mac/KWQKHTMLPartBrowserExtension.mm: Removed.
        * bridge/mac/KWQKPartsBrowserExtension.h: Removed.
        * bridge/mac/MacFrame.h:
        (MacFrame::createBrowserExtension):
        (MacFrame::markedTextRange):
        * css/css_computedstyle.cpp:
        (DOM::):
        (DOM::CSSComputedStyleDeclarationImpl::getPropertyCSSValue):
        * css/css_valueimpl.cpp:
        (WebCore::CSSPrimitiveValueImpl::cleanup):
        (WebCore::CSSPrimitiveValueImpl::cssText):
        * css/css_valueimpl.h:
        (DOM::CSSPrimitiveValueImpl::):
        * css/cssparser.cpp:
        (CSSParser::parseValue):
        * css/cssparser.h:
        * css/cssstyleselector.cpp:
        (WebCore::CSSStyleSelector::applyProperty):
        * khtml/ecma/kjs_events.cpp:
        (KJS::JSAbstractEventListener::handleEvent):
        * khtml/ecma/kjs_navigator.cpp:
        (KJS::Navigator::getValueProperty):
        * khtml/ecma/kjs_proxy.cpp:
        (KJSProxyImpl::evaluate):
        (KJSProxyImpl::initScript):
        * khtml/ecma/kjs_window.cpp:
        (KJS::canShowModalDialog):
        (KJS::canShowModalDialogNow):
        (KJS::showModalDialog):
        (KJS::Window::getValueProperty):
        (KJS::Window::scheduleClose):
        (KJS::Window::isSafeScript):
        (KJS::parseWindowFeatures):
        (KJS::constrainToVisible):
        (KJS::WindowFunc::callAsFunction):
        (KJS::ScheduledAction::execute):
        (KJS::BarInfo::getValueProperty):
        (KJS::History::getValueProperty):
        * khtml/editing/jsediting.cpp:
        * khtml/editing/typing_command.cpp:
        (khtml::TypingCommand::markMisspellingsAfterTyping):
        * khtml/html/HTMLFormElementImpl.cpp:
        (DOM::HTMLFormElementImpl::formData):
        (DOM::HTMLFormElementImpl::submit):
        * khtml/html/html_objectimpl.cpp:
        (DOM::HTMLAppletElementImpl::getAppletInstance):
        (DOM::HTMLEmbedElementImpl::getEmbedInstance):
        (DOM::HTMLObjectElementImpl::getObjectInstance):
        * khtml/xml/DocumentImpl.cpp:
        (DocumentImpl::DocumentImpl):
        (DocumentImpl::updateTitle):
        (DocumentImpl::implicitClose):
        (DocumentImpl::referrer):
        * khtml/xml/DocumentImpl.h:
        * khtml/xml/dom_elementimpl.cpp:
        (WebCore::ElementImpl::focus):
        * page/Frame.cpp:
        (Frame::init):
        (Frame::didOpenURL):
        (Frame::browserExtension):
        (Frame::begin):
        (Frame::scheduleHistoryNavigation):
        (Frame::changeLocation):
        (Frame::setSelection):
        (Frame::urlSelected):
        (Frame::requestFrameName):
        (Frame::requestObject):
        (Frame::processObjectRequest):
        (Frame::submitForm):
        (Frame::slotChildCompleted):
        (Frame::shouldChangeSelection):
        (Frame::appliedEditing):
        (Frame::unappliedEditing):
        (Frame::reappliedEditing):
        (Frame::copyToPasteboard):
        (Frame::cutToPasteboard):
        (Frame::pasteFromPasteboard):
        (Frame::pasteAndMatchStyle):
        (Frame::transpose):
        (Frame::redo):
        (Frame::undo):
        (Frame::paint):
        * page/Frame.h:
        * page/FramePrivate.h:
        * page/FrameView.cpp:
        (KHTMLView::layout):
        (KHTMLView::updateDashboardRegions):
        (KHTMLView::viewportMousePressEvent):
        (KHTMLView::viewportMouseDoubleClickEvent):
        (KHTMLView::viewportMouseMoveEvent):
        (KHTMLView::viewportMouseReleaseEvent):
        (KHTMLView::mediaType):
        (KHTMLView::viewportWheelEvent):
        * page/FrameView.h:
        * rendering/InlineTextBox.cpp:
        (khtml::InlineTextBox::paint):
        * rendering/render_form.cpp:
        * rendering/render_layer.cpp:
        (khtml::RenderLayer::scrollToOffset):
        (khtml::RenderLayer::updateScrollInfoAfterLayout):
        * rendering/render_object.cpp:
        (WebCore::RenderObject::setStyle):
        * rendering/render_replaced.cpp:

2006-01-18  Darin Adler  <darin@apple.com>

        Reviewed by Hyatt.

        - change KWQList to use qsort instead of CFArraySort

        * kwq/KWQListImpl.cpp:
        (compareFuncWrapper): Wrapper that uses global variables to overcome the lack
        of a "data" pointer in qsort. Could have used qsort_r but that would be less portable.
        (KWQListImpl::sort): Use qsort instead of CFArraySortValues.

2006-01-18  Darin Adler  <darin@apple.com>

        Reviewed by Beth.

        - changed the three signal/slot related files from ObjC++ to C++ files

        * WebCore.xcodeproj/project.pbxproj:
        * kwq/KWQSignal.cpp: Added.
        * kwq/KWQSignal.mm: Removed.
        * kwq/KWQSignalStubs.cpp: Added.
        * kwq/KWQSignalStubs.mm: Removed.
        * kwq/KWQSlot.cpp: Added.
        * kwq/KWQSlot.mm: Removed.

2006-01-18  David Hyatt <hyatt@apple.com>
        
        Make Win32 build again.  Update the scripts and deal
        with all the recent file moves.

        Reviewed by xenon

        * WebCore.vcproj/WebCore/WebCore.vcproj:
        * WebCore.vcproj/WebCore/build-generated-files.sh:
        * rendering/render_container.cpp:
        * rendering/render_object.cpp:

2006-01-18  Mitz Pettel  <opendarwin.org@mitzpettel.com>

        Test: fast/overflow/overflow-rtl-inline-scrollbar.html

        Reviewed by Hyatt.
        
        - fix http://bugs.webkit.org/show_bug.cgi?id=6618
          Inline in RTL block with overflow:auto and left border makes scroll bar appear
        
        Inline flows were always returning 0 for leftmostPosition(). Their real leftmost
        edges are determined by their inline boxes, which
        RenderBlock::leftmostPosition already takes into account.

        * khtml/rendering/render_flow.cpp:
        (RenderFlow::lowestPosition): Don't descend into inline flows.
        (RenderFlow::rightmostPosition): Ditto.
        (RenderFlow::leftmostPosition): Ditto.

2006-01-18  Anders Carlsson  <andersca@mac.com>

        Fix build.
        
        * khtml/ecma/kjs_navigator.cpp:
        * page/FrameView.cpp:
        Remove kstandarddirs.h includes.
        
2006-01-18  Darin Adler  <darin@apple.com>

        Reviewed by Hyatt.

        - fix http://bugs.webkit.org/show_bug.cgi?id=6646
          compile CSS sources in instead of reading them from disk

        * css/make-css-file-arrays.pl: Added. Used to generate C array forms of the ".css" files.
        * css/UserAgentStyleSheets.cpp: Added. Used to indirectly compile the generated file.

        * WebCore.xcodeproj/project.pbxproj: Added new source files. Added a build phase to
        invoke the make-css-file-arrays.pl script. Removed the .css files, which no longer need
        to be installed as part of the final package.

        * WebCore.vcproj/WebCore/WebCore.vcproj: Added new files.
        * WebCore.vcproj/WebCore/build-generated-files.sh: Added make-css-file-arrays.pl script
        section; not tested.

        * css/cssstyleselector.cpp: (WebCore::parseUASheet): Removed code to read user agent
        sheets from disk. Replaced with code that gets them from compiled-in arrays instead.
        Uses a pretty lame DOMString hack that could be reworked some day.
        (WebCore::CSSStyleSelector::loadDefaultStyle): Change to load from arrays intead of disk.

        * css/html4.css: Added missing license header, tweaked format a bit.
        * css/quirks.css: Added missing license header, tweaked format.
        * css/svg.css: Moved from ksvg2/css directory.
        * ksvg2/css/svg.css: Moved to top level css directory.

        * page/Frame.cpp: Removed includes of qfile.h and kstandarddirs.h.

        * ForwardingHeaders/kstandarddirs.h: Removed.
        * ForwardingHeaders/qfile.h: Removed.
        * kwq/KWQFile.h: Removed.
        * kwq/KWQFile.mm: Removed.
        * kwq/KWQKStandardDirs.h: Removed.
        * kwq/KWQKStandardDirs.mm: Removed.

2006-01-17  Alexander Kellett  <lypanov@kde.org>

        Reviewed by Maciej.

        - Remove the now-unused KRenderingPaintServerImage[Quartz].

        * WebCore.xcodeproj/project.pbxproj:
        * kcanvas/KCanvasTreeDebug.cpp:
        * kcanvas/device/KRenderingPaintServer.h:
        * kcanvas/device/KRenderingPaintServerImage.cpp: Removed.
        * kcanvas/device/KRenderingPaintServerImage.h: Removed.
        * kcanvas/device/quartz/KRenderingDeviceQuartz.mm:
        * kcanvas/device/quartz/KRenderingPaintServerQuartz.h:
        * kcanvas/device/quartz/KRenderingPaintServerQuartz.mm:
        * ksvg2/svg/SVGFEImageElementImpl.cpp:
        * kwq/KWQPainter.mm:

2006-01-17  Darin Adler  <darin@apple.com>

        Reviewed by John Sullivan.

        - fix http://bugs.webkit.org/show_bug.cgi?id=6377
          <rdar://problem/4400315> All XML crashes in TOT with JavaScript disabled (6377)

        * bridge/mac/MacFrame.mm:
        (MacFrame::bindingRootObject): Assert that this is only called when JavaScript is enabled.
        (MacFrame::windowScriptObject): Return 0 if JavaScript is disabled.
        (MacFrame::windowScriptNPObject): Ditto.
        (MacFrame::partClearedInBegin): Don't call the "window script object available" call if
        JavaScript is disabled.

2006-01-17  Justin Garcia  <justin.garcia@apple.com>

        Reviewed by darin
        
        <http://bugs.webkit.org/show_bug.cgi?id=6632>
        REGRESSION: Selection includes spaces that it shouldn't
        <rdar://problem/4407845> 
        REGRESSION (TOT): blank space before found text selected at http://www.schepers.cc/comiclinks.html
        
        Layout test added:
        * editing/selection/after-line-wrap.html

        * khtml/editing/visible_position.cpp:
        (khtml::VisiblePosition::previous): Don't stop at the first candidate,
        it may be visually equivalent to the original position.
        * khtml/xml/dom_position.cpp:
        (DOM::Position::upstream): Don't move to a position on a different line.
        (DOM::Position::downstream): Ditto.

2006-01-17  Justin Garcia  <justin.garcia@apple.com>

        Reviewed by eric.
        
        Deployment builds now use -O2

        * WebCore.xcodeproj/project.pbxproj:
        * khtml/html/htmltokenizer.cpp: Turned off inlining to fix
        link error.

2006-01-17  David Hyatt  <hyatt@apple.com>
       
        Move khtml/rendering to WebCore/rendering.

        * WebCore.xcodeproj/project.pbxproj:
        * khtml/rendering: Removed.
        * khtml/rendering/DataRef.h: Removed.
        * khtml/rendering/InlineTextBox.cpp: Removed.
        * khtml/rendering/InlineTextBox.h: Removed.
        * khtml/rendering/RenderText.cpp: Removed.
        * khtml/rendering/RenderText.h: Removed.
        * khtml/rendering/RenderTextFragment.cpp: Removed.
        * khtml/rendering/RenderTextFragment.h: Removed.
        * khtml/rendering/bidi.cpp: Removed.
        * khtml/rendering/bidi.h: Removed.
        * khtml/rendering/break_lines.cpp: Removed.
        * khtml/rendering/break_lines.h: Removed.
        * khtml/rendering/font.cpp: Removed.
        * khtml/rendering/font.h: Removed.
        * khtml/rendering/render_applet.cpp: Removed.
        * khtml/rendering/render_applet.h: Removed.
        * khtml/rendering/render_arena.cpp: Removed.
        * khtml/rendering/render_arena.h: Removed.
        * khtml/rendering/render_block.cpp: Removed.
        * khtml/rendering/render_block.h: Removed.
        * khtml/rendering/render_box.cpp: Removed.
        * khtml/rendering/render_box.h: Removed.
        * khtml/rendering/render_br.cpp: Removed.
        * khtml/rendering/render_br.h: Removed.
        * khtml/rendering/render_button.cpp: Removed.
        * khtml/rendering/render_button.h: Removed.
        * khtml/rendering/render_canvas.cpp: Removed.
        * khtml/rendering/render_canvas.h: Removed.
        * khtml/rendering/render_canvasimage.cpp: Removed.
        * khtml/rendering/render_canvasimage.h: Removed.
        * khtml/rendering/render_container.cpp: Removed.
        * khtml/rendering/render_container.h: Removed.
        * khtml/rendering/render_flexbox.cpp: Removed.
        * khtml/rendering/render_flexbox.h: Removed.
        * khtml/rendering/render_flow.cpp: Removed.
        * khtml/rendering/render_flow.h: Removed.
        * khtml/rendering/render_form.cpp: Removed.
        * khtml/rendering/render_form.h: Removed.
        * khtml/rendering/render_frames.cpp: Removed.
        * khtml/rendering/render_frames.h: Removed.
        * khtml/rendering/render_image.cpp: Removed.
        * khtml/rendering/render_image.h: Removed.
        * khtml/rendering/render_inline.cpp: Removed.
        * khtml/rendering/render_inline.h: Removed.
        * khtml/rendering/render_layer.cpp: Removed.
        * khtml/rendering/render_layer.h: Removed.
        * khtml/rendering/render_line.cpp: Removed.
        * khtml/rendering/render_line.h: Removed.
        * khtml/rendering/render_list.cpp: Removed.
        * khtml/rendering/render_list.h: Removed.
        * khtml/rendering/render_object.cpp: Removed.
        * khtml/rendering/render_object.h: Removed.
        * khtml/rendering/render_replaced.cpp: Removed.
        * khtml/rendering/render_replaced.h: Removed.
        * khtml/rendering/render_style.cpp: Removed.
        * khtml/rendering/render_style.h: Removed.
        * khtml/rendering/render_table.cpp: Removed.
        * khtml/rendering/render_table.h: Removed.
        * khtml/rendering/render_theme.cpp: Removed.
        * khtml/rendering/render_theme.h: Removed.
        * khtml/rendering/render_theme_mac.h: Removed.
        * khtml/rendering/render_theme_mac.mm: Removed.
        * khtml/rendering/table_layout.cpp: Removed.
        * khtml/rendering/table_layout.h: Removed.
        * rendering: Added.
        * rendering/DataRef.h: Added.
        * rendering/InlineTextBox.cpp: Added.
        * rendering/InlineTextBox.h: Added.
        * rendering/RenderText.cpp: Added.
        * rendering/RenderText.h: Added.
        * rendering/RenderTextFragment.cpp: Added.
        * rendering/RenderTextFragment.h: Added.
        * rendering/bidi.cpp: Added.
        * rendering/bidi.h: Added.
        * rendering/break_lines.cpp: Added.
        * rendering/break_lines.h: Added.
        * rendering/font.cpp: Added.
        * rendering/font.h: Added.
        * rendering/render_applet.cpp: Added.
        * rendering/render_applet.h: Added.
        * rendering/render_arena.cpp: Added.
        * rendering/render_arena.h: Added.
        * rendering/render_block.cpp: Added.
        * rendering/render_block.h: Added.
        * rendering/render_box.cpp: Added.
        * rendering/render_box.h: Added.
        * rendering/render_br.cpp: Added.
        * rendering/render_br.h: Added.
        * rendering/render_button.cpp: Added.
        * rendering/render_button.h: Added.
        * rendering/render_canvas.cpp: Added.
        * rendering/render_canvas.h: Added.
        * rendering/render_canvasimage.cpp: Added.
        * rendering/render_canvasimage.h: Added.
        * rendering/render_container.cpp: Added.
        * rendering/render_container.h: Added.
        * rendering/render_flexbox.cpp: Added.
        * rendering/render_flexbox.h: Added.
        * rendering/render_flow.cpp: Added.
        * rendering/render_flow.h: Added.
        * rendering/render_form.cpp: Added.
        * rendering/render_form.h: Added.
        * rendering/render_frames.cpp: Added.
        * rendering/render_frames.h: Added.
        * rendering/render_image.cpp: Added.
        * rendering/render_image.h: Added.
        * rendering/render_inline.cpp: Added.
        * rendering/render_inline.h: Added.
        * rendering/render_layer.cpp: Added.
        * rendering/render_layer.h: Added.
        * rendering/render_line.cpp: Added.
        * rendering/render_line.h: Added.
        * rendering/render_list.cpp: Added.
        * rendering/render_list.h: Added.
        * rendering/render_object.cpp: Added.
        * rendering/render_object.h: Added.
        * rendering/render_replaced.cpp: Added.
        * rendering/render_replaced.h: Added.
        * rendering/render_style.cpp: Added.
        * rendering/render_style.h: Added.
        * rendering/render_table.cpp: Added.
        * rendering/render_table.h: Added.
        * rendering/render_theme.cpp: Added.
        * rendering/render_theme.h: Added.
        * rendering/render_theme_mac.h: Added.
        * rendering/render_theme_mac.mm: Added.
        * rendering/table_layout.cpp: Added.
        * rendering/table_layout.h: Added.

2006-01-17  David Hyatt  <hyatt@apple.com>

        Land support for a style method on DOMAttr from JS that will
        allow the Web Inspector to include presentational attributes
        in the style list.
        
        Reviewed by xenon

        * khtml/ecma/kjs_dom.cpp:
        (KJS::DOMAttr::getValueProperty):
        * khtml/ecma/kjs_dom.h:
        (KJS::DOMAttr::):

2006-01-17  Beth Dakin  <bdakin@apple.com>

        Reviewed by Hyatt and Darin

        Fix for <rdar://problem/4405836> REGRESSION: crash at webmail.aol.com 
        when deleting mail in khtml::RenderTableCell::collapsedBottomBorder() const 
        + 232

        RenderTableCell::collapsedBottomBorder() gets nextCell by calling 
        table()->cellBelow(this). In the case of the crash, cellBelow() returns 
        a pointer to a table cell that was already destroyed. cellBelow() thinks 
        that the pointer is still good because the grid of cells has not been updated 
        because all of this code is called through the hitTest and the hitTest does 
        not update the layout. The fix that I have is simply it have the hitTest call 
        updateLayout(). This is the only change in behavior. The rest of the patch 
        preserves behavior for simulated clicks. fast/events/stopPropagation-submit 
        caught this problem that arose from calling updateLayout() in the hitTest; 
        we should always have an x and y position of 0 for simulated clicks. This 
        preserves that behavior by keeping track of whether a click is simulated or not.

        * khtml/html/HTMLInputElementImpl.cpp:
        (DOM::HTMLInputElementImpl::defaultEventHandler): If the click is simulated, 
        set xPos and yPos to 0.
        * khtml/html/html_elementimpl.cpp:
        (HTMLElementImpl::setContentEditable): Fix spacing.
        (HTMLElementImpl::click): It isn't necessary to check if there is a renderer.
        * khtml/rendering/render_layer.cpp:
        (khtml::RenderLayer::hitTest): Call updateLayout().
        * khtml/xml/NodeImpl.cpp:
        (WebCore::NodeImpl::dispatchSimulatedMouseEvent): Set isSimulated to true.
        (WebCore::NodeImpl::dispatchMouseEvent): Keep track of isSimulated.
        * khtml/xml/NodeImpl.h: Same.
        * khtml/xml/dom2_eventsimpl.cpp:
        (DOM::MouseRelatedEventImpl::MouseRelatedEventImpl): Add isSimulated to
        MouseRelatedEventImpl().
        (DOM::MouseRelatedEventImpl::computePositions): Only change the offsets if 
        it's not simulated.
        (DOM::MouseEventImpl::MouseEventImpl): Add isSimulated to MouseEventImpl()
        * khtml/xml/dom2_eventsimpl.h: 
        (DOM::MouseRelatedEventImpl::isSimulated): Declarations of isSimulated
        (DOM::MouseEventImpl::isSimulated): Same.

2006-01-17  Duncan Wilcox  <duncan@mclink.it>

        Reviewed by Darin, landed by ap.

        - fix http://bugs.webkit.org/show_bug.cgi?id=6609
          Use Selection instead of SelectionController where possible

        This patch replaces the use of SelectionController with Selection in the edit commands.

        It also cleans up the relationship between Selection and SelectionController: 
        SelectionController used to need to be friend to Selection to call validate() 
        on it, now validation is enforced on every update of Selection.

        * khtml/editing/Selection.cpp:
        (WebCore::Selection::Selection):
        (WebCore::Selection::expandUsingGranularity):
        (WebCore::Selection::validate):
        * khtml/editing/Selection.h:
        (WebCore::Selection::setExtent):
        (WebCore::Selection::granularity):
        (WebCore::operator==):
        * khtml/editing/SelectionController.cpp:
        (WebCore::SelectionController::SelectionController):
        (WebCore::SelectionController::moveTo):
        (WebCore::SelectionController::expandUsingGranularity):
        (WebCore::SelectionController::clear):
        (WebCore::SelectionController::setBase):
        (WebCore::SelectionController::setExtent):
        * khtml/editing/SelectionController.h:
        (WebCore::SelectionController::selection):
        * khtml/editing/apply_style_command.cpp:
        (WebCore::ApplyStyleCommand::updateStartEnd):
        (WebCore::ApplyStyleCommand::doApply):
        * khtml/editing/break_blockquote_command.cpp:
        (khtml::BreakBlockquoteCommand::doApply):
        * khtml/editing/composite_edit_command.cpp:
        (WebCore::CompositeEditCommand::deleteSelection):
        (WebCore::CompositeEditCommand::rebalanceWhitespace):
        * khtml/editing/composite_edit_command.h:
        * khtml/editing/delete_selection_command.cpp:
        (WebCore::DeleteSelectionCommand::DeleteSelectionCommand):
        (WebCore::DeleteSelectionCommand::calculateTypingStyleAfterDelete):
        (WebCore::DeleteSelectionCommand::clearTransientState):
        (WebCore::DeleteSelectionCommand::doApply):
        * khtml/editing/delete_selection_command.h:
        * khtml/editing/edit_command.cpp:
        (WebCore::EditCommandPtr::startingSelection):
        (WebCore::EditCommandPtr::endingSelection):
        (WebCore::EditCommandPtr::setStartingSelection):
        (WebCore::EditCommandPtr::setEndingSelection):
        (WebCore::EditCommand::EditCommand):
        (WebCore::EditCommand::setStartingSelection):
        (WebCore::EditCommand::setEndingSelection):
        * khtml/editing/edit_command.h:
        (WebCore::EditCommand::startingSelection):
        (WebCore::EditCommand::endingSelection):
        * khtml/editing/insert_line_break_command.cpp:
        (khtml::InsertLineBreakCommand::doApply):
        * khtml/editing/insert_paragraph_separator_command.cpp:
        (khtml::InsertParagraphSeparatorCommand::doApply):
        * khtml/editing/insert_text_command.cpp:
        (khtml::InsertTextCommand::input):
        * khtml/editing/move_selection_command.cpp:
        (khtml::MoveSelectionCommand::doApply):
        * khtml/editing/replace_selection_command.cpp:
        (khtml::ReplaceSelectionCommand::doApply):
        (khtml::ReplaceSelectionCommand::completeHTMLReplacement):
        * khtml/editing/typing_command.cpp:
        (khtml::TypingCommand::deleteKeyPressed):
        (khtml::TypingCommand::forwardDeleteKeyPressed):
        * page/Frame.cpp:
        (Frame::appliedEditing):
        (Frame::unappliedEditing):
        (Frame::reappliedEditing):
        * page/Frame.h:

2006-01-17  Mitz Pettel  <opendarwin.org@mitzpettel.com>

        Test: fast/dom/generic-form-element-assert.html

        Reviewed and reworked by Darin.
        
        - fix http://bugs.webkit.org/show_bug.cgi?id=5926
          Assertion failure in HTMLGenericFormElementImpl::removedFromTree

        * khtml/html/HTMLGenericFormElementImpl.cpp: Tweaked formatting and namespaces
        a bit. Removed unneeded includes.
        (WebCore::findRoot): Added helper function.
        (WebCore::HTMLGenericFormElementImpl::removedFromTree): Rewrote to do the check
        in a simpler way, since the two separate cases amounted to the same check.

2006-01-17  Mark Rowe  <opendarwin.org@bdash.net.nz>

        Reviewed by eseidel.  Landed by eseidel.

        Fix second part of WebCore-no-SVG fails to build.
        http://bugs.webkit.org/show_bug.cgi?id=6607

        * WebCore.xcodeproj/project.pbxproj:
        Mark three headers as private rather than project in the WebCore-no-SVG target.

2006-01-17  Mitz Pettel  <opendarwin.org@mitzpettel.com>

        Reviewed by hyatt

        * kwq/KWQVectorImpl.cpp:
        (KWQVectorImpl::append): Assign the new item to index m_count, not m_size.

2006-01-17  Mark Rowe  <opendarwin.org@bdash.net.nz>

        Reviewed by eseidel.  Landed by eseidel.

        WebCore-no-SVG fails to build.
        http://bugs.webkit.org/show_bug.cgi?id=6607

        * WebCore.xcodeproj/project.pbxproj:
        Fix build of WebCore-no-SVG target.  Removes SVG specific files and adds new
        files omitted from the target.

2006-01-16  David Hyatt  <hyatt@apple.com>

        (1) Fix build bustage by properly marking the moved Obj-C
        bindings files as private.
        (2) Move khtml/css to WebCore/css.
        (3) Eliminate the kdom/css forwarding headers.

        * ForwardingHeaders/kdom/css: Removed.
        * ForwardingHeaders/kdom/css/CSSPrimitiveValueImpl.h: Removed.
        * ForwardingHeaders/kdom/css/CSSStyleDeclarationImpl.h: Removed.
        * ForwardingHeaders/kdom/css/CSSStyleRuleImpl.h: Removed.
        * ForwardingHeaders/kdom/css/CSSStyleSelector.h: Removed.
        * ForwardingHeaders/kdom/css/CSSStyleSheetImpl.h: Removed.
        * ForwardingHeaders/kdom/css/CSSValueImpl.h: Removed.
        * ForwardingHeaders/kdom/css/CSSValueListImpl.h: Removed.
        * ForwardingHeaders/kdom/css/KDOMCSSParser.h: Removed.
        * ForwardingHeaders/kdom/css/MediaListImpl.h: Removed.
        * ForwardingHeaders/kdom/css/RGBColorImpl.h: Removed.
        * ForwardingHeaders/kdom/css/RenderStyle.h: Removed.
        * ForwardingHeaders/kdom/css/StyleSheetListImpl.h: Removed.
        * WebCore+SVG/RGBColorImpl.cpp:
        * WebCore.xcodeproj/project.pbxproj:
        * css: Added.
        * css/css_base.cpp: Added.
        * css/css_base.h: Added.
        * css/css_computedstyle.cpp: Added.
        * css/css_computedstyle.h: Added.
        * css/css_grammar.y: Added.
        * css/css_ruleimpl.cpp: Added.
        * css/css_ruleimpl.h: Added.
        * css/css_stylesheetimpl.cpp: Added.
        * css/css_stylesheetimpl.h: Added.
        * css/css_valueimpl.cpp: Added.
        * css/css_valueimpl.h: Added.
        * css/csshelper.cpp: Added.
        * css/csshelper.h: Added.
        * css/cssparser.cpp: Added.
        * css/cssparser.h: Added.
        * css/cssproperties.in: Added.
        * css/cssstyleselector.cpp: Added.
        * css/cssstyleselector.h: Added.
        * css/cssvalues.in: Added.
        * css/html4.css: Added.
        * css/makeprop: Added.
        * css/maketokenizer: Added.
        * css/makevalues: Added.
        * css/quirks.css: Added.
        * css/tokenizer.flex: Added.
        * khtml/css: Removed.
        * khtml/css/css_base.cpp: Removed.
        * khtml/css/css_base.h: Removed.
        * khtml/css/css_computedstyle.cpp: Removed.
        * khtml/css/css_computedstyle.h: Removed.
        * khtml/css/css_grammar.y: Removed.
        * khtml/css/css_ruleimpl.cpp: Removed.
        * khtml/css/css_ruleimpl.h: Removed.
        * khtml/css/css_stylesheetimpl.cpp: Removed.
        * khtml/css/css_stylesheetimpl.h: Removed.
        * khtml/css/css_valueimpl.cpp: Removed.
        * khtml/css/css_valueimpl.h: Removed.
        * khtml/css/csshelper.cpp: Removed.
        * khtml/css/csshelper.h: Removed.
        * khtml/css/cssparser.cpp: Removed.
        * khtml/css/cssparser.h: Removed.
        * khtml/css/cssproperties.in: Removed.
        * khtml/css/cssstyleselector.cpp: Removed.
        * khtml/css/cssstyleselector.h: Removed.
        * khtml/css/cssvalues.in: Removed.
        * khtml/css/html4.css: Removed.
        * khtml/css/makeprop: Removed.
        * khtml/css/maketokenizer: Removed.
        * khtml/css/makevalues: Removed.
        * khtml/css/quirks.css: Removed.
        * khtml/css/tokenizer.flex: Removed.
        * ksvg2/css/SVGCSSStyleSelector.cpp:
        * ksvg2/ecma/Ecma.cpp:
        * ksvg2/misc/KCanvasRenderingStyle.cpp:
        * ksvg2/misc/KCanvasRenderingStyle.h:
        * ksvg2/svg/SVGAnimationElementImpl.cpp:
        * ksvg2/svg/SVGClipPathElementImpl.cpp:
        * ksvg2/svg/SVGColorImpl.cpp:
        * ksvg2/svg/SVGColorImpl.h:
        * ksvg2/svg/SVGDOMImplementationImpl.cpp:
        * ksvg2/svg/SVGDocumentImpl.cpp:
        * ksvg2/svg/SVGElementImpl.cpp:
        * ksvg2/svg/SVGGradientElementImpl.cpp:
        * ksvg2/svg/SVGMaskElementImpl.cpp:
        * ksvg2/svg/SVGStyleElementImpl.cpp:
        * ksvg2/svg/SVGStyledElementImpl.h:
        * ksvg2/svg/SVGTextElementImpl.cpp:

2006-01-16  David Hyatt  <hyatt@apple.com>

        Move the Objective-C dom bindings from kwq to bindings/objc.

        Reviewed by eseidel

        * WebCore.xcodeproj/project.pbxproj:
        * bindings: Added.
        * bindings/js: Added.
        * bindings/objc: Added.
        * bindings/objc/DOM.h: Added.
        * bindings/objc/DOM.mm: Added.
        * bindings/objc/DOMCSS.h: Added.
        * bindings/objc/DOMCSS.mm: Added.
        * bindings/objc/DOMCore.h: Added.
        * bindings/objc/DOMEvents.h: Added.
        * bindings/objc/DOMEvents.mm: Added.
        * bindings/objc/DOMEventsInternal.h: Added.
        * bindings/objc/DOMExtensions.h: Added.
        * bindings/objc/DOMHTML.h: Added.
        * bindings/objc/DOMHTML.mm: Added.
        * bindings/objc/DOMHTMLInternal.h: Added.
        * bindings/objc/DOMInternal.h: Added.
        * bindings/objc/DOMInternal.mm: Added.
        * bindings/objc/DOMPrivate.h: Added.
        * bindings/objc/DOMRange.h: Added.
        * bindings/objc/DOMStylesheets.h: Added.
        * bindings/objc/DOMTraversal.h: Added.
        * bindings/objc/DOMUtility.mm: Added.
        * bindings/objc/DOMViews.h: Added.
        * bindings/objc/DOMViews.mm: Added.
        * bindings/objc/DOMViewsInternal.h: Added.
        * kwq/DOM-CSS.mm: Removed.
        * kwq/DOM.h: Removed.
        * kwq/DOM.mm: Removed.
        * kwq/DOMCSS.h: Removed.
        * kwq/DOMCore.h: Removed.
        * kwq/DOMEvents.h: Removed.
        * kwq/DOMEvents.mm: Removed.
        * kwq/DOMEventsInternal.h: Removed.
        * kwq/DOMExtensions.h: Removed.
        * kwq/DOMHTML.h: Removed.
        * kwq/DOMHTML.mm: Removed.
        * kwq/DOMHTMLInternal.h: Removed.
        * kwq/DOMInternal.h: Removed.
        * kwq/DOMInternal.mm: Removed.
        * kwq/DOMPrivate.h: Removed.
        * kwq/DOMRange.h: Removed.
        * kwq/DOMStylesheets.h: Removed.
        * kwq/DOMTraversal.h: Removed.
        * kwq/DOMUtility.mm: Removed.
        * kwq/DOMViews.h: Removed.
        * kwq/DOMViews.mm: Removed.
        * kwq/DOMViewsInternal.h: Removed.

2006-01-16  Mitz Pettel  <opendarwin.org@mitzpettel.com>

        Reviewed by Hyatt, landed by ap.

        - fix http://bugs.webkit.org/show_bug.cgi?id=6473
          REGRESSION: Serious painting problems on new iLife and iWorks pages

        * khtml/css/css_grammar.y:
        (DOM::getPropertyID): Undo the mapping of -moz-opacity and -moz-border-radius to
        opacity and border-radius, respectively.
        * khtml/rendering/render_box.cpp:
        (RenderBox::setStyle): Set the object's layer to 0 before removing the layer,
        to allow child layers to update their positions correctly.
        * khtml/rendering/render_layer.cpp:
        (khtml::RenderLayer::removeOnlyThisLayer): Update the positions of all children
        of the layer being removed.
        * manual-tests/bugzilla-6473.html: Added.

2006-01-16  Mark Rowe  <opendarwin.org@bdash.net.nz>

        Reviewed by Darin, landed by ap.

        Fix typo in CSSPrimitiveValueImpl::setStringValue.

        * khtml/css/css_valueimpl.cpp:
        (DOM::CSSPrimitiveValueImpl::setStringValue): Change >> to > and fix formatting.

2006-01-16  Alexey Proskuryakov  <ap@nypop.com>

        Reviewed by Justin.

        - fix http://bugs.webkit.org/show_bug.cgi?id=5401
          [WebCoreBridge firstRectForDOMRange:] works incorrectly for the first character after a line wrap

        Test: editing/input/wrapped-line-char-rect.html

        * bridge/mac/WebCoreFrameBridge.mm: (-[WebCoreFrameBridge firstRectForDOMRange:]):
         Use DOWNSTREAM affinity for the range start

2006-01-16  Justin Garcia  <justin.garcia@apple.com>

        Reviewed by darin
        
        <http://bugs.webkit.org/show_bug.cgi?id=5127>
        REGRESSION: problems making selection with left edge at right edge of image
        <rdar://problem/4364427>
        triple-click includes first item on next line (www.apple.com, but I think I've seen it elsewhere)
        
        Don't paint the selection tint on replaced elements
        if the selections starts at the end or ends at the start.

        * khtml/rendering/render_image.cpp:
        (RenderImage::paint):
        * khtml/rendering/render_replaced.cpp:
        (WebCore::RenderReplaced::isSelected):
        (WebCore::RenderWidget::paint):
        * khtml/rendering/render_replaced.h:

2006-01-16  Tim Omernick  <timo@apple.com>

        Reviewed by John Sullivan.

        WebCore part of <rdar://problem/4211707> NPAPI ref count behavior differs with Mozilla

        * bridge/mac/MacFrame.mm:
        (MacFrame::setView):
        Call _NPN_DeallocateObject() instead of _NPN_ReleaseObject() so that we don't leak if a plugin fails to release
        the window script object properly.
        Our old NPN_GetValue() did not properly retain the returned window script object.  Because of this, many plugins
        have WebKit-specific workarounds to not release said window script object.  Forcibly deallocating it here
        should prevent any such issues.  This shouldn't cause any problems for plugins, since they should already be
        stopped and destroyed at this point.
        This also fixes a preexisting leak of the window script NPObject -- it was never actually being freed!

2006-01-16  Darin Adler  <darin@apple.com>

        - actually removed QPtrDict itself

        * ForwardingHeaders/qptrdict.h: Removed.
        * WebCore.xcodeproj/project.pbxproj: Removed KWQPtrDict* files.
        * kwq/KWQPtrDict.h: Removed.
        * kwq/KWQPtrDictImpl.cpp: Removed.
        * kwq/KWQPtrDictImpl.h: Removed.

2006-01-16  Darin Adler  <darin@apple.com>

        Reviewed by John Sullivan.

        - removed all uses of QPtrDict, most uses of QMap

        * khtml/ecma/kjs_dom.cpp: Converted tabs to spaces.
        (KJS::DOMNode::mark): Switched from QPtrDict to HashSet.
        * khtml/ecma/kjs_events.cpp: Converted tabs to spaces.
        (KJS::JSUnprotectedEventListener::JSUnprotectedEventListener): Use HashMap.
        (KJS::JSEventListener::JSEventListener): Use HashMap.
        (KJS::JSLazyEventListener::parseCode): Use HashMap.
        * khtml/ecma/kjs_html.cpp: Convert tabs to spaces.
        (KJS::KJS::HTMLElement::classInfo): Use HashMap.
        * khtml/ecma/kjs_window.cpp: Convert tabs to spaces.
        (KJS::Window::~Window): Use HashMap.
        (KJS::Window::getJSEventListener): Ditto.
        (KJS::Window::getJSUnprotectedEventListener): Ditto.
        (KJS::WindowQObject::parentDestroyed): Ditto.
        (KJS::WindowQObject::installTimeout): Ditto.
        (KJS::WindowQObject::pauseTimeouts): Ditto.
        (KJS::WindowQObject::resumeTimeouts): Ditto.
        (KJS::WindowQObject::clearTimeout): Ditto.
        (KJS::WindowQObject::timerEvent): Ditto.
        * khtml/ecma/kjs_window.h: Use HashMap.
        * khtml/ecma/xmlhttprequest.cpp: Convert tabs to spaces.
        (KJS::XMLHttpRequest::requestsByDocument): Use HashMap/Set.
        (KJS::XMLHttpRequest::addToRequestsByDocument): Ditto.
        (KJS::XMLHttpRequest::removeFromRequestsByDocument): Ditto.
        (KJS::XMLHttpRequest::cancelRequests): Ditto.
        * khtml/ecma/xmlhttprequest.h: Ditto.
        * khtml/editing/apply_style_command.cpp:
        (WebCore::ApplyStyleCommand::applyRelativeFontStyleChange): Use HashMap.
        * khtml/rendering/render_canvas.cpp:
        (RenderCanvas::selectionRect): Use HashMap.
        (RenderCanvas::setSelection): Ditto.
        * khtml/rendering/render_flow.cpp: (RenderFlow::paintLines): Use HashSet.
        * khtml/rendering/render_line.cpp: (khtml::InlineFlowBox::paint): Use HashSet.
        * khtml/rendering/render_object.h: Used HashSet.
        Converted tabs to spaces and did namespace changes too.
        * khtml/xml/DocumentImpl.cpp:
        (DocumentImpl::DocumentImpl): Use HashSet and HashMap.
        (DocumentImpl::~DocumentImpl): Ditto.
        (DocumentImpl::registerDisconnectedNodeWithEventListeners): Ditto.
        (DocumentImpl::unregisterDisconnectedNodeWithEventListeners): Ditto.
        (DocumentImpl::removeAllDisconnectedNodeEventListeners): Ditto.
        (DocumentImpl::addImageMap): Ditto.
        (DocumentImpl::removeImageMap): Ditto.
        (DocumentImpl::getImageMap): Ditto.
        (DocumentImpl::addMarker): Ditto.
        (DocumentImpl::copyMarkers): Ditto.
        (DocumentImpl::removeMarkers): Ditto.
        (DocumentImpl::markersForNode): Ditto.
        (DocumentImpl::shiftMarkers): Ditto.
        (DocumentImpl::radioButtonChecked): Ditto.
        (DocumentImpl::checkedRadioButtonForGroup): Ditto.
        (DocumentImpl::removeRadioButtonGroup): Ditto.
        * khtml/xml/DocumentImpl.h: Use HashSet and HashMap.
        * khtml/xml/NodeImpl.cpp:
        (WebCore::NodeImpl::registerNodeList): Use HashSet.
        (WebCore::NodeImpl::unregisterNodeList): Ditto.
        (WebCore::NodeImpl::notifyLocalNodeListsAttributeChanged): Ditto.
        (WebCore::NodeImpl::notifyNodeListsAttributeChanged): Ditto.
        (WebCore::NodeImpl::notifyLocalNodeListsChildrenChanged): Ditto.
        (WebCore::NodeImpl::notifyNodeListsChildrenChanged): Ditto.
        (WebCore::NodeImpl::getElementsByTagName): Moved here so we don't have
        to include NodeListImpl.h in the header.
        * khtml/xml/NodeImpl.h: Use HashSet. Reduced includes.
        * khtml/xml/dom_elementimpl.cpp:
        (WebCore::MappedAttributeKey): Added. Hash table key.
        (WebCore::MappedAttributeKeyTraits): Added. Hash table key traits.
        (WebCore::MappedAttributeHash): Added. Hash function.
        (WebCore::StyledElementImpl::getMappedAttributeDecl): Use HashMap.
        (WebCore::StyledElementImpl::setMappedAttributeDecl): Ditto.
        (WebCore::StyledElementImpl::removeMappedAttributeDecl): Ditto.
        (WebCore::MappedAttributeHash::hash): Added. Hash function.
        * khtml/xml/dom_elementimpl.h: Use HashMap.

        * khtml/html/html_imageimpl.cpp:
        (WebCore::HTMLMapElementImpl::parseMappedAttribute): Update m_name handling
        to use AtomicString.
        * khtml/html/html_imageimpl.h:
        (WebCore::HTMLMapElementImpl::getName): Change to return const AtomicString&.

        * khtml/dom/dom_string.h: Added a default argument to substring, also
        reduced includes and updated namespace.
        * khtml/xml/dom_stringimpl.h: Ditto.

        * bridge/mac/WebCoreFrameBridge.mm: Switched to new WebCore namespace.
        Updated includes for header changes.
        * kcanvas/RenderForeignObject.cpp: Ditto.
        * kcanvas/RenderForeignObject.h: Ditto.
        * kcanvas/RenderSVGImage.h: Ditto.
        * kcanvas/device/quartz/KCanvasResourcesQuartz.h: Ditto.
        * khtml/css/css_ruleimpl.cpp: Ditto.
        * khtml/css/css_valueimpl.h: Ditto.
        * khtml/ecma/kjs_dom.h: Ditto.
        * khtml/ecma/kjs_html.h: Ditto.
        * khtml/editing/composite_edit_command.cpp: Ditto.
        * khtml/editing/delete_selection_command.cpp: Ditto.
        * khtml/html/html_tableimpl.cpp: Ditto.
        * khtml/khtml_events.cpp: Ditto.
        * khtml/rendering/RenderText.cpp: Ditto.
        * khtml/rendering/render_block.cpp: Ditto.
        * khtml/rendering/render_br.cpp: Ditto.
        * khtml/rendering/render_inline.cpp: Ditto.
        * khtml/rendering/render_object.cpp: Ditto.
        * khtml/rendering/render_replaced.cpp: Ditto.
        * khtml/xml/dom2_rangeimpl.cpp: Ditto.
        * kwq/DOM.mm: Ditto.
        * page/Frame.cpp: Ditto.

        * kcanvas/KCanvasResources.cpp: (KCanvasMarker::draw): Updated because a
        constant moved into the WebCore namespace.
        * kcanvas/RenderSVGText.cpp: (RenderSVGText::nodeAtPoint): Ditto.
        * kcanvas/RenderSVGText.h: Ditto.
        * kcanvas/device/quartz/KCanvasItemQuartz.h: Ditto.
        * kcanvas/device/quartz/KCanvasItemQuartz.mm:
        (KCanvasItemQuartz::paint): Ditto.
        (KCanvasItemQuartz::nodeAtPoint): Ditto.
        * kcanvas/device/quartz/KCanvasResourcesQuartz.mm:
        (KCanvasContainerQuartz::paint): Ditto.

        * khtml/xbl/xbl_binding_manager.cpp: Removed include of qptrddict.h.
        * khtml/xbl/xbl_binding_manager.h: Removed include of qptrddict.h.
        * khtml/xbl/xbl_docimpl.h: Removed include of qptrddict.h.

        * khtml/xml/dom_xmlimpl.cpp: Changed to use RefPtr for strings.
        * khtml/xml/dom_xmlimpl.h: Ditto.

        * ksvg2/css/SVGRenderStyle.h: Reduced includes a bit and added newly-needed ones.
        * ksvg2/misc/KSVGTimeScheduler.cpp: Ditto.
        * ksvg2/svg/SVGPointImpl.cpp: Ditto.

        * kwq/KWQNamespace.h: Removed QColor, QCursor, and redundant declaration of QRgb
        (now in qcolor.h). Also converted tabs to spaces.

        * kwq/KWQPainter.h: Added newly-needed include.

        * kwq/KWQPtrVector.h: Added append function.
        * kwq/KWQVectorImpl.cpp: (KWQVectorImpl::append): Added.
        * kwq/KWQVectorImpl.h: Added append.

        * kwq/KWQRenderTreeDebug.cpp: Updated to no longer use transparentColor constant.

        * kwq/KWQWMatrix.cpp: Changed name to QMatrix to allow forward declarations.
        * kwq/KWQWMatrix.h: Ditto.

        * loader/Cache.cpp: (khtml::Cache::clear): Use deleteAllValues for clearer code.

        * loader/CachedCSSStyleSheet.cpp: Reduced includes a lot, moving them from .h to .cpp.
        * loader/CachedCSSStyleSheet.h: Ditto.
        * loader/CachedImage.cpp: Ditto.
        * loader/CachedImage.h: Ditto.
        * loader/CachedImageCallback.cpp: Ditto.
        * loader/CachedObject.cpp: Ditto.
        * loader/CachedObject.h: Ditto.
        * loader/CachedObjectClient.h: Ditto.
        * loader/CachedObjectClientWalker.cpp: Ditto.
        * loader/CachedObjectClientWalker.h: Ditto.
        * loader/CachedScript.cpp: Ditto.
        * loader/CachedScript.h: Ditto.
        * loader/CachedXSLStyleSheet.cpp: Ditto.

        * loader/loader.cpp:
        (WebCore::Loader::Loader): Changed to use HashMap.
        (WebCore::Loader::~Loader): Ditto.
        (WebCore::Loader::servePendingRequests): Ditto.
        (WebCore::Loader::slotFinished): Ditto.
        (WebCore::Loader::slotReceivedResponse): Ditto.
        (WebCore::Loader::slotData): Ditto.
        (WebCore::Loader::numRequests): Ditto.
        (WebCore::Loader::cancelRequests): Ditto.
        (WebCore::Loader::jobForRequest): Ditto.
        * loader/loader.h: Ditto.

2006-01-16  Darin Adler  <darin@apple.com>

        * WebCore.xcodeproj/project.pbxproj: Move config.h in project file to match
        where it is in the source tree.

2006-01-15  Timothy Hatcher  <timothy@apple.com>

        Reviewed by Darin.

        Support for the new DOM Inspector.

        * khtml/ecma/kjs_dom.cpp: exposes scrollIntoViewIfNeeded to JS
        * khtml/ecma/kjs_dom.h:
        * khtml/rendering/RenderText.cpp:
        (RenderText::lineBoxRects): returns text run rects
        * khtml/rendering/RenderText.h:
        * khtml/rendering/render_container.cpp:
        (RenderContainer::lineBoxRects): returns all child line box rects
        * khtml/rendering/render_container.h:
        * khtml/rendering/render_object.cpp:
        (RenderObject::lineBoxRects): returns an empty list
        * khtml/rendering/render_object.h:
        * khtml/xml/dom_elementimpl.cpp:
        (ElementImpl::scrollIntoViewIfNeeded): scrolls only if needed, bool decides to center to align to nearest edge
        * khtml/xml/dom_elementimpl.h: Ditto
        * kwq/DOM.mm:
        (-[DOMNode boundingBox]): returns the bounding box for a node
        (-[DOMNode lineBoxRects]): returns text runs for a node
        * kwq/DOMCore.h: added missing @protocol DOMEventListener and @class DOMEvent
        * kwq/DOMExtensions.h: removes methods that haven't been API reviewed
        * kwq/DOMPrivate.h: new pending public API added for the Inspector

2006-01-15  Darin Adler  <darin@apple.com>

        Reviewed by Eric.

        - changed WebCore namespace change to work on Win32 as well as Mac OS X

        * WebCorePrefix.h: Removed things needed cross-platform.

        * config.h: Moved from khtml subdirectory. Added defines from
        WebCorePrefix.h, and added a define that makes KSVG a synonym for WebCore.
        * khtml/config.h: Removed.

        * khtml/css/css_grammar.y: Changed SVG functions to use function name rather
        than namespace to avoid collision with the XML and HTML DOM. Changes tabs to spaces.
        * khtml/css/css_valueimpl.cpp:
        (WebCore::propertyID): Add SVG properties ot the ones understood here.
        This allows us to set SVG properties from JavaScript.

        * ksvg2/scripts/cssmakeprops: Put functions inside the namespace to avoid compiler
        warning, and renamed functions to include CSS and SVG.
        * ksvg2/scripts/cssmakevalues: Ditto.

        * ksvg2/svg/SVGStyledElementImpl.cpp: (SVGStyledElementImpl::parseMappedAttribute):
        Use property ID function by its new name.

        * ksvg2/ksvg.h: Renamed ExceptionCode to SVGExceptionCode.

        * khtml/ecma/XSLTProcessor.cpp: Moved "config.h" header up above the ifdef so that
        the ifdef works.
        * khtml/xbl/xbl_binding.cpp: Ditto.
        * khtml/xbl/xbl_binding_manager.cpp: Ditto.
        * khtml/xbl/xbl_docimpl.cpp: Ditto.
        * khtml/xbl/xbl_protobinding.cpp: Ditto.
        * khtml/xbl/xbl_tokenizer.cpp: Ditto.
        * khtml/xsl/xsl_stylesheetimpl.cpp: Ditto.
        * khtml/xsl/xslt_processorimpl.cpp: Ditto.
        * loader/CachedXBLDocument.cpp: Ditto.

        * ksvg2/svg/SVGFELightElementImpl.h: Removed include of "config.h". That's supposed
        to only be included by code files, not headers.

        * ksvg2/svg/SVGFEDistantLightElementImpl.cpp: Added missing include of "config.h".
        Did a few other tweaks to the file.
        * ksvg2/svg/SVGFEPointLightElementImpl.cpp: Ditto.
        * ksvg2/svg/SVGFESpotLightElementImpl.cpp: Ditto.

2006-01-15  Eric Seidel  <eseidel@apple.com>

        Rubber-stamped by darin.

        Updated files w/ missing copyrights from Oliver.

        * kcanvas/device/quartz/filters/WKArithmeticFilter.cikernel:
        * kcanvas/device/quartz/filters/WKDistantLightFilter.cikernel:
        * kcanvas/device/quartz/filters/WKPointLightFilter.cikernel:
        * kcanvas/device/quartz/filters/WKSpotLightFilter.cikernel:
        * ksvg2/svg/SVGAnimatedColorImpl.cpp:
        * ksvg2/svg/SVGAnimatedColorImpl.h:
        * ksvg2/svg/SVGFEDiffuseLightingElementImpl.cpp:
        * ksvg2/svg/SVGFEDiffuseLightingElementImpl.h:
        * ksvg2/svg/SVGFEDistantLightElementImpl.cpp:
        * ksvg2/svg/SVGFEDistantLightElementImpl.h:
        * ksvg2/svg/SVGFELightElementImpl.cpp:
        * ksvg2/svg/SVGFELightElementImpl.h:
        * ksvg2/svg/SVGFEPointLightElementImpl.cpp:
        * ksvg2/svg/SVGFEPointLightElementImpl.h:
        * ksvg2/svg/SVGFESpecularLightingElementImpl.cpp:
        * ksvg2/svg/SVGFESpecularLightingElementImpl.h:
        * ksvg2/svg/SVGFESpotLightElementImpl.cpp:
        * ksvg2/svg/SVGFESpotLightElementImpl.h:

2006-01-15  Duncan Wilcox  <duncan@mclink.it>

        Reviewed and tweaked a bit by Darin.

        Fix for <http://bugs.webkit.org/show_bug.cgi?id=6523>
        "Extract data from SelectionController"

        This patch refactors the data portions of SelectionController into its
        own class, "Selection".

        The extracted data are the base/extent/start/end positions and cursor
        affinity. Also a couple cached values generated by validation are kept around
        in the new class.

        This patch does away with all the different affinities
        (start/end/base/extent) that were never implemented properly, since affinity
        only makes sense when the selection is a caret (as per discussion with mjs and
        darin on #webkit).

        No test cases added because this is a refactoring.

        * WebCore.xcodeproj/project.pbxproj:
        * bridge/mac/MacFrame.mm:
        (MacFrame::findString):
        (MacFrame::advanceToNextMisspelling):
        (MacFrame::baseWritingDirectionForSelectionStart):
        (MacFrame::respondToChangedSelection):
        * bridge/mac/WebCoreFrameBridge.mm:
        (-[WebCoreFrameBridge selectionState]):
        (-[WebCoreFrameBridge selectNSRange:]):
        (-[WebCoreFrameBridge selectionAffinity]):
        (-[WebCoreFrameBridge setMarkDOMRange:]):
        (-[WebCoreFrameBridge ensureSelectionVisible]):
        (-[WebCoreFrameBridge rangeOfCharactersAroundCaret]):
        * khtml/editing/Selection.cpp: Added.
        (khtml::Selection::Selection):
        (khtml::Selection::clear):
        (khtml::Selection::toRange):
        (khtml::Selection::validate):
        (khtml::Selection::adjustForEditableContent):
        (khtml::Selection::debugPosition):
        * khtml/editing/Selection.h: Added.
        (khtml::Selection::):
        (khtml::Selection::state):
        (khtml::Selection::setAffinity):
        (khtml::Selection::affinity):
        (khtml::Selection::setBase):
        (khtml::Selection::setExtent):
        (khtml::Selection::setStart):
        (khtml::Selection::setEnd):
        (khtml::Selection::base):
        (khtml::Selection::extent):
        (khtml::Selection::start):
        (khtml::Selection::end):
        (khtml::Selection::isNone):
        (khtml::Selection::isCaret):
        (khtml::Selection::isRange):
        (khtml::Selection::isCaretOrRange):
        (khtml::Selection::isBaseFirst):
        (khtml::operator==):
        (khtml::operator!=):
        * khtml/editing/SelectionController.cpp:
        (khtml::SelectionController::SelectionController):
        (khtml::SelectionController::operator=):
        (khtml::SelectionController::moveTo):
        (khtml::SelectionController::setModifyBias):
        (khtml::SelectionController::modifyExtendingRightForward):
        (khtml::SelectionController::modifyMovingRightForward):
        (khtml::SelectionController::modifyExtendingLeftBackward):
        (khtml::SelectionController::modifyMovingLeftBackward):
        (khtml::SelectionController::modify):
        (khtml::SelectionController::expandUsingGranularity):
        (khtml::SelectionController::xPosForVerticalArrowNavigation):
        (khtml::SelectionController::clear):
        (khtml::SelectionController::setBase):
        (khtml::SelectionController::setExtent):
        (khtml::SelectionController::toString):
        (khtml::SelectionController::getRangeAt):
        (khtml::SelectionController::frame):
        (khtml::SelectionController::collapseToEnd):
        (khtml::SelectionController::collapseToStart):
        (khtml::SelectionController::layout):
        (khtml::SelectionController::caretRect):
        (khtml::SelectionController::needsCaretRepaint):
        (khtml::SelectionController::paintCaret):
        (khtml::SelectionController::debugRenderer):
        (khtml::SelectionController::formatForDebugger):
        (khtml::SelectionController::showTree):
        * khtml/editing/SelectionController.h:
        (khtml::SelectionController::state):
        (khtml::SelectionController::affinity):
        (khtml::SelectionController::base):
        (khtml::SelectionController::extent):
        (khtml::SelectionController::start):
        (khtml::SelectionController::end):
        (khtml::SelectionController::isNone):
        (khtml::SelectionController::isCaret):
        (khtml::SelectionController::isRange):
        (khtml::SelectionController::isCaretOrRange):
        (khtml::SelectionController::toRange):
        (khtml::SelectionController::baseNode):
        (khtml::SelectionController::extentNode):
        (khtml::SelectionController::baseOffset):
        (khtml::SelectionController::extentOffset):
        (khtml::SelectionController::anchorNode):
        (khtml::SelectionController::anchorOffset):
        (khtml::SelectionController::focusNode):
        (khtml::SelectionController::focusOffset):
        (khtml::operator==):
        * khtml/editing/apply_style_command.cpp:
        (khtml::ApplyStyleCommand::updateStartEnd):
        * khtml/editing/break_blockquote_command.cpp:
        (khtml::BreakBlockquoteCommand::doApply):
        * khtml/editing/delete_selection_command.cpp:
        (khtml::DeleteSelectionCommand::initializePositionData):
        (khtml::DeleteSelectionCommand::handleGeneralDelete):
        (khtml::DeleteSelectionCommand::doApply):
        * khtml/editing/insert_line_break_command.cpp:
        (khtml::InsertLineBreakCommand::doApply):
        * khtml/editing/insert_paragraph_separator_command.cpp:
        (khtml::InsertParagraphSeparatorCommand::doApply):
        * khtml/editing/insert_text_command.cpp:
        (khtml::InsertTextCommand::input):
        * khtml/editing/move_selection_command.cpp:
        (khtml::MoveSelectionCommand::doApply):
        * khtml/editing/replace_selection_command.cpp:
        (khtml::ReplaceSelectionCommand::doApply):
        (khtml::ReplaceSelectionCommand::completeHTMLReplacement):
        * khtml/editing/typing_command.cpp:
        (khtml::TypingCommand::deleteKeyPressed):
        (khtml::TypingCommand::forwardDeleteKeyPressed):
        (khtml::TypingCommand::markMisspellingsAfterTyping):
        * khtml/xml/DocumentImpl.cpp:
        (DocumentImpl::updateSelection):
        * kwq/KWQAccObject.mm:
        (-[KWQAccObject accessibilityAttributeValue:]):
        (-[KWQAccObject doAXTextMarkerRangeForLine:]):
        * kwq/KWQRenderTreeDebug.cpp:
        (writeSelection):
        * page/Frame.cpp:
        (Frame::selectContentsOfNode):
        (Frame::shouldChangeSelection):
        (Frame::computeAndSetTypingStyle):
        (Frame::applyStyle):
        (Frame::applyParagraphStyle):
        (Frame::selectFrameElementInParentIfFullySelected):
        (Frame::revealSelection):
        (Frame::centerSelectionInVisibleArea):
        (Frame::styleForSelectionStart):
        
        * <a few other files, including editing ones>: Added includes since Selection.h and
        SelectionController.h now include fewer things.

2006-01-15  Mitz Pettel  <opendarwin.org@mitzpettel.com>

        Test: fast/text/whitespace/pre-wrap-overflow-selection.html
        
        Reviewed by Darin.

        - fix http://bugs.webkit.org/show_bug.cgi?id=5619
          CSS2: pre-wrap has overflow/selection problems

        * khtml/rendering/InlineTextBox.cpp:
        (khtml::InlineTextBox::selectionRect): Clip selection rect to the text box
        (khtml::InlineTextBox::paintSelection): Clip selection painting to the text box.
        * khtml/rendering/bidi.cpp: (khtml::RenderBlock::computeHorizontalPositionsForLine):
        Remove code that re-added border width, since it is already included in availableWidth.

2006-01-15  Darin Adler  <darin@apple.com>

        Reviewed by Anders.

        - fix regression in duplicate ID layout test

        * khtml/xml/DocumentImpl.cpp:
        (DocumentImpl::getElementById): Change to take AtomicString, so we can use
        the string pointer as a hash key and not worry about ref'ing the pointer or
        about object lifetime since the string will be stored for the lifetime of the
        ID attribute. Also update for the counted set formerly named m_idCount to use
        its new name, m_duplicateIds.
        (DocumentImpl::addElementById): Ditto.
        (DocumentImpl::removeElementById): Ditto.
        (DocumentImpl::recalcStyleSelector): Pass a DOMStringImpl* (see below).
        * khtml/xml/DocumentImpl.h: Change functions to take AtomicString.

        * kcanvas/KCanvasFilters.cpp: (getFilterById): Use AtomicString.
        * kcanvas/KCanvasFilters.h: Ditto.
        * kcanvas/KCanvasResources.cpp:
        (getResourceById): Ditto.
        (getMarkerById): Ditto.
        (getClipperById): Ditto.
        (getMaskerById): Ditto.
        (getPaintServerById): Ditto.
        * kcanvas/KCanvasResources.h: Ditto.
        * khtml/ecma/kjs_window.cpp: (KJS::Window::getOwnPropertySlot): Ditto.
        * khtml/html/HTMLLabelElementImpl.cpp:
        (DOM::HTMLLabelElementImpl::formElement): Ditto.
        * khtml/xml/NodeListImpl.cpp: (DOM::NodeListImpl::itemById): Ditto.
        * khtml/xml/NodeListImpl.h: Ditto. Also removed unnecessary "virtual".

        * khtml/ecma/kjs_css.cpp:
        (KJS::DOMStyleSheetList::nameGetter): Pass a DOMStringImpl*, which gets
        converted to an AtomicString implicitly, rather than a DOMString, which
        does not. (But that's a crazy rule -- we should change this around long term.)
        (KJS::DOMStyleSheetList::getOwnPropertySlot): Ditto.
        * khtml/ecma/kjs_dom.cpp:
        (KJS::DOMNodeList::nameGetter): Ditto.
        (KJS::DOMNodeList::getOwnPropertySlot): Ditto.
        (KJS::DOMDocumentProtoFunc::callAsFunction): Ditto.

        - Merge khtml, DOM, and KDOM into one big namespace, WebCore.

        * WebCorePrefix.h: Use defined to map the old namespace names to WebCore.
        Now that this is done in the prefix, we can start actually calling it by
        that name, phase out the old names, then remove the defines.

        - other changes

        * khtml/xml/DocumentTypeImpl.cpp: Converted tabs to spaces.
        * khtml/xml/dom2_eventsimpl.cpp: Ditto.

2006-01-15  Alexander Kellett  <lypanov@kde.org>

        Reviewed and landed by Anders.

        http://bugs.webkit.org/show_bug.cgi?id=6553
        Remove KCanvasCommonArgs and pass around RenderPath objects instead.

        * WebCore.xcodeproj/project.pbxproj:
        * kcanvas/KCanvasCreator.h:
        * kcanvas/KCanvasItem.cpp:
        * kcanvas/KCanvasItem.h:
        * kcanvas/KCanvasTypes.h: Removed.
        * kcanvas/device/KRenderingDevice.cpp:
        * kcanvas/device/KRenderingDevice.h:
        * kcanvas/device/KRenderingFillPainter.h:
        * kcanvas/device/KRenderingPaintServer.h:
        * kcanvas/device/KRenderingStrokePainter.h:
        * kcanvas/device/quartz/KCanvasItemQuartz.mm:
        (KCanvasItemQuartz::paint):
        * kcanvas/device/quartz/KRenderingDeviceQuartz.h:
        * kcanvas/device/quartz/KRenderingPaintServerGradientQuartz.mm:
        (drawShadingWithStyle):
        (KRenderingPaintServerLinearGradientQuartz::draw):
        (KRenderingPaintServerRadialGradientQuartz::draw):
        * kcanvas/device/quartz/KRenderingPaintServerQuartz.h:
        * kcanvas/device/quartz/KRenderingPaintServerQuartz.mm:
        (KRenderingPaintServerSolidQuartz::draw):
        (KRenderingPaintServerPatternQuartz::draw):
        (KRenderingPaintServerImageQuartz::draw):
        * ksvg2/misc/KCanvasRenderingStyle.cpp:
        * ksvg2/svg/SVGPatternElementImpl.h:

2006-01-15  Darin Adler  <darin@apple.com>

        Reviewed by Hyatt.

        - fix http://bugs.webkit.org/show_bug.cgi?id=6528
          remove all use of QDict from WebCore

        I ran performance tests and the change results in a slight improvement.

        * bridge/mac/MacFrame.h: Removed include of KWQDict.h. Changed didTellBridgeAboutLoad
        and haveToldBridgeAboutLoad functions to take DOMString instead of QString. Changed
        urlsBridgeKnowsAbout from a QDict to a HashMap.
        * bridge/mac/MacFrame.mm:
        (MacFrame::didTellBridgeAboutLoad): Updated to use QDict and DOMString.
        (MacFrame::haveToldBridgeAboutLoad): Ditto.

        * khtml/editing/jsediting.h: Removed include of qdict.h.

        * khtml/rendering/render_frames.cpp: Removed include of qdict.h. Put file inside the
        khtml namespace instead of just using the namespace. Changed tabs to spaces.
        (khtml::RenderPartObject::updateWidget): Changed the local variable uniqueParamNames
        to be a HashSet instead of a QDict.

        * khtml/xml/DocumentImpl.h: Removed include of qdict.h, changed m_elementsById, m_idCount,
        and m_elementsByAccessKey to use HashMap and HashCountedSet instead of QDict.
        * khtml/xml/DocumentImpl.cpp: Changed tabs to spaces.
        (DocumentImpl::getElementById): Updated to use HashMap for m_elementsById and HashCountedSet
        for m_idCount.
        (DocumentImpl::addElementById): Ditto. Remove code to clear m_accessKeyDictValid,
        since setDocumentChanged already takes care of that.
        (DocumentImpl::removeElementById): Ditto.
        (DocumentImpl::getElementByAccessKey): Updated to use HashMap for m_elementsByAccessKey.
        (DocumentImpl::setDocumentChanged): Rearranged to do a couple fewer branches. Clear out
        the m_elementsByAccessKey map when clearing m_accessKeyMapValid to avoid keeping stale
        pointers around.

        * ksvg2/svg/SVGDocumentImpl.cpp: Removed include of q3dict.h.

        * WebCore.vcproj/WebCore/WebCore.vcproj: Removed obsolete QDict sources.
        * WebCore.xcodeproj/project.pbxproj: Ditto.

        * ForwardingHeaders/q3dict.h: Removed.
        * ForwardingHeaders/qdict.h: Removed.
        * kwq/KWQDict.h: Removed.
        * kwq/KWQDictImpl.cpp: Removed.
        * kwq/KWQDictImpl.h: Removed.

        * WebCore+SVG/SVGNamesWrapper.cpp: Touched this file just so I could build again.

        * kwq/KWQKURL.h: Removed unused canonicalURL, _path, _user, _pass, and _host functions.
        * kwq/KWQKURL.mm: Changed tabs to spaces, removed unused functions, replaced NULL with 0.

        * kwq/KWQLoader.mm: Changed tabs to spaces.
        (KWQServeRequest): Removed QString conversion from call to didTellBridgeAboutLoad.
        (KWQServeSynchronousRequest): Ditto.
        (KWQCheckCacheObjectStatus): Ditto. Same for haveToldBridgeAboutLoad.

        * loader/Cache.h: Removed include of qdict.h. Changed declaration of the LRUList struct
        to just be a forward declaration. Changed tabs to spaces. Removed the static data member
        called "cache". Added a static member function called get. Renamed removeCacheEntry to remove.
        * loader/Cache.cpp: Put file inside the khtml namespace instead of just using the
        namespace. Changed tabs to spaces. Changed the main cache itself to a HashMap and
        made it a static variable local to this file instead of a static data member of Cache
        to hide its type from the header. Also made the LRUList type private to this file.
        (khtml::Cache::init): Create a HashMap instead of a QDict.
        (khtml::Cache::clear): To replace the use of setAutoDelete, write a loop to delete all the
        items in the cache map.
        (khtml::Cache::requestImage): Change code to use HashMap functions instead of QDict.
        (khtml::Cache::requestStyleSheet): Ditto.
        (khtml::Cache::preloadStyleSheet): Ditto.
        (khtml::Cache::requestScript): Ditto.
        (khtml::Cache::preloadScript): Ditto.
        (khtml::Cache::requestXSLStyleSheet): Ditto.
        (khtml::Cache::requestXBLDocument): Ditto.
        (khtml::Cache::removeCacheEntry): Ditto.
        (khtml::Cache::FastLog2): Fixed this for 64-bit compiles.
        (khtml::Cache::getStatistics): Ditto.
        (khtml::Cache::flushAll): Ditto.
        (khtml::Cache::get): Added. Function used by the loader.

        * loader/CachedObject.h: Removed include of qdict.h.

        * loader/DocLoader.h: Removed include of qdict.h.
        * loader/DocLoader.cpp: (khtml::DocLoader::needReload): Changed to use new get function of
        Cache instead of getting at the map directly. Also changed call to removeCacheEntry
        to remove because it was renamed.

        * loader/CachedImage.cpp: (khtml::CachedImage::data): Changed call to removeCacheEntry
        to remove because it was renamed.
        * loader/CachedImageCallback.cpp: (khtml::CachedImageCallback::handleError): Ditto.
        * loader/loader.cpp:
        (khtml::Loader::slotFinished): Ditto.
        (khtml::Loader::cancelRequests): Ditto.

2006-01-15  Alexander Kellett  <lypanov@kde.org>

        Reviewed by eseidel.  Landed by eseidel.

        <mask> inside <defs> crashes Safari.
        http://bugs.webkit.org/show_bug.cgi?id=6548
        
        Test: svg/custom/mask-inside-defs.svg

        * ksvg2/svg/SVGMaskElementImpl.cpp:
        (KSVG::SVGMaskElementImpl::drawMaskerContent):

2006-01-15  Eric Seidel  <eseidel@apple.com>

        Reviewed by mjs.

        Add basic <tspan> support using RenderInline.
        http://bugs.webkit.org/show_bug.cgi?id=6428
        Also fix <text transform=""> while we're at it.
        http://bugs.webkit.org/show_bug.cgi?id=6552
        
        Covered by several existing tests.

        * ksvg2/svg/SVGGradientElementImpl.cpp:
        (SVGGradientElementImpl::parseMappedAttribute): code cleanup
        * ksvg2/svg/SVGPatternElementImpl.cpp:
        (SVGPatternElementImpl::parseMappedAttribute): code cleanup
        * ksvg2/svg/SVGStyledTransformableElementImpl.cpp:
        (SVGStyledTransformableElementImpl::parseMappedAttribute): cleanup
        * ksvg2/svg/SVGTSpanElementImpl.cpp:
        (SVGTSpanElementImpl::childShouldCreateRenderer): added.
        (SVGTSpanElementImpl::createRenderer): added.
        * ksvg2/svg/SVGTSpanElementImpl.h:
        (KSVG::SVGTSpanElementImpl::rendererIsNeeded): added.
        * ksvg2/svg/SVGTextElementImpl.cpp:
        (SVGTextElementImpl::transform): added.
        (SVGTextElementImpl::localMatrix): added.
        (SVGTextElementImpl::parseMappedAttribute): support transform.
        (SVGTextElementImpl::updateLocalTransform): added.
        (SVGTextElementImpl::attach): added.
        (SVGTextElementImpl::childShouldCreateRenderer): allow tspan.
        * ksvg2/svg/SVGTextElementImpl.h:
        * ksvg2/svg/SVGTransformableImpl.cpp:
        (SVGTransformableImpl::parseTransformAttribute): code cleanup.
        * ksvg2/svg/SVGTransformableImpl.h:

2006-01-14  David Hyatt  <hyatt@apple.com>

        Move arena.cpp/.h out of khtml/misc and into platform/Arena.cpp/h.  Also removed another unused
        header, khtmldata.h.

        * WebCore.xcodeproj/project.pbxproj:
        * khtml/misc/arena.cpp: Removed.
        * khtml/misc/arena.h: Removed.
        * khtml/misc/khtmldata.h: Removed.
        * khtml/rendering/render_arena.h:
        * platform/Arena.cpp: Added.
        * platform/Arena.h: Added.

2006-01-14  David Hyatt  <hyatt@apple.com>

        Rename TokenizerString to SegmentedString and place it in the platform directory.

        * WebCore.xcodeproj/project.pbxproj:
        * khtml/html/htmltokenizer.cpp:
        (khtml::HTMLTokenizer::processListing):
        (khtml::HTMLTokenizer::parseSpecial):
        (khtml::HTMLTokenizer::scriptHandler):
        (khtml::HTMLTokenizer::scriptExecution):
        (khtml::HTMLTokenizer::parseComment):
        (khtml::HTMLTokenizer::parseServer):
        (khtml::HTMLTokenizer::parseProcessingInstruction):
        (khtml::HTMLTokenizer::parseText):
        (khtml::HTMLTokenizer::parseEntity):
        (khtml::HTMLTokenizer::parseTag):
        (khtml::HTMLTokenizer::write):
        (khtml::HTMLTokenizer::timerEvent):
        (khtml::HTMLTokenizer::notifyFinished):
        (khtml::HTMLTokenizer::setSrc):
        * khtml/html/htmltokenizer.h:
        * khtml/misc/stringit.cpp: Removed.
        * khtml/misc/stringit.h: Removed.
        * khtml/xml/xml_tokenizer.cpp:
        (khtml::XMLTokenizer::write):
        * khtml/xml/xml_tokenizer.h:
        * platform/SegmentedString.cpp: Added.
        (WebCore::SegmentedString::length):
        (WebCore::SegmentedString::clear):
        (WebCore::SegmentedString::append):
        (WebCore::SegmentedString::prepend):
        (WebCore::SegmentedString::advanceSubstring):
        (WebCore::SegmentedString::toString):
        * platform/SegmentedString.h: Added.
        (WebCore::SegmentedSubstring::SegmentedSubstring):
        (WebCore::SegmentedString::SegmentedString):

2006-01-14  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by Eric.

        - added bridging infrastructure for Page class
        
        The Page class itself is coming very soon.

        * WebCore.exp: Export WebCorePageBridge.
        * WebCore.xcodeproj/project.pbxproj: Add new files.
        * bridge/mac/WebCorePageBridge.h: Added.
        * bridge/mac/WebCorePageBridge.mm: Added.
        (-[WebCorePageBridge initWithMainFrame:]): Added new class, obvious
        (-[WebCorePageBridge dealloc]): ditto
        (-[WebCorePageBridge mainFrame]): ditto
        * bridge/mac/WebCoreFrameBridge.mm:
        (-[WebCoreFrameBridge init]): Fixed style a bit.

2006-01-14  David Hyatt  <hyatt@apple.com>

        Win32 finds more khtml namespace issues with the movement
        of Shared that gcc missed.

        * WebCore.vcproj/WebCore/WebCore.vcproj:
        * khtml/xml/dom2_rangeimpl.cpp:
        (DOM::RangeImpl::text):
        * khtml/xml/dom_position.cpp:

2006-01-14  David Hyatt  <hyatt@apple.com>

        Move shared.h from khtml/misc into the platform directory and move it into the WebCore namespace.

        Reviewed by eseidel

        * ForwardingHeaders/kdom/Shared.h: Removed.
        * WebCore+SVG/DOMList.h:
        * WebCore+SVG/KDOMHeaders.h:
        * WebCore+SVG/RGBColorImpl.h:
        * WebCore.xcodeproj/project.pbxproj:
        * bridge/mac/WebCoreFrameBridge.mm:
        * kcanvas/KCanvasPath.h:
        * khtml/css/css_base.h:
        * khtml/css/css_ruleimpl.h:
        * khtml/css/css_stylesheetimpl.h:
        * khtml/css/css_valueimpl.h:
        * khtml/dom/dom2_events.h:
        * khtml/dom/dom2_traversal.h:
        * khtml/ecma/kjs_dom.h:
        * khtml/ecma/kjs_window.cpp:
        * khtml/ecma/xmlserializer.cpp:
        (KJS::XMLSerializerProtoFunc::callAsFunction):
        * khtml/editing/SelectionController.h:
        * khtml/editing/edit_command.h:
        * khtml/editing/htmlediting.h:
        * khtml/editing/visible_position.h:
        * khtml/html/HTMLOptionsCollectionImpl.h:
        * khtml/html/html_miscimpl.h:
        * khtml/misc/shared.h: Removed.
        * khtml/rendering/render_line.h:
        * khtml/rendering/render_style.h:
        * khtml/xml/DOMImplementationImpl.h:
        * khtml/xml/DocumentImpl.h:
        * khtml/xml/NamedNodeMapImpl.h:
        * khtml/xml/NodeImpl.h:
        * khtml/xml/NodeListImpl.h:
        * khtml/xml/dom2_eventsimpl.h:
        * khtml/xml/dom2_rangeimpl.h:
        * khtml/xml/dom2_traversalimpl.h:
        * khtml/xml/dom2_viewsimpl.h:
        * khtml/xml/dom_elementimpl.h:
        * khtml/xml/dom_qname.h:
        * khtml/xml/dom_stringimpl.h:
        * khtml/xsl/xslt_processorimpl.h:
        * ksvg2/css/SVGRenderStyle.cpp:
        (SVGRenderStyle::SVGRenderStyle):
        * ksvg2/css/SVGRenderStyle.h:
        * ksvg2/css/SVGRenderStyleDefs.cpp:
        (StyleFillData::StyleFillData):
        (StyleStrokeData::StyleStrokeData):
        (StyleStopData::StyleStopData):
        (StyleClipData::StyleClipData):
        (StyleMaskData::StyleMaskData):
        (StyleMarkerData::StyleMarkerData):
        (StyleMiscData::StyleMiscData):
        * ksvg2/css/SVGRenderStyleDefs.h:
        * ksvg2/svg/SVGAngleImpl.cpp:
        (SVGAngleImpl::SVGAngleImpl):
        * ksvg2/svg/SVGAngleImpl.h:
        * ksvg2/svg/SVGAnimatedBooleanImpl.cpp:
        (SVGAnimatedBooleanImpl::SVGAnimatedBooleanImpl):
        * ksvg2/svg/SVGAnimatedBooleanImpl.h:
        * ksvg2/svg/SVGAnimatedEnumerationImpl.cpp:
        (SVGAnimatedEnumerationImpl::SVGAnimatedEnumerationImpl):
        * ksvg2/svg/SVGAnimatedEnumerationImpl.h:
        * ksvg2/svg/SVGAnimatedIntegerImpl.cpp:
        (SVGAnimatedIntegerImpl::SVGAnimatedIntegerImpl):
        * ksvg2/svg/SVGAnimatedIntegerImpl.h:
        * ksvg2/svg/SVGAnimatedLengthListImpl.h:
        * ksvg2/svg/SVGAnimatedNumberImpl.cpp:
        (SVGAnimatedNumberImpl::SVGAnimatedNumberImpl):
        * ksvg2/svg/SVGAnimatedNumberImpl.h:
        * ksvg2/svg/SVGAnimatedNumberListImpl.h:
        * ksvg2/svg/SVGAnimatedPreserveAspectRatioImpl.h:
        * ksvg2/svg/SVGAnimatedTemplate.h:
        (KSVG::SVGAnimatedTemplate::SVGAnimatedTemplate):
        * ksvg2/svg/SVGAnimatedTransformListImpl.h:
        * ksvg2/svg/SVGDocumentImpl.cpp:
        * ksvg2/svg/SVGLengthImpl.cpp:
        (SVGLengthImpl::SVGLengthImpl):
        * ksvg2/svg/SVGLengthImpl.h:
        * ksvg2/svg/SVGMatrixImpl.cpp:
        (SVGMatrixImpl::SVGMatrixImpl):
        * ksvg2/svg/SVGMatrixImpl.h:
        * ksvg2/svg/SVGNumberImpl.cpp:
        (SVGNumberImpl::SVGNumberImpl):
        * ksvg2/svg/SVGNumberImpl.h:
        * ksvg2/svg/SVGPathSegImpl.cpp:
        (SVGPathSegImpl::SVGPathSegImpl):
        * ksvg2/svg/SVGPathSegImpl.h:
        * ksvg2/svg/SVGPointImpl.cpp:
        (SVGPointImpl::SVGPointImpl):
        * ksvg2/svg/SVGPointImpl.h:
        * ksvg2/svg/SVGPreserveAspectRatioImpl.cpp:
        (SVGPreserveAspectRatioImpl::SVGPreserveAspectRatioImpl):
        * ksvg2/svg/SVGPreserveAspectRatioImpl.h:
        * ksvg2/svg/SVGRectImpl.cpp:
        (SVGRectImpl::SVGRectImpl):
        * ksvg2/svg/SVGRectImpl.h:
        * ksvg2/svg/SVGTransformImpl.cpp:
        (SVGTransformImpl::SVGTransformImpl):
        * ksvg2/svg/SVGTransformImpl.h:
        * kwq/DOM-CSS.mm:
        * kwq/KWQFontMetrics.mm:
        * kwq/KWQMapImpl.cpp:
        * kwq/KWQRegExp.cpp:
        * kwq/KWQValueListImpl.cpp:
        (KWQValueListImpl::KWQValueListPrivate::KWQValueListPrivate):
        * kwq/KWQVariant.cpp:
        * platform/ArrayImpl.h:
        * platform/Shared.h: Added.

2006-01-14  Eric Seidel  <eseidel@apple.com>

        Reviewed by darin.

        Implement basic <foreignObject> support:
        http://bugs.webkit.org/show_bug.cgi?id=5974
        Also fixed <image> to support clip, filter and mask
        Updated <text> to support hit testing and clip, filter, mask
        
        Tests:
        * svg/custom/image-with-transform-clip-filter.svg
        * svg/custom/foreign-object-skew.svg

        * WebCore.xcodeproj/project.pbxproj: added files.
        * kcanvas/RenderForeignObject.cpp: Added.
        (RenderForeignObject::RenderForeignObject):
        (RenderForeignObject::translationForAttributes):
        (RenderForeignObject::paint):
        (RenderForeignObject::nodeAtPoint):
        * kcanvas/RenderForeignObject.h: Added.
        (RenderForeignObject::renderName): added.
        (RenderForeignObject::localTransform): added.
        (RenderForeignObject::setLocalTransform): added.
        * kcanvas/RenderSVGImage.cpp:
        (RenderSVGImage::paint): added filter, clip mask support
        * kcanvas/RenderSVGImage.h:
        (KSVG::RenderSVGImage::localTransform): added.
        (KSVG::RenderSVGImage::setLocalTransform): added.
        * kcanvas/RenderSVGText.cpp:
        (RenderSVGText::translationTopToBaseline): return qmatrix
        (RenderSVGText::translationForAttributes): return qmatrix
        (RenderSVGText::paint): added filter, clip, mask support
        (RenderSVGText::nodeAtPoint): added.
        * kcanvas/RenderSVGText.h:
        (RenderSVGText::localTransform): added.
        (RenderSVGText::setLocalTransform): added.
        * khtml/rendering/render_object.h:
        (khtml::RenderObject::setLocalTransform): added assert(0)
        * ksvg2/css/svg.css: added foreignObject display: block
        * ksvg2/svg/SVGForeignObjectElementImpl.cpp: Added.
        (KSVG::SVGForeignObjectElementImpl::SVGForeignObjectElementImpl):
        (KSVG::SVGForeignObjectElementImpl::~SVGForeignObjectElementImpl):
        (KSVG::SVGForeignObjectElementImpl::x):
        (KSVG::SVGForeignObjectElementImpl::y):
        (KSVG::SVGForeignObjectElementImpl::width):
        (KSVG::SVGForeignObjectElementImpl::height):
        (KSVG::SVGForeignObjectElementImpl::parseMappedAttribute):
        (KSVG::SVGForeignObjectElementImpl::createRenderer):
        (KSVG::SVGForeignObjectElementImpl::childShouldCreateRenderer):
        * ksvg2/svg/SVGForeignObjectElementImpl.h: Added.
        (KSVG::SVGForeignObjectElementImpl::isValid): added
        (KSVG::SVGForeignObjectElementImpl::rendererIsNeeded): added
        * ksvg2/svg/SVGImageElementImpl.cpp:
        (SVGImageElementImpl::attach): fixed static_cast
        * ksvg2/svg/SVGLocatableImpl.cpp:
        (SVGLocatableImpl::nearestViewportElement): foreignObject support
        (SVGLocatableImpl::farthestViewportElement): foreignObject support
        * ksvg2/svg/svgtags.in: added foreignObject
        * kwq/KWQWMatrix.cpp:
        (QWMatrix::isInvertible): fixed

2006-01-14  Eric Seidel  <eseidel@apple.com>

        Fix build break. (oops!)

        * khtml/xml/xml_tokenizer.cpp:
        (khtml::XMLTokenizer::XMLTokenizer):

2006-01-14  Eric Seidel  <eseidel@apple.com>

        Reviewed by mjs.

        Initialize m_isXHTMLDocument(false) properly.
        No tests possible, random failure only.

        * khtml/xml/xml_tokenizer.cpp:
        (khtml::XMLTokenizer::XMLTokenizer):

2006-01-15  Alexander Kellett  <lypanov@kde.org>

        Reviewed by eseidel.  Landed by eseidel.

        Add support for svg css property writing-mode.
        
        No tests possible.
        
        * ksvg2/css/SVGCSSStyleSelector.cpp:
        (KDOM::CSSStyleSelector::applySVGProperty):
        * ksvg2/css/SVGRenderStyle.h:
        (KSVG::SVGRenderStyle::InheritedFlags::):
        (KSVG::SVGRenderStyle::setBitDefaults):
        * ksvg2/css/SVGRenderStyleDefs.h:
        (KSVG::):

2006-01-14  Alexander Kellett  <lypanov@kde.org>

        Reviewed by eseidel.  Landed by eseidel.

        Refactor out cases of KCanvasRenderingStyle used as an instance to
        store the current style. Temporarily unify the data passing via 
        KCanvasCommonArgs.
        
        No tests needed, no functional change.

        * kcanvas/KCanvasItem.cpp: Removing override of setStyle used to hook
        into KCanvasRenderingStyle::updateStyle.
        (RenderPath::commonArgs): 
        * kcanvas/KCanvasItem.h:
        * kcanvas/KCanvasTreeDebug.cpp:
        (writeStyle):
        * kcanvas/KCanvasTypes.h:
        * kcanvas/device/KRenderingDevice.cpp:
        (KCanvasCommonArgs::KCanvasCommonArgs):
        (KCanvasCommonArgs::renderStyle):
        (KCanvasCommonArgs::setRenderStyle):
        (KCanvasCommonArgs::renderPath):
        (KCanvasCommonArgs::setRenderPath):
        * kcanvas/device/quartz/KCanvasItemQuartz.mm:
        (KCanvasItemQuartz::paint):
        (KCanvasItemQuartz::bboxForPath):
        (KCanvasItemQuartz::hitsPath):
        * kcanvas/device/quartz/KRenderingPaintServerGradientQuartz.mm:
        (drawShadingWithStyle):
        (KRenderingPaintServerLinearGradientQuartz::draw):
        (KRenderingPaintServerRadialGradientQuartz::draw):
        * kcanvas/device/quartz/KRenderingPaintServerQuartz.mm:
        (KRenderingPaintServerSolidQuartz::draw):
        (KRenderingPaintServerPatternQuartz::draw):
        * kcanvas/device/quartz/QuartzSupport.h:
        * kcanvas/device/quartz/QuartzSupport.mm:
        (applyStrokeStyleToContext):
        * ksvg2/misc/KCanvasRenderingStyle.cpp: Remove overrideFillPaintServer
        and overrideStrokePaintServer hacks and make most other methods
        static, remove most instance variables.
        (KCanvasRenderingStyle::KCanvasRenderingStyle):
        (KCanvasRenderingStyle::isFilled):
        (KCanvasRenderingStyle::fillPaintServer):
        (KCanvasRenderingStyle::isStroked):
        (KCanvasRenderingStyle::strokePaintServer):
        (KCanvasRenderingStyle::strokePainter): Merged stroke logic in from
        updateStyle.
        (KCanvasRenderingStyle::fillPainter): Merged fill logic in from
        updateStyle.
        * ksvg2/misc/KCanvasRenderingStyle.h:

2006-01-14  David Hyatt  <hyatt@apple.com>

        Move loader_client.h to CachedObjectClient.h.

        * WebCore.xcodeproj/project.pbxproj:
        * khtml/css/css_ruleimpl.h:
        * khtml/css/css_valueimpl.h:
        * khtml/ecma/kjs_html.h:
        * khtml/html/html_documentimpl.h:
        * khtml/html/html_headimpl.h:
        * khtml/html/htmltokenizer.h:
        * khtml/rendering/render_object.h:
        * khtml/xbl/xbl_binding.h:
        * khtml/xml/dom_xmlimpl.h:
        * khtml/xsl/xsl_stylesheetimpl.h:
        * loader/CachedObject.h:
        * loader/CachedObjectClient.h: Added.
        * loader/CachedObjectClientWalker.h:
        * loader/loader_client.h: Removed.

2006-01-14  Anders Carlsson  <andersca@mac.com>

        Reviewed by Eric and Hyatt.

        - http://bugs.webkit.org/show_bug.cgi?id=6544
        Remove unused headers.

        * ForwardingHeaders/kglobalsettings.h: Removed.
        * ForwardingHeaders/kimageio.h: Removed.
        * ForwardingHeaders/qasyncio.h: Removed.
        * ForwardingHeaders/qstylesheet.h: Removed.
        * kwq/KWQAsyncIO.h: Removed.
        * kwq/KWQKGlobalSettings.h: Removed.
        * kwq/KWQKImageIO.h: Removed.
        * kwq/KWQStyleSheet.h: Removed.
        
        * WebCore.xcodeproj/project.pbxproj:
        * khtml/ecma/kjs_window.cpp:
        * khtml/html/html_documentimpl.cpp:
        * khtml/xml/DocumentImpl.cpp:
        (DocumentImpl::recalcStyle):        
        * loader/CachedImageCallback.cpp:
        * loader/CachedObject.cpp:
        * page/Frame.cpp:
        * page/FrameView.cpp:
        (KHTMLView::KHTMLView):
        Remove header inclusions
        
2006-01-14  David Hyatt  <hyatt@apple.com>

        Shift the loader-related files out of the khtml/misc directory and into a new loader directory.
        Remove the use of paths when including files from misc.

        * WebCore+SVG/KDOMHeaders.h:
        * WebCore.xcodeproj/project.pbxproj:
        * kcanvas/KCanvasPath.h:
        * khtml/css/css_base.h:
        * khtml/css/css_ruleimpl.cpp:
        * khtml/css/css_ruleimpl.h:
        * khtml/css/css_stylesheetimpl.cpp:
        * khtml/css/css_valueimpl.h:
        * khtml/css/csshelper.cpp:
        * khtml/css/cssparser.cpp:
        * khtml/css/cssstyleselector.cpp:
        * khtml/dom/dom2_events.h:
        * khtml/dom/dom2_traversal.h:
        * khtml/ecma/kjs_dom.h:
        * khtml/ecma/kjs_html.h:
        * khtml/ecma/kjs_window.cpp:
        * khtml/editing/SelectionController.h:
        * khtml/editing/edit_command.h:
        * khtml/editing/visible_position.h:
        * khtml/editing/visible_units.cpp:
        * khtml/html/HTMLOptionsCollectionImpl.h:
        * khtml/html/html_baseimpl.cpp:
        * khtml/html/html_baseimpl.h:
        * khtml/html/html_canvasimpl.h:
        * khtml/html/html_documentimpl.h:
        * khtml/html/html_headimpl.cpp:
        * khtml/html/html_headimpl.h:
        * khtml/html/html_imageimpl.h:
        * khtml/html/html_miscimpl.h:
        * khtml/html/htmltokenizer.h:
        * khtml/misc/Cache.cpp: Removed.
        * khtml/misc/Cache.h: Removed.
        * khtml/misc/CachedCSSStyleSheet.cpp: Removed.
        * khtml/misc/CachedCSSStyleSheet.h: Removed.
        * khtml/misc/CachedImage.cpp: Removed.
        * khtml/misc/CachedImage.h: Removed.
        * khtml/misc/CachedImageCallback.cpp: Removed.
        * khtml/misc/CachedImageCallback.h: Removed.
        * khtml/misc/CachedObject.cpp: Removed.
        * khtml/misc/CachedObject.h: Removed.
        * khtml/misc/CachedObjectClientWalker.cpp: Removed.
        * khtml/misc/CachedObjectClientWalker.h: Removed.
        * khtml/misc/CachedScript.cpp: Removed.
        * khtml/misc/CachedScript.h: Removed.
        * khtml/misc/CachedXBLDocument.cpp: Removed.
        * khtml/misc/CachedXBLDocument.h: Removed.
        * khtml/misc/CachedXSLStyleSheet.cpp: Removed.
        * khtml/misc/CachedXSLStyleSheet.h: Removed.
        * khtml/misc/DocLoader.cpp: Removed.
        * khtml/misc/DocLoader.h: Removed.
        * khtml/misc/Request.cpp: Removed.
        * khtml/misc/Request.h: Removed.
        * khtml/misc/loader.cpp: Removed.
        * khtml/misc/loader.h: Removed.
        * khtml/misc/loader_client.h: Removed.
        * khtml/rendering/render_box.h:
        * khtml/rendering/render_canvasimage.cpp:
        * khtml/rendering/render_form.cpp:
        * khtml/rendering/render_image.cpp:
        * khtml/rendering/render_line.h:
        * khtml/rendering/render_list.cpp:
        * khtml/rendering/render_object.h:
        * khtml/rendering/render_style.h:
        * khtml/rendering/render_table.h:
        * khtml/rendering/table_layout.h:
        * khtml/xbl/xbl_binding.cpp:
        * khtml/xbl/xbl_binding.h:
        * khtml/xml/DOMImplementationImpl.h:
        * khtml/xml/DocumentImpl.cpp:
        * khtml/xml/DocumentImpl.h:
        * khtml/xml/dom2_eventsimpl.h:
        * khtml/xml/dom2_rangeimpl.h:
        * khtml/xml/dom2_traversalimpl.h:
        * khtml/xml/dom2_viewsimpl.h:
        * khtml/xml/dom_elementimpl.h:
        * khtml/xml/dom_nodeimpl.h:
        * khtml/xml/dom_stringimpl.h:
        * khtml/xml/dom_xmlimpl.h:
        * khtml/xml/xml_tokenizer.h:
        * khtml/xsl/xsl_stylesheetimpl.cpp:
        * khtml/xsl/xslt_processorimpl.h:
        * kwq/KWQFontMetrics.mm:
        * kwq/KWQMapImpl.cpp:
        * kwq/KWQRegExp.cpp:
        * kwq/KWQValueListImpl.cpp:
        * kwq/KWQVariant.cpp:
        * loader: Added.
        * loader/Cache.cpp: Added.
        * loader/Cache.h: Added.
        * loader/CachedCSSStyleSheet.cpp: Added.
        * loader/CachedCSSStyleSheet.h: Added.
        * loader/CachedImage.cpp: Added.
        * loader/CachedImage.h: Added.
        * loader/CachedImageCallback.cpp: Added.
        * loader/CachedImageCallback.h: Added.
        * loader/CachedObject.cpp: Added.
        * loader/CachedObject.h: Added.
        * loader/CachedObjectClientWalker.cpp: Added.
        * loader/CachedObjectClientWalker.h: Added.
        * loader/CachedScript.cpp: Added.
        * loader/CachedScript.h: Added.
        * loader/CachedXBLDocument.cpp: Added.
        * loader/CachedXBLDocument.h: Added.
        * loader/CachedXSLStyleSheet.cpp: Added.
        * loader/CachedXSLStyleSheet.h: Added.
        * loader/DocLoader.cpp: Added.
        * loader/DocLoader.h: Added.
        * loader/Request.cpp: Added.
        * loader/Request.h: Added.
        * loader/loader.cpp: Added.
        * loader/loader.h: Added.
        * loader/loader_client.h: Added.
        * page/Frame.cpp:
        * page/FramePrivate.h:
        * page/FrameView.cpp:

2006-01-14  Eric Seidel  <eseidel@apple.com>

        Reviewed by hyatt

        break classes in dom_nodeimpl.* into separate files (one per class)
        http://bugs.webkit.org/show_bug.cgi?id=6543

        * ForwardingHeaders/kdom/core/NodeImpl.h: Removed.
        * WebCore.xcodeproj/project.pbxproj:
        * bridge/mac/MacFrame.h:
        * bridge/mac/WebCoreFrameBridge.mm:
        * khtml/css/css_base.h:
        * khtml/css/css_stylesheetimpl.cpp:
        * khtml/css/css_valueimpl.cpp:
        * khtml/css/css_valueimpl.h:
        * khtml/ecma/kjs_binding.cpp:
        * khtml/ecma/kjs_dom.cpp:
        * khtml/ecma/kjs_dom.h:
        * khtml/ecma/kjs_events.cpp:
        * khtml/ecma/kjs_html.cpp:
        * khtml/ecma/kjs_traversal.cpp:
        * khtml/editing/SelectionController.cpp:
        * khtml/editing/append_node_command.cpp:
        * khtml/editing/htmlediting.cpp:
        * khtml/editing/htmlediting.h:
        * khtml/editing/insert_node_before_command.cpp:
        * khtml/editing/remove_node_attribute_command.h:
        * khtml/editing/remove_node_command.cpp:
        * khtml/editing/remove_node_preserving_children_command.cpp:
        * khtml/editing/set_node_attribute_command.h:
        * khtml/editing/visible_position.cpp:
        * khtml/editing/visible_text.cpp:
        * khtml/html/HTMLOptionElementImpl.cpp:
        * khtml/html/html_headimpl.cpp:
        * khtml/html/htmlparser.cpp:
        * khtml/khtml_events.cpp:
        * khtml/rendering/render_block.cpp:
        * khtml/rendering/render_box.cpp:
        * khtml/rendering/render_flow.cpp:
        * khtml/rendering/render_frames.h:
        * khtml/rendering/render_line.cpp:
        * khtml/rendering/render_object.h:
        * khtml/xml/ChildNodeListImpl.cpp: Added.
        * khtml/xml/ChildNodeListImpl.h: Added.
        * khtml/xml/ContainerNodeImpl.cpp: Added.
        (DOM::ContainerNodeImpl::removeAllChildren):
        (DOM::ContainerNodeImpl::checkSameDocument):
        (DOM::ContainerNodeImpl::getRect):
        (DOM::ContainerNodeImpl::dispatchChildRemovalEvents):
        * khtml/xml/ContainerNodeImpl.h: Added.
        * khtml/xml/DocumentFragmentImpl.cpp:
        * khtml/xml/DocumentFragmentImpl.h:
        * khtml/xml/DocumentImpl.cpp:
        * khtml/xml/DocumentImpl.h:
        (DOM::DocumentImpl::setTextColor):
        * khtml/xml/DocumentTypeImpl.cpp:
        * khtml/xml/DocumentTypeImpl.h:
        * khtml/xml/NameNodeListImpl.cpp: Added.
        * khtml/xml/NameNodeListImpl.h: Added.
        * khtml/xml/NamedNodeMapImpl.h: Added.
        (DOM::NamedNodeMapImpl::NamedNodeMapImpl):
        (DOM::NamedNodeMapImpl::~NamedNodeMapImpl):
        * khtml/xml/NodeImpl.cpp: Added.
        (DOM::TagNodeListImpl::TagNodeListImpl):
        (DOM::TagNodeListImpl::length):
        (DOM::TagNodeListImpl::item):
        (DOM::TagNodeListImpl::nodeMatches):
        (DOM::NodeImpl::getRect):
        * khtml/xml/NodeImpl.h: Added.
        * khtml/xml/NodeListImpl.cpp: Added.
        * khtml/xml/NodeListImpl.h: Added.
        * khtml/xml/dom2_eventsimpl.h:
        * khtml/xml/dom_elementimpl.h:
        * khtml/xml/dom_nodeimpl.cpp: Removed.
        * khtml/xml/dom_nodeimpl.h: Removed.
        * khtml/xml/dom_position.cpp:
        * khtml/xml/dom_textimpl.h:
        * khtml/xml/dom_xmlimpl.cpp:
        * khtml/xml/dom_xmlimpl.h:
        * khtml/xml/xml_tokenizer.cpp:
        * khtml/xsl/xsl_stylesheetimpl.cpp:
        * khtml/xsl/xslt_processorimpl.h:
        * ksvg2/svg/SVGURIReferenceImpl.cpp:
        * kwq/DOM.mm:
        * kwq/DOMHTML.mm:
        * kwq/DOMUtility.mm:
        * kwq/KWQClipboard.h:
        * page/FrameView.cpp:

2006-01-14  David Hyatt  <hyatt@apple.com>

        Convert QMemArray to Array.  QByteArray becomes ByteArray.
        KWQArrayImpl becomes ArrayImpl.

        Reviewed by anders

        * ForwardingHeaders/qmemarray.h: Removed.
        * WebCore.xcodeproj/project.pbxproj:
        * khtml/css/cssstyleselector.h:
        * khtml/ecma/xmlhttprequest.cpp:
        (KJS::XMLHttpRequest::send):
        (KJS::XMLHttpRequest::processSyncLoadResults):
        * khtml/ecma/xmlhttprequest.h:
        * khtml/html/HTMLOptionElementImpl.cpp:
        (DOM::HTMLOptionElementImpl::index):
        * khtml/html/HTMLSelectElementImpl.cpp:
        (DOM::HTMLSelectElementImpl::selectedIndex):
        (DOM::HTMLSelectElementImpl::setSelectedIndex):
        (DOM::HTMLSelectElementImpl::length):
        (DOM::HTMLSelectElementImpl::remove):
        (DOM::HTMLSelectElementImpl::value):
        (DOM::HTMLSelectElementImpl::setValue):
        (DOM::HTMLSelectElementImpl::state):
        (DOM::HTMLSelectElementImpl::restoreState):
        (DOM::HTMLSelectElementImpl::appendFormData):
        (DOM::HTMLSelectElementImpl::optionToListIndex):
        (DOM::HTMLSelectElementImpl::listToOptionIndex):
        (DOM::HTMLSelectElementImpl::reset):
        (DOM::HTMLSelectElementImpl::notifyOptionSelected):
        * khtml/html/HTMLSelectElementImpl.h:
        (DOM::HTMLSelectElementImpl::listItems):
        * khtml/misc/formdata.cpp:
        (khtml::FormData::flatten):
        (khtml::FormData::flattenToString):
        * khtml/misc/formdata.h:
        (khtml::FormDataElement::FormDataElement):
        * khtml/rendering/bidi.cpp:
        (khtml::RenderBlock::layoutInlineChildren):
        * khtml/rendering/render_form.cpp:
        (RenderSelect::updateFromElement):
        (RenderSelect::layout):
        (RenderSelect::slotSelected):
        (RenderSelect::slotSelectionChanged):
        (RenderSelect::updateSelection):
        * khtml/rendering/render_table.cpp:
        (RenderTableSection::addCell):
        (RenderTableSection::setCellWidths):
        * khtml/rendering/render_table.h:
        * khtml/rendering/table_layout.cpp:
        (FixedTableLayout::layout):
        * khtml/rendering/table_layout.h:
        * khtml/xsl/xslt_processorimpl.cpp:
        (DOM::docLoaderFunc):
        * kwq/KWQArrayImpl.cpp: Removed.
        * kwq/KWQArrayImpl.h: Removed.
        * kwq/KWQBuffer.cpp:
        (QBuffer::setBuffer):
        * kwq/KWQBuffer.h:
        (QBuffer::QBuffer):
        (QBuffer::buffer):
        * kwq/KWQCString.cpp:
        (QCString::QCString):
        (QCString::resize):
        (QCString::append):
        * kwq/KWQCString.h:
        * kwq/KWQKURL.mm:
        (findHostnamesInMailToURL):
        (encodeHostnames):
        * kwq/KWQLoader.h:
        * kwq/KWQLoader.mm:
        (KWQServeSynchronousRequest):
        * kwq/KWQMemArray.h: Removed.
        * kwq/KWQPixmap.h:
        * kwq/KWQPixmap.mm:
        (QPixmap::QPixmap):
        (QPixmap::receivedData):
        * kwq/KWQString.h:
        * kwq/KWQString.mm:
        (QString::QString):
        * kwq/KWQTextCodec.cpp:
        (QTextCodec::toUnicode):
        * kwq/KWQTextCodec.h:
        * kwq/KWQTextStream.cpp:
        (QTextStream::QTextStream):
        * kwq/KWQTextStream.h:
        * page/Frame.h:
        * platform/Array.h: Added.
        (WebCore::Array::Array):
        (WebCore::Array::duplicate):
        (WebCore::Array::assign):
        (WebCore::Array::operator==):
        (WebCore::Array::operator!=):
        * platform/ArrayImpl.cpp: Added.
        (WebCore::ArrayImpl::ArrayPrivate::ArrayPrivate):
        (WebCore::ArrayImpl::ArrayPrivate::~ArrayPrivate):
        (WebCore::ArrayImpl::ArrayImpl):
        (WebCore::ArrayImpl::~ArrayImpl):
        (WebCore::ArrayImpl::operator=):
        (WebCore::ArrayImpl::data):
        (WebCore::ArrayImpl::resize):
        (WebCore::ArrayImpl::duplicate):
        (WebCore::ArrayImpl::detach):
        (WebCore::ArrayImpl::fill):
        (WebCore::ArrayImpl::operator==):
        * platform/ArrayImpl.h: Added.
        (WebCore::ArrayImpl::size):
        * platform/IntPointArray.cpp:
        (IntPointArray::setPoint):
        * platform/IntPointArray.h:
        (WebCore::IntPointArray::IntPointArray):

2006-01-14  David Hyatt  <hyatt@apple.com>

        Convert QRect/QRectF -> IntRect/FloatRect.  Same drill as point
        and size.

        Reviewed by mjs

        * ForwardingHeaders/qrect.h: Removed.
        * WebCore.xcodeproj/project.pbxproj:
        * bridge/mac/MacFrame.mm:
        (MacFrame::snapshotDragImage):
        (MacFrame::setDisplaysWithFocusAttributes):
        * bridge/mac/WebCoreFrameBridge.mm:
        (-[WebCoreFrameBridge drawRect:withPainter:]):
        (-[WebCoreFrameBridge firstRectForDOMRange:]):
        (-[WebCoreFrameBridge ensureSelectionVisible]):
        * kcanvas/KCanvasContainer.cpp:
        (KCanvasContainer::relativeBBox):
        (KCanvasContainer::getAspectRatio):
        * kcanvas/KCanvasContainer.h:
        * kcanvas/KCanvasFilters.cpp:
        (KCanvasFilterEffect::subRegion):
        (KCanvasFilterEffect::setSubRegion):
        * kcanvas/KCanvasFilters.h:
        (KCanvasFilter::filterRect):
        (KCanvasFilter::setFilterRect):
        * kcanvas/KCanvasItem.cpp:
        (RenderPath::relativeBBox):
        * kcanvas/KCanvasItem.h:
        * kcanvas/KCanvasResources.cpp:
        (KCanvasMarker::draw):
        * kcanvas/KCanvasResources.h:
        * kcanvas/KCanvasTreeDebug.cpp:
        (operator<<):
        * kcanvas/KCanvasTreeDebug.h:
        * kcanvas/RenderSVGImage.cpp:
        (RenderSVGImage::paint):
        * kcanvas/device/KRenderingDevice.h:
        * kcanvas/device/KRenderingPaintServerPattern.cpp:
        (KRenderingPaintServerPattern::setBbox):
        (KRenderingPaintServerPattern::bbox):
        * kcanvas/device/KRenderingPaintServerPattern.h:
        * kcanvas/device/quartz/KCanvasFilterQuartz.h:
        * kcanvas/device/quartz/KCanvasFilterQuartz.mm:
        (KCanvasFilterQuartz::prepareFilter):
        (KCanvasFilterQuartz::applyFilter):
        * kcanvas/device/quartz/KCanvasItemQuartz.h:
        (KCanvasItemQuartz::getAbsoluteRepaintRect):
        * kcanvas/device/quartz/KCanvasItemQuartz.mm:
        (drawMarkerWithData):
        (KCanvasItemQuartz::drawMarkersIfNeeded):
        (KCanvasItemQuartz::bboxForPath):
        * kcanvas/device/quartz/KCanvasMaskerQuartz.h:
        * kcanvas/device/quartz/KCanvasMaskerQuartz.mm:
        (KCanvasMaskerQuartz::applyMask):
        * kcanvas/device/quartz/KCanvasResourcesQuartz.h:
        (KCanvasContainerQuartz::getAbsoluteRepaintRect):
        * kcanvas/device/quartz/KCanvasResourcesQuartz.mm:
        (KCanvasContainerQuartz::layout):
        (KCanvasContainerQuartz::paint):
        (KCanvasContainerQuartz::setViewport):
        (KCanvasContainerQuartz::viewport):
        (KCanvasContainerQuartz::setViewBox):
        (KCanvasContainerQuartz::viewBox):
        (KCanvasContainerQuartz::absoluteTransform):
        (KCanvasClipperQuartz::applyClip):
        * kcanvas/device/quartz/KRenderingDeviceQuartz.h:
        * kcanvas/device/quartz/KRenderingDeviceQuartz.mm:
        (KRenderingDeviceContextQuartz::mapFromVisual):
        (KRenderingDeviceContextQuartz::mapToVisual):
        * kcanvas/device/quartz/KRenderingPaintServerQuartz.mm:
        (KRenderingPaintServerImageQuartz::draw):
        * kcanvas/device/quartz/QuartzSupport.h:
        * khtml/ecma/kjs_window.cpp:
        (KJS::Screen::getValueProperty):
        (KJS::showModalDialog):
        (KJS::Window::getValueProperty):
        (KJS::constrainToVisible):
        (KJS::WindowFunc::callAsFunction):
        * khtml/editing/SelectionController.cpp:
        (khtml::caretY):
        (khtml::SelectionController::layout):
        (khtml::SelectionController::caretRect):
        (khtml::SelectionController::caretRepaintRect):
        (khtml::SelectionController::paintCaret):
        * khtml/editing/SelectionController.h:
        * khtml/html/html_imageimpl.cpp:
        (DOM::HTMLAreaElementImpl::getRect):
        * khtml/html/html_imageimpl.h:
        * khtml/html/html_inlineimpl.cpp:
        (DOM::HTMLAnchorElementImpl::isFocusable):
        * khtml/misc/CachedImage.cpp:
        (khtml::CachedImage::valid_rect):
        (khtml::CachedImage::do_notify):
        (khtml::CachedImage::error):
        * khtml/misc/CachedImage.h:
        * khtml/misc/khtmllayout.h:
        (khtml::GapRects::left):
        (khtml::GapRects::center):
        (khtml::GapRects::right):
        (khtml::GapRects::uniteLeft):
        (khtml::GapRects::uniteCenter):
        (khtml::GapRects::uniteRight):
        (khtml::GapRects::operator IntRect):
        * khtml/misc/loader_client.h:
        (khtml::CachedObjectClient::setPixmap):
        * khtml/rendering/InlineTextBox.cpp:
        (khtml::InlineTextBox::selectionRect):
        (khtml::InlineTextBox::nodeAtPoint):
        * khtml/rendering/InlineTextBox.h:
        * khtml/rendering/RenderText.cpp:
        (khtml::RenderText::absoluteRects):
        (khtml::RenderText::caretRect):
        (khtml::RenderText::getAbsoluteRepaintRect):
        (khtml::RenderText::selectionRect):
        * khtml/rendering/RenderText.h:
        * khtml/rendering/bidi.cpp:
        (khtml::RenderBlock::layoutInlineChildren):
        * khtml/rendering/font.cpp:
        (khtml::Font::selectionRectForText):
        * khtml/rendering/font.h:
        * khtml/rendering/render_block.cpp:
        (khtml::RenderBlock::overflowRect):
        (khtml::RenderBlock::layoutBlock):
        (khtml::RenderBlock::getAbsoluteRepaintRectIncludingFloats):
        (khtml::RenderBlock::paint):
        (khtml::RenderBlock::fillHorizontalSelectionGap):
        (khtml::RenderBlock::fillVerticalSelectionGap):
        (khtml::RenderBlock::fillLeftSelectionGap):
        (khtml::RenderBlock::fillRightSelectionGap):
        (khtml::RenderBlock::floatRect):
        (khtml::RenderBlock::isPointInScrollbar):
        (khtml::RenderBlock::nodeAtPoint):
        * khtml/rendering/render_block.h:
        (khtml::RenderBlock::selectionRect):
        * khtml/rendering/render_box.cpp:
        (RenderBox::nodeAtPoint):
        (RenderBox::paintBoxDecorations):
        (RenderBox::paintBackgroundExtended):
        (RenderBox::getOverflowClipRect):
        (RenderBox::getClipRect):
        (RenderBox::getAbsoluteRepaintRect):
        (RenderBox::computeAbsoluteRepaintRect):
        (RenderBox::caretRect):
        * khtml/rendering/render_box.h:
        (khtml::RenderBox::borderBox):
        * khtml/rendering/render_br.cpp:
        (khtml::RenderBR::caretRect):
        * khtml/rendering/render_br.h:
        (khtml::RenderBR::selectionRect):
        * khtml/rendering/render_button.cpp:
        (khtml::RenderButton::paintObject):
        * khtml/rendering/render_canvas.cpp:
        (RenderCanvas::repaintViewRectangle):
        (RenderCanvas::getAbsoluteRepaintRect):
        (RenderCanvas::computeAbsoluteRepaintRect):
        (RenderCanvas::absoluteRects):
        (RenderCanvas::selectionRect):
        (RenderCanvas::viewRect):
        * khtml/rendering/render_canvas.h:
        (khtml::RenderCanvas::printRect):
        (khtml::RenderCanvas::setPrintRect):
        * khtml/rendering/render_canvasimage.cpp:
        (RenderCanvasImage::paint):
        (RenderCanvasImage::layout):
        * khtml/rendering/render_flexbox.cpp:
        (khtml::RenderFlexibleBox::layoutBlock):
        * khtml/rendering/render_flow.cpp:
        (RenderFlow::getAbsoluteRepaintRect):
        (RenderFlow::caretRect):
        (RenderFlow::paintOutlines):
        (RenderFlow::paintOutlineForLine):
        * khtml/rendering/render_flow.h:
        * khtml/rendering/render_frames.cpp:
        (RenderFrameSet::userResize):
        (RenderPart::updateWidgetPosition):
        * khtml/rendering/render_image.cpp:
        (RenderImage::setImage):
        (RenderImage::setPixmap):
        (RenderImage::paint):
        (RenderImage::layout):
        * khtml/rendering/render_image.h:
        * khtml/rendering/render_inline.cpp:
        (RenderInline::absoluteRects):
        * khtml/rendering/render_inline.h:
        * khtml/rendering/render_layer.cpp:
        (khtml::RenderLayer::updateLayerPositions):
        (khtml::RenderLayer::scrollRectToVisible):
        (khtml::RenderLayer::getRectToExpose):
        (khtml::RenderLayer::positionScrollbars):
        (khtml::RenderLayer::updateScrollInfoAfterLayout):
        (khtml::RenderLayer::paintScrollbars):
        (khtml::RenderLayer::paint):
        (khtml::setClip):
        (khtml::restoreClip):
        (khtml::RenderLayer::paintLayer):
        (khtml::RenderLayer::hitTest):
        (khtml::RenderLayer::hitTestLayer):
        (khtml::RenderLayer::calculateClipRects):
        (khtml::RenderLayer::calculateRects):
        (khtml::mustExamineRenderer):
        (khtml::RenderLayer::intersectsDamageRect):
        (khtml::RenderLayer::containsPoint):
        * khtml/rendering/render_layer.h:
        (khtml::ClipRects::m_refCnt):
        (khtml::ClipRects::overflowClipRect):
        (khtml::ClipRects::fixedClipRect):
        (khtml::ClipRects::posClipRect):
        (khtml::RenderLayer::repaintRect):
        * khtml/rendering/render_line.cpp:
        (khtml::InlineBox::canAccommodateEllipsis):
        (khtml::InlineFlowBox::nodeAtPoint):
        (khtml::InlineFlowBox::paintBackground):
        (khtml::InlineFlowBox::paintBackgroundAndBorder):
        (khtml::EllipsisBox::nodeAtPoint):
        * khtml/rendering/render_list.cpp:
        (RenderListItem::getAbsoluteRepaintRect):
        (RenderListMarker::setPixmap):
        * khtml/rendering/render_list.h:
        * khtml/rendering/render_object.cpp:
        (RenderObject::paintBorderImage):
        (RenderObject::paintBorder):
        (RenderObject::absoluteRects):
        (RenderObject::absoluteBoundingBoxRect):
        (RenderObject::addAbsoluteRectForLayer):
        (RenderObject::paintingRootRect):
        (RenderObject::repaintRectangle):
        (RenderObject::repaintAfterLayoutIfNeeded):
        (RenderObject::getAbsoluteRepaintRectWithOutline):
        (RenderObject::getAbsoluteRepaintRect):
        (RenderObject::getAbsoluteRepaintRectIncludingFloats):
        (RenderObject::computeAbsoluteRepaintRect):
        (RenderObject::viewRect):
        (RenderObject::caretRect):
        (RenderObject::addDashboardRegions):
        (RenderObject::setPixmap):
        * khtml/rendering/render_object.h:
        (khtml::RenderObject::getOverflowClipRect):
        (khtml::RenderObject::getClipRect):
        (khtml::RenderObject::relativeBBox):
        (khtml::RenderObject::PaintInfo::PaintInfo):
        (khtml::RenderObject::RepaintInfo::m_repaintRect):
        (khtml::RenderObject::borderBox):
        (khtml::RenderObject::overflowRect):
        (khtml::RenderObject::floatRect):
        (khtml::RenderObject::selectionRect):
        (khtml::RenderObject::SelectionInfo::rect):
        * khtml/rendering/render_replaced.cpp:
        (RenderReplaced::selectionRect):
        (RenderWidget::paint):
        (RenderWidget::updateWidgetPosition):
        * khtml/rendering/render_replaced.h:
        * khtml/rendering/render_table.cpp:
        (RenderTable::layout):
        (RenderTableRow::getAbsoluteRepaintRect):
        (RenderTableCell::computeAbsoluteRepaintRect):
        (RenderTableCell::getAbsoluteRepaintRect):
        (RenderTableCell::paintBoxDecorations):
        * khtml/rendering/render_table.h:
        * khtml/rendering/render_theme.cpp:
        (khtml::RenderTheme::paint):
        * khtml/rendering/render_theme.h:
        (khtml::RenderTheme::adjustRepaintRect):
        * khtml/rendering/render_theme_mac.h:
        * khtml/rendering/render_theme_mac.mm:
        (khtml::RenderThemeMac::adjustRepaintRect):
        (khtml::RenderThemeMac::inflateRect):
        (khtml::RenderThemeMac::paintCheckbox):
        (khtml::RenderThemeMac::setCheckboxCellState):
        (khtml::RenderThemeMac::paintRadio):
        (khtml::RenderThemeMac::setRadioCellState):
        (khtml::RenderThemeMac::setButtonCellState):
        (khtml::RenderThemeMac::paintButton):
        * khtml/xml/dom_elementimpl.cpp:
        (ElementImpl::scrollIntoView):
        * khtml/xml/dom_nodeimpl.cpp:
        (DOM::NodeImpl::getRect):
        (DOM::ContainerNodeImpl::getRect):
        * khtml/xml/dom_nodeimpl.h:
        * ksvg2/css/SVGRenderStyle.h:
        * ksvg2/svg/SVGFilterElementImpl.cpp:
        (SVGFilterElementImpl::canvasResource):
        * ksvg2/svg/SVGFilterPrimitiveStandardAttributesImpl.cpp:
        (SVGFilterPrimitiveStandardAttributesImpl::setStandardAttributes):
        * ksvg2/svg/SVGLengthImpl.cpp:
        (SVGLengthImpl::value):
        * ksvg2/svg/SVGLocatableImpl.cpp:
        (SVGLocatableImpl::getBBox):
        * ksvg2/svg/SVGMaskElementImpl.cpp:
        (KSVG::SVGMaskElementImpl::drawMaskerContent):
        * ksvg2/svg/SVGPatternElementImpl.cpp:
        (SVGPatternElementImpl::drawPatternContentIntoTile):
        * ksvg2/svg/SVGSVGElementImpl.cpp:
        (SVGSVGElementImpl::checkIntersection):
        (SVGSVGElementImpl::checkEnclosure):
        (SVGSVGElementImpl::createRenderer):
        * kwq/KWQAccObject.mm:
        (boundingBoxRect):
        (-[KWQAccObject position]):
        (-[KWQAccObject size]):
        (-[KWQAccObject doAXBoundsForTextMarkerRange:]):
        * kwq/KWQApplication.h:
        * kwq/KWQApplication.mm:
        (QDesktopWidget::screenGeometry):
        (QDesktopWidget::availableGeometry):
        * kwq/KWQComboBox.h:
        * kwq/KWQComboBox.mm:
        (QComboBox::frameGeometry):
        (QComboBox::setFrameGeometry):
        * kwq/KWQFileButton.h:
        * kwq/KWQFileButton.mm:
        (KWQFileButton::frameGeometry):
        (KWQFileButton::setFrameGeometry):
        * kwq/KWQFontMetrics.h:
        * kwq/KWQFontMetrics.mm:
        (QFontMetrics::selectionRectForText):
        (QFontMetrics::boundingRect):
        * kwq/KWQKWinModule.h:
        * kwq/KWQKWinModule.mm:
        (KWinModule::workArea):
        * kwq/KWQObject.h:
        * kwq/KWQPainter.h:
        * kwq/KWQPainter.mm:
        (QPainter::xForm):
        (QPainter::drawPixmap):
        (QPainter::fillRect):
        (QPainter::addClip):
        (QPainter::addRoundedRectClip):
        * kwq/KWQPixmap.h:
        * kwq/KWQPixmap.mm:
        (QPixmap::setAnimationRect):
        (QPixmap::rect):
        * kwq/KWQRect.h: Removed.
        * kwq/KWQRect.mm: Removed.
        * kwq/KWQRectF.h: Removed.
        * kwq/KWQRectF.mm: Removed.
        * kwq/KWQRegion.cpp:
        (QRegion::QRegion):
        (QRegion::boundingRect):
        * kwq/KWQRegion.h:
        * kwq/KWQRenderTreeDebug.cpp:
        (operator<<):
        (write):
        (writeLayers):
        (externalRepresentation):
        * kwq/KWQScrollView.h:
        * kwq/KWQScrollView.mm:
        (QScrollView::updateContents):
        * kwq/KWQWMatrix.cpp:
        (QWMatrix::mapRect):
        * kwq/KWQWMatrix.h:
        * kwq/KWQWidget.h:
        * kwq/KWQWidget.mm:
        (QWidget::resize):
        (QWidget::move):
        (QWidget::frameGeometry):
        (QWidget::setFrameGeometry):
        (QWidget::paint):
        * kwq/KWQWindowWidget.h:
        * kwq/KWQWindowWidget.mm:
        (KWQWindowWidget::frameGeometry):
        (KWQWindowWidget::setFrameGeometry):
        * page/Frame.cpp:
        (Frame::gotoAnchor):
        (Frame::paintCaret):
        (Frame::paintDragCaret):
        (Frame::selectionRect):
        (Frame::revealSelection):
        (Frame::paint):
        (Frame::adjustPageHeight):
        (Frame::centerSelectionInVisibleArea):
        * page/Frame.h:
        * page/FrameView.cpp:
        (KHTMLView::addRepaintInfo):
        (KHTMLView::scrollTo):
        (KHTMLView::focusNextPrevNode):
        (KHTMLView::repaintRectangle):
        * page/FrameView.h:
        * platform/FloatRect.cpp: Added.
        (WebCore::FloatRect::FloatRect):
        (WebCore::FloatRect::isNull):
        (WebCore::FloatRect::isValid):
        (WebCore::FloatRect::isEmpty):
        (WebCore::FloatRect::right):
        (WebCore::FloatRect::bottom):
        (WebCore::FloatRect::topLeft):
        (WebCore::FloatRect::topRight):
        (WebCore::FloatRect::bottomRight):
        (WebCore::FloatRect::bottomLeft):
        (WebCore::FloatRect::size):
        (WebCore::FloatRect::unite):
        (WebCore::FloatRect::normalize):
        (WebCore::FloatRect::intersects):
        (WebCore::FloatRect::intersect):
        (WebCore::FloatRect::inflate):
        (WebCore::operator==):
        (WebCore::operator!=):
        * platform/FloatRect.h: Added.
        (WebCore::FloatRect::contains):
        (WebCore::FloatRect::operator&):
        (WebCore::enclosingIntRect):
        * platform/IntPointArray.cpp:
        (IntPointArray::IntPointArray):
        (IntPointArray::boundingRect):
        * platform/IntPointArray.h:
        * platform/IntRect.cpp: Added.
        (WebCore::IntRect::IntRect):
        (WebCore::IntRect::isNull):
        (WebCore::IntRect::isValid):
        (WebCore::IntRect::isEmpty):
        (WebCore::IntRect::right):
        (WebCore::IntRect::bottom):
        (WebCore::IntRect::topLeft):
        (WebCore::IntRect::topRight):
        (WebCore::IntRect::bottomRight):
        (WebCore::IntRect::bottomLeft):
        (WebCore::IntRect::size):
        (WebCore::IntRect::unite):
        (WebCore::IntRect::normalize):
        (WebCore::IntRect::intersects):
        (WebCore::IntRect::intersect):
        (WebCore::IntRect::inflate):
        (WebCore::operator==):
        (WebCore::operator!=):
        * platform/IntRect.h: Added.
        (WebCore::IntRect::contains):
        (WebCore::IntRect::operator&):
        * platform/mac/FloatRect.mm: Added.
        (WebCore::FloatRect::FloatRect):
        (WebCore::FloatRect::operator NSRect):
        (WebCore::FloatRect::operator CGRect):
        * platform/mac/IntRect.mm: Added.
        (WebCore::IntRect::IntRect):
        (WebCore::IntRect::operator NSRect):
        (WebCore::IntRect::operator CGRect):

2006-01-13  David Hyatt  <hyatt@apple.com>

        Convert QPointF to FloatPoint and move it to the platform
        directory.

        * WebCore.xcodeproj/project.pbxproj:
        * kcanvas/KCanvasContainer.cpp:
        (KCanvasContainer::fillContains):
        (KCanvasContainer::strokeContains):
        * kcanvas/KCanvasContainer.h:
        * kcanvas/KCanvasFilters.h:
        (KCanvasFEConvolveMatrix::kernelUnitLength):
        (KCanvasFEConvolveMatrix::setKernelUnitLength):
        * kcanvas/KCanvasItem.cpp:
        (RenderPath::fillContains):
        (RenderPath::strokeContains):
        * kcanvas/KCanvasItem.h:
        * kcanvas/KCanvasTreeDebug.cpp:
        (operator<<):
        * kcanvas/KCanvasTreeDebug.h:
        * kcanvas/device/KRenderingPaintServerGradient.cpp:
        (KRenderingPaintServerLinearGradient::gradientStart):
        (KRenderingPaintServerLinearGradient::setGradientStart):
        (KRenderingPaintServerLinearGradient::gradientEnd):
        (KRenderingPaintServerLinearGradient::setGradientEnd):
        (KRenderingPaintServerRadialGradient::gradientCenter):
        (KRenderingPaintServerRadialGradient::setGradientCenter):
        (KRenderingPaintServerRadialGradient::gradientFocal):
        (KRenderingPaintServerRadialGradient::setGradientFocal):
        * kcanvas/device/KRenderingPaintServerGradient.h:
        * kcanvas/device/quartz/KCanvasFilterQuartz.mm:
        (ciVector):
        * kcanvas/device/quartz/KCanvasItemQuartz.h:
        * kcanvas/device/quartz/KCanvasItemQuartz.mm:
        (KCanvasItemQuartz::nodeAtPoint):
        (KCanvasItemQuartz::hitsPath):
        * ksvg2/svg/SVGLinearGradientElementImpl.cpp:
        (SVGLinearGradientElementImpl::buildGradient):
        * ksvg2/svg/SVGRadialGradientElementImpl.cpp:
        (SVGRadialGradientElementImpl::buildGradient):
        * kwq/KWQPointF.h: Removed.
        * kwq/KWQPointF.mm: Removed.
        * kwq/KWQRectF.h:
        (QRectF::contains):
        * kwq/KWQRectF.mm:
        (QRectF::QRectF):
        (QRectF::topLeft):
        (QRectF::topRight):
        (QRectF::bottomRight):
        (QRectF::bottomLeft):
        * platform/FloatPoint.cpp: Added.
        (WebCore::FloatPoint::FloatPoint):
        (WebCore::yCoord):
        (WebCore::operator+):
        (WebCore::operator-):
        (WebCore::operator*):
        * platform/FloatPoint.h: Added.
        (WebCore::FloatPoint::operator -=):
        * platform/mac/FloatPoint.mm: Added.
        (WebCore::FloatPoint::FloatPoint):
        (WebCore::FloatPoint::operator NSPoint):
        (WebCore::FloatPoint::operator CGPoint):

2006-01-13  David Hyatt  <hyatt@apple.com>

        Convert QPoint and QPointArray to IntPoint and IntPointArray.
        Factor out the Objective-C-specific logic into a .mm file
        for IntPoint.
        
        * ForwardingHeaders/qpoint.h: Removed.
        * ForwardingHeaders/qpointarray.h: Removed.
        * WebCore.xcodeproj/project.pbxproj:
        * bridge/mac/KWQKHTMLView.cpp:
        (KHTMLView::viewportToGlobal):
        * bridge/mac/KWQKPartsBrowserExtension.h:
        * bridge/mac/MacFrame.h:
        * bridge/mac/MacFrame.mm:
        (MacFrame::khtmlMouseMoveEvent):
        (MacFrame::dragSourceMovedTo):
        (MacFrame::dragSourceEndedAt):
        (MacFrame::dispatchDragSrcEvent):
        * bridge/mac/WebCoreFrameBridge.mm:
        (-[WebCoreFrameBridge elementAtPoint:]):
        (-[WebCoreFrameBridge dragOperationForDraggingInfo:]):
        (-[WebCoreFrameBridge dragExitedWithDraggingInfo:]):
        (-[WebCoreFrameBridge concludeDragForDraggingInfo:]):
        (-[WebCoreFrameBridge dragSourceMovedTo:]):
        (-[WebCoreFrameBridge dragSourceEndedAt:operation:]):
        * kcanvas/KCanvasItem.h:
        * kcanvas/KCanvasTreeDebug.cpp:
        (operator<<):
        * kcanvas/KCanvasTreeDebug.h:
        * kcanvas/device/KRenderingPaintServerGradient.cpp:
        * kcanvas/device/KRenderingPaintServerPattern.h:
        * khtml/ecma/kjs_events.cpp:
        (KJS::ClipboardProtoFunc::callAsFunction):
        * khtml/ecma/kjs_window.cpp:
        (KJS::WindowFunc::callAsFunction):
        * khtml/editing/SelectionController.cpp:
        (khtml::SelectionController::layout):
        (khtml::SelectionController::caretRect):
        * khtml/editing/SelectionController.h:
        * khtml/html/html_canvasimpl.cpp:
        * khtml/html/html_imageimpl.cpp:
        (DOM::HTMLAreaElementImpl::mapMouseEvent):
        (DOM::HTMLAreaElementImpl::getRegion):
        * khtml/rendering/render_image.cpp:
        (RenderImage::paint):
        * khtml/rendering/render_list.cpp:
        (RenderListMarker::paint):
        * khtml/rendering/render_object.cpp:
        (RenderObject::drawBorder):
        * khtml/xml/dom2_eventsimpl.h:
        * ksvg2/svg/SVGPointImpl.cpp:
        (SVGPointImpl::SVGPointImpl):
        * ksvg2/svg/SVGPointImpl.h:
        * ksvg2/svg/SVGSVGElementImpl.cpp:
        (SVGSVGElementImpl::createSVGPoint):
        * ksvg2/svg/SVGSVGElementImpl.h:
        * kwq/KWQClipboard.h:
        * kwq/KWQClipboard.mm:
        (KWQClipboard::dragLocation):
        (KWQClipboard::setDragImage):
        (KWQClipboard::setDragImageElement):
        * kwq/KWQCursor.h:
        * kwq/KWQEvent.h:
        (QMouseEvent::pos):
        (QWheelEvent::QWheelEvent):
        (QWheelEvent::pos):
        (QWheelEvent::globalPos):
        * kwq/KWQEvent.mm:
        (positionForEvent):
        (globalPositionForEvent):
        * kwq/KWQPainter.h:
        * kwq/KWQPainter.mm:
        (QPainter::drawConvexPolygon):
        (QPainter::drawPixmap):
        * kwq/KWQPixmap.mm:
        (QPixmap::rect):
        * kwq/KWQPoint.mm: Removed.
        * kwq/KWQPointArray.cpp: Removed.
        * kwq/KWQPointArray.h: Removed.
        * kwq/KWQPointF.h:
        * kwq/KWQPointF.mm:
        (yCoord):
        * kwq/KWQRect.h:
        (QRect::moveTopLeft):
        (QRect::contains):
        * kwq/KWQRect.mm:
        (QRect::QRect):
        (QRect::topLeft):
        (QRect::topRight):
        (QRect::bottomRight):
        (QRect::bottomLeft):
        * kwq/KWQRegion.cpp:
        (QRegion::QRegion):
        (QRegion::contains):
        * kwq/KWQRegion.h:
        * kwq/KWQScrollView.h:
        * kwq/KWQScrollView.mm:
        (QScrollView::contentsToViewport):
        * kwq/KWQWidget.h:
        * kwq/KWQWidget.mm:
        (QWidget::pos):
        (QWidget::move):
        (QWidget::mapFromGlobal):
        * kwq/KWQWindowWidget.h:
        * kwq/KWQWindowWidget.mm:
        (KWQWindowWidget::mapFromGlobal):
        (KWQWindowWidget::viewportToGlobal):
        * page/Frame.h:
        * page/FramePrivate.h:
        * page/FrameView.cpp:
        (KHTMLView::dispatchDragEvent):
        (KHTMLView::updateDragAndDrop):
        (KHTMLView::cancelDragAndDrop):
        (KHTMLView::performDragAndDrop):
        * page/FrameView.h:
        * platform/IntPoint.cpp: Added.
        (WebCore::IntPoint::IntPoint):
        (WebCore::operator+):
        (WebCore::operator-):
        (WebCore::operator*):
        * platform/IntPoint.h: Added.
        (WebCore::IntPoint::x):
        (WebCore::IntPoint::y):
        (WebCore::IntPoint::setX):
        (WebCore::IntPoint::setY):
        (WebCore::IntPoint::isNull):
        (WebCore::IntPoint::operator -=):
        * platform/IntPointArray.cpp: Added.
        (IntPointArray::IntPointArray):
        (IntPointArray::copy):
        (IntPointArray::boundingRect):
        (IntPointArray::point):
        (IntPointArray::setPoint):
        (IntPointArray::setPoints):
        * platform/IntPointArray.h: Added.
        (WebCore::IntPointArray::IntPointArray):

2006-01-13  David Hyatt  <hyatt@apple.com>
        
        Convert QSizeF to FloatSize and move it to the platform
        directory.
        
        * WebCore.xcodeproj/project.pbxproj:
        * kcanvas/KCanvasFilters.h:
        (KCanvasFEConvolveMatrix::kernelSize):
        (KCanvasFEConvolveMatrix::setKernelSize):
        (KCanvasFEConvolveMatrix::targetOffset):
        (KCanvasFEConvolveMatrix::setTargetOffset):
        * kcanvas/KCanvasTreeDebug.cpp:
        (operator<<):
        * kcanvas/KCanvasTreeDebug.h:
        * kwq/KWQRectF.h:
        * kwq/KWQRectF.mm:
        (QRectF::QRectF):
        (QRectF::size):
        * kwq/KWQSizeF.h: Removed.
        * kwq/KWQSizeF.mm: Removed.
        * platform/FloatSize.cpp: Added.
        (FloatSize::FloatSize):
        (FloatSize::isValid):
        (FloatSize::expandedTo):
        (operator+):
        (operator==):
        (operator!=):
        * platform/FloatSize.h: Added.
        * platform/mac/FloatSize.mm: Added.
        (FloatSize::FloatSize):
        (FloatSize::operator NSSize):
        (FloatSize::operator CGSize):

2006-01-13  David Hyatt  <hyatt@apple.com>

        Fix build bustage from QSize -> IntSize change.
        
        Reviewed by darin

        * kwq/KWQObject.h:
        * kwq/KWQSizeF.h:

2006-01-13  David Hyatt  <hyatt@apple.com>

        Eliminate QSize and add the new class IntSize in the
        platform subdirectory.  Factor out the Objective-C portion
        of IntSize into a platform-specific IntSize.mm that resides
        in the mac subdirectory.

        Win32 can just compile IntSize.cpp and doesn't need any
        platform-specific extension here.
        
        Reviewed by darin

        * WebCore.xcodeproj/project.pbxproj:
        * kcanvas/KCanvasImage.h:
        * kcanvas/device/quartz/KCanvasResourcesQuartz.h:
        (KCanvasImageQuartz::init):
        (KCanvasImageQuartz::size):
        * kcanvas/device/quartz/KRenderingDeviceQuartz.mm:
        (KRenderingDeviceQuartz::contextForImage):
        * khtml/css/cssstyleselector.cpp:
        (khtml::CSSStyleSelector::applyProperty):
        * khtml/ecma/kjs_html.cpp:
        (KJS::Image::getValueProperty):
        * khtml/ecma/kjs_window.cpp:
        (KJS::WindowFunc::callAsFunction):
        * khtml/misc/CachedImage.cpp:
        (khtml::CachedImage::pixmap_size):
        (khtml::CachedImage::data):
        * khtml/misc/CachedImage.h:
        * khtml/misc/CachedImageCallback.cpp:
        (khtml::CachedImageCallback::notifyUpdate):
        (khtml::CachedImageCallback::notifyFinished):
        * khtml/rendering/render_applet.cpp:
        (RenderApplet::createWidgetIfNecessary):
        * khtml/rendering/render_form.cpp:
        (RenderLineEdit::calcMinMaxWidth):
        (RenderFileButton::calcMinMaxWidth):
        (RenderSelect::layout):
        (RenderTextArea::calcMinMaxWidth):
        (RenderSlider::calcMinMaxWidth):
        * khtml/rendering/render_image.cpp:
        (RenderImage::paint):
        * khtml/rendering/render_object.cpp:
        (RenderObject::paintBorder):
        * khtml/rendering/render_style.h:
        (khtml::RenderStyle::borderTopLeftRadius):
        (khtml::RenderStyle::borderTopRightRadius):
        (khtml::RenderStyle::borderBottomLeftRadius):
        (khtml::RenderStyle::borderBottomRightRadius):
        (khtml::RenderStyle::setBorderTopLeftRadius):
        (khtml::RenderStyle::setBorderTopRightRadius):
        (khtml::RenderStyle::setBorderBottomLeftRadius):
        (khtml::RenderStyle::setBorderBottomRightRadius):
        (khtml::RenderStyle::setBorderRadius):
        (khtml::RenderStyle::initialBorderRadius):
        * khtml/rendering/render_theme_mac.h:
        * khtml/rendering/render_theme_mac.mm:
        (khtml::RenderThemeMac::inflateRect):
        (khtml::RenderThemeMac::setControlSize):
        (khtml::RenderThemeMac::sizeForFont):
        (khtml::RenderThemeMac::setSizeFromFont):
        (khtml::RenderThemeMac::checkboxSizes):
        (khtml::RenderThemeMac::setCheckboxCellState):
        (khtml::RenderThemeMac::radioSizes):
        (khtml::RenderThemeMac::setRadioCellState):
        (khtml::RenderThemeMac::buttonSizes):
        (khtml::RenderThemeMac::setButtonCellState):
        (khtml::RenderThemeMac::paintButton):
        * ksvg2/svg/SVGMaskElementImpl.cpp:
        (KSVG::SVGMaskElementImpl::attributeChanged):
        (KSVG::SVGMaskElementImpl::drawMaskerContent):
        * ksvg2/svg/SVGPatternElementImpl.cpp:
        (SVGPatternElementImpl::drawPatternContentIntoTile):
        (SVGPatternElementImpl::notifyAttributeChange):
        * ksvg2/svg/SVGPatternElementImpl.h:
        * kwq/KWQComboBox.h:
        * kwq/KWQComboBox.mm:
        (QComboBox::sizeHint):
        * kwq/KWQFileButton.h:
        * kwq/KWQFileButton.mm:
        (KWQFileButton::sizeForCharacterWidth):
        * kwq/KWQFontMetrics.h:
        * kwq/KWQFontMetrics.mm:
        (QFontMetrics::size):
        * kwq/KWQKJavaAppletWidget.h:
        * kwq/KWQKJavaAppletWidget.mm:
        (KJavaAppletWidget::KJavaAppletWidget):
        * kwq/KWQLineEdit.h:
        * kwq/KWQLineEdit.mm:
        (QLineEdit::sizeForCharacterWidth):
        * kwq/KWQListBox.h:
        * kwq/KWQListBox.mm:
        (QListBox::sizeForNumberOfLines):
        * kwq/KWQObject.h:
        * kwq/KWQPainter.h:
        * kwq/KWQPainter.mm:
        (QPainter::addRoundedRectClip):
        * kwq/KWQPixmap.h:
        * kwq/KWQPixmap.mm:
        (QPixmap::QPixmap):
        (QPixmap::size):
        (QPixmap::resize):
        * kwq/KWQRect.h:
        * kwq/KWQRect.mm:
        (QRect::QRect):
        (QRect::size):
        * kwq/KWQSize.h: Removed.
        * kwq/KWQSize.mm: Removed.
        * kwq/KWQSizeF.h:
        * kwq/KWQSizeF.mm:
        (QSizeF::QSizeF):
        * kwq/KWQSlider.h:
        * kwq/KWQSlider.mm:
        (QSlider::sizeHint):
        * kwq/KWQStyle.cpp:
        (QStyle::sizeFromContents):
        * kwq/KWQStyle.h:
        * kwq/KWQTextEdit.h:
        * kwq/KWQTextEdit.mm:
        (QTextEdit::sizeWithColumnsAndRows):
        * kwq/KWQWidget.h:
        * kwq/KWQWidget.mm:
        (QWidget::sizeHint):
        (QWidget::size):
        (QWidget::resize):
        * kwq/KWQWindowWidget.h:
        * kwq/KWQWindowWidget.mm:
        (KWQWindowWidget::sizeHint):
        * platform: Added.
        * platform/IntSize.cpp: Added.
        (WebCore::IntSize::IntSize):
        (WebCore::IntSize::isValid):
        (WebCore::IntSize::expandedTo):
        (WebCore::operator+):
        (WebCore::operator==):
        (WebCore::operator!=):
        * platform/IntSize.h: Added.
        * platform/mac: Added.
        * platform/mac/IntSize.mm: Added.
        (WebCore::IntSize::IntSize):
        (WebCore::IntSize::operator NSSize):
        (WebCore::IntSize::operator CGSize):

2006-01-13  Maks Orlovich <maksim@kde.org>

        Reviewed, redone a bit, and landed by Darin (help from Eric too).

        - fix http://bugs.webkit.org/show_bug.cgi?id=4586
          rowIndex calculation doesn't consider head to come before body.

        Test: fast/table/rowindex.html

        * khtml/html/html_tableimpl.cpp: (DOM::HTMLTableRowElementImpl::rowIndex):
        Change algorithm so the rows are numbered in this order: (a) all rows in the
        table header section, (b) all rows in all table body sections, (c) all rows
        in the table footer section. Rows in extra table header or footer sections
        don't get row numbers (rowIndex returns -1). This matches Firefox.

2006-01-13  Mark Rowe  <opendarwin.org@bdash.net.nz>

        Reviewed, tweaked, and landed by Darin.

        - fix http://bugs.webkit.org/show_bug.cgi?id=6509
          content property with supported value followed by currently unsupported open-quote displays duplicated content

        Test: fast/css-generated-content/no-openclose-quote.html

        * khtml/css/cssparser.cpp: (CSSParser::parseContent): Make sure parsedValue
        is always initialized to 0 (in particular for the CSS_IDENT case which is
        currently unimplemented).

2006-01-13  Mitz Pettel  <opendarwin.org@mitzpettel.com>

        Reviewed and landed by Darin.
        
        - fix http://bugs.webkit.org/show_bug.cgi?id=6418
          Incorrect scrollbar when using overflow:auto and word-wrap:break-word; in some cases
        
        Test: fast/text/basic/015.html

        * khtml/rendering/bidi.cpp:
        (khtml::RenderBlock::findNextLineBreak):
        Avoid inconsistent width measurement when breaking in the middle of a
        word is allowed. Eliminate the relaxation by 1 of the width overflow
        check that was supposed to compensate for the inconsistency but didn't
        always work, and on the other hand sometimes resulted in allowing text
        to overflow its container by one pixel.
        Also applied start and end width correctly in the break-words case.

2006-01-12  Maciej Stachowiak  <mjs@apple.com>

        Rubber stamped by Eric.

        - rename WebCoreBridge to WebCoreFrameBridge

        * WebCore.exp:
        * WebCore.xcodeproj/project.pbxproj:
        * bridge/mac/KWQKHTMLPartBrowserExtension.mm:
        (KHTMLPartBrowserExtension::createNewWindow):
        * bridge/mac/MacFrame.h:
        (MacFrame::bridge):
        * bridge/mac/MacFrame.mm:
        (MacFrame::submitForm):
        (MacFrame::createPart):
        (MacFrame::bridgeForWidget):
        (MacFrame::documentViewForNode):
        (MacFrame::setBridge):
        * bridge/mac/WebCoreBridge.h: Removed.
        * bridge/mac/WebCoreBridge.mm: Removed.
        * bridge/mac/WebCoreFrameBridge.h: Added.
        * bridge/mac/WebCoreFrameBridge.mm: Added.
        (-[WebCoreFrameBridge executionContextForView:]):
        (frameHasSelection):
        (-[WebCoreFrameBridge firstChild]):
        (-[WebCoreFrameBridge lastChild]):
        (-[WebCoreFrameBridge previousSibling]):
        (-[WebCoreFrameBridge nextSibling]):
        (-[WebCoreFrameBridge isDescendantOfFrame:]):
        (-[WebCoreFrameBridge traverseNextFrameStayWithin:]):
        (-[WebCoreFrameBridge appendChild:]):
        (-[WebCoreFrameBridge removeChild:]):
        (-[WebCoreFrameBridge childFrameNamed:]):
        (-[WebCoreFrameBridge _deepLastChildFrame]):
        (-[WebCoreFrameBridge nextFrameWithWrap:]):
        (-[WebCoreFrameBridge previousFrameWithWrap:]):
        (-[WebCoreFrameBridge _shouldAllowAccessFrom:]):
        (-[WebCoreFrameBridge _descendantFrameNamed:sourceFrame:]):
        (-[WebCoreFrameBridge _frameInAnyWindowNamed:sourceFrame:]):
        (-[WebCoreFrameBridge findFrameNamed:]):
        (+[WebCoreFrameBridge bridgeForDOMDocument:]):
        (-[WebCoreFrameBridge setParent:]):
        (-[WebCoreFrameBridge parent]):
        (nowPrinting):
        (-[WebCoreFrameBridge opener]):
        (-[WebCoreFrameBridge setOpener:]):
        (+[WebCoreFrameBridge stringWithData:textEncodingName:]):
        * kwq/KWQAccObject.mm:
        (-[KWQAccObject rendererForView:]):
        * kwq/KWQComboBox.mm:
        (-[KWQPopUpButtonCell trackMouse:inRect:ofView:untilMouseUp:]):
        * kwq/KWQFileButton.mm:
        (KWQFileButton::focusPolicy):
        * kwq/KWQFrame.mm:
        * kwq/KWQKJavaAppletWidget.mm:
        * kwq/KWQLineEdit.mm:
        * kwq/KWQListBox.mm:
        (-[KWQTableView keyDown:]):
        (-[KWQTableView keyUp:]):
        * kwq/KWQLoader.mm:
        (KWQServeRequest):
        (KWQServeSynchronousRequest):
        (KWQCheckCacheObjectStatus):
        (KWQCacheObjectExpiresTime):
        * kwq/KWQSlider.mm:
        (QSlider::focusPolicy):
        * kwq/KWQTextArea.mm:
        (-[KWQTextAreaTextView textDidChange:]):
        (-[KWQTextAreaTextView _trackResizeFromMouseDown:]):
        (-[KWQTextAreaTextView keyDown:]):
        (-[KWQTextAreaTextView keyUp:]):
        * kwq/KWQTextField.mm:
        (-[KWQTextFieldController controlTextDidBeginEditing:]):
        (-[KWQTextFieldController controlTextDidEndEditing:]):
        (-[KWQTextFieldController controlTextDidChange:]):
        (-[KWQTextFieldController control:textView:doCommandBySelector:]):
        (-[KWQTextFieldController textView:shouldHandleEvent:]):
        * kwq/KWQWidget.mm:
        (QWidget::setFocus):
        * kwq/KWQWindowWidget.h:
        * kwq/KWQWindowWidget.mm:
        (KWQWindowWidget::KWQWindowWidget):
        * kwq/WebCoreFrameNamespaces.h:
        * kwq/WebCoreFrameNamespaces.m:
        (+[WebCoreFrameNamespaces addFrame:toNamespace:]):
        * kwq/WebCoreFrameView.h:
        * kwq/WebCoreSettings.mm:
        * kwq/WebCoreTextRendererFactory.mm:
        * kwq/WebCoreViewFactory.h:

2006-01-13  Darin Adler  <darin@apple.com>

        - Replaced tabs with spaces in source files that had less than 10 lines with tabs.
        - Set allow-tabs Subversion property in source files that have more than 10 lines with tabs.

2006-01-13  Eric Seidel  <eseidel@apple.com>

        Reviewed by mjs.

        Remove CG dependencies from kcanvas/device/quartz
        http://bugs.webkit.org/show_bug.cgi?id=6521
        Adding file omitted from last commit.

        * kcanvas/RenderSVGImage.cpp:
        (RenderSVGImage::paint): removed cg calls

2006-01-13  Eric Seidel  <eseidel@apple.com>

        Reviewed by mjs.

        Remove CG dependencies from kcanvas/device/quartz
        http://bugs.webkit.org/show_bug.cgi?id=6521

        * kcanvas/KCanvasFilters.h:
        * kcanvas/KCanvasResources.h:
        * kcanvas/device/KRenderingDevice.h:
        * kcanvas/device/quartz/KCanvasFilterQuartz.h:
        * kcanvas/device/quartz/KCanvasFilterQuartz.mm:
        (KCanvasFilterQuartz::prepareFilter): removed parameter
        (KCanvasFilterQuartz::applyFilter): removed parameter
        * kcanvas/device/quartz/KCanvasItemQuartz.h:
        * kcanvas/device/quartz/KCanvasItemQuartz.mm:
        (KCanvasItemQuartz::drawMarkersIfNeeded): removed cg call
        (KCanvasItemQuartz::paint): removed cg calls
        (getSharedContext): spacing
        * kcanvas/device/quartz/KCanvasMaskerQuartz.h:
        * kcanvas/device/quartz/KCanvasMaskerQuartz.mm:
        (KCanvasMaskerQuartz::applyMask): removed parameter
        * kcanvas/device/quartz/KCanvasResourcesQuartz.h:
        (KCanvasClipperQuartz::KCanvasClipperQuartz):
        (KCanvasImageQuartz::KCanvasImageQuartz):
        * kcanvas/device/quartz/KCanvasResourcesQuartz.mm:
        (KCanvasContainerQuartz::paint): removed CG calls
        (KCanvasClipperQuartz::applyClip): removed parameter
        (KCanvasImageQuartz::~KCanvasImageQuartz):
        (KCanvasImageQuartz::cgLayer): spacing
        (KCanvasImageQuartz::setCGLayer): spacing
        * kcanvas/device/quartz/KRenderingDeviceQuartz.h:
        * kcanvas/device/quartz/KRenderingDeviceQuartz.mm:
        (KRenderingDeviceContextQuartz::clearPath): added.
        (KRenderingDeviceContextQuartz::addPath): added.
        (KRenderingDeviceQuartz::quartzContext): spacing

2006-01-13  Darin Adler  <darin@apple.com>

        Reviewed by Hyatt.

        - fix http://bugs.webkit.org/show_bug.cgi?id=6508
          retire APPLE_CHANGES

        * WebCore.vcproj/WebCore/WebCore.vcproj: Don't set APPLE_CHANGES or
        HAVE_CONFIG_H any more.

        * WebCore.xcodeproj/project.pbxproj: Don't set APPLE_CHANGES or
        KHTML_NO_CPLUSPLUS_DOM any more.

        * kcanvas/KCanvasFilters.h:
        Use __APPLE__ instead of APPLE_CHANGES.

        * bridge/mac/MacFrame.mm: (MacFrame::respondToChangedContents):
        * kcanvas/KCanvasTreeDebug.cpp:
        * ksvg2/svg/SVGAElementImpl.cpp: (SVGAElementImpl::defaultEventHandler):
        * ksvg2/svg/SVGElementImpl.h: (KSVG::svg_dynamic_cast):
        * ksvg2/svg/SVGScriptElementImpl.cpp: (SVGScriptElementImpl::executeScript):
        * page/Frame.cpp: (Frame::paint):
        Make some APPLE_CHANGES code unconditional.

        * WebCore+SVG/kdom.h:
        * ksvg2/ecma/Ecma.cpp: (Ecma::setupDocument):
        * ksvg2/svg/SVGCursorElementImpl.cpp:
        * ksvg2/svg/SVGImageElementImpl.cpp:
        Remove some !APPLE_CHANGES code.

        * ksvg2/svg/SVGDocumentImpl.h:
        Remove some unneeded APPLE_CHANGES code.

        * khtml/rendering/render_flexbox.cpp: (khtml::RenderFlexibleBox::layoutVerticalBox):
        Remove a misleading mention of APPLE_CHANGES in a comment.

        Also changed tabs to spaces in files I am committing.

2006-01-12  David Hyatt <hyatt@apple.com>

        Get the misc directory compiling on Win32.

        * ForwardingHeaders/kio/jobclasses.h:
        * ForwardingHeaders/qasyncio.h:
        * WebCore.vcproj/WebCore/WebCore.vcproj:
        * khtml/misc/CachedImage.cpp:
        (khtml::CachedImage::data):
        * khtml/misc/decoder.cpp:
        (KanjiCode::):

2006-01-12  David Hyatt <hyatt@apple.com>

        Make the ecma directory compile on Win32.

        * ForwardingHeaders/kconfig.h:
        * ForwardingHeaders/kwinmodule.h:
        * ForwardingHeaders/qguardedptr.h:
        * ForwardingHeaders/qstylesheet.h:
        * WebCore.vcproj/WebCore/WebCore.vcproj:
        * WebCore.vcproj/WebCore/build-generated-files.sh:
        * khtml/ecma/XSLTProcessor.cpp:
        * khtml/ecma/kjs_binding.cpp:
        (KJS::ScriptInterpreter::createLanguageInstanceForValue):
        * khtml/ecma/kjs_css.h:
        * khtml/ecma/kjs_dom.cpp:
        (KJS::getRuntimeObject):
        * khtml/ecma/kjs_html.cpp:
        (KJS::KJS::Context2DFunction::callAsFunction):
        (KJS::Context2D::setShadow):
        (KJS::Context2D::updateFillImagePattern):
        (KJS::Context2D::updateStrokeImagePattern):
        (KJS::Context2D::putValueProperty):
        (KJS::Gradient::commonInit):
        (KJS::Gradient::~Gradient):
        (KJS::_rh):
        * khtml/ecma/kjs_html.h:
        * khtml/ecma/kjs_window.cpp:
        (KJS::intFeature):

2006-01-12  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by Dave Hyatt.

        - removed leftover files from form split, fix remaining include of the header.

        * khtml/html/html_formimpl.cpp: Removed.
        * khtml/html/html_formimpl.h: Removed.
        * page/Frame.cpp:

2006-01-12  David Hyatt <hyatt@apple.com>

        Make the editing directory compile on Win32.

        * WebCore.vcproj/WebCore/WebCore.vcproj:
        * khtml/editing/jsediting.cpp:

2006-01-12  David Hyatt <hyatt@apple.com>

        Get the HTML, XML, and Rendering directories compiling on
        Win32.  Add the bash script for generated files as well.

        * ForwardingHeaders/kio/job.h:
        * ForwardingHeaders/ksslkeygen.h:
        * ForwardingHeaders/qpoint.h:
        * ForwardingHeaders/qpointarray.h:
        * ForwardingHeaders/qtextstream.h:
        * WebCore.vcproj/WebCore/WebCore.vcproj:
        * khtml/html/HTMLSelectElementImpl.cpp:
        (DOM::HTMLSelectElementImpl::state):
        * khtml/html/html_canvasimpl.cpp:
        (HTMLCanvasElementImpl::createRenderer):
        * khtml/html/html_imageimpl.h:
        (DOM::):
        * khtml/rendering/render_object.h:
        * khtml/xml/DocumentImpl.cpp:
        (DocumentImpl::detach):
        (DocumentImpl::getAccObjectCache):
        (DocumentImpl::updateSelection):
        (DocumentImpl::implicitClose):
        (DocumentImpl::setFocusNode):
        * kwq/KWQAccObjectCache.h:
        * kwq/KWQKJobClasses.h:

2006-01-12  Anders Carlsson  <andersca@mac.com>

        Reviewed by Darin.

        - fix http://bugs.webkit.org/show_bug.cgi?id=5153
        deleteRule and insertRule do not work
        
        This also makes updating the disabled flag on style sheets work.
        It also adds the IE-only removeRule which is the counterpart to
        the already existing addRule.
        
        * khtml/css/css_stylesheetimpl.cpp:
        (CSSStyleSheetImpl::insertRule):
        (CSSStyleSheetImpl::deleteRule):
        Call styleSheetChanged()
        
        (CSSStyleSheetImpl::styleSheetChanged):
        Call DocumentImpl::updateStyleSelector()
        
        * khtml/css/css_stylesheetimpl.h:        
        (DOM::StyleSheetImpl::setDisabled):
        Call styleSheetChanged();
        
        (DOM::StyleSheetImpl::styleSheetChanged):
        New function.
        
        (DOM::CSSStyleSheetImpl::removeRule):
        New IE extension function, simply calls deleteRule.
        
        * khtml/css/cssstyleselector.cpp:
        (khtml::CSSStyleSelector::CSSStyleSelector):
        Ignore disabled style sheets.
        
        * khtml/ecma/kjs_css.cpp:
        (KJS::DOMCSSStyleSheetProtoFunc::callAsFunction):
        * khtml/ecma/kjs_css.h:
        (KJS::DOMCSSStyleSheet::):
        Add removeRule.

2006-01-12  Mitz Pettel  <opendarwin.org@mitzpettel.com>

        Reviewed and landed by Darin.
        
        Test: fast/css/rtl-ordering.html
        
        - fix http://bugs.webkit.org/show_bug.cgi?id=6334
          REGRESSION: <input type="button"> text is reversed on "visual Hebrew" pages

        * khtml/css/cssparser.cpp: (CSSParser::parseValue): Parse the new -khtml-rtl-ordering property.
        * khtml/css/cssproperties.in: Added -khtml-rtl-ordering property.
        * khtml/css/cssstyleselector.cpp: (CSSStyleSelector::applyProperty): Apply the new property.
        * khtml/css/cssvalues.in: Added "logical" and "visual" values for the -khtml-rtl-ordering property.
        * khtml/css/html4.css: Force logical ordering in input-buttons.
        * khtml/css/makeprop: Fixed maximum property length computation.
        * khtml/rendering/render_style.h: Added initial value for visuallyOrdered.
        * ksvg2/scripts/cssmakeprops: Ensure no overlap between KHTML and SVG CSS properties.
        * ksvg2/scripts/cssmakevalues: Ensure no overlap between KHTML and SVG CSS values.

2006-01-12  Mitz Pettel  <opendarwin.org@mitzpettel.com>

        Reviewed and landed by Darin.

        - fix http://bugs.webkit.org/show_bug.cgi?id=6219
          Perf regression: -[NSImage initWithData:] called repeatedly while
          moving the cursor over an image

        * khtml/rendering/render_image.h: (khtml::RenderImage::pixmap):
        Return a const QPixmap&.
        * kwq/WebCoreBridge.mm: (-[WebCoreBridge elementAtPoint:]):
        Avoid copying the QPixmap and its renderer.

2006-01-12  Justin Haygood  <justin@xiondigital.net>

        Reviewed, tweaked, and landed by Darin.

        - fix http://bugs.webkit.org/show_bug.cgi?id=6497
          Use #include, not #import, in KWQ C++ files

        * bridge/mac/KWQKHTMLView.cpp:
        * kcanvas/RenderSVGText.cpp:
        * khtml/css/css_computedstyle.cpp:
        * kwq/KWQArrayImpl.cpp:
        * kwq/KWQBuffer.cpp:
        * kwq/KWQCString.cpp:
        * kwq/KWQCharsets.cpp:
        * kwq/KWQDateTime.cpp:
        * kwq/KWQDictImpl.cpp:
        * kwq/KWQGuardedPtr.cpp:
        * kwq/KWQKHTMLFactory.cpp:
        * kwq/KWQKPartsEvent.cpp:
        * kwq/KWQListImpl.cpp:
        * kwq/KWQMapImpl.cpp:
        * kwq/KWQObject.cpp:
        * kwq/KWQPen.cpp:
        * kwq/KWQPointArray.cpp:
        * kwq/KWQPtrDictImpl.cpp:
        * kwq/KWQRegion.cpp:
        * kwq/KWQStyle.cpp:
        * kwq/KWQTextCodec.cpp:
        * kwq/KWQTextStream.cpp:
        * kwq/KWQTimer.cpp:
        * kwq/KWQValueListImpl.cpp:
        * kwq/KWQVariant.cpp:
        * kwq/KWQVectorImpl.cpp:
        * kwq/KWQWMatrix.cpp:
        Replaced #import with #include.

        * kwq/KWQRegExp.cpp: Replaced #import with #include.
        Also changed <JavaScriptCore/pcre.h> to <pcre/pcre.h>.
        * ForwardingHeaders/pcre: Added.
        * ForwardingHeaders/pcre/pcre.h: Added.

2006-01-12  Eric Seidel  <eseidel@apple.com>

        Reviewed by anders & mjs.

        Split dom_docimpl.* out into separate files (one per class):
        http://bugs.webkit.org/show_bug.cgi?id=6502

        * ForwardingHeaders/kdom/core/DOMImplementationImpl.h: Removed.
        * ForwardingHeaders/kdom/core/DocumentImpl.h: Removed.
        * ForwardingHeaders/kdom/core/DocumentTypeImpl.h: Removed.
        * WebCore.xcodeproj/project.pbxproj:
        * bridge/mac/WebCoreBridge.mm:
        * kcanvas/KCanvasResources.cpp:
        * kcanvas/RenderSVGText.h:
        * khtml/css/css_base.cpp:
        * khtml/css/css_computedstyle.cpp:
        * khtml/css/css_ruleimpl.cpp:
        * khtml/css/css_valueimpl.cpp:
        * khtml/css/cssparser.cpp:
        * khtml/css/parser.y:
        * khtml/ecma/XSLTProcessor.cpp:
        * khtml/ecma/domparser.cpp:
        * khtml/ecma/kjs_css.cpp:
        * khtml/ecma/kjs_dom.cpp:
        * khtml/ecma/kjs_events.cpp:
        * khtml/ecma/kjs_range.cpp:
        * khtml/ecma/kjs_traversal.cpp:
        * khtml/ecma/kjs_views.cpp:
        * khtml/ecma/kjs_window.cpp:
        * khtml/ecma/xmlhttprequest.cpp:
        * khtml/ecma/xmlserializer.cpp:
        * khtml/editing/SelectionController.cpp:
        * khtml/editing/apply_style_command.cpp:
        * khtml/editing/composite_edit_command.cpp:
        * khtml/editing/delete_selection_command.cpp:
        * khtml/editing/edit_command.cpp:
        * khtml/editing/htmlediting.cpp:
        * khtml/editing/insert_line_break_command.cpp:
        * khtml/editing/insert_paragraph_separator_command.cpp:
        * khtml/editing/insert_text_command.cpp:
        * khtml/editing/join_text_nodes_command.cpp:
        * khtml/editing/jsediting.cpp:
        * khtml/editing/markup.cpp:
        * khtml/editing/markup.h:
        * khtml/editing/merge_identical_elements_command.cpp:
        * khtml/editing/move_selection_command.cpp:
        * khtml/editing/rebalance_whitespace_command.cpp:
        * khtml/editing/replace_selection_command.cpp:
        * khtml/editing/split_text_node_command.cpp:
        * khtml/editing/typing_command.cpp:
        * khtml/editing/visible_position.cpp:
        * khtml/editing/visible_text.cpp:
        * khtml/editing/visible_units.cpp:
        * khtml/html/HTMLGenericFormElementImpl.cpp:
        * khtml/html/HTMLInputElementImpl.cpp:
        * khtml/html/HTMLKeygenElementImpl.cpp:
        * khtml/html/HTMLLabelElementImpl.cpp:
        * khtml/html/HTMLOptionElementImpl.cpp:
        * khtml/html/HTMLSelectElementImpl.cpp:
        * khtml/html/HTMLTextAreaElementImpl.cpp:
        * khtml/html/html_documentimpl.cpp:
        * khtml/html/html_documentimpl.h:
        * khtml/html/html_listimpl.cpp:
        * khtml/html/html_objectimpl.cpp:
        * khtml/html/htmlfactory.cpp:
        * khtml/html/htmlparser.cpp:
        * khtml/html/htmltokenizer.cpp:
        * khtml/misc/Cache.cpp:
        * khtml/misc/DocLoader.cpp:
        * khtml/rendering/InlineTextBox.cpp:
        * khtml/rendering/bidi.cpp:
        * khtml/rendering/render_applet.cpp:
        * khtml/rendering/render_block.cpp:
        * khtml/rendering/render_box.cpp:
        * khtml/rendering/render_br.cpp:
        * khtml/rendering/render_button.cpp:
        * khtml/rendering/render_canvas.cpp:
        * khtml/rendering/render_container.cpp:
        * khtml/rendering/render_flow.cpp:
        * khtml/rendering/render_form.cpp:
        * khtml/rendering/render_frames.cpp:
        * khtml/rendering/render_inline.cpp:
        * khtml/rendering/render_layer.cpp:
        * khtml/rendering/render_line.cpp:
        * khtml/rendering/render_list.cpp:
        * khtml/rendering/render_object.cpp:
        * khtml/rendering/render_replaced.cpp:
        * khtml/rendering/render_table.cpp:
        * khtml/rendering/render_theme.cpp:
        * khtml/rendering/render_theme_mac.mm:
        * khtml/xml/DOMImplementationImpl.cpp: Added.
        * khtml/xml/DOMImplementationImpl.h: Added.
        * khtml/xml/DocumentFragmentImpl.cpp: Added.
        * khtml/xml/DocumentFragmentImpl.h: Added.
        * khtml/xml/DocumentImpl.cpp: Added.
        (DocumentImpl::setDocType):
        (DocumentImpl::getElementsByName):
        * khtml/xml/DocumentImpl.h: Added.
        * khtml/xml/DocumentTypeImpl.cpp: Added.
        * khtml/xml/DocumentTypeImpl.h: Added.
        * khtml/xml/dom2_eventsimpl.cpp:
        * khtml/xml/dom2_rangeimpl.cpp:
        * khtml/xml/dom2_traversalimpl.cpp:
        * khtml/xml/dom2_viewsimpl.cpp:
        * khtml/xml/dom_docimpl.cpp: Removed.
        * khtml/xml/dom_docimpl.h: Removed.
        * khtml/xml/dom_elementimpl.cpp:
        * khtml/xml/dom_nodeimpl.cpp:
        * khtml/xml/dom_textimpl.cpp:
        * khtml/xml/dom_xmlimpl.cpp:
        * khtml/xml/xml_tokenizer.cpp:
        * khtml/xsl/xslt_processorimpl.cpp:
        * ksvg2/misc/KCanvasRenderingStyle.cpp:
        * ksvg2/misc/KSVGTimeScheduler.cpp:
        * ksvg2/misc/SVGImageLoader.cpp:
        * ksvg2/svg/SVGAElementImpl.cpp:
        * ksvg2/svg/SVGAnimationElementImpl.cpp:
        * ksvg2/svg/SVGClipPathElementImpl.cpp:
        * ksvg2/svg/SVGCursorElementImpl.cpp:
        * ksvg2/svg/SVGDOMImplementationImpl.cpp:
        * ksvg2/svg/SVGDOMImplementationImpl.h:
        * ksvg2/svg/SVGDocumentImpl.h:
        * ksvg2/svg/SVGElementImpl.cpp:
        * ksvg2/svg/SVGFEImageElementImpl.cpp:
        * ksvg2/svg/SVGGradientElementImpl.cpp:
        * ksvg2/svg/SVGHelper.cpp:
        * ksvg2/svg/SVGPatternElementImpl.cpp:
        * ksvg2/svg/SVGPolyElementImpl.cpp:
        * ksvg2/svg/SVGSVGElementImpl.cpp:
        * ksvg2/svg/SVGStopElementImpl.cpp:
        * ksvg2/svg/SVGStyleElementImpl.cpp:
        * ksvg2/svg/SVGStyledElementImpl.cpp:
        * ksvg2/svg/SVGUseElementImpl.cpp:
        * kwq/DOM-CSS.mm:
        * kwq/DOM.mm:
        * kwq/DOMEvents.mm:
        * kwq/DOMHTML.mm:
        * kwq/DOMInternal.mm:
        * kwq/DOMViews.mm:
        * kwq/KWQAccObject.mm:
        * kwq/KWQAccObjectCache.mm:
        * kwq/KWQKJavaAppletWidget.mm:
        * kwq/KWQPageState.mm:
        * kwq/KWQRenderTreeDebug.cpp:
        * kwq/KWQSlot.mm:
        * page/Frame.cpp:

2006-01-12  Maciej Stachowiak  <mjs@apple.com>

        Not reviewed.
        
        - fixed build breakage

        * ksvg2/misc/SVGImageLoader.cpp: Add dom_docimpl.h include

2006-01-12  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by Eric.

        - remove dom_documentimpl.h include from other headers where possible,
        move down to impl files instead, so less rebuilds when you touch it

        * bridge/mac/MacFrame.mm:
        (MacFrame::openURLFromPageCache):
        * kcanvas/KCanvasResources.cpp:
        * khtml/css/css_computedstyle.cpp:
        * khtml/editing/SelectionController.cpp:
        (khtml::SelectionController::frame):
        * khtml/editing/SelectionController.h:
        * khtml/editing/composite_edit_command.cpp:
        * khtml/editing/delete_selection_command.cpp:
        * khtml/editing/jsediting.cpp:
        * khtml/editing/jsediting.h:
        * khtml/editing/markup.h:
        * khtml/editing/visible_position.cpp:
        * khtml/editing/visible_text.cpp:
        * khtml/html/HTMLGenericFormElementImpl.cpp:
        * khtml/html/HTMLInputElementImpl.cpp:
        * khtml/html/HTMLLabelElementImpl.cpp:
        * khtml/html/HTMLOptionElementImpl.cpp:
        * khtml/html/HTMLSelectElementImpl.cpp:
        * khtml/html/HTMLTextAreaElementImpl.cpp:
        * khtml/html/htmltokenizer.h:
        * khtml/rendering/InlineTextBox.cpp:
        * khtml/rendering/bidi.cpp:
        * khtml/rendering/render_br.cpp:
        * khtml/rendering/render_button.cpp:
        * khtml/rendering/render_object.cpp:
        (RenderObject::documentBeingDestroyed):
        * khtml/rendering/render_object.h:
        * khtml/rendering/render_theme.cpp:
        * khtml/rendering/render_theme_mac.mm:
        * khtml/xbl/xbl_docimpl.h:
        * khtml/xml/dom2_rangeimpl.cpp:
        * ksvg2/svg/SVGAElementImpl.cpp:
        * ksvg2/svg/SVGClipPathElementImpl.cpp:
        * ksvg2/svg/SVGFEImageElementImpl.cpp:
        * ksvg2/svg/SVGHelper.cpp:
        * ksvg2/svg/SVGSVGElementImpl.cpp:
        * ksvg2/svg/SVGUseElementImpl.cpp:
        * kwq/KWQAccObjectCache.mm:
        * kwq/KWQPageState.h:
        * kwq/KWQPageState.mm:

2006-01-12  Anders Carlsson  <andersca@mac.com>

        Fix build

        * khtml/ecma/kjs_window.cpp:
        Remove include.

2006-01-12  Anders Carlsson  <andersca@mac.com>

        Reviewed by Maciej

        http://bugs.webkit.org/show_bug.cgi?id=6501
        - Merge KParts::BrowserInterface with KParts::BrowserExtension.
        
        * ForwardingHeaders/kparts/browserinterface.h: Removed.
        * bridge/mac/KWQKPartsBrowserInterface.mm: Removed.
        * kwq/KWQKPartsBrowserInterface.h: Removed.

        * WebCore.xcodeproj/project.pbxproj:
        * bridge/mac/KWQKHTMLPartBrowserExtension.h:
        * bridge/mac/KWQKHTMLPartBrowserExtension.mm:
        (KHTMLPartBrowserExtension::KHTMLPartBrowserExtension):
        (KHTMLPartBrowserExtension::getHistoryLength):
        (KHTMLPartBrowserExtension::goBackOrForward):        
        * bridge/mac/KWQKPartsBrowserExtension.h:
        (KParts::BrowserExtension::BrowserExtension):
        * khtml/ecma/kjs_window.cpp:
        (KJS::History::getValueProperty):
        * khtml/xml/xml_tokenizer.cpp:
        * page/Frame.cpp:
        (Frame::slotRedirect):
        * page/FrameView.cpp:
        Add getHistoryLength and goBackOrForward to BrowserExtension and
        use them.

2006-01-12  Eric Seidel  <eseidel@apple.com>

        Build fix, files missing from previous <image> commit:
        http://bugs.webkit.org/show_bug.cgi?id=5965 

        * kcanvas/RenderSVGImage.cpp: Added.
        (RenderSVGImage::RenderSVGImage):
        (RenderSVGImage::~RenderSVGImage):
        (RenderSVGImage::paint):
        (RenderSVGImage::translateForAttributes):
        * kcanvas/RenderSVGImage.h: Added.
        * ksvg2/misc/SVGImageLoader.cpp: Added.
        (SVGImageLoader::SVGImageLoader):
        (SVGImageLoader::~SVGImageLoader):
        (SVGImageLoader::updateFromElement):
        * ksvg2/misc/SVGImageLoader.h: Added.

2006-01-12  Anders Carlsson  <andersca@mac.com>

        Reviewed by Maciej.

        http://bugs.webkit.org/show_bug.cgi?id=6496
        - Merge KParts::Part with KParts::ReadOnly part and rename it to
        ObjectContents.
        
        * ForwardingHeaders/kparts/part.h: Removed.
        * kwq/KWQKPartsPart.h: Removed.
        * kwq/KWQKPartsPart.mm: Removed.
        * kwq/KWQObject.cpp:
        
        page/ObjectContents.h: Added
        (ObjectContents::ObjectContents):
        (ObjectContents::url):
        (ObjectContents::setName):
        (ObjectContents::widget):
        (ObjectContents::setWidget):
        (ObjectContents::ref):
        (ObjectContents::deref):
        (ObjectContents::event):
        (ObjectContents::customEvent):
        (ObjectContents::isObjectContents):

        Renames:
        
        * WebCore.xcodeproj/project.pbxproj:
        * bridge/mac/KWQKHTMLPartBrowserExtension.h:
        * bridge/mac/KWQKHTMLPartBrowserExtension.mm:
        (KHTMLPartBrowserExtension::createNewWindow):
        * bridge/mac/KWQKPartsBrowserExtension.h:
        * bridge/mac/MacFrame.h:
        * bridge/mac/MacFrame.mm:
        (MacFrame::createPart):
        * bridge/mac/WebCoreBridge.mm:
        (-[WebCoreBridge saveDocumentToPageCache]):
        * khtml/ecma/kjs_events.cpp:
        (KJS::JSLazyEventListener::parseCode):
        * khtml/ecma/kjs_window.cpp:
        (KJS::createNewWindow):
        (KJS::Window::indexGetter):
        (KJS::Window::getOwnPropertySlot):
        (KJS::WindowFunc::callAsFunction):
        (KJS::FrameArray::getValueProperty):
        (KJS::FrameArray::indexGetter):
        (KJS::FrameArray::nameGetter):
        (KJS::FrameArray::getOwnPropertySlot):
        (QObject::inherits):
        (QObject::isObjectContents):
        * kwq/KWQObject.h:
        * page/Frame.cpp:
        (Frame::stopLoading):
        (Frame::stopAnimations):
        (Frame::checkEmitLoadEvent):
        (Frame::processObjectRequest):
        (Frame::childFrame):
        (Frame::findFrame):
        (Frame::setZoomFactor):
        (Frame::frames):
        (Frame::customEvent):
        (Frame::slotPartRemoved):
        (Frame::connectChild):
        (Frame::disconnectChild):
        (Frame::setPolicyBaseURL):
        (Frame::setName):
        * page/Frame.h:
        (Frame::Frame):
        * page/FramePrivate.h:

2006-01-12  Alexander Kellett  <lypanov@kde.org>

        Reviewed by eseidel.  Landed by eseidel.

        Refactor HTMLImageLoader to make subclassing possible. Implement
        RenderSVGText-style RenderImage subclass. Use this to reimplement
        SVGImageElementImpl.

        As a side effect, this should fix:
        http://bugs.webkit.org/show_bug.cgi?id=5965
        
        Already covered by several existing tests.
        Re-enabled disabled image tests.

        * WebCore.xcodeproj/project.pbxproj:
        * kcanvas/RenderSVGImage.cpp: Added.
        (RenderSVGImage::RenderSVGImage):
        (~RenderSVGImage::RenderSVGImage):
        (RenderSVGImage::paint):
        (RenderSVGImage::translateForAttributes):
        * kcanvas/RenderSVGImage.h: Added.
        * khtml/html/html_imageimpl.cpp:
        (DOM::HTMLImageLoader::setLoadingImage): trivial method extraction
        (DOM::HTMLImageLoader::updateFromElement): make virtual
        * khtml/html/html_imageimpl.h:
        (DOM::):
        * ksvg2/misc/SVGImageLoader.cpp: Added.
        (SVGImageLoader::SVGImageLoader):
        (~SVGImageLoader:SVGImageLoader):
        (SVGImageLoader::updateFromElement):
        * ksvg2/misc/SVGImageLoader.h: Added.
        * ksvg2/svg/SVGImageElementImpl.cpp:
        (SVGImageElementImpl::SVGImageElementImpl):
        (SVGImageElementImpl::parseMappedAttribute):
        (SVGImageElementImpl::createRenderer):
        (SVGImageElementImpl::attach):
        * ksvg2/svg/SVGImageElementImpl.h:

2006-01-11  David Hyatt  <hyatt@apple.com>

        Changes to get the XML directory nearly compiling on Win32.
        Down to just the gperf of cssvalues.in and a need to replace
        usleep.

        Reviewed by darin

        * WebCore.vcproj/WebCore/WebCore.vcproj:
        * khtml/config.h:
        * khtml/xml/dom_stringimpl.cpp:
        (DOM::DOMStringImpl::toCoordsArray):
        * khtml/xml/xml_tokenizer.cpp:
        (khtml::XMLTokenizer::error):

2006-01-11  Justin Garcia  <justin.garcia@apple.com>

        Replaced two asserts that I accidently removed in
        the build bustage fix.

        * page/Frame.cpp:
        (Frame::revealSelection):
        (Frame::centerSelectionInVisibleArea):

2006-01-11  Justin Garcia  <justin.garcia@apple.com>

        Reviewed by kevin

        The removal of Frame::clearSelection() broke a layout 
        test. clearSelection did setSelection(SelectionController()), which
        is not the same as selection().clear().  setSelection() notifies
        the editing delegate of a selection change.  This is non obvious
        and should be fixed.  Filed:
        <http://bugs.webkit.org/show_bug.cgi?id=6498>
        SelectionController's setters should notify delegates of selection changes

        * bridge/mac/WebCoreBridge.mm:
        (-[WebCoreBridge deselectText]):
        * khtml/editing/jsediting.cpp:
        * khtml/xml/dom_docimpl.cpp:
        (DocumentImpl::clearSelectionIfNeeded):

2006-01-11  Justin Garcia  <justin.garcia@apple.com>

        Reviewed by darin
        
        <http://bugs.webkit.org/show_bug.cgi?id=5870>
        Double-clicking on an SVG dies in HTML editing code
        <rdar://problem/4393815>
        Assertion failure: result != *this (khtml::VisiblePosition::previous())
        + build bustage fix from previous checkin

        Tests added (+ expected results):
        * editing/selection/iframe.html: Added.
        * editing/selection/inline-table.html: Added.
        * editing/selection/select-box.html: Added.
        
        Test results changed (change looks funny but is correct):
        * editing/inserting/editing-empty-divs.html
        
        Account for replaced elements with children in isCandidate and maxDeepOffset
        Stop at candidates in VisiblePosition::deepEquivalent, descending will
        yield positions that aren't visually equivalent.
        Fixed a caret painting regression (removed downstreamDeepEquivalent)
        Moved isAtomicNode and maxDeepOffset out of NodeImpl
        Removed redundant code
        
        Todo: 
        Move more editing functions out of NodeImpl
        Improve the selection of VP candidates to fix 6476

        * khtml/editing/SelectionController.cpp:
        (khtml::SelectionController::SelectionController):
        (khtml::SelectionController::xPosForVerticalArrowNavigation):
        (khtml::SelectionController::getRangeAt):
        (khtml::SelectionController::layout):
        (khtml::SelectionController::adjustForEditableContent):
        * khtml/editing/apply_style_command.cpp:
        (khtml::ApplyStyleCommand::mergeStartWithPreviousIfIdentical):
        (khtml::ApplyStyleCommand::mergeEndWithNextIfIdentical):
        * khtml/editing/delete_selection_command.cpp:
        (khtml::DeleteSelectionCommand::handleSpecialCaseBRDelete):
        (khtml::DeleteSelectionCommand::handleGeneralDelete):
        * khtml/editing/htmlediting.cpp:
        (khtml::isAtomicNode):
        (khtml::maxDeepOffset):
        (khtml::isLastVisiblePositionInSpecialElement):
        (khtml::positionAfterContainingSpecialElement):
        * khtml/editing/htmlediting.h:
        * khtml/editing/insert_line_break_command.cpp:
        (khtml::InsertLineBreakCommand::doApply):
        * khtml/editing/replace_selection_command.cpp:
        (khtml::ReplaceSelectionCommand::fixupNodeStyles):
        (khtml::ReplaceSelectionCommand::doApply):
        * khtml/editing/visible_position.cpp:
        (khtml::VisiblePosition::previousVisiblePosition):
        (khtml::VisiblePosition::isCandidate):
        (khtml::VisiblePosition::deepEquivalent):
        (khtml::VisiblePosition::character):
        (khtml::makeRange):
        (khtml::setStart):
        (khtml::setEnd):
        (khtml::enclosingBlockFlowElement):
        (khtml::isFirstVisiblePositionInNode):
        (khtml::isLastVisiblePositionInNode):
        * khtml/editing/visible_position.h:
        (khtml::VisiblePosition::setAffinity):
        * khtml/editing/visible_units.cpp:
        (khtml::previousLinePosition):
        (khtml::nextLinePosition):
        * khtml/xml/dom2_rangeimpl.cpp:
        (DOM::RangeImpl::editingStartPosition):
        * khtml/xml/dom_nodeimpl.cpp:
        (DOM::NodeImpl::previousNodeConsideringAtomicNodes):
        (DOM::NodeImpl::nextNodeConsideringAtomicNodes):
        (DOM::NodeImpl::previousLeafNode):
        (DOM::NodeImpl::nextLeafNode):
        (DOM::NodeImpl::isBlockFlowOrBlockTable):
        (DOM::NodeImpl::enclosingBlockFlowOrTableElement):
        * khtml/xml/dom_nodeimpl.h:
        * khtml/xml/dom_position.cpp:
        (DOM::Position::previous):
        (DOM::Position::next):
        (DOM::Position::atEnd):
        (DOM::isStreamer):
        (DOM::Position::upstream):
        (DOM::Position::downstream):
        * khtml/xml/dom_position.h:
        * kwq/KWQAccObject.mm:
        (-[KWQAccObject doAXUIElementForTextMarker:]):
        * page/Frame.cpp:
        (Frame::selectContentsOfNode):
        
2006-01-11  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by Darin.

        - remove some selection-related methods on Frame that are just simple wrappers
        of Selection methods.

        * bridge/mac/MacFrame.mm:
        (MacFrame::findString):
        (MacFrame::advanceToNextMisspelling):
        * bridge/mac/WebCoreBridge.mm:
        (-[WebCoreBridge deselectText]):
        (-[WebCoreBridge selectedAttributedString]):
        (-[WebCoreBridge attributedStringFrom:startOffset:to:endOffset:]):
        * khtml/editing/jsediting.cpp:
        * khtml/xml/dom_docimpl.cpp:
        (DocumentImpl::clearSelectionIfNeeded):
        * page/Frame.cpp:
        (Frame::selection):
        (Frame::currentForm):
        (Frame::revealSelection):
        (Frame::centerSelectionInVisibleArea):
        * page/Frame.h:
        * page/FrameView.cpp:
        (KHTMLView::clear):

2006-01-11  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by Darin.

        - reduce the number of files that rebuild when you touch Frame.h

        * ForwardingHeaders/ksvg2/KSVGView.h:
        * WebCore.xcodeproj/project.pbxproj:
        * bridge/mac/MacFrame.mm:
        (convertAttributesToUnderlines):
        * khtml/ecma/kjs_window.cpp:
        * khtml/editing/htmlediting.cpp:
        * khtml/editing/typing_command.cpp:
        * khtml/html/HTMLKeygenElementImpl.cpp:
        (DOM::HTMLKeygenElementImpl::appendFormData):
        * khtml/html/html_imageimpl.cpp:
        * khtml/rendering/InlineTextBox.cpp:
        (khtml::InlineTextBox::paint):
        (khtml::InlineTextBox::paintMarkedTextUnderline):
        * khtml/rendering/InlineTextBox.h:
        * khtml/rendering/render_layer.cpp:
        * khtml/xml/dom_docimpl.cpp:
        * kwq/KWQAccObject.mm:
        (-[KWQAccObject value]):
        * kwq/KWQFileButton.h:
        * kwq/KWQLineEdit.mm:
        * kwq/KWQRenderTreeDebug.cpp:
        (write):
        * page/Frame.cpp:
        (Frame::markedTextUnderlines):
        * page/Frame.h:
        (MarkedTextUnderline::MarkedTextUnderline):

2006-01-11  Anders Carlsson  <andersca@mac.com>

        Build fix.
        
        * ForwardingHeaders/ksvg2/KSVGView.h:
        Rename KHTMLView to FrameView and include FrameView.h

2006-01-11  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by Anders.

        - renamed KHTMLPartPrivate to FramePrivate and KHTMLView to FrameView
        http://bugs.webkit.org/show_bug.cgi?id=6490

        (also corresponding header renames, remove headers where not
        needed, and a few substantive changes to allow more header removal)

        * khtml/xml/dom_docimpl.h: moved m_selectedStylesheetSet here from
        KHTMLPartPrivate, since this was the only class using it.
        * khtml/xml/dom_docimpl.cpp:
        (DocumentImpl::processHttpEquiv): ditto
        (DocumentImpl::selectedStylesheetSet): ditto
        (DocumentImpl::setSelectedStylesheetSet): ditto
        (DocumentImpl::recalcStyleSelector): ditto
        * khtml/ecma/kjs_dom.cpp:
        (KJS::DOMDocument::getValueProperty): Use new isCompleted method
        on Frame instead of accessing private field directly.
        (KJS::getDOMDocumentNode): remove gratuitous use of view()
        
        Just the renames:
        
        * WebCore.xcodeproj/project.pbxproj:
        * bridge/mac/KWQKHTMLView.cpp:
        * bridge/mac/MacFrame.h:
        * bridge/mac/MacFrame.mm:
        * bridge/mac/WebCoreBridge.mm:
        * khtml/css/cssstyleselector.cpp:
        * khtml/ecma/kjs_html.cpp:
        * khtml/ecma/kjs_traversal.cpp:
        * khtml/ecma/kjs_window.cpp:
        * khtml/ecma/xmlhttprequest.cpp:
        * khtml/editing/SelectionController.cpp:
        * khtml/editing/htmlediting.cpp:
        * khtml/html/html_baseimpl.cpp:
        * khtml/html/html_canvasimpl.cpp:
        * khtml/html/html_documentimpl.cpp:
        * khtml/html/html_elementimpl.cpp:
        * khtml/html/html_headimpl.cpp:
        * khtml/html/html_imageimpl.cpp:
        * khtml/html/html_inlineimpl.cpp:
        (DOM::HTMLAnchorElementImpl::defaultEventHandler):
        * khtml/html/html_objectimpl.cpp:
        * khtml/html/html_tableimpl.cpp:
        * khtml/html/htmlparser.cpp:
        * khtml/html/htmltokenizer.cpp:
        * khtml/rendering/bidi.cpp:
        * khtml/rendering/render_applet.cpp:
        * khtml/rendering/render_block.cpp:
        * khtml/rendering/render_box.cpp:
        * khtml/rendering/render_canvas.cpp:
        * khtml/rendering/render_flow.cpp:
        * khtml/rendering/render_form.cpp:
        * khtml/rendering/render_frames.cpp:
        * khtml/rendering/render_layer.cpp:
        * khtml/rendering/render_line.cpp:
        * khtml/rendering/render_object.cpp:
        * khtml/rendering/render_replaced.cpp:
        * khtml/rendering/render_table.cpp:
        * khtml/rendering/render_theme_mac.mm:
        * khtml/xml/dom2_eventsimpl.cpp:
        * khtml/xml/dom_elementimpl.cpp:
        * khtml/xml/dom_nodeimpl.cpp:
        * khtml/xml/xml_tokenizer.cpp:
        * khtml/xsl/xslt_processorimpl.cpp:
        * kwq/KWQAccObject.mm:
        * kwq/KWQFrame.mm:
        * kwq/KWQKJavaAppletWidget.mm:
        * kwq/KWQPageState.mm:
        * kwq/KWQRenderTreeDebug.cpp:
        * kwq/KWQSignalStubs.mm:
        * kwq/KWQWidget.mm:
        * page/Frame.cpp:
        (Frame::init):
        (Frame::submitForm):
        (Frame::isComplete):
        * page/Frame.h:
        * page/FramePrivate.h: Added.
        (FramePrivate::FramePrivate):
        (FramePrivate::~FramePrivate):
        * page/FrameView.cpp: Added.
        * page/FrameView.h: Added.
        * page/khtmlpart_p.h: Removed.
        * page/khtmlview.cpp: Removed.
        * page/khtmlview.h: Removed.

2006-01-10  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by Darin.

        - moved files related to the Frame class and the forthcoming Page class
        to WebCore/page
        
        - moved files related to the MacFrame class and other bridging-related classes
        to WebCore/bridge/mac

        * ForwardingHeaders/ksvg2/KSVGPart.h:
        * ForwardingHeaders/ksvg2/KSVGView.h:
        * WebCore.xcodeproj/project.pbxproj:
        * bridge: Added.
        * bridge/mac: Added.
        * bridge/mac/KWQKHTMLPartBrowserExtension.h: Added.
        * bridge/mac/KWQKHTMLPartBrowserExtension.mm: Added.
        * bridge/mac/KWQKHTMLView.cpp: Added.
        * bridge/mac/KWQKPartsBrowserExtension.h: Added.
        * bridge/mac/KWQKPartsBrowserInterface.mm: Added.
        * bridge/mac/MacFrame.h: Added.
        * bridge/mac/MacFrame.mm: Added.
        * bridge/mac/WebCoreBridge.h: Added.
        * bridge/mac/WebCoreBridge.mm: Added.
        * khtml/Frame.cpp: Removed.
        * khtml/Frame.h: Removed.
        * khtml/khtmlpart_p.h: Removed.
        * khtml/khtmlview.cpp: Removed.
        * khtml/khtmlview.h: Removed.
        * kwq/KWQKHTMLPartBrowserExtension.h: Removed.
        * kwq/KWQKHTMLPartBrowserExtension.mm: Removed.
        * kwq/KWQKHTMLView.cpp: Removed.
        * kwq/KWQKPartsBrowserExtension.h: Removed.
        * kwq/KWQKPartsBrowserInterface.mm: Removed.
        * kwq/MacFrame.h: Removed.
        * kwq/MacFrame.mm: Removed.
        * kwq/WebCoreBridge.h: Removed.
        * kwq/WebCoreBridge.mm: Removed.
        * page: Added.
        * page/Frame.cpp: Added.
        * page/Frame.h: Added.
        * page/khtmlpart_p.h: Added.
        * page/khtmlview.cpp: Added.
        * page/khtmlview.h: Added.

2006-01-10  David Hyatt  <hyatt@apple.com>

        #if Win32 the KWQMemArray overloads, since they're working around
        a Windows compiler bug.
        
        * kwq/KWQMemArray.h:

2006-01-10  David Hyatt  <hyatt@apple.com>

        Fix the broken ifdef in KWQString.h

        * kwq/KWQString.h:

2006-01-10  hyatt@apple.com

        Fix for bugzilla bug 6458, get rendering dir of WebCore
        compiling on Windows.
        
        Reviewed by darin

        * ForwardingHeaders/QRectF:
        * ForwardingHeaders/java/kjavaappletwidget.h:
        * ForwardingHeaders/kcursor.h:
        * ForwardingHeaders/kdebug.h:
        * ForwardingHeaders/kglobalsettings.h:
        * ForwardingHeaders/khtml_ext.h:
        * ForwardingHeaders/khtml_factory.h:
        * ForwardingHeaders/khtml_settings.h:
        * ForwardingHeaders/kio/global.h:
        * ForwardingHeaders/klocale.h:
        * ForwardingHeaders/kparts/browserextension.h:
        * ForwardingHeaders/kparts/event.h:
        * ForwardingHeaders/kparts/part.h:
        * ForwardingHeaders/kurl.h:
        * ForwardingHeaders/qapplication.h:
        * ForwardingHeaders/qbuffer.h:
        * ForwardingHeaders/qcolor.h:
        * ForwardingHeaders/qdatetime.h:
        * ForwardingHeaders/qdict.h:
        * ForwardingHeaders/qevent.h:
        * ForwardingHeaders/qfont.h:
        * ForwardingHeaders/qfontmetrics.h:
        * ForwardingHeaders/qlist.h:
        * ForwardingHeaders/qmap.h:
        * ForwardingHeaders/qmemarray.h:
        * ForwardingHeaders/qobject.h:
        * ForwardingHeaders/qpaintdevicemetrics.h:
        * ForwardingHeaders/qpainter.h:
        * ForwardingHeaders/qpalette.h:
        * ForwardingHeaders/qpen.h:
        * ForwardingHeaders/qpixmap.h:
        * ForwardingHeaders/qptrdict.h:
        * ForwardingHeaders/qptrlist.h:
        * ForwardingHeaders/qptrqueue.h:
        * ForwardingHeaders/qptrstack.h:
        * ForwardingHeaders/qptrvector.h:
        * ForwardingHeaders/qrect.h:
        * ForwardingHeaders/qregexp.h:
        * ForwardingHeaders/qregion.h:
        * ForwardingHeaders/qscrollbar.h:
        * ForwardingHeaders/qscrollview.h:
        * ForwardingHeaders/qsortedlist.h:
        * ForwardingHeaders/qstring.h:
        * ForwardingHeaders/qstringlist.h:
        * ForwardingHeaders/qstyle.h:
        * ForwardingHeaders/qtextcodec.h:
        * ForwardingHeaders/qtextedit.h:
        * ForwardingHeaders/qtimer.h:
        * ForwardingHeaders/qvaluelist.h:
        * ForwardingHeaders/qvariant.h:
        * ForwardingHeaders/qwidget.h:
        * ForwardingHeaders/qwmatrix.h:
        * khtml/config.h:
        * khtml/css/css_ruleimpl.h:
        * khtml/ecma/kjs_binding.h:
        * khtml/html/html_objectimpl.h:
        * khtml/rendering/RenderText.cpp:
        * khtml/rendering/bidi.cpp:
        * khtml/rendering/break_lines.cpp:
        (khtml::nextBreakablePosition):
        * khtml/rendering/font.h:
        (khtml::Font::width):
        * khtml/rendering/render_arena.cpp:
        * khtml/rendering/render_canvasimage.cpp:
        * khtml/rendering/render_canvasimage.h:
        * khtml/rendering/render_container.cpp:
        (RenderContainer::removeChildNode):
        (RenderContainer::appendChildNode):
        (RenderContainer::insertChildNode):
        * khtml/rendering/render_image.cpp:
        (RenderImage::paint):
        * khtml/rendering/render_object.cpp:
        (RenderObject::remove):
        * khtml/xml/dom_elementimpl.h:
        (DOM::ElementImpl::mouseEventHandler):
        * khtml/xml/dom_nodeimpl.cpp:
        (DOM::NodeImpl::dispatchEvent):
        * khtml/xml/dom_stringimpl.cpp:
        (DOM::DOMStringImpl::endsWith):
        * kwq/KWQAccObjectCache.h:
        * kwq/KWQArrayImpl.h:
        (KWQArrayImpl::size):
        * kwq/KWQCharsets.h:
        * kwq/KWQDateTime.h:
        (CFAbsoluteTimeGetCurrent):
        * kwq/KWQDef.h:
        * kwq/KWQFontFamily.h:
        * kwq/KWQKPartsPart.h:
        * kwq/KWQKURL.h:
        * kwq/KWQLogging.h:
        * kwq/KWQMapImpl.h:
        * kwq/KWQMemArray.h:
        (QMemArray::operator[]):
        * kwq/KWQPainter.h:
        * kwq/KWQPixmap.h:
        * kwq/KWQPixmap.mm:
        * kwq/KWQPtrDictImpl.h:
        * kwq/KWQRegExp.h:
        * kwq/KWQString.h:
        * kwq/KWQTextCodec.h:
        * kwq/KWQTimer.h:
        (QTimer::QTimer):
        (QTimer::isActive):
        * kwq/KWQValueListImpl.h:
        * kwq/KWQVariant.h:
        * kwq/KWQWMatrix.h:
        * kwq/MacFrame.h:

2006-01-10  Eric Seidel  <eseidel@apple.com>

        No review needed, build (linking deployment) fix only.

        * kwq/MacFrame.h: remove bogus KHTMLView *view() const delcaration

2006-01-10  Eric Seidel  <eseidel@apple.com>

        Roll out local changes committed by accident w/ Mitz's patch.

        * kwq/KWQAccObjectCache.h:
        * kwq/KWQAccObjectCache.mm:
        (KWQAccObjectCache::KWQAccObjectCache):
        (KWQAccObjectCache::~KWQAccObjectCache):
        (KWQAccObjectCache::accObject):
        (KWQAccObjectCache::setAccObject):
        (KWQAccObjectCache::removeAccObject):
        (KWQAccObjectCache::getAccObjectID):
        (KWQAccObjectCache::removeAccObjectID):
        (KWQAccObjectCache::textMarkerForVisiblePosition):
        (KWQAccObjectCache::visiblePositionForTextMarker):
        (KWQAccObjectCache::childrenChanged):
        * kwq/KWQObject.cpp:
        (QObject::restartTimer):
        (QObject::timerIntervals):
        (deleteTimer):
        (QObject::killTimer):
        (deleteOneTimer):
        (QObject::killTimers):
        (sendDeferredTimerEvent):

2006-01-10  Mitz Pettel  <opendarwin.org@mitzpettel.com>

        No tests possible, no functionality changes.

        Reviewed by darin.  Committed by eseidel.
        
        - fix http://bugs.webkit.org/show_bug.cgi?id=6410
          Performance regression in text relayout due to bad BidiContext
          equality testing

        * khtml/rendering/bidi.cpp:
        (khtml::operator==): Return true if BidiContexts match and both
        don't have a parent.

2006-01-10  Eric Seidel  <eseidel@apple.com>

        Removed broken links in project file, no review need.

        * WebCore.xcodeproj/project.pbxproj:

2006-01-09  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by Eric.

        - move C++-only methods down from Frame to MacFrame

        * WebCore.xcodeproj/project.pbxproj:
        * khtml/Frame.cpp:
        (Frame::init):
        (Frame::setSettings):
        (Frame::provisionalLoadStarted):
        (Frame::userGestureHint):
        (Frame::renderer):
        (Frame::selectionRect):
        (Frame::isFrameSet):
        (Frame::openURL):
        (Frame::didNotOpenURL):
        (Frame::selectionStart):
        (scanForForm):
        (Frame::currentForm):
        (Frame::setEncoding):
        (Frame::addData):
        (Frame::revealSelection):
        (Frame::scrollOverflow):
        (Frame::paint):
        (Frame::adjustPageHeight):
        (Frame::pauseTimeouts):
        (Frame::resumeTimeouts):
        (Frame::canCachePage):
        (Frame::saveWindowProperties):
        (Frame::saveLocationProperties):
        (Frame::restoreWindowProperties):
        (Frame::restoreLocationProperties):
        (Frame::saveInterpreterBuiltins):
        (Frame::restoreInterpreterBuiltins):
        (Frame::frameForWidget):
        (Frame::frameForNode):
        (Frame::nodeForWidget):
        (Frame::setDocumentFocus):
        (Frame::clearDocumentFocus):
        (Frame::mutableInstances):
        (Frame::updatePolicyBaseURL):
        (Frame::setPolicyBaseURL):
        (Frame::forceLayout):
        (Frame::forceLayoutWithPageWidthRange):
        (Frame::sendResizeEvent):
        (Frame::sendScrollEvent):
        (Frame::scrollbarsVisible):
        (Frame::addMetaData):
        (Frame::scrollToAnchor):
        (Frame::closeURL):
        (Frame::canMouseDownStartSelect):
        (Frame::khtmlMouseDoubleClickEvent):
        (Frame::passWidgetMouseDownEventToWidget):
        (Frame::clearTimers):
        (Frame::centerSelectionInVisibleArea):
        (Frame::styleForSelectionStart):
        (Frame::selectionStartOffset):
        (Frame::selectionEndOffset):
        (Frame::selectionEnd):
        (Frame::setMediaType):
        (Frame::setSelectionFromNone):
        (Frame::displaysWithFocusAttributes):
        (Frame::setWindowHasFocus):
        (Frame::backslashAsCurrencySymbol):
        (Frame::setName):
        (Frame::markedTextUsesUnderlines):
        (Frame::markedTextUnderlines):
        (Frame::prepareForUserAction):
        (Frame::isFrame):
        (Frame::mousePressNode):
        * khtml/Frame.h:
        (Frame::instances):
        (Frame::MarkedTextUnderline::MarkedTextUnderline):
        * kwq/MacFrame.cpp: Removed.
        * kwq/MacFrame.h:
        (MacFrame::markedTextRange):
        * kwq/MacFrame.mm: - humped a bunch of stuff down to Frame
        * kwq/WebCoreSettings.mm:
        (-[WebCoreSettings _updateAllViews]): use Mac calls
        * kwq/WebCoreTextRendererFactory.mm:
        (-[WebCoreTextRendererFactory clearCaches]): ditto

2006-01-10  Eric Seidel  <eseidel@apple.com>

        Rubber-stamped by mjs.

        Split html_formimpl.{cpp,h} into multiple files (one per class)
        http://bugs.webkit.org/show_bug.cgi?id=6461

        * WebCore.xcodeproj/project.pbxproj: added files
        * khtml/ecma/kjs_html.cpp: updated includes
        * khtml/html/FormDataList.h: Added.
        * khtml/html/FormDataList.cpp: Added.
        * khtml/html/HTMLButtonElementImpl.cpp: Added.
        * khtml/html/HTMLButtonElementImpl.h: Added.
        * khtml/html/HTMLFieldSetElementImpl.cpp: Added.
        * khtml/html/HTMLFieldSetElementImpl.h: Added.
        * khtml/html/HTMLFormElementImpl.cpp: Added.
        * khtml/html/HTMLFormElementImpl.h: Added.
        * khtml/html/HTMLGenericFormElementImpl.cpp: Added.
        * khtml/html/HTMLGenericFormElementImpl.h: Added.
        * khtml/html/HTMLInputElementImpl.cpp: Added.
        * khtml/html/HTMLInputElementImpl.h: Added.
        * khtml/html/HTMLIsIndexElementImpl.cpp: Added.
        * khtml/html/HTMLIsIndexElementImpl.h: Added.
        * khtml/html/HTMLKeygenElementImpl.cpp: Added.
        * khtml/html/HTMLKeygenElementImpl.h: Added.
        * khtml/html/HTMLLabelElementImpl.cpp: Added.
        * khtml/html/HTMLLabelElementImpl.h: Added.
        * khtml/html/HTMLLegendElementImpl.cpp: Added.
        * khtml/html/HTMLLegendElementImpl.h: Added.
        * khtml/html/HTMLOptGroupElementImpl.cpp: Added.
        * khtml/html/HTMLOptGroupElementImpl.h: Added.
        * khtml/html/HTMLOptionElementImpl.cpp: Added.
        * khtml/html/HTMLOptionElementImpl.h: Added.
        * khtml/html/HTMLOptionsCollectionImpl.h: Added.
        * khtml/html/HTMLSelectElementImpl.cpp: Added.
        * khtml/html/HTMLSelectElementImpl.h: Added.
        * khtml/html/HTMLTextAreaElementImpl.cpp: Added.
        * khtml/html/HTMLTextAreaElementImpl.h: Added.
        * khtml/html/html_documentimpl.cpp: updated includes
        * khtml/html/html_imageimpl.cpp: updated includes
        * khtml/html/html_miscimpl.cpp: updated includes
        * khtml/html/html_objectimpl.cpp: updated includes
        * khtml/html/htmlfactory.cpp: updated includes
        * khtml/html/htmlparser.cpp: updated includes
        * khtml/khtmlview.cpp: updated includes
        * khtml/rendering/render_block.cpp: updated includes
        * khtml/rendering/render_button.cpp: updated includes
        * khtml/rendering/render_canvasimage.cpp: updated includes
        * khtml/rendering/render_flow.cpp: updated includes
        * khtml/rendering/render_form.cpp: updated includes
        * khtml/rendering/render_form.h: updated includes
        * khtml/rendering/render_image.cpp: updated includes
        * khtml/rendering/render_line.cpp: updated includes
        * khtml/rendering/render_theme.cpp: updated includes
        * khtml/xml/dom_docimpl.cpp: updated includes
        * kwq/DOMHTML.mm: updated includes
        * kwq/KWQAccObject.mm: updated includes
        * kwq/MacFrame.mm: updated includes
        * kwq/WebCoreBridge.mm: updated includes

2006-01-09  Alexey Proskuryakov  <ap@nypop.com>

        Reviewed by Darin.

        - fix http://bugs.webkit.org/show_bug.cgi?id=6446
          Allow surrogate pairs in numeric entities

        Test case: fast/parser/entity-surrogate-pairs.html

        * khtml/html/htmltokenizer.cpp:
        (khtml::HTMLTokenizer::parseEntity): Don't check if we got a surrogate.

2006-01-09  Eric Seidel  <eseidel@apple.com>

        Reviewed by mjs.

        Further code removal (and build fix!)

        * khtml/Frame.cpp:
        (Frame::init):
        (Frame::~Frame):
        (Frame::restoreURL):
        (Frame::didOpenURL):
        (Frame::baseURL):
        (Frame::baseTarget):
        * khtml/Frame.h:
        (Frame::khtmlMouseDoubleClickEvent):
        (Frame::khtmlDrawContentsEvent):
        * kwq/KWQLoader.mm:
        (KWQServeRequest):
        * kwq/KWQSlot.mm:
        (KWQSlot::KWQSlot):
        (KWQSlot::call):

2006-01-09  Eric Seidel  <eseidel@apple.com>

        Reviewed by mjs.

        Remove unused code from Frame.

        * khtml/Frame.cpp:
        (Frame::clear):
        (Frame::receivedFirstData):
        (Frame::checkCompleted):
        (Frame::completeURL):
        (Frame::khtmlMousePressEvent):
        (Frame::handleMouseMoveEventSelection):
        (Frame::khtmlMouseReleaseEvent):
        * khtml/Frame.h:
        * khtml/khtmlpart_p.h:
        * khtml/khtmlview.cpp:
        (KHTMLView::viewportWheelEvent):
        (KHTMLView::focusOutEvent):

2006-01-09  Eric Seidel  <eseidel@apple.com>

        Reviewed by hyatt.

        Remove khtml-specific forwarding headers.

        * ForwardingHeaders/css: Removed.
        * ForwardingHeaders/css/css_base.h: Removed.
        * ForwardingHeaders/css/css_computedstyle.h: Removed.
        * ForwardingHeaders/css/css_ruleimpl.h: Removed.
        * ForwardingHeaders/css/css_stylesheetimpl.h: Removed.
        * ForwardingHeaders/css/css_valueimpl.h: Removed.
        * ForwardingHeaders/css/csshelper.h: Removed.
        * ForwardingHeaders/css/cssparser.h: Removed.
        * ForwardingHeaders/css/cssproperties.h: Removed.
        * ForwardingHeaders/css/cssstyleselector.h: Removed.
        * ForwardingHeaders/css/cssvalues.h: Removed.
        * ForwardingHeaders/dom: Removed.
        * ForwardingHeaders/dom/css_rule.h: Removed.
        * ForwardingHeaders/dom/css_stylesheet.h: Removed.
        * ForwardingHeaders/dom/css_value.h: Removed.
        * ForwardingHeaders/dom/dom2_events.h: Removed.
        * ForwardingHeaders/dom/dom2_range.h: Removed.
        * ForwardingHeaders/dom/dom2_traversal.h: Removed.
        * ForwardingHeaders/dom/dom_exception.h: Removed.
        * ForwardingHeaders/dom/dom_node.h: Removed.
        * ForwardingHeaders/dom/dom_string.h: Removed.
        * ForwardingHeaders/ecma: Removed.
        * ForwardingHeaders/ecma/kjs_binding.h: Removed.
        * ForwardingHeaders/ecma/kjs_dom.h: Removed.
        * ForwardingHeaders/ecma/kjs_proxy.h: Removed.
        * ForwardingHeaders/editing: Removed.
        * ForwardingHeaders/editing/SelectionController.h: Removed.
        * ForwardingHeaders/editing/edit_actions.h: Removed.
        * ForwardingHeaders/editing/html_interchange.h: Removed.
        * ForwardingHeaders/editing/htmlediting.h: Removed.
        * ForwardingHeaders/editing/jsediting.h: Removed.
        * ForwardingHeaders/editing/markup.h: Removed.
        * ForwardingHeaders/editing/text_affinity.h: Removed.
        * ForwardingHeaders/editing/text_granularity.h: Removed.
        * ForwardingHeaders/editing/visible_position.h: Removed.
        * ForwardingHeaders/editing/visible_text.h: Removed.
        * ForwardingHeaders/editing/visible_units.h: Removed.
        * ForwardingHeaders/html: Removed.
        * ForwardingHeaders/html/html_baseimpl.h: Removed.
        * ForwardingHeaders/html/html_blockimpl.h: Removed.
        * ForwardingHeaders/html/html_canvasimpl.h: Removed.
        * ForwardingHeaders/html/html_documentimpl.h: Removed.
        * ForwardingHeaders/html/html_elementimpl.h: Removed.
        * ForwardingHeaders/html/html_formimpl.h: Removed.
        * ForwardingHeaders/html/html_headimpl.h: Removed.
        * ForwardingHeaders/html/html_imageimpl.h: Removed.
        * ForwardingHeaders/html/html_inlineimpl.h: Removed.
        * ForwardingHeaders/html/html_listimpl.h: Removed.
        * ForwardingHeaders/html/html_miscimpl.h: Removed.
        * ForwardingHeaders/html/html_objectimpl.h: Removed.
        * ForwardingHeaders/html/html_tableimpl.h: Removed.
        * ForwardingHeaders/html/htmlparser.h: Removed.
        * ForwardingHeaders/html/htmltokenizer.h: Removed.
        * ForwardingHeaders/misc: Removed.
        * ForwardingHeaders/misc/decoder.h: Removed.
        * ForwardingHeaders/misc/formdata.h: Removed.
        * ForwardingHeaders/misc/helper.h: Removed.
        * ForwardingHeaders/misc/khtmllayout.h: Removed.
        * ForwardingHeaders/misc/loader.h: Removed.
        * ForwardingHeaders/misc/loader_client.h: Removed.
        * ForwardingHeaders/misc/shared.h: Removed.
        * ForwardingHeaders/misc/stringit.h: Removed.
        * ForwardingHeaders/rendering: Removed.
        * ForwardingHeaders/rendering/font.h: Removed.
        * ForwardingHeaders/rendering/render_applet.h: Removed.
        * ForwardingHeaders/rendering/render_block.h: Removed.
        * ForwardingHeaders/rendering/render_box.h: Removed.
        * ForwardingHeaders/rendering/render_br.h: Removed.
        * ForwardingHeaders/rendering/render_canvas.h: Removed.
        * ForwardingHeaders/rendering/render_canvasimage.h: Removed.
        * ForwardingHeaders/rendering/render_flow.h: Removed.
        * ForwardingHeaders/rendering/render_form.h: Removed.
        * ForwardingHeaders/rendering/render_frames.h: Removed.
        * ForwardingHeaders/rendering/render_image.h: Removed.
        * ForwardingHeaders/rendering/render_layer.h: Removed.
        * ForwardingHeaders/rendering/render_line.h: Removed.
        * ForwardingHeaders/rendering/render_list.h: Removed.
        * ForwardingHeaders/rendering/render_object.h: Removed.
        * ForwardingHeaders/rendering/render_replaced.h: Removed.
        * ForwardingHeaders/rendering/render_style.h: Removed.
        * ForwardingHeaders/rendering/render_table.h: Removed.
        * ForwardingHeaders/rendering/table_layout.h: Removed.
        * ForwardingHeaders/xbl: Removed.
        * ForwardingHeaders/xbl/xbl_binding_manager.h: Removed.
        * ForwardingHeaders/xml: Removed.
        * ForwardingHeaders/xml/EventNames.h: Removed.
        * ForwardingHeaders/xml/dom2_eventsimpl.h: Removed.
        * ForwardingHeaders/xml/dom2_rangeimpl.h: Removed.
        * ForwardingHeaders/xml/dom2_traversalimpl.h: Removed.
        * ForwardingHeaders/xml/dom2_viewsimpl.h: Removed.
        * ForwardingHeaders/xml/dom_atomicstring.h: Removed.
        * ForwardingHeaders/xml/dom_docimpl.h: Removed.
        * ForwardingHeaders/xml/dom_elementimpl.h: Removed.
        * ForwardingHeaders/xml/dom_nodeimpl.h: Removed.
        * ForwardingHeaders/xml/dom_position.h: Removed.
        * ForwardingHeaders/xml/dom_stringimpl.h: Removed.
        * ForwardingHeaders/xml/dom_textimpl.h: Removed.
        * ForwardingHeaders/xml/dom_xmlimpl.h: Removed.
        * ForwardingHeaders/xml/xml_tokenizer.h: Removed.
        * WebCore.xcodeproj/project.pbxproj:
        * khtml/css/css_valueimpl.cpp:
        * khtml/css/cssstyleselector.cpp:
        * khtml/editing/apply_style_command.cpp:
        * khtml/editing/jsediting.cpp:
        * khtml/editing/replace_selection_command.cpp:
        * khtml/html/html_baseimpl.cpp:
        * khtml/html/html_blockimpl.cpp:
        * khtml/html/html_canvasimpl.cpp:
        * khtml/html/html_documentimpl.cpp:
        * khtml/html/html_elementimpl.cpp:
        * khtml/html/html_formimpl.cpp:
        * khtml/html/html_imageimpl.cpp:
        * khtml/html/html_inlineimpl.cpp:
        * khtml/html/html_listimpl.cpp:
        * khtml/html/html_objectimpl.cpp:
        * khtml/html/html_tableimpl.cpp:
        * khtml/html/htmlparser.cpp:
        * khtml/khtml_part.cpp:
        * khtml/misc/decoder.cpp:
        * khtml/rendering/render_frames.cpp:
        * khtml/xml/dom_elementimpl.cpp:

2006-01-10  Anders Carlsson  <andersca@mac.com>

        Reviewed by Maciej.

        - renamed ChildFrame::m_frame to m_renderer and
        ChildFrame::m_part to m_frame which makes more sense.
        
        This also fixes some bugs which were introduced in Maciej's
        previous commit.
        
        * khtml/Frame.cpp:
        (Frame::stopLoading):
        (Frame::clear):
        (Frame::stopAnimations):
        (Frame::checkEmitLoadEvent):
        (Frame::requestFrame):
        (Frame::requestObject):
        (Frame::processObjectRequest):
        (Frame::childFrame):
        (Frame::findFrame):
        (Frame::frameExists):
        (Frame::setZoomFactor):
        (Frame::frames):
        (Frame::childFrameNamed):
        (Frame::connectChild):
        (Frame::disconnectChild):
        (Frame::handleFallbackContent):
        * khtml/khtmlpart_p.h:
        * khtml/xml/dom_docimpl.cpp:
        (DocumentImpl::ownerElement):
        * kwq/MacFrame.mm:
        (Frame::frameDetached):
        (MacFrame::createPart):
        (MacFrame::nextKeyViewInFrameHierarchy):
        (MacFrame::setPolicyBaseURL):

2006-01-09  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by Darin.

        http://bugs.webkit.org/show_bug.cgi?id=6450
        - renamed KHTMLPart to Frame (and KWQKHTMLPart to MacFrame for now)

        * ForwardingHeaders/ksvg2/KSVGPart.h:
        * WebCore.xcodeproj/project.pbxproj:
        * khtml/Frame.cpp: Added.
        (khtml::PartStyleSheetLoader::PartStyleSheetLoader):
        (khtml::PartStyleSheetLoader::setStyleSheet):
        (Frame::Frame):
        (Frame::init):
        (Frame::~Frame):
        (Frame::restoreURL):
        (Frame::didOpenURL):
        (Frame::didExplicitOpen):
        (Frame::stopLoading):
        (Frame::closeURL):
        (Frame::browserExtension):
        (Frame::view):
        (Frame::setJScriptEnabled):
        (Frame::jScriptEnabled):
        (Frame::setMetaRefreshEnabled):
        (Frame::metaRefreshEnabled):
        (Frame::jScript):
        (Frame::replaceContentsWithScriptResult):
        (Frame::executeScript):
        (Frame::scheduleScript):
        (Frame::executeScheduledScript):
        (Frame::setJavaEnabled):
        (Frame::javaEnabled):
        (Frame::setPluginsEnabled):
        (Frame::pluginsEnabled):
        (Frame::slotDebugDOMTree):
        (Frame::slotDebugRenderTree):
        (Frame::setAutoloadImages):
        (Frame::autoloadImages):
        (Frame::clear):
        (Frame::openFile):
        (Frame::xmlDocImpl):
        (Frame::replaceDocImpl):
        (Frame::receivedFirstData):
        (Frame::slotFinished):
        (Frame::childBegin):
        (Frame::begin):
        (Frame::write):
        (Frame::end):
        (Frame::endIfNotLoading):
        (Frame::stop):
        (Frame::stopAnimations):
        (Frame::gotoAnchor):
        (Frame::slotFinishedParsing):
        (Frame::slotLoaderRequestStarted):
        (Frame::slotLoaderRequestDone):
        (Frame::checkCompleted):
        (Frame::checkEmitLoadEvent):
        (Frame::settings):
        (Frame::baseURL):
        (Frame::baseTarget):
        (Frame::completeURL):
        (Frame::scheduleRedirection):
        (Frame::scheduleLocationChange):
        (Frame::isScheduledLocationChangePending):
        (Frame::scheduleHistoryNavigation):
        (Frame::cancelRedirection):
        (Frame::changeLocation):
        (Frame::slotRedirect):
        (Frame::slotRedirection):
        (Frame::encoding):
        (Frame::setUserStyleSheet):
        (Frame::setStandardFont):
        (Frame::setFixedFont):
        (Frame::urlCursor):
        (Frame::onlyLocalReferences):
        (Frame::setOnlyLocalReferences):
        (Frame::selectedText):
        (Frame::hasSelection):
        (Frame::selection):
        (Frame::selectionGranularity):
        (Frame::setSelectionGranularity):
        (Frame::dragCaret):
        (Frame::mark):
        (Frame::setMark):
        (Frame::setSelection):
        (Frame::setDragCaret):
        (Frame::clearSelection):
        (Frame::invalidateSelection):
        (Frame::setCaretVisible):
        (Frame::clearCaretRectIfNeeded):
        (isFrameElement):
        (Frame::setFocusNodeIfNeeded):
        (Frame::selectionLayoutChanged):
        (Frame::setXPosForVerticalArrowNavigation):
        (Frame::xPosForVerticalArrowNavigation):
        (Frame::timerEvent):
        (Frame::paintCaret):
        (Frame::paintDragCaret):
        (Frame::urlSelected):
        (Frame::requestFrame):
        (Frame::requestFrameName):
        (Frame::requestObject):
        (Frame::processObjectRequest):
        (Frame::submitFormAgain):
        (Frame::submitForm):
        (Frame::slotParentCompleted):
        (Frame::slotChildStarted):
        (Frame::slotChildCompleted):
        (Frame::childFrame):
        (Frame::findFrame):
        (Frame::frameExists):
        (Frame::parentFrame):
        (Frame::zoomFactor):
        (Frame::slotIncZoom):
        (Frame::slotDecZoom):
        (Frame::setZoomFactor):
        (Frame::setJSStatusBarText):
        (Frame::setJSDefaultStatusBarText):
        (Frame::jsStatusBarText):
        (Frame::jsDefaultStatusBarText):
        (Frame::referrer):
        (Frame::lastModified):
        (Frame::reparseConfiguration):
        (Frame::frameNames):
        (Frame::frames):
        (Frame::childFrameNamed):
        (Frame::setDNDEnabled):
        (Frame::dndEnabled):
        (Frame::shouldDragAutoNode):
        (Frame::customEvent):
        (Frame::isPointInsideSelection):
        (Frame::selectClosestWordFromMouseEvent):
        (Frame::handleMousePressEventDoubleClick):
        (Frame::handleMousePressEventTripleClick):
        (Frame::handleMousePressEventSingleClick):
        (Frame::khtmlMousePressEvent):
        (Frame::khtmlMouseDoubleClickEvent):
        (Frame::handleMouseMoveEventSelection):
        (Frame::khtmlMouseMoveEvent):
        (Frame::khtmlMouseReleaseEvent):
        (Frame::khtmlDrawContentsEvent):
        (Frame::startAutoScroll):
        (Frame::stopAutoScroll):
        (Frame::selectAll):
        (Frame::selectContentsOfNode):
        (Frame::shouldChangeSelection):
        (Frame::shouldBeginEditing):
        (Frame::shouldEndEditing):
        (Frame::isContentEditable):
        (Frame::lastEditCommand):
        (Frame::appliedEditing):
        (Frame::unappliedEditing):
        (Frame::reappliedEditing):
        (Frame::typingStyle):
        (Frame::setTypingStyle):
        (Frame::clearTypingStyle):
        (Frame::slotPartRemoved):
        (Frame::createHTMLEventListener):
        (Frame::opener):
        (Frame::setOpener):
        (Frame::openedByJS):
        (Frame::setOpenedByJS):
        (Frame::preloadStyleSheet):
        (Frame::preloadScript):
        (Frame::restored):
        (Frame::incrementFrameCount):
        (Frame::decrementFrameCount):
        (Frame::topLevelFrameCount):
        (Frame::tabsToLinks):
        (Frame::tabsToAllControls):
        (Frame::copyToPasteboard):
        (Frame::cutToPasteboard):
        (Frame::pasteFromPasteboard):
        (Frame::pasteAndMatchStyle):
        (Frame::transpose):
        (Frame::redo):
        (Frame::undo):
        (Frame::computeAndSetTypingStyle):
        (Frame::applyStyle):
        (Frame::applyParagraphStyle):
        (updateState):
        (Frame::selectionHasStyle):
        (Frame::selectionStartHasStyle):
        (Frame::selectionStartStylePropertyValue):
        (Frame::selectionComputedStyle):
        (Frame::applyEditingStyleToBodyElement):
        (Frame::removeEditingStyleFromBodyElement):
        (Frame::applyEditingStyleToElement):
        (Frame::removeEditingStyleFromElement):
        (Frame::isCharacterSmartReplaceExempt):
        (Frame::connectChild):
        (Frame::disconnectChild):
        (Frame::keepAlive):
        (Frame::slotEndLifeSupport):
        (Frame::selectFrameElementInParentIfFullySelected):
        (Frame::handleFallbackContent):
        * khtml/Frame.h: Added.
        * khtml/css/cssstyleselector.cpp:
        (khtml::CSSStyleSelector::CSSStyleSelector):
        (khtml::CSSStyleSelector::initForStyleResolve):
        (khtml::CSSStyleSelector::checkOneSelector):
        (khtml::CSSStyleSelector::applyProperty):
        (khtml::CSSStyleSelector::getComputedSizeFromSpecifiedSize):
        * khtml/css/cssstyleselector.h:
        * khtml/ecma/kjs_binding.cpp:
        (KJS::ScriptInterpreter::ScriptInterpreter):
        (KJS::ScriptInterpreter::~ScriptInterpreter):
        * khtml/ecma/kjs_binding.h:
        (KJS::ScriptInterpreter::frame):
        * khtml/ecma/kjs_dom.cpp:
        (KJS::DOMDocument::getValueProperty):
        (KJS::getDOMDocumentNode):
        (KJS::checkNodeSecurity):
        * khtml/ecma/kjs_events.cpp:
        (KJS::JSAbstractEventListener::handleEvent):
        (KJS::JSLazyEventListener::parseCode):
        * khtml/ecma/kjs_html.cpp:
        (KJS::KJS::HTMLDocFunction::callAsFunction):
        (KJS::HTMLDocument::namedItemGetter):
        (KJS::HTMLDocument::getValueProperty):
        (KJS::KJS::HTMLDocument::putValueProperty):
        (KJS::HTMLElement::framesetNameGetter):
        (KJS::HTMLElement::frameWindowPropertyGetter):
        (KJS::HTMLElement::getOwnPropertySlot):
        (KJS::KJS::HTMLElement::implementsCall):
        (KJS::Image::notifyFinished):
        * khtml/ecma/kjs_navigator.cpp:
        (KJS::Navigator::Navigator):
        (KJS::Navigator::getValueProperty):
        (KJS::NavigatorFunc::callAsFunction):
        * khtml/ecma/kjs_navigator.h:
        (KJS::Navigator::frame):
        * khtml/ecma/kjs_proxy.cpp:
        (KJSProxyImpl::KJSProxyImpl):
        (KJSProxyImpl::evaluate):
        (KJSProxyImpl::clear):
        (KJSProxyImpl::createHTMLEventHandler):
        (KJSProxyImpl::interpreter):
        (KJSProxyImpl::initScript):
        * khtml/ecma/kjs_proxy.h:
        * khtml/ecma/kjs_traversal.cpp:
        (KJS::JSNodeFilterCondition::acceptNode):
        * khtml/ecma/kjs_window.cpp:
        (KJS::History::History):
        (KJS::FrameArray::FrameArray):
        (KJS::Screen::getValueProperty):
        (KJS::Window::Window):
        (KJS::Window::interpreter):
        (KJS::Window::retrieveWindow):
        (KJS::Window::retrieve):
        (KJS::Window::location):
        (KJS::Window::selection):
        (KJS::Window::locationbar):
        (KJS::Window::menubar):
        (KJS::Window::personalbar):
        (KJS::Window::statusbar):
        (KJS::Window::toolbar):
        (KJS::Window::scrollbars):
        (KJS::allowPopUp):
        (KJS::createNewWindow):
        (KJS::canShowModalDialog):
        (KJS::canShowModalDialogNow):
        (KJS::showModalDialog):
        (KJS::Window::getValueProperty):
        (KJS::Window::childFrameGetter):
        (KJS::Window::namedFrameGetter):
        (KJS::Window::indexGetter):
        (KJS::Window::namedItemGetter):
        (KJS::Window::getOwnPropertySlot):
        (KJS::Window::put):
        (KJS::Window::toBoolean):
        (KJS::Window::scheduleClose):
        (KJS::Window::isSafeScript):
        (KJS::Window::setListener):
        (KJS::Window::getListener):
        (KJS::Window::setCurrentEvent):
        (KJS::WindowFunc::callAsFunction):
        (KJS::Window::updateLayout):
        (KJS::ScheduledAction::execute):
        (KJS::WindowQObject::WindowQObject):
        (KJS::FrameArray::getValueProperty):
        (KJS::FrameArray::indexGetter):
        (KJS::FrameArray::nameGetter):
        (KJS::FrameArray::getOwnPropertySlot):
        (KJS::Location::Location):
        (KJS::Location::getValueProperty):
        (KJS::Location::getOwnPropertySlot):
        (KJS::Location::put):
        (KJS::Location::toString):
        (KJS::LocationFunc::callAsFunction):
        (KJS::Selection::Selection):
        (KJS::Selection::getValueProperty):
        (KJS::Selection::getOwnPropertySlot):
        (KJS::Selection::toString):
        (KJS::SelectionFunc::callAsFunction):
        (KJS::BarInfo::BarInfo):
        (KJS::BarInfo::getValueProperty):
        (KJS::BarInfo::getOwnPropertySlot):
        (KJS::History::getValueProperty):
        (KJS::HistoryFunc::callAsFunction):
        * khtml/ecma/kjs_window.h:
        (KJS::Window::frame):
        (KJS::Location::frame):
        (KJS::Selection::frame):
        (KJS::BarInfo::frame):
        * khtml/ecma/xmlhttprequest.cpp:
        (KJS::XMLHttpRequest::changeState):
        (KJS::XMLHttpRequestProtoFunc::callAsFunction):
        * khtml/editing/SelectionController.cpp:
        (khtml::SelectionController::modify):
        (khtml::SelectionController::xPosForVerticalArrowNavigation):
        * khtml/editing/SelectionController.h:
        (khtml::SelectionController::frame):
        * khtml/editing/delete_selection_command.cpp:
        (khtml::DeleteSelectionCommand::calculateTypingStyleAfterDelete):
        * khtml/editing/edit_command.cpp:
        (khtml::EditCommand::EditCommand):
        (khtml::EditCommand::apply):
        (khtml::EditCommand::unapply):
        (khtml::EditCommand::reapply):
        (khtml::EditCommand::styleAtPosition):
        * khtml/editing/htmlediting.cpp:
        * khtml/editing/insert_line_break_command.cpp:
        (khtml::InsertLineBreakCommand::doApply):
        * khtml/editing/insert_text_command.cpp:
        (khtml::InsertTextCommand::input):
        * khtml/editing/jsediting.cpp:
        (DOM::JSEditor::execCommand):
        (DOM::JSEditor::queryCommandEnabled):
        (DOM::JSEditor::queryCommandIndeterm):
        (DOM::JSEditor::queryCommandState):
        (DOM::JSEditor::queryCommandValue):
        * khtml/editing/jsediting.h:
        * khtml/editing/replace_selection_command.cpp:
        (khtml::ReplaceSelectionCommand::doApply):
        * khtml/editing/text_granularity.h:
        * khtml/editing/typing_command.cpp:
        (khtml::TypingCommand::deleteKeyPressed):
        (khtml::TypingCommand::forwardDeleteKeyPressed):
        (khtml::TypingCommand::insertText):
        (khtml::TypingCommand::insertLineBreak):
        (khtml::TypingCommand::insertParagraphSeparatorInQuotedContent):
        (khtml::TypingCommand::insertParagraphSeparator):
        (khtml::TypingCommand::markMisspellingsAfterTyping):
        (khtml::TypingCommand::typingAddedToOpenCommand):
        (khtml::TypingCommand::insertTextRunWithoutNewlines):
        * khtml/html/html_baseimpl.cpp:
        (HTMLFrameElementImpl::isURLAllowed):
        (HTMLFrameElementImpl::openURL):
        (HTMLFrameElementImpl::attach):
        (HTMLFrameElementImpl::close):
        (HTMLFrameElementImpl::contentPart):
        (HTMLFrameElementImpl::contentDocument):
        (HTMLIFrameElementImpl::attach):
        * khtml/html/html_baseimpl.h:
        * khtml/html/html_canvasimpl.cpp:
        * khtml/html/html_documentimpl.cpp:
        (DOM::HTMLDocumentImpl::lastModified):
        * khtml/html/html_elementimpl.cpp:
        (HTMLElementImpl::isContentEditable):
        (HTMLElementImpl::setContentEditable):
        * khtml/html/html_formimpl.cpp:
        (DOM::HTMLFormElementImpl::formData):
        (DOM::HTMLFormElementImpl::prepareSubmit):
        (DOM::HTMLFormElementImpl::submit):
        (DOM::HTMLFormElementImpl::reset):
        (DOM::HTMLGenericFormElementImpl::isKeyboardFocusable):
        (DOM::HTMLKeygenElementImpl::appendFormData):
        * khtml/html/html_headimpl.cpp:
        (HTMLBaseElementImpl::process):
        (HTMLLinkElementImpl::process):
        (HTMLScriptElementImpl::parseMappedAttribute):
        (HTMLScriptElementImpl::insertedIntoDocument):
        (HTMLScriptElementImpl::evaluateScript):
        * khtml/html/html_imageimpl.cpp:
        * khtml/html/html_inlineimpl.cpp:
        (DOM::HTMLAnchorElementImpl::isKeyboardFocusable):
        (DOM::HTMLAnchorElementImpl::defaultEventHandler):
        * khtml/html/html_objectimpl.cpp:
        (DOM::HTMLAppletElementImpl::createRenderer):
        (DOM::HTMLAppletElementImpl::getAppletInstance):
        (DOM::HTMLEmbedElementImpl::getEmbedInstance):
        (DOM::HTMLEmbedElementImpl::rendererIsNeeded):
        (DOM::HTMLObjectElementImpl::getObjectInstance):
        (DOM::HTMLObjectElementImpl::rendererIsNeeded):
        * khtml/html/html_tableimpl.cpp:
        * khtml/html/htmlparser.cpp:
        (HTMLParser::noscriptCreateErrorCheck):
        * khtml/html/htmltokenizer.cpp:
        (khtml::HTMLTokenizer::scriptHandler):
        (khtml::HTMLTokenizer::scriptExecution):
        (khtml::HTMLTokenizer::parseTag):
        (khtml::HTMLTokenizer::write):
        (khtml::HTMLTokenizer::stopParsing):
        (khtml::HTMLTokenizer::timerEvent):
        (khtml::HTMLTokenizer::processToken):
        * khtml/khtml_part.cpp: Removed.
        * khtml/khtml_part.h: Removed.
        * khtml/khtmlpart_p.h:
        (KHTMLPartPrivate::KHTMLPartPrivate):
        * khtml/khtmlview.cpp:
        (KHTMLView::KHTMLView):
        (KHTMLView::~KHTMLView):
        (KHTMLView::clearPart):
        (KHTMLView::clear):
        (KHTMLView::resizeEvent):
        (KHTMLView::adjustViewSize):
        (KHTMLView::layout):
        (KHTMLView::updateDashboardRegions):
        (KHTMLView::viewportMousePressEvent):
        (KHTMLView::viewportMouseDoubleClickEvent):
        (selectCursor):
        (KHTMLView::viewportMouseMoveEvent):
        (KHTMLView::viewportMouseReleaseEvent):
        (KHTMLView::keyPressEvent):
        (KHTMLView::dispatchDragEvent):
        (KHTMLView::updateDragAndDrop):
        (KHTMLView::focusNextPrevNode):
        (KHTMLView::mediaType):
        (KHTMLView::dispatchMouseEvent):
        (KHTMLView::viewportWheelEvent):
        (KHTMLView::focusInEvent):
        (KHTMLView::focusOutEvent):
        (KHTMLView::timerEvent):
        (KHTMLView::scheduleRelayout):
        (KHTMLView::unscheduleRelayout):
        * khtml/khtmlview.h:
        (KHTMLView::frame):
        * khtml/misc/CachedImageCallback.cpp:
        (khtml::CachedImageCallback::notifyUpdate):
        (khtml::CachedImageCallback::notifyFinished):
        (khtml::CachedImageCallback::clear):
        * khtml/misc/CachedObject.h:
        * khtml/misc/DocLoader.cpp:
        (khtml::DocLoader::DocLoader):
        (khtml::DocLoader::requestImage):
        (khtml::DocLoader::requestStyleSheet):
        (khtml::DocLoader::requestScript):
        (khtml::DocLoader::requestXSLStyleSheet):
        (khtml::DocLoader::requestXBLDocument):
        * khtml/misc/DocLoader.h:
        (khtml::DocLoader::frame):
        * khtml/misc/loader.cpp:
        (khtml::Loader::slotReceivedResponse):
        * khtml/rendering/InlineTextBox.cpp:
        (khtml::InlineTextBox::paint):
        (khtml::InlineTextBox::paintMarkedTextUnderline):
        * khtml/rendering/InlineTextBox.h:
        * khtml/rendering/render_applet.cpp:
        (RenderApplet::createWidgetIfNecessary):
        * khtml/rendering/render_block.cpp:
        (khtml::RenderBlock::paintCaret):
        * khtml/rendering/render_canvas.cpp:
        * khtml/rendering/render_form.cpp:
        (RenderFileButton::RenderFileButton):
        * khtml/rendering/render_frames.cpp:
        (isURLAllowed):
        (RenderPartObject::updateWidget):
        * khtml/rendering/render_layer.cpp:
        * khtml/rendering/render_object.cpp:
        (RenderObject::draggableNode):
        * khtml/rendering/render_replaced.cpp:
        (RenderWidget::eventFilter):
        * khtml/xml/dom2_eventsimpl.h:
        * khtml/xml/dom_docimpl.cpp:
        (DocumentImpl::DocumentImpl):
        (DocumentImpl::updateTitle):
        (DocumentImpl::frame):
        (DocumentImpl::recalcStyle):
        (DocumentImpl::updateSelection):
        (DocumentImpl::open):
        (DocumentImpl::close):
        (DocumentImpl::implicitClose):
        (DocumentImpl::processHttpEquiv):
        (DocumentImpl::selectedStylesheetSet):
        (DocumentImpl::setSelectedStylesheetSet):
        (DocumentImpl::recalcStyleSelector):
        (DocumentImpl::relinquishesEditingFocus):
        (DocumentImpl::acceptsEditingFocus):
        (DocumentImpl::clearSelectionIfNeeded):
        (DocumentImpl::createHTMLEventListener):
        (DocumentImpl::ownerElement):
        (DocumentImpl::referrer):
        (DocumentImpl::parentDocument):
        * khtml/xml/dom_docimpl.h:
        * khtml/xml/dom_elementimpl.cpp:
        (ElementImpl::focus):
        * khtml/xml/dom_nodeimpl.cpp:
        (DOM::NodeImpl::dispatchEvent):
        * khtml/xml/dom_xmlimpl.cpp:
        (DOM::ProcessingInstructionImpl::checkStyleSheet):
        * khtml/xml/xml_tokenizer.cpp:
        (khtml::XMLTokenizer::processingInstruction):
        (khtml::XMLTokenizer::executeScripts):
        (khtml::XMLTokenizer::notifyFinished):
        * khtml/xsl/xslt_processorimpl.cpp:
        (DOM::XSLTProcessorImpl::createDocumentFromSource):
        * ksvg2/svg/SVGAElementImpl.cpp:
        (SVGAElementImpl::defaultEventHandler):
        * ksvg2/svg/SVGImageElementImpl.cpp:
        (SVGImageElementImpl::notifyFinished):
        * kwq/DOM.mm:
        (-[DOMNode KJS::Bindings::]):
        * kwq/DOMHTML.mm:
        * kwq/DOMInternal.mm:
        (-[WebScriptObject _initializeScriptDOMNodeImp]):
        * kwq/KWQAccObject.mm:
        (-[KWQAccObject textUnderElement]):
        (-[KWQAccObject value]):
        (-[KWQAccObject accessibilityPerformAction:]):
        (-[KWQAccObject accessibilityAttributeValue:]):
        (-[KWQAccObject doAXTextMarkerForPosition:]):
        (-[KWQAccObject rendererForView:]):
        (-[KWQAccObject doSetAXSelectedTextMarkerRange:]):
        * kwq/KWQClipboard.h:
        * kwq/KWQClipboard.mm:
        (KWQClipboard::KWQClipboard):
        (KWQClipboard::dragNSImage):
        * kwq/KWQComboBox.mm:
        (-[KWQPopUpButtonCell trackMouse:inRect:ofView:untilMouseUp:]):
        (-[KWQPopUpButton becomeFirstResponder]):
        (-[KWQPopUpButton resignFirstResponder]):
        (-[KWQPopUpButton nextKeyView]):
        (-[KWQPopUpButton previousKeyView]):
        * kwq/KWQFileButton.h:
        * kwq/KWQFileButton.mm:
        (KWQFileButton::KWQFileButton):
        (KWQFileButton::focusPolicy):
        (KWQFileButton::focusChanged):
        * kwq/KWQFrame.mm:
        (QFrame::setFrameStyle):
        * kwq/KWQKHTMLFactory.h:
        * kwq/KWQKHTMLPart.cpp: Removed.
        * kwq/KWQKHTMLPart.h: Removed.
        * kwq/KWQKHTMLPart.mm: Removed.
        * kwq/KWQKHTMLPartBrowserExtension.h:
        * kwq/KWQKHTMLPartBrowserExtension.mm:
        (KHTMLPartBrowserExtension::KHTMLPartBrowserExtension):
        (KHTMLPartBrowserExtension::openURLRequest):
        (KHTMLPartBrowserExtension::createNewWindow):
        (KHTMLPartBrowserExtension::setIconURL):
        (KHTMLPartBrowserExtension::setTypedIconURL):
        (KHTMLPartBrowserExtension::canRunModal):
        (KHTMLPartBrowserExtension::canRunModalNow):
        (KHTMLPartBrowserExtension::runModal):
        * kwq/KWQKHTMLView.cpp:
        (KHTMLView::topLevelWidget):
        * kwq/KWQKJavaAppletWidget.h:
        * kwq/KWQKJavaAppletWidget.mm:
        (KJavaAppletWidget::KJavaAppletWidget):
        * kwq/KWQKPartsBrowserInterface.h:
        (KParts::BrowserInterface::BrowserInterface):
        * kwq/KWQKPartsBrowserInterface.mm:
        (KParts::BrowserInterface::property):
        (KParts::BrowserInterface::callMethod):
        * kwq/KWQLineEdit.mm:
        * kwq/KWQListBox.mm:
        (-[KWQListBoxScrollView becomeFirstResponder]):
        (-[KWQTableView keyDown:]):
        (-[KWQTableView keyUp:]):
        (-[KWQTableView becomeFirstResponder]):
        (-[KWQTableView resignFirstResponder]):
        (-[KWQTableView nextKeyView]):
        (-[KWQTableView previousKeyView]):
        * kwq/KWQLoader.mm:
        (KWQServeRequest):
        (KWQServeSynchronousRequest):
        (KWQCheckIfReloading):
        (KWQCheckCacheObjectStatus):
        (KWQCacheObjectExpiresTime):
        * kwq/KWQObject.cpp:
        (QObject::inherits):
        (QObject::isFrame):
        * kwq/KWQObject.h:
        * kwq/KWQPageState.mm:
        (-[KWQPageState dealloc]):
        (-[KWQPageState finalize]):
        * kwq/KWQRegExp.cpp:
        (QRegExp::KWQRegExpPrivate::compile):
        * kwq/KWQRenderTreeDebug.cpp:
        (write):
        (writeSelection):
        * kwq/KWQSlider.mm:
        (-[KWQSlider becomeFirstResponder]):
        (-[KWQSlider resignFirstResponder]):
        (-[KWQSlider nextKeyView]):
        (-[KWQSlider previousKeyView]):
        (-[KWQSlider canBecomeKeyView]):
        (QSlider::focusPolicy):
        * kwq/KWQSlot.mm:
        (KWQSlot::KWQSlot):
        (KWQSlot::call):
        * kwq/KWQTextArea.mm:
        (-[KWQTextAreaTextView textDidChange:]):
        (-[KWQTextAreaTextView _isResizableByUser]):
        (-[KWQTextAreaTextView becomeFirstResponder]):
        (-[KWQTextAreaTextView nextKeyView]):
        (-[KWQTextAreaTextView previousKeyView]):
        (-[KWQTextAreaTextView _trackResizeFromMouseDown:]):
        (-[KWQTextAreaTextView drawRect:]):
        (-[KWQTextAreaTextView insertTab:]):
        (-[KWQTextAreaTextView insertBacktab:]):
        (-[KWQTextAreaTextView resignFirstResponder]):
        (-[KWQTextAreaTextView shouldDrawInsertionPoint]):
        (-[KWQTextAreaTextView selectedTextAttributes]):
        (-[KWQTextAreaTextView keyDown:]):
        (-[KWQTextAreaTextView keyUp:]):
        * kwq/KWQTextField.mm:
        (-[KWQTextFieldController controlTextDidBeginEditing:]):
        (-[KWQTextFieldController controlTextDidEndEditing:]):
        (-[KWQTextFieldController controlTextDidChange:]):
        (-[KWQTextFieldController control:textView:doCommandBySelector:]):
        (-[KWQTextFieldController textView:shouldHandleEvent:]):
        (-[KWQTextFieldController setHasFocus:]):
        (-[KWQTextField nextKeyView]):
        (-[KWQTextField previousKeyView]):
        (-[KWQSecureTextField nextKeyView]):
        (-[KWQSecureTextField previousKeyView]):
        (-[KWQSearchField nextKeyView]):
        (-[KWQSearchField previousKeyView]):
        * kwq/KWQTimer.h:
        * kwq/KWQWidget.mm:
        (QWidget::setActiveWindow):
        (QWidget::hasFocus):
        (QWidget::setFocus):
        (QWidget::clearFocus):
        (QWidget::isVisible):
        (QWidget::mapFromGlobal):
        (QWidget::setIsSelected):
        * kwq/MacFrame.cpp: Added.
        (MacFrame::isFrameSet):
        * kwq/MacFrame.h: Added.
        (MacFrame::instances):
        (Mac):
        * kwq/MacFrame.mm: Added.
        (Frame::completed):
        (Frame::openURL):
        (Frame::onURL):
        (Frame::setStatusBarText):
        (Frame::started):
        (redirectionTimerMonitor):
        (MacFrame::MacFrame):
        (MacFrame::~MacFrame):
        (MacFrame::freeClipboard):
        (MacFrame::setSettings):
        (MacFrame::generateFrameName):
        (MacFrame::provisionalLoadStarted):
        (MacFrame::userGestureHint):
        (MacFrame::openURL):
        (MacFrame::openURLRequest):
        (MacFrame::didNotOpenURL):
        (MacFrame::currentForm):
        (MacFrame::searchForLabelsAboveCell):
        (MacFrame::searchForLabelsBeforeElement):
        (MacFrame::matchLabelsAgainstElement):
        (MacFrame::findString):
        (MacFrame::clearRecordedFormValues):
        (MacFrame::recordFormValue):
        (MacFrame::submitForm):
        (MacFrame::setEncoding):
        (MacFrame::addData):
        (Frame::frameDetached):
        (MacFrame::urlSelected):
        (MacFrame::createPart):
        (MacFrame::setView):
        (MacFrame::view):
        (MacFrame::setTitle):
        (MacFrame::setStatusBarText):
        (MacFrame::scheduleClose):
        (MacFrame::unfocusWindow):
        (MacFrame::revealSelection):
        (MacFrame::advanceToNextMisspelling):
        (MacFrame::scrollOverflow):
        (MacFrame::wheelEvent):
        (MacFrame::redirectionTimerStartedOrStopped):
        (MacFrame::paint):
        (MacFrame::adjustPageHeight):
        (MacFrame::renderer):
        (MacFrame::userAgent):
        (MacFrame::mimeTypeForFileName):
        (MacFrame::nextKeyViewInFrame):
        (MacFrame::nextKeyViewInFrameHierarchy):
        (MacFrame::nextKeyView):
        (MacFrame::nextKeyViewForWidget):
        (MacFrame::currentEventIsMouseDownInWidget):
        (MacFrame::currentEventIsKeyboardOptionTab):
        (MacFrame::handleKeyboardOptionTabInView):
        (MacFrame::tabsToLinks):
        (MacFrame::tabsToAllControls):
        (MacFrame::executionContextForDOM):
        (MacFrame::bindingRootObject):
        (MacFrame::windowScriptObject):
        (MacFrame::windowScriptNPObject):
        (MacFrame::partClearedInBegin):
        (MacFrame::pauseTimeouts):
        (MacFrame::resumeTimeouts):
        (MacFrame::canCachePage):
        (MacFrame::saveWindowProperties):
        (MacFrame::saveLocationProperties):
        (MacFrame::restoreWindowProperties):
        (MacFrame::restoreLocationProperties):
        (MacFrame::saveInterpreterBuiltins):
        (MacFrame::restoreInterpreterBuiltins):
        (MacFrame::openURLFromPageCache):
        (MacFrame::frameForWidget):
        (MacFrame::bridgeForWidget):
        (MacFrame::frameForNode):
        (MacFrame::documentViewForNode):
        (MacFrame::nodeForWidget):
        (MacFrame::setDocumentFocus):
        (MacFrame::clearDocumentFocus):
        (MacFrame::saveDocumentState):
        (MacFrame::restoreDocumentState):
        (MacFrame::mutableInstances):
        (MacFrame::updatePolicyBaseURL):
        (MacFrame::setPolicyBaseURL):
        (MacFrame::requestedURLString):
        (MacFrame::incomingReferrer):
        (MacFrame::forceLayout):
        (MacFrame::forceLayoutWithPageWidthRange):
        (MacFrame::sendResizeEvent):
        (MacFrame::sendScrollEvent):
        (MacFrame::runJavaScriptAlert):
        (MacFrame::runJavaScriptConfirm):
        (MacFrame::runJavaScriptPrompt):
        (MacFrame::locationbarVisible):
        (MacFrame::menubarVisible):
        (MacFrame::personalbarVisible):
        (MacFrame::scrollbarsVisible):
        (MacFrame::statusbarVisible):
        (MacFrame::toolbarVisible):
        (MacFrame::addMessageToConsole):
        (MacFrame::createEmptyDocument):
        (MacFrame::addMetaData):
        (MacFrame::keyEvent):
        (MacFrame::scrollToAnchor):
        (MacFrame::closeURL):
        (MacFrame::canMouseDownStartSelect):
        (MacFrame::khtmlMousePressEvent):
        (MacFrame::khtmlMouseDoubleClickEvent):
        (MacFrame::passWidgetMouseDownEventToWidget):
        (MacFrame::lastEventIsMouseUp):
        (MacFrame::mouseDownViewIfStillGood):
        (MacFrame::dragHysteresisExceeded):
        (MacFrame::dispatchDragSrcEvent):
        (MacFrame::eventMayStartDrag):
        (MacFrame::khtmlMouseMoveEvent):
        (MacFrame::dragSourceMovedTo):
        (MacFrame::dragSourceEndedAt):
        (MacFrame::dispatchCPPEvent):
        (MacFrame::mayCut):
        (MacFrame::mayCopy):
        (MacFrame::mayPaste):
        (MacFrame::tryCut):
        (MacFrame::tryCopy):
        (MacFrame::tryPaste):
        (MacFrame::khtmlMouseReleaseEvent):
        (MacFrame::clearTimers):
        (MacFrame::passSubframeEventToSubframe):
        (MacFrame::passWheelEventToChildWidget):
        (MacFrame::mouseDown):
        (MacFrame::mouseDragged):
        (MacFrame::mouseUp):
        (MacFrame::sendFakeEventsAfterWidgetTracking):
        (MacFrame::mouseMoved):
        (MacFrame::shouldDragAutoNode):
        (MacFrame::sendContextMenuEvent):
        (MacFrame::fileWrapperForElement):
        (MacFrame::attributedString):
        (MacFrame::selectionRect):
        (MacFrame::visibleSelectionRect):
        (MacFrame::centerSelectionInVisibleArea):
        (MacFrame::imageFromRect):
        (MacFrame::selectionImage):
        (MacFrame::snapshotDragImage):
        (MacFrame::styleForSelectionStart):
        (MacFrame::fontForSelection):
        (MacFrame::fontAttributesForSelectionStart):
        (MacFrame::baseWritingDirectionForSelectionStart):
        (MacFrame::topLevelWidget):
        (MacFrame::tokenizerProcessedData):
        (MacFrame::selectionStartOffset):
        (MacFrame::selectionEndOffset):
        (MacFrame::selectionStart):
        (MacFrame::selectionEnd):
        (MacFrame::setBridge):
        (MacFrame::overrideMediaType):
        (MacFrame::setMediaType):
        (MacFrame::setSelectionFromNone):
        (MacFrame::setDisplaysWithFocusAttributes):
        (MacFrame::displaysWithFocusAttributes):
        (MacFrame::setWindowHasFocus):
        (MacFrame::backslashAsCurrencySymbol):
        (MacFrame::bodyBackgroundColor):
        (MacFrame::keyboardUIMode):
        (MacFrame::setName):
        (MacFrame::didTellBridgeAboutLoad):
        (MacFrame::haveToldBridgeAboutLoad):
        (MacFrame::clear):
        (Frame::print):
        (MacFrame::getAppletInstanceForWidget):
        (MacFrame::getEmbedInstanceForWidget):
        (MacFrame::getObjectInstanceForWidget):
        (MacFrame::addPluginRootObject):
        (MacFrame::cleanupPluginRootObjects):
        (MacFrame::registerCommandForUndoOrRedo):
        (MacFrame::registerCommandForUndo):
        (MacFrame::registerCommandForRedo):
        (MacFrame::clearUndoRedoOperations):
        (MacFrame::issueUndoCommand):
        (MacFrame::issueRedoCommand):
        (MacFrame::issueCutCommand):
        (MacFrame::issueCopyCommand):
        (MacFrame::issuePasteCommand):
        (MacFrame::issuePasteAndMatchStyleCommand):
        (MacFrame::issueTransposeCommand):
        (Frame::canUndo):
        (Frame::canRedo):
        (Frame::canPaste):
        (MacFrame::markMisspellingsInAdjacentWords):
        (MacFrame::markMisspellings):
        (MacFrame::respondToChangedSelection):
        (MacFrame::shouldChangeSelection):
        (MacFrame::respondToChangedContents):
        (MacFrame::isContentEditable):
        (MacFrame::shouldBeginEditing):
        (MacFrame::shouldEndEditing):
        (convertAttributesToUnderlines):
        (MacFrame::setMarkedTextRange):
        (MacFrame::markedTextUsesUnderlines):
        (MacFrame::markedTextUnderlines):
        (MacFrame::canGoBackOrForward):
        (MacFrame::prepareForUserAction):
        (MacFrame::didFirstLayout):
        (MacFrame::dashboardRegionsDictionary):
        (MacFrame::dashboardRegionsChanged):
        (MacFrame::isCharacterSmartReplaceExempt):
        (MacFrame::isFrame):
        (MacFrame::mousePressNode):
        (MacFrame::handledOnloadEvents):
        (MacFrame::shouldClose):
        * kwq/WebCoreBridge.h:
        * kwq/WebCoreBridge.mm:
        (updateRenderingForBindings):
        (frameHasSelection):
        (+[WebCoreBridge bridgeForDOMDocument:]):
        (-[WebCoreBridge init]):
        (-[WebCoreBridge initializeSettings:]):
        (-[WebCoreBridge dealloc]):
        (-[WebCoreBridge finalize]):
        (-[WebCoreBridge part]):
        (-[WebCoreBridge setParent:]):
        (-[WebCoreBridge parent]):
        (-[WebCoreBridge provisionalLoadStarted]):
        (-[WebCoreBridge openURL:reload:contentType:refresh:lastModified:pageCache:]):
        (-[WebCoreBridge setEncoding:userChosen:]):
        (-[WebCoreBridge addData:]):
        (-[WebCoreBridge closeURL]):
        (-[WebCoreBridge stopLoading]):
        (-[WebCoreBridge didNotOpenURL:pageCache:]):
        (-[WebCoreBridge saveDocumentState]):
        (-[WebCoreBridge restoreDocumentState]):
        (-[WebCoreBridge scrollToAnchorWithURL:]):
        (-[WebCoreBridge scrollOverflowInDirection:granularity:]):
        (-[WebCoreBridge sendScrollWheelEvent:]):
        (-[WebCoreBridge saveDocumentToPageCache]):
        (-[WebCoreBridge canCachePage]):
        (-[WebCoreBridge clear]):
        (-[WebCoreBridge end]):
        (-[WebCoreBridge stop]):
        (-[WebCoreBridge handleFallbackContent]):
        (-[WebCoreBridge createKHTMLViewWithNSView:marginWidth:marginHeight:]):
        (-[WebCoreBridge scrollToAnchor:]):
        (-[WebCoreBridge isSelectionEditable]):
        (-[WebCoreBridge selectionState]):
        (-[WebCoreBridge _documentTypeString]):
        (-[WebCoreBridge selectedString]):
        (-[WebCoreBridge stringForRange:]):
        (-[WebCoreBridge selectAll]):
        (-[WebCoreBridge deselectAll]):
        (-[WebCoreBridge deselectText]):
        (-[WebCoreBridge isFrameSet]):
        (-[WebCoreBridge reapplyStylesForDeviceType:]):
        (nowPrinting):
        (-[WebCoreBridge _setupRootForPrinting:]):
        (-[WebCoreBridge forceLayoutAdjustingViewSize:]):
        (-[WebCoreBridge forceLayoutWithMinimumPageWidth:maximumPageWidth:adjustingViewSize:]):
        (-[WebCoreBridge sendResizeEvent]):
        (-[WebCoreBridge sendScrollEvent]):
        (-[WebCoreBridge drawRect:withPainter:]):
        (-[WebCoreBridge drawRect:]):
        (-[WebCoreBridge computePageRectsWithPrintWidthScaleFactor:printHeight:]):
        (-[WebCoreBridge adjustPageHeightNew:top:bottom:limit:]):
        (-[WebCoreBridge copyDOMTree:]):
        (-[WebCoreBridge copyRenderTree:]):
        (-[WebCoreBridge removeFromFrame]):
        (-[WebCoreBridge installInFrame:]):
        (-[WebCoreBridge setActivationEventNumber:]):
        (-[WebCoreBridge mouseDown:]):
        (-[WebCoreBridge mouseDragged:]):
        (-[WebCoreBridge mouseUp:]):
        (-[WebCoreBridge mouseMoved:]):
        (-[WebCoreBridge sendContextMenuEvent:]):
        (-[WebCoreBridge currentForm]):
        (-[WebCoreBridge searchForLabels:beforeElement:]):
        (-[WebCoreBridge matchLabels:againstElement:]):
        (-[WebCoreBridge elementAtPoint:]):
        (-[WebCoreBridge URLWithAttributeString:]):
        (-[WebCoreBridge searchFor:direction:caseSensitive:wrap:]):
        (-[WebCoreBridge advanceToNextMisspelling]):
        (-[WebCoreBridge advanceToNextMisspellingStartingJustBeforeSelection]):
        (-[WebCoreBridge unmarkAllMisspellings]):
        (-[WebCoreBridge setTextSizeMultiplier:]):
        (-[WebCoreBridge textEncoding]):
        (-[WebCoreBridge nextKeyView]):
        (-[WebCoreBridge previousKeyView]):
        (-[WebCoreBridge nextKeyViewInsideWebFrameViews]):
        (-[WebCoreBridge previousKeyViewInsideWebFrameViews]):
        (-[WebCoreBridge stringByEvaluatingJavaScriptFromString:forceUserGesture:]):
        (-[WebCoreBridge windowScriptObject]):
        (-[WebCoreBridge windowScriptNPObject]):
        (-[WebCoreBridge DOMDocument]):
        (-[WebCoreBridge selectedAttributedString]):
        (-[WebCoreBridge attributedStringFrom:startOffset:to:endOffset:]):
        (-[WebCoreBridge selectionRect]):
        (-[WebCoreBridge visibleSelectionRect]):
        (-[WebCoreBridge centerSelectionInVisibleArea]):
        (-[WebCoreBridge selectionImage]):
        (-[WebCoreBridge setName:]):
        (-[WebCoreBridge name]):
        (-[WebCoreBridge URL]):
        (-[WebCoreBridge baseURL]):
        (-[WebCoreBridge referrer]):
        (-[WebCoreBridge domain]):
        (-[WebCoreBridge opener]):
        (-[WebCoreBridge setOpener:]):
        (-[WebCoreBridge needsLayout]):
        (-[WebCoreBridge setNeedsLayout]):
        (-[WebCoreBridge interceptKeyEvent:toView:]):
        (-[WebCoreBridge renderTreeAsExternalRepresentation]):
        (-[WebCoreBridge setSelectionFromNone]):
        (-[WebCoreBridge setDisplaysWithFocusAttributes:]):
        (-[WebCoreBridge setWindowHasFocus:]):
        (-[WebCoreBridge numPendingOrLoadingRequests]):
        (-[WebCoreBridge doneProcessingData]):
        (-[WebCoreBridge shouldClose]):
        (-[WebCoreBridge bodyBackgroundColor]):
        (-[WebCoreBridge selectionColor]):
        (-[WebCoreBridge adjustViewSize]):
        (-[WebCoreBridge accessibilityTree]):
        (-[WebCoreBridge setDrawsBackground:]):
        (-[WebCoreBridge rangeByExpandingSelectionWithGranularity:]):
        (-[WebCoreBridge rangeByAlteringCurrentSelection:direction:granularity:]):
        (-[WebCoreBridge alterCurrentSelection:direction:granularity:]):
        (-[WebCoreBridge rangeByAlteringCurrentSelection:verticalDistance:]):
        (-[WebCoreBridge alterCurrentSelection:verticalDistance:]):
        (-[WebCoreBridge selectionGranularity]):
        (-[WebCoreBridge setSelectedDOMRange:affinity:closeTyping:]):
        (-[WebCoreBridge selectedDOMRange]):
        (-[WebCoreBridge convertToNSRange:DOM::]):
        (-[WebCoreBridge convertToDOMRange:]):
        (-[WebCoreBridge selectNSRange:]):
        (-[WebCoreBridge selectedNSRange]):
        (-[WebCoreBridge selectionAffinity]):
        (-[WebCoreBridge setMarkDOMRange:]):
        (-[WebCoreBridge markDOMRange]):
        (-[WebCoreBridge setMarkedTextDOMRange:customAttributes:ranges:]):
        (-[WebCoreBridge markedTextDOMRange]):
        (-[WebCoreBridge markedTextNSRange]):
        (-[WebCoreBridge replaceMarkedTextWithText:]):
        (-[WebCoreBridge smartDeleteRangeForProposedRange:]):
        (-[WebCoreBridge smartInsertForString:replacingRange:beforeString:afterString:]):
        (-[WebCoreBridge documentFragmentWithMarkupString:baseURLString:]):
        (-[WebCoreBridge documentFragmentWithText:]):
        (-[WebCoreBridge documentFragmentWithNodesAsParagraphs:]):
        (-[WebCoreBridge replaceSelectionWithFragment:selectReplacement:smartReplace:matchStyle:]):
        (-[WebCoreBridge insertLineBreak]):
        (-[WebCoreBridge insertParagraphSeparator]):
        (-[WebCoreBridge insertParagraphSeparatorInQuotedContent]):
        (-[WebCoreBridge insertText:selectInsertedText:]):
        (-[WebCoreBridge setSelectionToDragCaret]):
        (-[WebCoreBridge moveSelectionToDragCaret:smartMove:]):
        (-[WebCoreBridge _visiblePositionForPoint:]):
        (-[WebCoreBridge moveDragCaretToPoint:]):
        (-[WebCoreBridge removeDragCaret]):
        (-[WebCoreBridge dragCaretDOMRange]):
        (-[WebCoreBridge deleteSelectionWithSmartDelete:]):
        (-[WebCoreBridge deleteKeyPressedWithSmartDelete:]):
        (-[WebCoreBridge forwardDeleteKeyPressedWithSmartDelete:]):
        (-[WebCoreBridge typingStyle]):
        (-[WebCoreBridge setTypingStyle:withUndoAction:]):
        (-[WebCoreBridge applyStyle:withUndoAction:]):
        (-[WebCoreBridge applyParagraphStyle:withUndoAction:]):
        (-[WebCoreBridge selectionStartHasStyle:]):
        (-[WebCoreBridge selectionHasStyle:]):
        (-[WebCoreBridge applyEditingStyleToBodyElement]):
        (-[WebCoreBridge removeEditingStyleFromBodyElement]):
        (-[WebCoreBridge applyEditingStyleToElement:]):
        (-[WebCoreBridge removeEditingStyleFromElement:]):
        (-[WebCoreBridge fontForSelection:]):
        (-[WebCoreBridge fontAttributesForSelectionStart]):
        (-[WebCoreBridge baseWritingDirectionForSelectionStart]):
        (-[WebCoreBridge ensureSelectionVisible]):
        (-[WebCoreBridge eventMayStartDrag:]):
        (-[WebCoreBridge dragOperationForDraggingInfo:]):
        (-[WebCoreBridge dragExitedWithDraggingInfo:]):
        (-[WebCoreBridge concludeDragForDraggingInfo:]):
        (-[WebCoreBridge dragSourceMovedTo:]):
        (-[WebCoreBridge dragSourceEndedAt:operation:]):
        (-[WebCoreBridge mayDHTMLCut]):
        (-[WebCoreBridge mayDHTMLCopy]):
        (-[WebCoreBridge mayDHTMLPaste]):
        (-[WebCoreBridge tryDHTMLCut]):
        (-[WebCoreBridge tryDHTMLCopy]):
        (-[WebCoreBridge tryDHTMLPaste]):
        (-[WebCoreBridge rangeOfCharactersAroundCaret]):
        (-[WebCoreBridge dashboardRegions]):
        (-[WebCoreBridge executionContextForView:]):
        * kwq/WebCoreSettings.mm:
        (-[WebCoreSettings _updateAllViews]):
        * kwq/WebCoreTextRendererFactory.mm:
        (-[WebCoreTextRendererFactory clearCaches]):

2006-01-09  Darin Adler  <darin@apple.com>

        * Makefile.am: Removed.

2006-01-09  John Sullivan  <sullivan@apple.com>

        * khtml/misc/decoder.cpp:
        removed #include of recently-removed kcharsets.h to fix build

2006-01-08  Alexander Kellett  <lypanov@kde.org>

        Reviewed by eseidel.  Committed by eseidel.

        First set of refactors to fix
        http://bugs.webkit.org/show_bug.cgi?id=5748.

        Refactors to delay paintserver creation until usage and thereby
        simplify much code in the process. Causes several changes in rendertree 
        output all of which are improvements rather than regressions.

        * kcanvas/KCanvasItem.cpp: setupForDraw() logic moved to KCanvasItemQuartz
        * kcanvas/KCanvasItem.h:
        * kcanvas/KCanvasResources.cpp:
        (KCanvasResource::addClient): const-ify
        * kcanvas/KCanvasResources.h:
        * kcanvas/KCanvasTreeDebug.cpp:
        (writeStyle): minor refactor/inline - keeps most output the same after
        patch, some minor const'ifications
        * kcanvas/device/KRenderingFillPainter.cpp:
        setter
        (KRenderingFillPainter::Private::Private):
        * kcanvas/device/KRenderingFillPainter.h: refactor out paintserver and
        draw()
        * kcanvas/device/KRenderingStrokePainter.cpp: refactor out paintserver
        and draw()
        (KRenderingStrokePainter::Private::Private):
        * kcanvas/device/KRenderingStrokePainter.h:
        * kcanvas/device/quartz/KCanvasItemQuartz.mm:
        (KCanvasItemQuartz::paint):
        (KCanvasItemQuartz::hitsPath):
        * ksvg2/misc/KCanvasRenderingStyle.cpp:
        (KCanvasRenderingStyle::KCanvasRenderingStyle):
        (KCanvasRenderingStyle::~KCanvasRenderingStyle):
        (KCanvasRenderingStyle::overrideFillPaintServer):
        (KCanvasRenderingStyle::isFilled):
        (KCanvasRenderingStyle::fillPaintServer):
        (KCanvasRenderingStyle::overrideStrokePaintServer):
        (KCanvasRenderingStyle::isStroked):
        (KCanvasRenderingStyle::strokePaintServer):
        (KCanvasRenderingStyle::updateStyle): remove paintserver constructions
        from update notification and instead create on usage, removing
        disable.*Painter() methods
        * ksvg2/misc/KCanvasRenderingStyle.h:
        * ksvg2/svg/SVGImageElementImpl.cpp:
        (SVGImageElementImpl::notifyFinished): use paintserver override logic

2006-01-09  Alexey Proskuryakov  <ap@nypop.com>

        Fix broken build (CachedObject.cpp was still including kcharsets.h).
        Proposed and reviewed by Eric Seidel.

2006-01-09  Eric Seidel  <eseidel@apple.com>

        Reviewed by mjs.

        Remove more unused code from kwq.

        * ForwardingHeaders/dcopclient.h: Removed.
        * ForwardingHeaders/kaction.h: Removed.
        * ForwardingHeaders/kcharsets.h: Removed.
        * ForwardingHeaders/kcombobox.h: Removed.
        * ForwardingHeaders/klineedit.h: Removed.
        * ForwardingHeaders/klistbox.h: Removed.
        * ForwardingHeaders/kwin.h: Removed.
        * ForwardingHeaders/qcombobox.h: Added.
        * ForwardingHeaders/qlineedit.h: Added.
        * WebCore.xcodeproj/project.pbxproj: remove files.
        * khtml/css/csshelper.cpp:
        * khtml/css/cssstyleselector.cpp:
        * khtml/ecma/kjs_window.cpp:
        (KJS::Window::getValueProperty):
        * khtml/html/html_documentimpl.cpp:
        * khtml/html/html_formimpl.cpp:
        (DOM::HTMLOptionElementImpl::index):
        (DOM::HTMLOptionElementImpl::setIndex):
        * khtml/html/htmltokenizer.cpp:
        * khtml/html/htmltokenizer.h:
        * khtml/khtml_part.cpp:
        * khtml/khtmlpart_p.h:
        * khtml/rendering/render_form.cpp:
        (RenderLineEdit::RenderLineEdit):
        (RenderLineEdit::setStyle):
        (RenderLineEdit::updateFromElement):
        (RenderLineEdit::selectionStart):
        (RenderLineEdit::selectionEnd):
        (RenderLineEdit::setSelectionStart):
        (RenderLineEdit::setSelectionEnd):
        (RenderLineEdit::select):
        (RenderLineEdit::setSelectionRange):
        (ComboBoxWidget::ComboBoxWidget):
        (ComboBoxWidget::event):
        (ComboBoxWidget::eventFilter):
        (RenderSelect::setWidgetWritingDirection):
        (RenderSelect::updateFromElement):
        (RenderSelect::layout):
        (RenderSelect::slotSelectionChanged):
        (RenderSelect::createListBox):
        (RenderSelect::updateSelection):
        (RenderTextArea::RenderTextArea):
        * khtml/rendering/render_form.h:
        (khtml::RenderLineEdit::widget):
        * kwq/KWQDCOPClient.h: Removed.
        * kwq/KWQKCharsets.cpp: Removed.
        * kwq/KWQKCharsets.h: Removed.
        * kwq/KWQKComboBox.h: Removed.
        * kwq/KWQKKAction.h: Removed.
        * kwq/KWQKLineEdit.h: Removed.
        * kwq/KWQKListBox.h: Removed.
        * kwq/KWQKWin.cpp: Removed.
        * kwq/KWQKWin.h: Removed.
        * kwq/KWQWidget.h:
        * kwq/KWQWidget.mm:

2006-01-09  Eric Seidel  <eseidel@apple.com>

        Reviewed by mjs.

        Removing more unused parts of KWQ.

        * ForwardingHeaders/java/kjavaappletcontext.h: Removed.
        * ForwardingHeaders/khtml_find.h: Removed.
        * ForwardingHeaders/qimage.h: Removed.
        * ForwardingHeaders/rendering/break_lines.h: Removed.
        * ForwardingHeaders/rendering/render_text.h: Removed.
        * ForwardingHeaders/xbl/xbl_docimpl.h: Removed.
        * WebCore.xcodeproj/project.pbxproj:
        * khtml/html/html_canvasimpl.cpp:
        * khtml/html/html_imageimpl.cpp:
        * khtml/html/html_objectimpl.cpp:
        * khtml/html/html_objectimpl.h:
        * khtml/khtml_part.cpp:
        (KHTMLPart::init):
        (KHTMLPart::~KHTMLPart):
        (KHTMLPart::clear):
        * khtml/khtml_part.h:
        * khtml/khtmlpart_p.h:
        (KHTMLPartPrivate::KHTMLPartPrivate):
        (KHTMLPartPrivate::~KHTMLPartPrivate):
        * khtml/rendering/render_applet.cpp:
        (RenderApplet::RenderApplet):
        (RenderApplet::createWidgetIfNecessary):
        * khtml/rendering/render_applet.h:
        * ksvg2/svg/SVGFEImageElementImpl.cpp:
        * ksvg2/svg/SVGImageElementImpl.cpp:
        * kwq/DOMHTML.mm:
        * kwq/KWQDummyView.h: Removed.
        * kwq/KWQDummyView.m: Removed.
        * kwq/KWQImage.h: Removed.
        * kwq/KWQKHTMLFind.h: Removed.
        * kwq/KWQKHTMLPart.mm:
        * kwq/KWQKHTMLPartBrowserExtension.h:
        * kwq/KWQKJavaAppletContext.h: Removed.
        * kwq/KWQKJavaAppletWidget.h:
        * kwq/KWQKJavaAppletWidget.mm:
        (KJavaAppletWidget::KJavaAppletWidget):
        * kwq/KWQKPartsBrowserExtension.h:
        * kwq/KWQObject.h:
        * kwq/KWQRegion.h:

2006-01-09  Eric Seidel  <eseidel@apple.com>

        Rubber stamped by mjs.

        Broke out loader.{h,cpp} into multiple files, one per class.
        This patch also updates all files which previously included
        loader.h to only include the necessary renamed headers.
        http://bugs.webkit.org/show_bug.cgi?id=6444

        * ForwardingHeaders/kdom/cache/KDOMCachedDocument.h: Removed.
        * ForwardingHeaders/kdom/cache/KDOMCachedImage.h: updated include
        * ForwardingHeaders/kdom/cache/KDOMCachedObject.h: updated include
        * ForwardingHeaders/kdom/cache/KDOMCachedScript.h: updated include
        * WebCore.xcodeproj/project.pbxproj: added files
        * khtml/css/css_computedstyle.cpp: updated includes
        * khtml/css/css_ruleimpl.cpp: updated includes
        * khtml/css/css_stylesheetimpl.h: updated includes
        * khtml/css/css_valueimpl.cpp: updated includes
        * khtml/css/cssstyleselector.cpp: updated includes
        * khtml/ecma/kjs_events.cpp: updated includes
        * khtml/ecma/kjs_html.cpp: updated includes
        * khtml/ecma/xmlhttprequest.cpp: updated includes
        * khtml/html/html_headimpl.cpp: updated includes
        * khtml/html/html_imageimpl.cpp: updated includes
        * khtml/html/html_imageimpl.h: updated includes
        * khtml/html/htmltokenizer.cpp: updated includes
        * khtml/khtml_part.cpp: updated includes
        * khtml/khtmlview.cpp: updated includes
        * khtml/misc/Cache.cpp: Added.
        * khtml/misc/Cache.h: Added.
        * khtml/misc/CachedCSSStyleSheet.cpp: Added.
        * khtml/misc/CachedCSSStyleSheet.h: Added.
        * khtml/misc/CachedImage.cpp: Added.
        * khtml/misc/CachedImage.h: Added.
        * khtml/misc/CachedImageCallback.cpp: Added.
        * khtml/misc/CachedImageCallback.h: Added.
        * khtml/misc/CachedObject.cpp: Added.
        * khtml/misc/CachedObject.h: Added, fixed tabs -> spaces.
        * khtml/misc/CachedObjectClientWalker.cpp: Added.
        * khtml/misc/CachedObjectClientWalker.h: Added.
        * khtml/misc/CachedScript.cpp: Added.
        * khtml/misc/CachedScript.h: Added.
        * khtml/misc/CachedXBLDocument.cpp: Added.
        * khtml/misc/CachedXBLDocument.h: Added.
        * khtml/misc/CachedXSLStyleSheet.cpp: Added.
        * khtml/misc/CachedXSLStyleSheet.h: Added.
        * khtml/misc/DocLoader.cpp: Added.
        * khtml/misc/DocLoader.h: Added.
        * khtml/misc/Request.cpp: Added.
        * khtml/misc/Request.h: Added.
        * khtml/misc/loader.cpp: updated includes
        * khtml/misc/loader.h: updated includes
        * khtml/misc/loader_client.h: updated includes
        * khtml/rendering/render_box.cpp: updated includes
        * khtml/rendering/render_line.cpp: updated includes
        * khtml/rendering/render_list.cpp: updated includes
        * khtml/rendering/render_object.cpp: updated includes
        * khtml/xml/dom_docimpl.cpp: updated includes
        * khtml/xml/dom_xmlimpl.cpp: updated includes
        * khtml/xml/xml_tokenizer.cpp: updated includes
        * khtml/xsl/xsl_stylesheetimpl.cpp: updated includes
        * khtml/xsl/xsl_stylesheetimpl.h: updated includes
        * khtml/xsl/xslt_processorimpl.cpp: updated includes
        * ksvg2/svg/SVGCursorElementImpl.cpp: updated includes
        * ksvg2/svg/SVGDocumentImpl.cpp: updated includes
        * ksvg2/svg/SVGFEImageElementImpl.cpp: updated includes
        * ksvg2/svg/SVGImageElementImpl.cpp: updated includes
        * ksvg2/svg/SVGImageElementImpl.h: updated includes
        * kwq/KWQKHTMLPart.mm: updated includes
        * kwq/KWQLoader.mm: updated includes
        * kwq/KWQPixmap.mm: updated includes
        * kwq/KWQTextArea.mm: updated includes
        * kwq/WebCoreBridge.mm: updated includes
        * kwq/WebCoreCache.mm: updated includes

2006-01-09  Alexey Proskuryakov  <ap@nypop.com>

        Reviewed by Maciej.

        - fix http://bugs.webkit.org/show_bug.cgi?id=6402
          Implement frameElement.width and frameElement.height

        Test case: fast/frames/frameElement-widthheight.html

        * khtml/ecma/kjs_html.cpp:
        (KJS::HTMLElement::frameGetter):
        * khtml/ecma/kjs_html.h:
        Add FrameWidth, FrameHeight

        * khtml/html/html_baseimpl.cpp:
        (HTMLFrameElementImpl::frameWidth):
        (HTMLFrameElementImpl::frameHeight):
        * khtml/html/html_baseimpl.h:
        Add frameWidth, frameHeight

2006-01-09  Mitz Pettel  <opendarwin.org@mitzpettel.com>

        Reviewed by Maciej, landed by ap.
        
        Test: fast/replaced/inline-box-wrapper-handover.html
        
        - fix http://bugs.webkit.org/show_bug.cgi?id=6276
          Image thumbnails are misplaced on forum.2ostrov.ru
          
        * khtml/rendering/render_line.cpp:
        (khtml::InlineBox::deleteLine): Don't reset the inline box wrapper when
        deleting an extracted box.

2006-01-08  Eric Seidel  <eseidel@apple.com>

        Reviewed by ggaren.

        Remove all mention of NSView from khtml.

        * khtml/html/html_objectimpl.cpp:
        (DOM::HTMLAppletElementImpl::getAppletInstance): call w/ widget
        (DOM::HTMLEmbedElementImpl::getEmbedInstance): call w/ widget
        (DOM::HTMLObjectElementImpl::getObjectInstance): call w/ widget
        * kwq/KWQKHTMLPart.h:
        * kwq/KWQKHTMLPart.mm:
        (KWQKHTMLPart::getAppletInstanceForWidget): renamed.
        (KWQKHTMLPart::getEmbedInstanceForWidget): renamed.
        (KWQKHTMLPart::getObjectInstanceForWidget): renamed.

2006-01-08  Eric Seidel  <eseidel@apple.com>

        Rubber stamped by ggaren.

        * ForwardingHeaders/qsortedlist.h: Added. (a khtml file was referencing KWQ directly.)
        * WebCore.xcodeproj/project.pbxproj: added new files.
        * khtml/editing/SelectionController.cpp: updated includes
        * khtml/editing/composite_edit_command.cpp: updated includes
        * khtml/editing/htmlediting.cpp: updated includes
        * khtml/editing/markup.cpp: updated includes
        * khtml/editing/visible_position.cpp: updated includes
        * khtml/editing/visible_text.cpp: updated includes
        * khtml/editing/visible_text.h: updated includes
        * khtml/editing/visible_units.cpp: updated includes
        * khtml/khtml_part.cpp: updated includes
        * khtml/khtmlview.cpp: updated includes
        * khtml/rendering/InlineTextBox.cpp: Split out from render_text
        * khtml/rendering/InlineTextBox.h: Split out from render_text
        * khtml/rendering/RenderText.cpp: Split out from render_text
        (khtml::RenderText::position): removed DEBUG_LAYOUT
        * khtml/rendering/RenderText.h: Split out from render_text
        * khtml/rendering/RenderTextFragment.cpp: Split out from render_text
        * khtml/rendering/RenderTextFragment.h: Split out from render_text
        * khtml/rendering/bidi.cpp: updated includes
        * khtml/rendering/render_block.cpp: updated includes
        * khtml/rendering/render_br.cpp: updated includes
        * khtml/rendering/render_br.h: updated includes
        * khtml/rendering/render_button.cpp: updated includes
        * khtml/rendering/render_container.cpp: updated includes
        * khtml/rendering/render_flow.cpp: updated includes
        * khtml/rendering/render_line.cpp: updated includes
        * khtml/rendering/render_object.cpp: updated includes
        * khtml/rendering/render_text.cpp: Removed.
        * khtml/rendering/render_text.h: Removed.
        * khtml/xml/dom_docimpl.cpp: updated includes
        * khtml/xml/dom_nodeimpl.cpp: updated includes
        * khtml/xml/dom_position.cpp: updated includes
        * khtml/xml/dom_textimpl.cpp: updated includes
        * kwq/KWQAccObject.mm: updated includes
        * kwq/KWQKHTMLPart.mm: updated includes
        * kwq/KWQRenderTreeDebug.cpp: updated includes

2006-01-08  Eric Seidel  <eseidel@apple.com>

        Reviewed by mjs & xenon.

        Renamed a few in kwq/ from .mm to .cpp

        * WebCore.xcodeproj/project.pbxproj: updated paths
        * kwq/KWQDictImpl.cpp: Added.
        * kwq/KWQDictImpl.mm: Removed.
        * kwq/KWQKPartsEvent.cpp: Added.
        * kwq/KWQKPartsEvent.mm: Removed.
        * kwq/KWQListImpl.cpp: Added.
        * kwq/KWQListImpl.mm: Removed.

2006-01-08  Eric Seidel  <eseidel@apple.com>

        Reviewed by mjs.

        Renamed several files in kwq/ from .mm to .cpp
        Removed a few pieces of unused KWQ code.

        * WebCore.xcodeproj/project.pbxproj:
        * khtml/html/htmltokenizer.cpp:
        (khtml::HTMLTokenizer::continueProcessing): removed KWQUIEventTime
        (khtml::HTMLTokenizer::write): removed KWQUIEventTime
        * khtml/html/htmltokenizer.h:
        * khtml/khtml_part.cpp:
        (KHTMLPart::slotFinished): removed KWQUIEventTime
        * khtml/misc/loader.cpp:
        (CachedObject::finish): removed KWQUIEventTime
        * khtml/xml/dom_docimpl.cpp:
        (DocumentImpl::processHttpEquiv): removed KWQUIEventTime
        * kwq/KWQArrayImpl.cpp: Added.
        * kwq/KWQArrayImpl.mm: Removed.
        * kwq/KWQBuffer.cpp: Added.
        * kwq/KWQBuffer.mm: Removed.
        * kwq/KWQCString.cpp: Added.
        * kwq/KWQCString.mm: Removed.
        * kwq/KWQCharsets.cpp: Added.
        * kwq/KWQCharsets.mm: Removed.
        * kwq/KWQCollection.h:
        (QPtrCollection::~QPtrCollection): made inline
        * kwq/KWQCollection.mm: Removed.
        * kwq/KWQDateTime.cpp: Added, removed KWQUIEventTime
        * kwq/KWQDateTime.h:
        * kwq/KWQDateTime.mm: Removed.
        * kwq/KWQGlobal.cpp: Added.
        * kwq/KWQGlobal.mm: Removed.
        * kwq/KWQGuardedPtr.cpp: Added.
        * kwq/KWQGuardedPtr.mm: Removed.
        * kwq/KWQKCharsets.cpp: Added.
        * kwq/KWQKCharsets.mm: Removed.
        * kwq/KWQKGlobalSettings.h:
        (KGlobalSettings::generalFont): made inline
        (KGlobalSettings::windowTitleFont): made inline
        (KGlobalSettings::menuFont): made inline
        (KGlobalSettings::contrast): made inline
        * kwq/KWQKGlobalSettings.mm: Removed.
        * kwq/KWQKHTMLFactory.cpp: Added.
        * kwq/KWQKHTMLFactory.mm: Removed.
        * kwq/KWQKHTMLView.cpp: Added.
        * kwq/KWQKHTMLView.mm: Removed.
        * kwq/KWQKJob.h:
        * kwq/KWQKJob.mm: Removed.
        * kwq/KWQKWin.cpp: Added.
        * kwq/KWQKWin.mm: Removed.
        * kwq/KWQMapImpl.cpp: Added.
        * kwq/KWQMapImpl.mm: Removed.
        * kwq/KWQObject.cpp: Added.
        * kwq/KWQObject.mm: Removed.
        * kwq/KWQPen.cpp: Added.
        * kwq/KWQPen.mm: Removed.
        * kwq/KWQPointArray.cpp: Added.
        * kwq/KWQPointArray.mm: Removed.
        * kwq/KWQPtrDictImpl.cpp: Added.
        * kwq/KWQPtrDictImpl.mm: Removed.
        * kwq/KWQRegExp.cpp: Added.
        * kwq/KWQRegExp.mm: Removed.
        * kwq/KWQRegion.cpp: Added.
        * kwq/KWQRegion.mm: Removed.
        * kwq/KWQStyle.cpp: Added.
        * kwq/KWQStyle.mm: Removed.
        * kwq/KWQTextCodec.cpp: Added.
        * kwq/KWQTextCodec.mm: Removed.
        * kwq/KWQTextStream.cpp: Added.
        * kwq/KWQTextStream.mm: Removed.
        * kwq/KWQTimer.cpp: Added.
        * kwq/KWQTimer.mm: Removed.
        * kwq/KWQValueListImpl.cpp: Added.
        * kwq/KWQValueListImpl.mm: Removed.
        * kwq/KWQVariant.cpp: Added.
        * kwq/KWQVariant.mm: Removed.
        * kwq/KWQVectorImpl.cpp: Added.
        * kwq/KWQVectorImpl.mm: Removed.
        * kwq/KWQWMatrix.cpp: Added.
        * kwq/KWQWMatrix.mm: Removed.

2006-01-07  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by Eric.

        - added basic SVG text support using CSS-based rendering
        http://bugs.webkit.org/show_bug.cgi?id=4883
 
        Affects many test results in LayoutTests/svg.

        * kcanvas/RenderSVGText.cpp: Added. Simple subclass of RenderBlock for SVG text.
        (RenderSVGText::RenderSVGText): just call superclass constructor.
        (RenderSVGText::translateTopToBaseline): helper to account for the fact that
        y coordinates for <text> give the baseline position, but the render tree expects
        current y to be the top.
        (RenderSVGText::translateForAttributes): translate to account for x and y
        attributes.
        (RenderSVGText::paint): Apply appropriate CTM transform and then just let
        RenderBlock paint.
        * kcanvas/RenderSVGText.h: Added.
        (RenderSVGText::renderName):
        * kcanvas/device/quartz/KRenderingDeviceQuartz.mm:
        (KRenderingDeviceContextQuartz::nsGraphicsContext): We want the context flipped.
        * ksvg2/css/svg.css: Give <svg:text> display: block
        * ksvg2/svg/SVGTextElementImpl.cpp:
        (SVGTextElementImpl::createRenderer): Create a RenderSVGText renderer.
        (SVGTextElementImpl::childShouldCreateRenderer): Let child text nodes make
        renderers, but nothing else (for now).
        * ksvg2/svg/SVGTextElementImpl.h:
        (KSVG::SVGTextElementImpl::rendererIsNeeded): It sure is! :-)
        * WebCore.xcodeproj/project.pbxproj: Add new files.

2006-01-07  Eric Seidel  <eseidel@apple.com>

        Reviewed by mjs

        Removed old, unneeded code.

        * WebCore+SVG/DrawCanvasItem.h: Removed.
        * WebCore+SVG/DrawCanvasItem.mm: Removed.
        * WebCore+SVG/DrawCanvasItemPrivate.h: Removed.
        * WebCore+SVG/DrawDocument.h: Removed.
        * WebCore+SVG/DrawDocument.mm: Removed.
        * WebCore+SVG/DrawDocumentPrivate.h: Removed.
        * WebCore+SVG/DrawView.h: Removed.
        * WebCore+SVG/DrawView.mm: Removed.
        * WebCore+SVG/DrawViewPrivate.h: Removed.
        * WebCore+SVG/NSSVGImageRep.h: Removed.
        * WebCore+SVG/NSSVGImageRep.m: Removed.
        * WebCore.xcodeproj/project.pbxproj: remove files

2006-01-07  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by Eric.

        - fixed WebCore build
        http://bugs.webkit.org/show_bug.cgi?id=6404

        * khtml/rendering/render_canvasimage.h: Remove unneeded extern declarations.

2006-01-07  Anders Carlsson  <andersca@mac.com>

        Reviewed by Maciej.

        - Fix http://bugs.webkit.org/show_bug.cgi?id=6373
        REGRESSION: JavaScript hang when comparing large array to null
        
        * khtml/ecma/kjs_html.cpp:
        Remove toPrimitive.
        
        * khtml/ecma/kjs_html.h:
        (KJS::HTMLAllCollection::isEqualToNull):
        Implement isEqualToNull and have it return true.

2006-01-06  Eric Seidel  <eseidel@apple.com>

        Reviewed by darin.

        <rdar://problem/4386652> Crash: SVG filter crash at w3schools.com

        * kcanvas/device/quartz/KCanvasFilterQuartz.mm:
        (KCanvasFEDiffuseLightingQuartz::getCIFilter): nil check
        (KCanvasFESpecularLightingQuartz::getCIFilter): nil check

2006-01-06  Geoffrey Garen  <ggaren@apple.com>

        Patch by Mitz, reviwed by Darin, layout tested and landed by me.

        - Fixed http://bugs.webkit.org/show_bug.cgi?id=6382
        REGRESSION: Repro crash when clicking link with target="_blank"

        * kwq/KWQKHTMLPart.mm:
        (KWQKHTMLPart::setName):
        * manual-tests/empty-link-target.html: Added.

2006-01-06  Alexey Proskuryakov  <ap@nypop.com>

        Reviewed by Darin.

        - fix http://bugs.webkit.org/show_bug.cgi?id=5291
          FORM multipart/form-data with GET method issue

        Test cases: 
        * fast/forms/form-get-multipart.html
        * fast/forms/form-get-multipart2.html
        * fast/forms/form-get-multipart3.html
        * fast/forms/form-post-urlencoded.html

        * khtml/html/html_formimpl.cpp:
        (DOM::HTMLFormElementImpl::submit):
        Reset m_multipart to false if not posting.
        (DOM::HTMLFormElementImpl::parseEnctype):
        multipart/form-data doesn't imply POST method.

2006-01-06  Alexey Proskuryakov  <ap@nypop.com>

        Reviewed by Eric.

        - fix http://bugs.webkit.org/show_bug.cgi?id=5792
          Crasher on rendering-shapes from SVG 1.0 testsuite

        Test case: fast/parser/entity-ignorable-whitespace.xhtml

        * khtml/xml/xml_tokenizer.cpp:
        (khtml::XMLTokenizer::finish): install an ignorableWhitespace callback to
        work around a libxml2 bug
        (khtml::ignorableWhitespaceHandler): no-op

2006-01-06  Anders Carlsson  <andersca@mac.com>

        Reviewed by Eric.

        - fix http://bugs.webkit.org/show_bug.cgi?id=5142
        parseXMLDocumentFragment can't parse fragments correctly
        
        * khtml/xml/xml_tokenizer.cpp:
        (khtml::balancedStartElementNsHandler):
        (khtml::balancedEndElementNsHandler):
        (khtml::balancedCharactersHandler):
        (khtml::balancedProcessingInstructionHandler):
        (khtml::balancedCdataBlockHandler):
        (khtml::balancedCommentHandler):
        (khtml::balancedWarningHandler):
        Add handlers.
        
        (khtml::parseXMLDocumentFragment):
        Change back into using xmlParseBalancedChunkMemory. 

2006-01-06  Alexander Kellett  <lypanov@kde.org>

        Reviewed by eseidel.  Landed by eseidel.

        Basic support for <mask> tag.
        http://bugs.webkit.org/show_bug.cgi?id=5969
        Still missing attribute support for: maskUnits, maskContentUnits.
        
        Mask pixel tests do not work in DumpRenderTree due to:
        http://bugs.webkit.org/show_bug.cgi?id=6327
        Added test cases anyway.

        This also tickles a (known) gradient update issue:
        http://bugs.webkit.org/show_bug.cgi?id=6052
        
        Test: svg/custom/grayscale-gradient-mask.svg

        * WebCore.xcodeproj/project.pbxproj: added Mask files
        * kcanvas/KCanvasResources.cpp:
        (KCanvasMasker::KCanvasMasker): added.
        (KCanvasMasker::~KCanvasMasker): added.
        (KCanvasMasker::setMask): added.
        (KCanvasMasker::externalRepresentation): added.
        (getMaskerById): added.
        * kcanvas/KCanvasResources.h:
        (KCanvasResource::isMasker): added.
        (KCanvasMasker::isMasker): added.
        (KCanvasMasker::mask): added.
        * kcanvas/device/quartz/KCanvasItemQuartz.mm:
        (KCanvasItemQuartz::paint): added mask support
        * kcanvas/device/quartz/KCanvasMaskerQuartz.h: Added.
        (KCanvasMaskerQuartz::KCanvasMaskerQuartz): added.
        * kcanvas/device/quartz/KCanvasMaskerQuartz.mm: Added.
        (applyLuminanceToAlphaFilter): added.
        (applyExpandAlphatoGrayscaleFilter): added.
        (transformImageIntoGrayscaleMask): added.
        (KCanvasMaskerQuartz::applyMask): added.
        * kcanvas/device/quartz/KCanvasResourcesQuartz.mm:
        (KCanvasContainerQuartz::paint): added mask support.
        * kcanvas/device/quartz/KRenderingDeviceQuartz.mm:
        (KRenderingDeviceQuartz::createResource): added mask support.
        * kcanvas/device/quartz/KRenderingPaintServerGradientQuartz.mm:
        (KRenderingPaintServerRadialGradientQuartz::draw):
        * kcanvas/device/quartz/QuartzSupport.h:
        * kcanvas/device/quartz/QuartzSupport.mm:
        (debugDumpCGImageToFile): added, debug only.
        (debugDumpCGLayerToFile): added, debug only.
        (debugDumpCIImageToFile): added, debug only.
        * ksvg2/css/SVGCSSStyleSelector.cpp:
        (KDOM::CSSStyleSelector::applySVGProperty): added mask support.
        * ksvg2/css/SVGRenderStyle.cpp:
        (SVGRenderStyle::SVGRenderStyle): added mask support.
        (SVGRenderStyle::operator==): added mask support.
        * ksvg2/css/SVGRenderStyle.h:
        * ksvg2/css/SVGRenderStyleDefs.cpp:
        (StyleMaskData::StyleMaskData): added mask support.
        (StyleMaskData::operator==): added mask support.
        * ksvg2/css/SVGRenderStyleDefs.h:
        (KSVG::StyleMaskData::operator!=): added mask support.
        * ksvg2/ecma/Ecma.cpp:
        (Ecma::inheritedGetDOMNode): added mask support.
        * ksvg2/svg/SVGMaskElementImpl.cpp: Added.
        (KSVG::SVGMaskElementImpl::SVGMaskElementImpl): added.
        (KSVG::SVGMaskElementImpl::~SVGMaskElementImpl): added.
        (KSVG::SVGMaskElementImpl::x): added.
        (KSVG::SVGMaskElementImpl::y): added.
        (KSVG::SVGMaskElementImpl::width): added.
        (KSVG::SVGMaskElementImpl::height): added.
        (KSVG::SVGMaskElementImpl::attributeChanged): added.
        (KSVG::SVGMaskElementImpl::childrenChanged): added.
        (KSVG::SVGMaskElementImpl::parseMappedAttribute): added.
        (KSVG::SVGMaskElementImpl::drawMaskerContent): added.
        (KSVG::SVGMaskElementImpl::createRenderer): added.
        (KSVG::SVGMaskElementImpl::canvasResource): added.
        * ksvg2/svg/SVGMaskElementImpl.h: Added.
        (KSVG::SVGMaskElementImpl::isValid): added.
        (KSVG::SVGMaskElementImpl::rendererIsNeeded): added.
        * ksvg2/svg/svgtags.in: added <mask> support.

2006-01-04  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by Darin.

        - move frame management and finding code from WebKit to WebCore
        http://bugs.webkit.org/show_bug.cgi?id=6368

        * WebCore.exp: export WebCoreFrameNamespace
        * WebCore.xcodeproj/project.pbxproj: add new files
        * kwq/KWQKHTMLPart.mm:
        (KWQKHTMLPart::setName): Don't call to bridge any more, not needed
        * kwq/WebCoreBridge.h:
        * kwq/WebCoreBridge.mm:
        (isCaseSensitiveEqual): helper function
        (-[WebCoreBridge appendChild:]): remove excess braces
        (-[WebCoreBridge childFrameNamed:]): moved here from WebFrame
        (-[WebCoreBridge _deepLastChildFrame]): ditto
        (-[WebCoreBridge nextFrameWithWrap:]): ditto
        (-[WebCoreBridge previousFrameWithWrap:]): ditto
        (-[WebCoreBridge setFrameNamespace:]): ditto
        (-[WebCoreBridge frameNamespace]): ditto
        (-[WebCoreBridge _shouldAllowAccessFrom:]): ditto
        (-[WebCoreBridge _descendantFrameNamed:sourceFrame:]): ditto
        (-[WebCoreBridge _frameInAnyWindowNamed:sourceFrame:]): ditto
        (-[WebCoreBridge findFrameNamed:]): ditto
        (-[WebCoreBridge setName:]): don't call KHTMLPart setName directly,
        the kwq version is fine
        (-[WebCoreBridge _addFramePathToString:]): moved from WebFrame
        (-[WebCoreBridge generateFrameName]): ditto

2006-01-04  Anders Carlsson  <andersca@mac.com>

        Reviewed by Eric.

        Based on a patch by Eric.
        
        - fix http://bugs.webkit.org/show_bug.cgi?id=6180
        "text" output in fragment produced by XSLTProccessor is wrong (has xhtml garbage)
        
        * khtml/xsl/xslt_processorimpl.cpp:
        (DOM::xsltParamArrayFromParameterMap):
        (DOM::freeXsltParamArray):
        Use fastMalloc/fastFree.
        
        (DOM::createFragmentFromSource):
        If the output is "text", just create a text node and add
        it to the fragment.

2006-01-04  Geoffrey Garen  <ggaren@apple.com>

        Reviewed by darin.

        - Fixed http://bugs.webkit.org/show_bug.cgi?id=6311
        document.plugins doesn't exist

        * khtml/ecma/kjs_html.cpp: Added 'plugins' as synonym for 'embeds'

2006-01-04  Geoffrey Garen  <ggaren@apple.com>
 
         Reviewed by darin.
 
         - Fixed <rdar://problem/4214080> document.embeds: embeds[0].Play() 
         undefined at languageguide.org prevents audio playing on mouseover
 
         - Layout test: fast/dom/object-embed-plugin-scripting.html
 
         A common idiom the kids like to use these days for plugins is to nest 
         an <embed> inside an <object>, and assume that IE will honor the first,
         Mozilla the second. We happen to honor both, but the rules dictate that
         only the outer <object> gets a plugin/renderer. (A plugin is a 
        renderer.) This is a problem because sites ID us as Mozilla and 
        therefore attempt to script their plugins through the <embed>, which 
        has no plugin/renderer. The fix here is to have an <embed> return its 
        parent node's plugin/renderer when queried, if and only if it has no 
        renderer of its own and its parent node is an <object>. We may decide
        to restrict this further in the future.

        One happy consequence of this patch is that all the apple.com Quicktime
        websites we had previously broken with TOT are now fixed. 

        * khtml/html/html_objectimpl.cpp:
        (DOM::HTMLEmbedElementImpl::getEmbedInstance): The "if (!r)" clause 
        implements the logic I just described. The code below it I changed 
        just for style, to match the style in getObjectInstance().

        (DOM::HTMLEmbedElementImpl::rendererIsNeeded): Assert that an <object>
        parent has a renderer because we're going to use it later.

        (DOM::HTMLObjectElementImpl::rendererIsNeeded): Changed to match style 
        of HTMLEmbedElementImpl counterpart.

2006-01-04  Mitz Pettel  <opendarwin.org@mitzpettel.com>

        Reviewed by Darin, landed by ap.
        
        - fix http://bugs.webkit.org/show_bug.cgi?id=6301
          REGRESSION: Border repaint glitch

        * khtml/rendering/render_object.cpp:
        (RenderObject::repaintAfterLayoutIfNeeded): Repaint parts of the
        border that moved.
        * manual-tests/border-repaint-glitch.html: Added.

2005-12-30  Kimmo Kinnunen  <kimmo.kinnunen@nokia.com>

        Reviewed by eseidel.  Landed by eseidel.

        Changed use of QRect to QRectF in the points where SVG can have
        fractional numbers
        http://bugs.webkit.org/show_bug.cgi?id=4462

        Added test cases:
        * svg/custom/fractional-rects.svg: copy of rounded-rects.svg with
        fractional coordinates.

        * WebCore.xcodeproj/project.pbxproj:
        * kwq/KWQWMatrix.h:
        * kwq/KWQWMatrix.mm:
        (QWMatrix::mapRect): mapRect for QRectF
        * kwq/KWQRectF.h:
        * kwq/KWQRectF.mm:  Added. QRectF impl
        * kwq/KWQSizeF.h:
        * kwq/KWQSizeF.mm:  Added.QSizeF impl
        * kwq/KWQPointF.h:
        * kwq/KWQPointF.mm: Added. QPointF impl
        * kcanvas/KCanvasContainer.cpp:
        (KCanvasContainer::fillContains):
        (KCanvasContainer::strokeContains):
        (KCanvasContainer::relativeBBox):
        (KCanvasContainer::getAspectRatio): QRect -> QRectF
        * kcanvas/KCanvasContainer.h:
        * kcanvas/KCanvasFilters.cpp:
        (KCanvasFilterEffect::subRegion):
        (KCanvasFilterEffect::setSubRegion): QRect -> QRectF
        * kcanvas/KCanvasFilters.h:
        (KCanvasFilter::filterRect):
        (KCanvasFilter::setFilterRect): QRect -> QRectF
        (KCanvasFEConvolveMatrix::kernelSize):
        (KCanvasFEConvolveMatrix::setKernelSize):
        (KCanvasFEConvolveMatrix::targetOffset):
        (KCanvasFEConvolveMatrix::setTargetOffset): QSize -> QSizeF
        * kcanvas/KCanvasItem.cpp:
        (RenderPath::fillContains):
        (RenderPath::strokeContains):
        (RenderPath::relativeBBox): QRect -> QRectF
        * kcanvas/KCanvasItem.h:
        * kcanvas/KCanvasResources.cpp:
        (KCanvasMarker::draw): QRect -> QRectF
        * kcanvas/KCanvasResources.h:
        * kcanvas/KCanvasTreeDebug.cpp:
        (hasFractions): helper function
        (operator<<): QSizeF operator, QRectF operator
        * kcanvas/KCanvasTreeDebug.h:
        * kcanvas/device/KRenderingPaintServerGradient.cpp:
        (KRenderingPaintServerLinearGradient::gradientStart):
        (KRenderingPaintServerLinearGradient::setGradientStart):
        (KRenderingPaintServerLinearGradient::gradientEnd):
        (KRenderingPaintServerLinearGradient::setGradientEnd):
        (KRenderingPaintServerRadialGradient::gradientCenter):
        (KRenderingPaintServerRadialGradient::setGradientCenter):
        (KRenderingPaintServerRadialGradient::gradientFocal):
        (KRenderingPaintServerRadialGradient::setGradientFocal): QPoint -> QPointF
        * kcanvas/device/KRenderingPaintServerGradient.h:
        * kcanvas/device/KRenderingPaintServerPattern.cpp:
        (KRenderingPaintServerPattern::Private::Private): x, y, width, height -> QRectF
        (KRenderingPaintServerPattern::setBbox): replaced get/set methods
        (KRenderingPaintServerPattern::bbox): replaced get/set methods
        (KRenderingPaintServerPattern::externalRepresentation):
        * kcanvas/device/KRenderingPaintServerPattern.h:
        * kcanvas/device/quartz/KCanvasFilterQuartz.h:
        * kcanvas/device/quartz/KCanvasFilterQuartz.mm:
        (KCanvasFilterQuartz::prepareFilter):
        (KCanvasFilterQuartz::applyFilter): QRect -> QRectF
        * kcanvas/device/quartz/KCanvasItemQuartz.h:
        (KCanvasItemQuartz::getAbsoluteRepaintRect): QRect -> QRectF
        * kcanvas/device/quartz/KCanvasItemQuartz.mm:
        (drawMarkerWithData):
        (KCanvasItemQuartz::drawMarkersIfNeeded):
        (KCanvasItemQuartz::paint): QRect -> QRectF
        (KCanvasItemQuartz::nodeAtPoint): QPoint -> QPointF
        (KCanvasItemQuartz::bboxForPath) :QRect -> QRectF
        (KCanvasItemQuartz::hitsPath):
        * kcanvas/device/quartz/KCanvasResourcesQuartz.h:
        (KCanvasContainerQuartz::getAbsoluteRepaintRect): QRect -> QRectF
        * kcanvas/device/quartz/KRenderingPaintServerQuartz.mm:
        (KRenderingPaintServerPatternQuartz::draw): QRect -> QRectF
        * khtml/rendering/render_object.h:
        (khtml::RenderObject::relativeBBox):QRect -> QRectF
        * ksvg2/svg/SVGFilterElementImpl.cpp:
        (SVGFilterElementImpl::canvasResource): QRect -> QRectF
        * ksvg2/svg/SVGFilterPrimitiveStandardAttributesImpl.cpp:
        (SVGFilterPrimitiveStandardAttributesImpl::setStandardAttributes):
        * ksvg2/svg/SVGLengthImpl.cpp:
        (SVGLengthImpl::value): QRect -> QRectF
        * ksvg2/svg/SVGLinearGradientElementImpl.cpp:
        (SVGLinearGradientElementImpl::buildGradient): QPoint -> QPointF, removed integer conversions
        * ksvg2/svg/SVGLocatableImpl.cpp:
        (SVGLocatableImpl::getBBox): Rect -> QRectF
        * ksvg2/svg/SVGPatternElementImpl.cpp:
        (SVGPatternElementImpl::drawPatternContentIntoTile): QRect -> QRectF
        * ksvg2/svg/SVGRadialGradientElementImpl.cpp:
        (SVGRadialGradientElementImpl::buildGradient): QPoint -> QPointF, removed integer conversions
        * ksvg2/svg/SVGSVGElementImpl.cpp:
        (SVGSVGElementImpl::checkIntersection): QRect -> QRectF, removed integer conversions
        (SVGSVGElementImpl::checkEnclosure): QRect -> QRectF, removed integer conversions

2006-01-03  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by Vicki.

        - moved frame traversal code across from bridge, also dropped the children
        array

        * kwq/WebCoreBridge.h:
        * kwq/WebCoreBridge.mm:
        (-[WebCoreBridge firstChild]): Moved from WebBridge. Use new _firstChild
        pointer.
        (-[WebCoreBridge lastChild]): Moved from WebBridge. Use new _lastChild pointer.
        (-[WebCoreBridge childCount]): Moved from WebBridge. Use _childCount variable.
        (-[WebCoreBridge previousSibling]): Moved from WebBridge.
        (-[WebCoreBridge nextSibling]): ditt
        (-[WebCoreBridge isDescendantOfFrame:]): ditto
        (-[WebCoreBridge traverseNextFrameStayWithin:]): ditto
        (-[WebCoreBridge appendChild:]): Moved from WebBridge, maintain count and first/last
        pointers.
        (-[WebCoreBridge removeChild:]): Moved from WebBridge, maintain count and first/last
        pointers.

2006-01-03  Justin Garcia  <justin.garcia@apple.com>

        Reviewed by harrison

        <http://bugs.webkit.org/show_bug.cgi?id=4609>
        window.getSelection().toString() is undefined (range object 
        returned from window.getSelection() is useless)

        toString was defined as a method on the JS Selection object, 
        but it didn't return anything.

        Added layout test:
        * editing/selection/toString.html

        * khtml/ecma/kjs_window.cpp:
        (KJS::SelectionFunc::callAsFunction):

2006-01-03  Geoffrey Garen  <ggaren@apple.com>

        Reviewed by timo.

        - Fixed: http://bugs.webkit.org/show_bug.cgi?id=6318
        REGRESSION: Repro crash in JS called from Flash on bdash.net.nz

        Since we clear all the plugin data structures in setView, we need to
        clear the windowScriptObject as well. I had already done this in my
        previous patch, but I didn't realize there are two windowScriptObjects 
        -- one for Netscape PlugIns, and one for WebKit PlugIns.

        * kwq/KWQKHTMLPart.mm:
        (KWQKHTMLPart::setView): Clear the Netscape PlugIn windowScriptObject
        as well.

2006-01-03  Anders Carlsson  <andersca@mac.com>

        Reviewed by Eric.

        - fix http://bugs.webkit.org/show_bug.cgi?id=6358
        JS objects missing "prototype" properties
        
        * khtml/ecma/XSLTProcessor.cpp:
        (KJS::XSLTProcessorConstructorImp::XSLTProcessorConstructorImp):
        * khtml/ecma/XSLTProcessor.h:
        * khtml/ecma/domparser.cpp:
        (KJS::DOMParserConstructorImp::DOMParserConstructorImp):
        * khtml/ecma/xmlhttprequest.cpp:
        (KJS::XMLHttpRequestConstructorImp::XMLHttpRequestConstructorImp):
        * khtml/ecma/xmlserializer.cpp:
        (KJS::XMLSerializerConstructorImp::XMLSerializerConstructorImp):
        Add "prototype" property in constructors.

2006-01-03  Eric Seidel  <eseidel@apple.com>

        Reviewed by darin.

        REGRESSION: repro crash w/ invalid charset attribute on <script>
        http://bugs.webkit.org/show_bug.cgi?id=6345
        I also made some small spacing cleanup here.
        I did *not* fix the usage in formData, as the move from KCharSet to
        QTextCodec actually fixed a bug whereby if the first listed charset
        in accept-charsets was invalid, we would assume latin1 instead of
        checking for the next valid one before assuming system encoding.

        * khtml/html/html_formimpl.cpp:
        (DOM::HTMLFormElementImpl::formData): cleanup
        * khtml/misc/loader.cpp:
        (CachedCSSStyleSheet::CachedCSSStyleSheet): null check
        (CachedScript::CachedScript): cleanup
        (CachedXSLStyleSheet::CachedXSLStyleSheet): null check
        (CachedXBLDocument::CachedXBLDocument): cleanup

2006-01-03  Justin Garcia  <justin.garcia@apple.com>

        <http://bugs.webkit.org/show_bug.cgi?id=4904>
        Bug with baseOffset and extentOffset in selections (for writely.com)
        <rdar://problem/4259818>
        selection object incorrect after double-clicking a word
        
        Reviewed by harrison

        Changed the Selection object's anchor/focus properties to match 
        Mozilla's Selection object API, added getRangeAt and outlined the 
        rest of the API.
        Cleaned up the JS Selection object (to do less work in the DOM binding).
        Added an updateLayout call to VisiblePosition::init and removed some 
        updateLayout calls from other parts of the editing code.
        
        Added layout tests:
        * editing/selection/getRangeAt.html
        * editing/selection/anchor-focus1.html
        * editing/selection/anchor-focus2.html
        * editing/selection/anchor-focus3.html
        Updated expected results:
        * editing/selection/unrendered-001-expected.txt

        * khtml/ecma/kjs_window.cpp:
        (KJS::Selection::getValueProperty):
        (KJS::Selection::toString):
        (KJS::SelectionFunc::callAsFunction):
        * khtml/ecma/kjs_window.h:
        (KJS::Selection::):
        * khtml/editing/SelectionController.cpp:
        (khtml::SelectionController::modify):
        (khtml::SelectionController::type):
        (khtml::SelectionController::toString):
        (khtml::SelectionController::getRangeAt):
        (khtml::SelectionController::setBaseAndExtent):
        (khtml::SelectionController::setPosition):
        (khtml::SelectionController::collapse):
        (khtml::SelectionController::collapseToEnd):
        (khtml::SelectionController::collapseToStart):
        (khtml::SelectionController::empty):
        (khtml::SelectionController::extend):
        (khtml::SelectionController::validate):
        * khtml/editing/SelectionController.h:
        (khtml::SelectionController::part):
        (khtml::SelectionController::baseNode):
        (khtml::SelectionController::extentNode):
        (khtml::SelectionController::baseOffset):
        (khtml::SelectionController::extentOffset):
        (khtml::SelectionController::anchorNode):
        (khtml::SelectionController::anchorOffset):
        (khtml::SelectionController::focusNode):
        (khtml::SelectionController::focusOffset):
        (khtml::SelectionController::isCollapsed):
        * khtml/editing/visible_position.cpp:
        (khtml::VisiblePosition::init):
        (khtml::VisiblePosition::isCandidate):
        * khtml/khtml_part.cpp:
        (KHTMLPart::handleMousePressEventSingleClick):

2006-01-03  Anders Carlsson  <andersca@mac.com>

        Reviewed by Maciej.

        - fix http://bugs.webkit.org/show_bug.cgi?id=5378
        createDocument fails with DOM Exception 5 when passed empty qname
        
        * khtml/ecma/kjs_dom.cpp:
        (KJS::DOMDOMImplementationProtoFunc::callAsFunction):
        When passing null to createDocument, pass a null DOMString, and not
        a DOMString containing the text "null".
        
        * khtml/xml/dom_docimpl.cpp:
        (DOMImplementationImpl::createDocument):
        Only validate the qualifiedName if it's not null or empty. Also, do not
        create the document element if the qualifiedName is null or empty.

2006-01-03  Eric Seidel  <eseidel@apple.com>

        Reviewed by darin.

        No functionality changes, no tests possible.

        khtml/editing should use RefPtr instead of manual ref/deref
        http://bugs.webkit.org/show_bug.cgi?id=6109

        Results in a slight performance gain < 1% on the PLT.

        * khtml/editing/SelectionController.cpp:
        (khtml::SelectionController::toRange):
        * khtml/editing/SelectionController.h:
        * khtml/editing/append_node_command.cpp:
        (khtml::AppendNodeCommand::AppendNodeCommand):
        (khtml::AppendNodeCommand::doApply):
        (khtml::AppendNodeCommand::doUnapply):
        * khtml/editing/append_node_command.h:
        (khtml::AppendNodeCommand::~AppendNodeCommand):
        (khtml::AppendNodeCommand::appendChild):
        (khtml::AppendNodeCommand::parentNode):
        * khtml/editing/apply_style_command.cpp:
        (khtml::StyleChange::init):
        (khtml::ApplyStyleCommand::removeInlineStyle):
        * khtml/editing/apply_style_command.h:
        * khtml/editing/composite_edit_command.cpp:
        (khtml::CompositeEditCommand::deleteInsignificantText):
        * khtml/editing/delete_from_text_node_command.cpp:
        (khtml::DeleteFromTextNodeCommand::DeleteFromTextNodeCommand):
        * khtml/editing/delete_from_text_node_command.h:
        (khtml::DeleteFromTextNodeCommand::~DeleteFromTextNodeCommand):
        (khtml::DeleteFromTextNodeCommand::node):
        * khtml/editing/delete_selection_command.cpp:
        (khtml::DeleteSelectionCommand::initializePositionData):
        (khtml::DeleteSelectionCommand::saveTypingStyleState):
        (khtml::DeleteSelectionCommand::handleGeneralDelete):
        (khtml::DeleteSelectionCommand::calculateEndingPosition):
        (khtml::DeleteSelectionCommand::calculateTypingStyleAfterDelete):
        (khtml::DeleteSelectionCommand::clearTransientState):
        * khtml/editing/delete_selection_command.h:
        * khtml/editing/edit_command.cpp:
        (khtml::EditCommand::EditCommand):
        (khtml::EditCommand::~EditCommand):
        (khtml::EditCommand::setTypingStyle):
        (khtml::EditCommand::styleAtPosition):
        * khtml/editing/edit_command.h:
        (khtml::EditCommand::document):
        (khtml::EditCommand::typingStyle):
        * khtml/editing/insert_into_text_node_command.cpp:
        (khtml::InsertIntoTextNodeCommand::InsertIntoTextNodeCommand):
        * khtml/editing/insert_into_text_node_command.h:
        (khtml::InsertIntoTextNodeCommand::~InsertIntoTextNodeCommand):
        (khtml::InsertIntoTextNodeCommand::node):
        * khtml/editing/insert_node_before_command.cpp:
        (khtml::InsertNodeBeforeCommand::InsertNodeBeforeCommand):
        (khtml::InsertNodeBeforeCommand::doApply):
        (khtml::InsertNodeBeforeCommand::doUnapply):
        * khtml/editing/insert_node_before_command.h:
        (khtml::InsertNodeBeforeCommand::~InsertNodeBeforeCommand):
        (khtml::InsertNodeBeforeCommand::insertChild):
        (khtml::InsertNodeBeforeCommand::refChild):
        * khtml/editing/insert_paragraph_separator_command.cpp:
        (khtml::InsertParagraphSeparatorCommand::InsertParagraphSeparatorCommand):
        (khtml::InsertParagraphSeparatorCommand::~InsertParagraphSeparatorCommand):
        (khtml::InsertParagraphSeparatorCommand::calculateStyleBeforeInsertion):
        (khtml::InsertParagraphSeparatorCommand::applyStyleAfterInsertion):
        * khtml/editing/insert_paragraph_separator_command.h:
        * khtml/editing/join_text_nodes_command.cpp:
        (khtml::JoinTextNodesCommand::JoinTextNodesCommand):
        (khtml::JoinTextNodesCommand::doApply):
        (khtml::JoinTextNodesCommand::doUnapply):
        * khtml/editing/join_text_nodes_command.h:
        (khtml::JoinTextNodesCommand::~JoinTextNodesCommand):
        (khtml::JoinTextNodesCommand::firstNode):
        (khtml::JoinTextNodesCommand::secondNode):
        * khtml/editing/jsediting.cpp:
        * khtml/editing/markup.cpp:
        (khtml::createMarkup):
        (khtml::createFragmentFromMarkup):
        (khtml::createFragmentFromText):
        (khtml::createFragmentFromNodeList):
        * khtml/editing/markup.h:
        * khtml/editing/merge_identical_elements_command.cpp:
        (khtml::MergeIdenticalElementsCommand::MergeIdenticalElementsCommand):
        (khtml::MergeIdenticalElementsCommand::doApply):
        (khtml::MergeIdenticalElementsCommand::doUnapply):
        * khtml/editing/merge_identical_elements_command.h:
        (khtml::MergeIdenticalElementsCommand::~MergeIdenticalElementsCommand):
        * khtml/editing/move_selection_command.cpp:
        (khtml::MoveSelectionCommand::MoveSelectionCommand):
        (khtml::MoveSelectionCommand::~MoveSelectionCommand):
        (khtml::MoveSelectionCommand::doApply):
        * khtml/editing/move_selection_command.h:
        * khtml/editing/rebalance_whitespace_command.cpp:
        * khtml/editing/rebalance_whitespace_command.h:
        (khtml::RebalanceWhitespaceCommand::~RebalanceWhitespaceCommand):
        * khtml/editing/remove_css_property_command.cpp:
        (khtml::RemoveCSSPropertyCommand::RemoveCSSPropertyCommand):
        * khtml/editing/remove_css_property_command.h:
        (khtml::RemoveCSSPropertyCommand::~RemoveCSSPropertyCommand):
        (khtml::RemoveCSSPropertyCommand::styleDeclaration):
        * khtml/editing/remove_node_attribute_command.cpp:
        (khtml::RemoveNodeAttributeCommand::RemoveNodeAttributeCommand):
        * khtml/editing/remove_node_attribute_command.h:
        (khtml::RemoveNodeAttributeCommand::~RemoveNodeAttributeCommand):
        (khtml::RemoveNodeAttributeCommand::element):
        * khtml/editing/remove_node_command.cpp:
        (khtml::RemoveNodeCommand::RemoveNodeCommand):
        (khtml::RemoveNodeCommand::doApply):
        (khtml::RemoveNodeCommand::doUnapply):
        * khtml/editing/remove_node_command.h:
        (khtml::RemoveNodeCommand::~RemoveNodeCommand):
        (khtml::RemoveNodeCommand::node):
        * khtml/editing/remove_node_preserving_children_command.cpp:
        (khtml::RemoveNodePreservingChildrenCommand::RemoveNodePreservingChildrenCommand):
        * khtml/editing/remove_node_preserving_children_command.h:
        (khtml::RemoveNodePreservingChildrenCommand::~RemoveNodePreservingChildrenCommand):
        (khtml::RemoveNodePreservingChildrenCommand::node):
        * khtml/editing/replace_selection_command.cpp:
        (khtml::ReplacementFragment::ReplacementFragment):
        (khtml::ReplacementFragment::~ReplacementFragment):
        (khtml::ReplacementFragment::enclosingBlock):
        (khtml::ReplacementFragment::removeNodePreservingChildren):
        (khtml::ReplacementFragment::removeNode):
        (khtml::ReplacementFragment::insertFragmentForTestRendering):
        (khtml::ReplacementFragment::restoreTestRenderingNodesToFragment):
        (khtml::ReplaceSelectionCommand::fixupNodeStyles):
        (khtml::computeAndStoreNodeDesiredStyle):
        (khtml::NodeDesiredStyle::NodeDesiredStyle):
        (khtml::ReplaceSelectionCommand::ReplaceSelectionCommand):
        (khtml::ReplaceSelectionCommand::~ReplaceSelectionCommand):
        (khtml::ReplaceSelectionCommand::doApply):
        (khtml::ReplaceSelectionCommand::completeHTMLReplacement):
        (khtml::ReplaceSelectionCommand::updateNodesInserted):
        * khtml/editing/replace_selection_command.h:
        (khtml::NodeDesiredStyle::node):
        (khtml::NodeDesiredStyle::style):
        (khtml::ReplacementFragment::root):
        * khtml/editing/set_node_attribute_command.cpp:
        (khtml::SetNodeAttributeCommand::SetNodeAttributeCommand):
        * khtml/editing/set_node_attribute_command.h:
        (khtml::SetNodeAttributeCommand::~SetNodeAttributeCommand):
        (khtml::SetNodeAttributeCommand::element):
        * khtml/editing/split_element_command.cpp:
        (khtml::SplitElementCommand::SplitElementCommand):
        (khtml::SplitElementCommand::doApply):
        (khtml::SplitElementCommand::doUnapply):
        * khtml/editing/split_element_command.h:
        (khtml::SplitElementCommand::~SplitElementCommand):
        * khtml/editing/split_text_node_command.cpp:
        (khtml::SplitTextNodeCommand::SplitTextNodeCommand):
        (khtml::SplitTextNodeCommand::doApply):
        (khtml::SplitTextNodeCommand::doUnapply):
        * khtml/editing/split_text_node_command.h:
        (khtml::SplitTextNodeCommand::~SplitTextNodeCommand):
        (khtml::SplitTextNodeCommand::node):
        * khtml/editing/split_text_node_containing_element.cpp:
        (khtml::SplitTextNodeContainingElementCommand::SplitTextNodeContainingElementCommand):
        (khtml::SplitTextNodeContainingElementCommand::doApply):
        * khtml/editing/split_text_node_containing_element_command.h:
        (khtml::SplitTextNodeContainingElementCommand::~SplitTextNodeContainingElementCommand):
        * khtml/editing/visible_position.cpp:
        (khtml::makeRange):
        * khtml/editing/visible_position.h:
        * khtml/editing/visible_text.cpp:
        (khtml::TextIterator::range):
        (khtml::SimplifiedBackwardsTextIterator::range):
        (khtml::CharacterIterator::range):
        (khtml::findPlainText):
        * khtml/editing/visible_text.h:
        (khtml::WordAwareIterator::range):
        * khtml/editing/wrap_contents_in_dummy_span_command.cpp:
        (khtml::WrapContentsInDummySpanCommand::WrapContentsInDummySpanCommand):
        (khtml::WrapContentsInDummySpanCommand::doApply):
        (khtml::WrapContentsInDummySpanCommand::doUnapply):
        * khtml/editing/wrap_contents_in_dummy_span_command.h:
        (khtml::WrapContentsInDummySpanCommand::~WrapContentsInDummySpanCommand):
        * kwq/DOMHTML.mm:
        (-[DOMHTMLDocument _createDocumentFragmentWithMarkupString:baseURLString:]):
        (-[DOMHTMLDocument _createDocumentFragmentWithText:]):
        * kwq/WebCoreBridge.mm:
        (-[WebCoreBridge documentFragmentWithMarkupString:baseURLString:]):
        (-[WebCoreBridge documentFragmentWithText:]):
        (-[WebCoreBridge documentFragmentWithNodesAsParagraphs:]):

2006-01-03  Anders Carlsson  <andersca@mac.com>

        Reviewed by Darin.

        - fix http://bugs.webkit.org/show_bug.cgi?id=5177
        Javascript cloneNode(deep) does not clone form elements correctly

        * khtml/html/html_elementimpl.cpp:
        (HTMLElementImpl::cloneNode):
        Call copyNonAttributeProperties on the new node.
        
        * khtml/html/html_formimpl.cpp:
        (DOM::HTMLInputElementImpl::copyNonAttributeProperties):
        * khtml/html/html_formimpl.h:
        Copy m_value, m_checked and m_indeterminate here.
        
        * khtml/xml/dom_docimpl.cpp:
        (DocumentImpl::importNode):
        Call copyNonAttributeProperties on the new node.
        
        * khtml/xml/dom_elementimpl.cpp:
        (ElementImpl::cloneNode):
        Call copyNonAttributeProperties on the new node.
        
        * khtml/xml/dom_elementimpl.h:
        (DOM::ElementImpl::copyNonAttributeProperties):
        Add function declaration.

2006-01-02  Maciej Stachowiak  <mjs@apple.com>

        Rubber stamped by Eric.

        - remove the no longer used QIntDict

        * kwq/KWQIntDict.h: Removed.

2006-01-03  Alexey Proskuryakov  <ap@nypop.com>

        Reviewed by Eric.

        - fix http://bugs.webkit.org/show_bug.cgi?id=5609
          XSLT document() doesn't handle relative paths

        Test case: fast/xsl/xslt-relative-path.xml

        * khtml/xsl/xslt_processorimpl.cpp:
        (DOM::docLoaderFunc): Renamed from stylesheetLoadFunc. Use base URL when constructing URLs.
        (DOM::XSLTProcessorImpl::transformToString):

2006-01-02  Vicki Murley  <vicki@apple.com>

        Reviewed by Maciej.
 
        - fix for <rdar://problem/4389622> *Pan EU2* iframe swallows events for overlapping elements (part 2)

        We originally added a call to passSubframeEventToSubframe here to fix the hand cursor updating problem
        reported in <rdar://problem/4316201> REGRESSION: cursor and text in status bar is not updated when 
        mousing over links in a frame (5509). However, when we return early after passSubframeEventToSubframe,
        we fail to fire onmouseout events.  Since the call to passSubframeEventToSubframe was originally added
        to fix the hand cursor updating problem, remove the early return and make cursor updating conditional
        on passSubframeEventToSubframe.

        * khtml/khtmlview.cpp:
        (KHTMLView::viewportMouseMoveEvent):

2005-12-30  Darin Adler  <darin@apple.com>

        Reviewed by Maciej.

        - http://bugs.webkit.org/show_bug.cgi?id=4557
          rename unusual strcmp and strcasecmp for DOMString family

        Added new functions named equal and equalIgnoringCase.

        * khtml/xml/dom_stringimpl.h: Changed the type of the length parameter to computeHash to unsigned
        to match the rest of the interface. Added equal and equalIgnoringCase functions. Added a
        version of the hash function that works on char* to CaseInsensitiveHash as preparation for an
        atomic string change.
        * khtml/xml/dom_stringimpl.cpp: Moved the QT_ALLOC_QCHAR_VEC and QT_DELETE_QCHAR_VEC macros
        here, and changed them into inline functions.
        (DOM::equal): Implemented.
        (DOM::equalIgnoringCase): Implemented.
        (DOM::DOMStringImpl::computeHash): Changed parameter type to unsigned to match other similar
        functions.

        * khtml/dom/dom_string.h: Removed unnecessary friend declarations. Changed operator
        overloads for == and != to call through inline to DOMStringImpl. Replaced strcasecmp
        with equalIgnoringCase, overloaded for one more combination of parameters. Removed strcmp.
        * khtml/dom/dom_string.cpp: Removed functions that are now implemented in DOMStringImpl*.

        * khtml/xml/dom_atomicstring.h: Removed a redundant const. Removed unnecessary
        friend declarations. Removed AtomicString::equal. Filled out a larger set of == and
        != operator implementations, mostly with inlines calling through to DOMStringImpl.
        Renamed equalsIgnoreCase to equalIgnoringCase and filled out a larger set as above.
        * khtml/xml/dom_atomicstring.cpp: Renamed AtomicString::equal to just ==.
        Removed some implementation of == and equalsIgnoreCase that are replaced by inlines.

        * khtml/html/html_listimpl.cpp:
        (DOM::HTMLOListElementImpl::parseMappedAttribute):
        (DOM::HTMLLIElementImpl::parseMappedAttribute):
        Use the "==" operator instead of strcmp.

        * khtml/css/cssstyleselector.cpp: (khtml::CSSStyleSelector::checkOneSelector):
        Use equalIgnoringCase instead of equalsIgnoreCase.

        * khtml/rendering/render_form.cpp:
        (RenderSlider::updateFromElement): Fixed bug where a temporary DOMString was put into
        a const DOMString&. Changed some DOMString to AtomicString as appropriate, and also
        used equalIgnoringCase instead of strcasecmp.
        (RenderSlider::slotSliderValueChanged): More of the same.

        * khtml/xml/dom_docimpl.cpp: (DocumentImpl::processHttpEquiv): Replaced use of strcasecmp
        with equalIgnoringCase. Added parentheses to fix incorrect operator precedence in one case
        (&& binds tighter than ||) which fixes a crash when using a http-equiv pragma when there
        is no part (not sure how to reproduce that).

        * khtml/khtml_part.cpp:
        (updateState):
        (KHTMLPart::selectionStartHasStyle):
        * khtml/ecma/kjs_html.cpp: (KJS::KJS::HTMLDocument::putValueProperty):
        * khtml/editing/apply_style_command.cpp:
        (khtml::StyleChange::checkForLegacyHTMLStyleChange):
        (khtml::StyleChange::currentlyHasStyle):
        (khtml::hasTextDecorationProperty):
        (khtml::ApplyStyleCommand::extractTextDecorationStyle):
        (khtml::ApplyStyleCommand::extractAndNegateTextDecorationStyle):
        * khtml/html/html_baseimpl.cpp:
        (HTMLBodyElementImpl::parseMappedAttribute):
        (HTMLFrameElementImpl::parseMappedAttribute):
        * khtml/html/html_blockimpl.cpp:
        (HTMLDivElementImpl::parseMappedAttribute):
        (HTMLHRElementImpl::parseMappedAttribute):
        (HTMLParagraphElementImpl::parseMappedAttribute):
        (HTMLMarqueeElementImpl::parseMappedAttribute):
        * khtml/html/html_elementimpl.cpp:
        (HTMLElementImpl::parseMappedAttribute):
        (HTMLElementImpl::addHTMLAlignment):
        (HTMLElementImpl::setContentEditable):
        * khtml/html/html_formimpl.cpp:
        (DOM::HTMLFormElementImpl::parseMappedAttribute):
        (DOM::HTMLButtonElementImpl::parseMappedAttribute):
        (DOM::HTMLInputElementImpl::setInputType):
        (DOM::HTMLInputElementImpl::parseMappedAttribute):
        (DOM::HTMLKeygenElementImpl::appendFormData):
        (DOM::HTMLTextAreaElementImpl::parseMappedAttribute):
        * khtml/html/html_imageimpl.cpp: (DOM::HTMLAreaElementImpl::parseMappedAttribute):
        * khtml/html/html_inlineimpl.cpp: (DOM::HTMLBRElementImpl::parseMappedAttribute):
        * khtml/html/html_tableimpl.cpp: (DOM::HTMLTablePartElementImpl::parseMappedAttribute):
        * khtml/html/htmlparser.cpp: (HTMLParser::handleError):
        Use equalIgnoringCase instead of strcasecmp.

2005-12-30  Mitz Pettel  <opendarwin.org@mitzpettel.com>

        Reviewed by Darin, landed by ap.
        
        Test: fast/text/justified-text-rect.html
        
        - WebCore part of fix for
          http://bugs.webkit.org/show_bug.cgi?id=5461
          Text width measured incorrectly when text-align: justify

        * khtml/rendering/font.h:
        * khtml/rendering/font.cpp:
        (khtml::Font::selectionRectForText): Added.
        * khtml/rendering/render_text.cpp:
        (kthml::InlineTextBox::selectionRect): Use selectionRectForText. This
        works for justified text as well, and avoids intermediate rounding which
        resulted in selection rects narrower than AppKit's.
        (khtml::InlineTextBox::positionForOffset): Use selectionRectForText,
        which works for justified text as well.
        * kwq/KWQFontMetrics.h:
        * kwq/KWQFontMetrics.mm:
        (QFontMetrics::selectionRectForText): Added.
        * kwq/WebCoreTextRenderer.h:

2005-12-30  Alexey Proskuryakov  <ap@nypop.com>

        - Fix http://bugs.webkit.org/show_bug.cgi?id=6289
        REGRESSION: firstCharacterForRange(0, 0) returns a 0x0 rect

        * khtml/editing/visible_text.cpp:
        (khtml::TextIterator::rangeFromLocationAndLength):
        Only special-case (0, 0) ranges for empty documents.

2005-12-30  Geoffrey Garen  <ggaren@apple.com>

        Added test case for <rdar://problem/4268278> Submitting a form in onUnload event
        handler causes crash in -[WebDataSource(WebPrivate) _commitIfReady:]

        * manual-tests/onunload-form-submit-crash.html: Added.

2005-12-30  Anders Carlsson  <andersca@mac.com>

        Reviewed by Eric.

        - Fix http://bugs.webkit.org/show_bug.cgi?id=6297
        XMLSerializer should use createMarkup.

        * khtml/ecma/xmlserializer.cpp:
        (KJS::XMLSerializerProtoFunc::callAsFunction):
        Use createMarkup instead of NodeImpl::toString.

        * khtml/editing/markup.cpp:
        (khtml::startMarkup):
        escape attribute values and ignore document fragment nodes.

2005-12-30  Eric Seidel  <eseidel@apple.com>

        Reviewed by mjs.

        No functional changes, thus no layout test.

        Just removes debug NSLog() calls from ksvg2/kcanvas.
        http://bugs.webkit.org/show_bug.cgi?id=6299

        * kcanvas/device/quartz/KCanvasFilterQuartz.mm:
        (KCanvasFilterQuartz::prepareFilter):
        (KCanvasFilterQuartz::applyFilter):
        (KCanvasFilterQuartz::getCIFilterStack):
        (KCanvasFilterQuartz::imageForName):
        (KCanvasFEBlendQuartz::getCIFilter):
        (KCanvasFEColorMatrixQuartz::getCIFilter):
        (KCanvasFEGaussianBlurQuartz::getCIFilter):
        * kcanvas/device/quartz/KCanvasResourcesQuartz.mm:
        (KCanvasClipperQuartz::applyClip):
        * kcanvas/device/quartz/KRenderingDeviceQuartz.mm:
        (KRenderingDeviceContextQuartz::mapFromVisual):
        (KRenderingDeviceContextQuartz::mapToVisual):
        (KRenderingDeviceQuartz::createResource):
        (KRenderingDeviceQuartz::createFilterEffect):
        * kcanvas/device/quartz/KRenderingPaintServerGradientQuartz.mm:
        (drawShadingWithStyle):
        (KRenderingPaintServerGradientQuartz::updateQuartzGradientCache):
        * kcanvas/device/quartz/KRenderingPaintServerQuartz.mm:
        (KRenderingPaintServerPatternQuartz::draw):
        * ksvg2/svg/svgpathparser.cpp:
        (SVGPathParser::parseSVG):

2005-12-29  Graham Dennis  <Graham.Dennis@gmail.com>

        Reviewed by Hyatt.

        - fix http://bugs.webkit.org/show_bug.cgi?id=3579
          In-place style-switching is leaving junk behind, messing up styles

        * khtml/rendering/render_block.h: (khtml::RenderBlock::initMaxMarginValues):
        Set all margin values in all cases.

2005-12-29  Eric Seidel  <eseidel@apple.com>

        Reviewed by mjs.

        XML documents with "html" in dtd name use XHTML entities when they shouldn't
        http://bugs.webkit.org/show_bug.cgi?id=6290

        * khtml/xml/xml_tokenizer.cpp:
        (khtml::externalSubsetHandler): check for exact xhtml types

2005-12-29  Eric Seidel  <eseidel@apple.com>

        Reviewed by mjs.

        Close leak in CollectionInfo due to HashMap migration
        http://bugs.webkit.org/show_bug.cgi?id=6295

        * khtml/html/html_miscimpl.cpp:
        (DOM::HTMLCollectionImpl::CollectionInfo::~CollectionInfo):
        * khtml/html/html_miscimpl.h:

2005-12-29  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by Eric.

        - finished frame traversal cleanup
        http://bugs.webkit.org/show_bug.cgi?id=6293
        
        * kwq/WebCoreBridge.h: Removed childFrames method from WebCoreBridge protocol
        since it is not actually used.

2005-12-29  Eric Seidel  <eseidel@apple.com>

        Reviewed by mjs.

        Leaks in XSLTProcessorImpl due to early exit in failure case
        http://bugs.webkit.org/show_bug.cgi?id=6101

        * khtml/xsl/xslt_processorimpl.cpp:
        (DOM::xmlDocPtrFromNode): add "shouldDelete" argument
        (DOM::XSLTProcessorImpl::transformToString): delete new'd xmlDoc

2005-12-29  Eric Seidel  <eseidel@apple.com>

        File accidentally omitted from previous commit.

        Remove QDict from khtml/html
        http://bugs.webkit.org/show_bug.cgi?id=6230

        * khtml/ecma/kjs_html.cpp:
        (KJS::KJS::HTMLCollection::getNamedItems):

2005-12-29  Eric Seidel  <eseidel@apple.com>

        Reviewed by mjs.

        Remove QDict from khtml/html
        http://bugs.webkit.org/show_bug.cgi?id=6230
        Uses HashMap instead.

        * khtml/html/html_miscimpl.cpp:
        (DOM::HTMLCollectionImpl::CollectionInfo::CollectionInfo):
        (DOM::HTMLCollectionImpl::CollectionInfo::reset):
        (DOM::HTMLCollectionImpl::namedItem):
        (DOM::HTMLCollectionImpl::updateNameCache):
        (DOM::HTMLCollectionImpl::namedItems):
        (DOM::HTMLCollectionImpl::nextNamedItem):
        (DOM::HTMLFormCollectionImpl::nextNamedItemInternal):
        (DOM::HTMLFormCollectionImpl::updateNameCache):
        * khtml/html/html_miscimpl.h:

2005-12-29  Eric Seidel  <eseidel@apple.com>

        Reviewed by mjs.

        DOMString/DOMStringImpl/AtomicString need enhancements before replacing QString
        http://bugs.webkit.org/show_bug.cgi?id=6228
        Added find(), contains(), startsWith() and endsWith() to DOMString
        Uses the above functions throughout the code.
        Small performance boost.

        * khtml/css/css_base.cpp:
        (CSSSelector::print):
        * khtml/css/css_ruleimpl.cpp:
        (DOM::CSSImportRuleImpl::init):
        * khtml/css/css_valueimpl.cpp:
        (DOM::CSSStyleDeclarationImpl::setProperty):
        * khtml/css/cssparser.cpp:
        (CSSParser::parseValue):
        (CSSParser::parseDeclaration):
        (CSSParser::parseContent):
        * khtml/css/cssstyleselector.cpp:
        (khtml::CSSStyleSelector::CSSStyleSelector):
        (khtml::CSSStyleSelector::setEncodedURL):
        (khtml::parseUASheet):
        (khtml::cleanpath):
        (khtml::CSSStyleSelector::checkSelector):
        (khtml::CSSStyleSelector::checkOneSelector):
        (khtml::CSSRuleSet::addRulesFromSheet):
        (khtml::CSSStyleSelector::applyProperty):
        * khtml/dom/dom_string.cpp:
        * khtml/dom/dom_string.h:
        (DOM::DOMString::contains):
        (DOM::DOMString::find):
        (DOM::DOMString::startsWith):
        (DOM::DOMString::endsWith):
        * khtml/html/html_formimpl.cpp:
        (DOM::HTMLFormElementImpl::parseEnctype):
        * khtml/khtml_part.cpp:
        (KHTMLPart::requestFrame):
        (KHTMLPart::submitForm):
        * khtml/misc/decoder.cpp:
        (Decoder::decode):
        * khtml/xml/dom_atomicstring.h:
        (DOM::AtomicString::length):
        (DOM::AtomicString::operator []):
        (DOM::AtomicString::contains):
        (DOM::AtomicString::find):
        (DOM::AtomicString::startsWith):
        (DOM::AtomicString::endsWith):
        * khtml/xml/dom_docimpl.cpp:
        (DocumentImpl::processHttpEquiv):
        * khtml/xml/dom_stringimpl.cpp:
        (DOM::equal):
        (DOM::equalCaseInsensitive):
        (DOM::DOMStringImpl::find):
        (DOM::DOMStringImpl::endsWith):
        * khtml/xml/dom_stringimpl.h:
        (DOM::DOMStringImpl::startsWith):

2005-12-29  Rob Buis  <rwlbuis@xs4all.nl>

        Reviewed by eseidel.  Landed by eseidel.

        WebCore+SVG has some problems with rounded rectangles
        http://bugs.webkit.org/show_bug.cgi?id=6157
        
        Test: svg/custom/rounded-rects.svg

        * ksvg2/svg/SVGRectElementImpl.cpp:
        (SVGRectElementImpl::toPathData): fixed round rect calculations

2005-12-29  Mark Rowe  <opendarwin.org@bdash.net.nz>

        Reviewed by eseidel, ggaren, darin.
        
        - http://bugs.webkit.org/show_bug.cgi?id=4301
        Support HTML entities on pages parsed as XHTML

        Added layout tests:
        * fast/parser/entities-in-xhtml.xhtml

        * khtml/xml/xml_tokenizer.cpp:
        (khtml::XMLTokenizer::setIsXHTMLDocument): Track whether the XML document is XHTML.
        (khtml::XMLTokenizer::isXHTMLDocument): Ditto.
        (khtml::externalSubsetHandler): Ditto.
        (khtml::XMLTokenizer::finish): Ditto.
        (khtml::getXHTMLEntity): Look up the HTML entity.
        (khtml::getEntityHandler): Look up the HTML entity if this is an XHTML document.
        * khtml/html/kentities.h: Added.
        * khtml/html/kentities.gperf: changed entity to Entity

2005-12-29  Mitz Pettel  <opendarwin.org@mitzpettel.com>

        Reviewed by darin

        - WebCore part of fix for
          http://bugs.webkit.org/show_bug.cgi?id=3922
          Variable word/letter spacing and full justification not supported for
          ATSUI-rendered text

        * khtml/rendering/font.h:
        (khtml::Font::checkSelectionPoint): Make sure the complete run, used for
        counting spaces and determining padding per space does not go beyond the
        text box.

2005-12-28  Geoffrey Garen  <ggaren@apple.com>

        Reviewed by mjs.

        - Fixed <rdar://problem/4325722> crash in KJS::Bindings::dispatchJNICall
        due to liveconnect call from Java after Java PlugInView has been 
        deallocated @ www.binarybet.com
        AKA
        http://bugs.webkit.org/show_bug.cgi?id=5518

        We had code that checked for whether a call came from a live PlugIn,
        but the live PlugIn dictionary would only get cleared when the 
        KWQKHTMLPart was destroyed. Since a single part can service multiple
        loads, the dictionary needs to clear after each one.

        No layout test because this bug is difficult to reproduce.

        * kwq/KWQKHTMLPart.mm:
        (KWQKHTMLPart::~KWQKHTMLPart):
        (1) Unrelated cleanup: Removed manual clearing of form values,
        replaced with call to clearRecordedFormValues().
        (2) Replaced PlugIn dictionary cleanup code and view deref call
        with call to setView(0), since much of this code was duplicated in
        setView, and the stuff that wasn't duplicated needed to be.

        (KWQKHTMLPart::setView):
        (1) Removed some unnecessary braces.
        (2) Added PlugIn dictionary cleanup code.
        (3) New behavior: clear _bindingRoot and _windowScriptObject after
        each view change. This is needed because after a call to
        clenaupPluginRootObjects(), both objects have stale references.
        (4) Changed a NULL to a 0.

        (KWQKHTMLPart::cleanupPluginRootObjects): Removed extra space.

2005-12-28  Anders Carlsson  <andersca@mac.com>

        Reviewed by Maciej.

        - Fix http://bugs.webkit.org/show_bug.cgi?id=6268
        Add undetectable document.all
        
        * khtml/ecma/kjs_html.cpp:
        (KJS::HTMLDocument::getValueProperty):
        If "all" has been set to a new value, return the new value.
        
        (KJS::KJS::HTMLDocument::putValueProperty):
        Allow "all" to be set to a new value.
        
        (KJS::HTMLAllCollection::toPrimitive):
        Return jsNull() if the preferred type is NullType.
        
        (KJS::getAllHTMLCollection):
        * khtml/ecma/kjs_html.h:
        (KJS::HTMLAllCollection::HTMLAllCollection):
        Add HTMLAllCollection, a subclass of HTMLCollection which should
        be undetectable.
        
        (KJS::HTMLAllCollection::toBoolean):
        Return false.

2005-12-28  Mitz Pettel  <opendarwin.org@mitzpettel.com>

        Reviewed by Eric, landed by ap.
        
        Test: fast/block/basic/text-indent-rtl.html

        - fix http://bugs.webkit.org/show_bug.cgi?id=6214
          text-indent in RTL block does the opposite

        * khtml/rendering/render_block.cpp:
        (khtml::RenderBlock::rightRelOffset): Subtract the indent instead of adding it.

2005-12-28  Mitz Pettel  <opendarwin.org@mitzpettel.com>

        Reviewed by Darin, landed by ap.

        Test: fast/dom/HTMLScriptElement/script-load-events.html

        - fix http://bugs.webkit.org/show_bug.cgi?id=5812
          Generate load events for <script> elements

        * khtml/html/html_headimpl.cpp:
        (HTMLScriptElementImpl::parseMappedAttribute): Parse the onload and onerror attributes.
        (HTMLScriptElementImpl::closeRenderer): Call base class's implementation.
        (HTMLScriptElementImpl::notifyFinished): Dispatch load and error events.
        * khtml/html/htmlparser.h:
        * khtml/html/htmlparser.cpp:
        (HTMLParser::parseToken): Return the node that was inserted.
        * khtml/html/htmltokenizer.h: Added scriptNode, a RefPtr to the node corresponding
        to the current load request.
        * khtml/html/htmltokenizer.cpp:
        (HTMLTokenizer::scriptHandler): Reset scriptNode if a load request was not made.
        (HTMLTokenizer::parseTag): Set scriptNode to the node created from the script tag.
        (HTMLTokenizer::processToken): Return the node that was inserted.
        (HTMLTokenizer::notifyFinished): Reset scriptNode and dispatch load and error events.
        * khtml/misc/loader.h:
        (CachedScript::errorOccurred): Added.
        * khtml/misc/loader.cpp:
        (CachedScript::CachedScript):
        (CachedScript::error):

2005-12-28  Alexey Proskuryakov  <ap@nypop.com>

        Reviewed by Maciej.

        - fix http://bugs.webkit.org/show_bug.cgi?id=6246
          TextIterator::rangeFromLocationAndLength() returns nil range for an 
          empty document

        Test: editing/input/range-for-empty-document.html

        * khtml/editing/visible_text.cpp:
        (khtml::TextIterator::rangeFromLocationAndLength):
        Handle the case of an empty document and (0, 0) requested range.

2005-12-28  Anders Carlsson  <andersca@mac.com>

        Reviewed and landed by Geoff.

        - fix http://bugs.webkit.org/show_bug.cgi?id=6269
        ToT memory corruption
        
        * khtml/rendering/render_text.cpp:
        (khtml::RenderText::setText):
        Remove deref().
        
2005-12-27  Mitz Pettel  <opendarwin.org@mitzpettel.com>

        Reviewed by Hyatt, landed by Darin.
        
        - fix http://bugs.webkit.org/show_bug.cgi?id=5699
          REGRESSION: incomplete repaint

        * khtml/rendering/render_object.cpp:
        (RenderObject::repaintAfterLayoutIfNeeded): Return false if only the
        size changed and not everything was repainted.
        * manual-tests/bugzilla-5699.html: Added.

2005-12-27  Sam Weinig  <sam.weinig@gmail.com>

        Reviewed by Maciej, landed by Darin.

        - fixed <http://bugs.webkit.org/show_bug.cgi?id=4101>
        CSS Fibonacci spiral using 4 images doesn't render correctly

        Added layout tests:
        * fast/replaced/absolute-image-sizing.html

        * khtml/rendering/render_box.cpp:
        (RenderBox::calcAbsoluteHorizontalValues): Use calcReplacedWidth() instead of intrinsicWidth()
        for replaced elements.
        (RenderBox::calcAbsoluteVerticalValues): Same thing for height.

2005-12-27  Darin Adler  <darin@apple.com>

        Reviewed by Geoff and Eric.

        - http://bugs.webkit.org/show_bug.cgi?id=6198
          use RefPtr a few places in RenderText and related classes

        * khtml/html/htmltokenizer.h: Use RefPtr for some data members in Token.
        Also removed use of bitfields in Token, since there's no need to optimize storage here.
        * khtml/html/htmlparser.cpp:
        (HTMLParser::parseToken): Update for use of RefPtr in Token.
        (HTMLParser::textCreateErrorCheck): Ditto.
        (HTMLParser::commentCreateErrorCheck): Ditto.
        (HTMLParser::handleIsindex): Ditto.
        * khtml/html/htmltokenizer.cpp:
        (khtml::Token::addAttribute): Ditto.
        (khtml::HTMLTokenizer::processToken): Ditto.

        * khtml/rendering/render_text.h: Reduce the number of includes, change
        SOFT_HYPHEN from a macro into a constant. Change originalString function
        to return a PassRefPtr instead of a RefPtr. Make str and m_generatedContentStr
        member be a RefPtr.
        * khtml/rendering/render_text.cpp:
        (khtml::RenderText::previousOffset): Update for use of RefPtr for str.
        (khtml::RenderText::nextOffset): Ditto.
        (khtml::RenderText::RenderText): Ditto.
        (khtml::RenderText::originalString): Change to return PassRefPtr, even though
        it's not necessary at this level (since it's a virtual function).
        (khtml::RenderText::posOfChar): Update for use of RefPtr for str.
        (khtml::RenderText::setText): Ditto.
        (khtml::RenderTextFragment::RenderTextFragment): Ditto.
        (khtml::RenderTextFragment::originalString): Change to return PassRefPtr.

        * khtml/html/html_inlineimpl.cpp: Re-sorted list of includes, added newly-needed ones.
        * kwq/KWQRenderTreeDebug.cpp: Added new include needed since QPtrVector is no longer
        included by render_text.h.

2005-12-27  Darin Adler  <darin@apple.com>

        Fix suggested by Mitz.

        - fix http://bugs.webkit.org/show_bug.cgi?id=6240
          REGRESSION: scrollbars in overflows don't work

        * khtml/xml/dom2_eventsimpl.cpp: (DOM::MouseRelatedEventImpl::computePositions):
        Remove the code to compute pageX/Y from clientX/Y, because clientX/Y are not passed
        in correctly (in fact, what's passed in is pageX/Y)! I accidentally included part
        of my fix for clientX/Y in the original patch.

2005-12-27  Maks Orlovich <maksim@kde.org>

        Reviewed and landed by Maciej.

        - fixed 4405: <button> not listed in form collections.
        http://bugs.webkit.org/show_bug.cgi?id=4405

        Test: fast/forms/button-in-forms-collection.html

        * khtml/html/html_formimpl.h:
        (DOM::HTMLButtonElementImpl::isEnumeratable): override to return true

2005-12-25  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by Geoff.

        - Remove WebFrame's parent frame pointer, instead rely on WebCore's parent concept
        http://bugs.webkit.org/show_bug.cgi?id=6241

        * kwq/WebCoreBridge.h:
        * kwq/WebCoreBridge.mm:
        (-[WebCoreBridge parent]): New method, relies on the KHTMLPart's
        parent pointer.

2005-12-24  Mitz Pettel  <opendarwin.org@mitzpettel.com>

        Reviewed by eseidel.
        
        Test: fast/forms/domstring-replace-crash.html

        - fix http://bugs.webkit.org/show_bug.cgi?id=6236
          REGRESSION: Crash in DOMString::replace() in ToT (12/24/05)

        * khtml/dom/dom_string.h:
        (DOMString::replace): Added check for null m_impl.

2005-12-24  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by Eric.

        - replaced QPtrDict for Accessors structs with HashMap (also renamed some
        stray getSetInfo methods)
        http://bugs.webkit.org/show_bug.cgi?id=6223

        * khtml/ecma/kjs_html.cpp:
        (KJS::HTMLElement::accessors):
        (KJS::HTMLElement::getValueProperty):
        (KJS::HTMLElement::putValueProperty):
        * khtml/ecma/kjs_html.h:

2005-12-24  Geoffrey Garen  <ggaren@apple.com>

        Reviewed by eric.

        http://bugs.webkit.org/show_bug.cgi?id=6231

        - Fixed assertion failure in QString::mid caused by my last checkin. 
        parseWindowFeatures() sometimes called QString::mid() with a start 
        index past the end of the string but a length of 0. There were two 
        problems there. (1) parseWindowFeatures() shouldn't have gotten past 
        the end of the string. (2) QString had range truncating code that was 
        borked. So I fixed both.

        * khtml/ecma/kjs_window.cpp:
        (KJS::parseWindowFeatures): One of the "past the end" tests was > 
        instead of >=.
        * kwq/KWQString.mm:
        (QString::mid): Truncate length *before* deciding whether to return 
        early. Also, compare start and data._length before computing 
        data._length - start, because the error case we're trying to catch 
        will almost certainly cause unsigned overflow.
        * manual-tests/window-open-features-parsing.html: Added trailing ',' 
        to uber-test to catch this failure, too.

2005-12-24  Mitz Pettel  <opendarwin.org@mitzpettel.com>

        Reviewed by Maciej.

        - fix http://bugs.webkit.org/show_bug.cgi?id=6221
          REGRESSION: Password field is blank error for secure websites using
          password field (ToT, 12/24/05)

        * khtml/kwq/KWQSlot.mm:
        (KWQSlot::KWQSlot): Changed the parameter type of slotTextChanged to const DOMString &
        * khtml/rendering/render_form.h:
        * khtml/rendering/render_form.cpp:
        (RenderLineEdit::RenderLineEdit): ditto.
        (RenderLineEdit::slotTextChanged): ditto.
        (RenderFileButton::RenderFileButton): ditto.
        (RenderFileButton::slotTextChanged): ditto.

2005-12-22  Geoffrey Garen  <ggaren@apple.com>
    
        Reviewed by vicki (yay!), eric.

        - Fixed: <rdar://problem/4377597> parsing of window.open features strings needs to be more forgiving

        Manual test case: WebCore/manual-tests/window-open-features-parsing.html
        Also fixed: WebCore/manual-tests/window-open-features.html, which had an incorrect URL in it.

        This patch is long. Luckily, it's also complicated.

        The main thing I've done is to change our parsing of the window.open 'features' argument to match Win IE.
        This is important because we now implement the correct defaults for window.open, and resizing and
        scrolling are turned off by default. So, if we parse the 'features' string incorrectly, we'll end
        up with an annoying, incorrectly sized window that can't resize or scroll.

        To honor a long-standing request by Eric, I factored out the parsing into two new functions:
        parseWindowFeatures and constrainToScreen. I also added support for "innerWidth" and "innerHeight,"
        since they're just synonyms for "width" and "height."

        * khtml/ecma/kjs_window.cpp: removed "emit" statements, since emit is #defined as ""
        (KJS::parseDialogFeatures): renamed from parseFeatures, since we now have a 'parseWindowFeatures'.
        (KJS::showModalDialog): ditto on parseFeatures. Also added some missing initializations for WindowArgs data members.
        (KJS::parseWindowFeatures): new function, all new functionality.
        (KJS::constrainToScreen): new function, no new functionality -- just cut and pasted code that used to run as
        part of our parsing routine.
        (KJS::WindowFunc::callAsFunction):
        (1) Factored out previous parsing code.
        (2) Factored 17 lines of custom popup-blocking code into 3 lines that use pre-existing 'allowPopUp' function.
            Gratuitous, but it cried out to me.
        (3) Changed URL parsing to substitute "" for undefined *and* null values (we already did this for undefined),
            to avoid trying to navigate to 'http://null'.
        (4) Factore a multiline if () { if () {}} into an if ( && )
        (4) Removed the main body of code from a giant 'else' block by inserting early returns for the exceptional cases.
            This caused some things to show up in the diff even though they're just whitespace changes.
            I didn't actually change any code past the line "if (!str.isEmpty() && activePart)"
        * kwq/KWQKHTMLPartBrowserExtension.mm:
        (KHTMLPartBrowserExtension::createNewWindow): Added code to set toolbars to visible if toolBarVisible is true *or*
        locationBarVisible is true. The parser used to do this for us, but it's really the browser that's responsible for
        saying that the toolbar and the locationbar are the same thing. Hopefully, we can add a setLocationBarVisible delegate
        in the future so that other webkit clients can make their own UI decisions.
        * kwq/KWQKPartsBrowserExtension.h: Added locationBarVisible data member to WindowArgs structure and renamed
        toolBarsVisible to toolBarVisible (see above). Removed initialization code from WindowArgs structure because
        this file is for platform-specific code, and what defaults to use for window arguments is purely engine stuff.

2005-12-23  Eric Seidel  <eseidel@apple.com>

        Reviewed by mjs.

        Remove many use of .qstring()
        Convert several instances of QStrings to DOMStrings
        Add DOMString::replace(QChar, QChar)
        Remove (unused) KWQLabel, KWQKGlobal
        Slight performance improvement.
        Also fixed ChangeLog line endings from previous commit.
        http://bugs.webkit.org/show_bug.cgi?id=6138

        No tests needed, no functionality changes.

        * ChangeLog: Fixed line endings
        * ForwardingHeaders/kglobal.h: Removed.
        * ForwardingHeaders/qlabel.h: Removed.
        * WebCore.xcodeproj/project.pbxproj: removed KWQLabel
        * khtml/css/css_base.cpp:
        (CSSSelector::selectorText):
        * khtml/css/css_stylesheetimpl.cpp:
        (MediaListImpl::setMediaText):
        * khtml/css/cssstyleselector.cpp:
        (khtml::checkPseudoState):
        * khtml/dom/dom_string.h:
        (DOM::DOMString::replace):
        * khtml/ecma/kjs_css.cpp:
        (KJS::DOMCSSStyleDeclaration::put):
        * khtml/ecma/kjs_dom.cpp:
        (KJS::DOMNode::put):
        (KJS::DOMAttr::put):
        (KJS::DOMDocument::put):
        * khtml/ecma/kjs_events.cpp:
        (KJS::JSAbstractEventListener::handleEvent):
        * khtml/ecma/kjs_html.cpp:
        (KJS::KJS::HTMLDocument::put):
        (KJS::KJS::HTMLElementFunction::callAsFunction):
        (KJS::KJS::HTMLElement::put):
        (KJS::KJS::Context2DFunction::callAsFunction):
        (KJS::Context2D::putValueProperty):
        * khtml/ecma/kjs_proxy.cpp:
        (KJSProxyImpl::evaluate):
        * khtml/ecma/kjs_window.cpp:
        (KJS::Window::isSafeScript):
        (KJS::WindowFunc::callAsFunction):
        (KJS::ScheduledAction::execute):
        * khtml/ecma/xmlhttprequest.cpp:
        (KJS::XMLHttpRequest::send):
        (KJS::XMLHttpRequestProtoFunc::callAsFunction):
        * khtml/ecma/xmlhttprequest.h:
        * khtml/editing/jsediting.cpp:
        (DOM::JSEditor::queryCommandSupported):
        * khtml/editing/markup.cpp:
        (khtml::stringValueForRange):
        (khtml::startMarkup):
        * khtml/html/html_baseimpl.cpp:
        (HTMLBodyElementImpl::parseMappedAttribute):
        * khtml/html/html_elementimpl.cpp:
        (HTMLElementImpl::addHTMLAlignment):
        * khtml/html/html_formimpl.cpp:
        (DOM::HTMLFormElementImpl::formData):
        (DOM::HTMLInputElementImpl::appendFormData):
        (DOM::HTMLTextAreaElementImpl::updateValue):
        * khtml/html/html_headimpl.cpp:
        (HTMLLinkElementImpl::parseMappedAttribute):
        * khtml/html/html_imageimpl.cpp:
        (DOM::HTMLImageElementImpl::parseMappedAttribute):
        * khtml/html/html_objectimpl.cpp:
        (DOM::HTMLObjectElementImpl::parseMappedAttribute):
        (DOM::HTMLParamElementImpl::isURLAttribute):
        * khtml/html/html_objectimpl.h:
        * khtml/html/html_tableimpl.cpp:
        (DOM::HTMLTableElementImpl::addChild):
        (DOM::HTMLTableElementImpl::parseMappedAttribute):
        (DOM::HTMLTablePartElementImpl::parseMappedAttribute):
        (DOM::HTMLTableSectionElementImpl::addChild):
        (DOM::HTMLTableRowElementImpl::addChild):
        * khtml/html/htmltokenizer.cpp:
        (khtml::HTMLTokenizer::parseTag):
        * khtml/khtml_part.cpp:
        (KHTMLPart::executeScript):
        (KHTMLPart::checkEmitLoadEvent):
        * khtml/misc/loader.cpp:
        (CachedObject::finish):
        (CachedCSSStyleSheet::checkNotify):
        (CachedXSLStyleSheet::checkNotify):
        (CachedXBLDocument::checkNotify):
        (DocLoader::requestImage):
        (DocLoader::requestStyleSheet):
        (DocLoader::requestScript):
        (Loader::servePendingRequests):
        (Loader::cancelRequests):
        * khtml/rendering/render_applet.cpp:
        * khtml/rendering/render_block.cpp:
        (khtml::RenderBlock::updateFirstLetter):
        * khtml/rendering/render_box.cpp:
        (RenderBox::~RenderBox):
        * khtml/rendering/render_form.cpp:
        (RenderFormElement::slotTextChanged):
        (RenderLineEdit::updateFromElement):
        (RenderTextArea::updateFromElement):
        (RenderTextArea::text):
        * khtml/rendering/render_form.h:
        * khtml/rendering/render_frames.cpp:
        (RenderPartObject::updateWidget):
        * khtml/rendering/render_line.cpp:
        (khtml::EllipsisBox::paint):
        * khtml/rendering/render_list.cpp:
        (RenderListItem::paint):
        (RenderListMarker::paint):
        * khtml/rendering/render_text.cpp:
        (khtml::RenderText::RenderText):
        (khtml::RenderText::position):
        * khtml/xml/dom_docimpl.cpp:
        (DOMImplementationImpl::hasFeature):
        (DocumentImpl::getElementByAccessKey):
        (DocumentImpl::recalcStyleSelector):
        (DocumentImpl::defaultEventHandler):
        * khtml/xml/dom_elementimpl.cpp:
        (ElementImpl::recalcStyle):
        * khtml/xml/dom_nodeimpl.cpp:
        (DOM::NodeImpl::dump):
        (DOM::appendAttributeDesc):
        (DOM::NodeImpl::showNode):
        * khtml/xml/dom_stringimpl.cpp:
        (DOM::DOMStringImpl::lower):
        * khtml/xml/xml_tokenizer.cpp:
        (khtml::XMLTokenizer::executeScripts):
        * khtml/xsl/xsl_stylesheetimpl.cpp:
        (DOM::XSLStyleSheetImpl::loadChildSheets):
        * kwq/KWQKHTMLPart.h:
        * kwq/KWQKHTMLPart.mm:
        (KWQKHTMLPart::documentViewForNode):
        (KWQKHTMLPart::runJavaScriptAlert):
        (KWQKHTMLPart::runJavaScriptConfirm):
        (KWQKHTMLPart::runJavaScriptPrompt):
        (KWQKHTMLPart::addMessageToConsole):
        (KWQKHTMLPart::passWheelEventToChildWidget):
        (KWQKHTMLPart::shouldDragAutoNode):
        (KWQKHTMLPart::snapshotDragImage):
        (convertAttributesToUnderlines):
        (KWQKHTMLPart::setMarkedTextRange):
        (KWQKHTMLPart::mousePressNode):
        * kwq/KWQKGlobal.h: Removed.
        * kwq/KWQKGlobal.mm: Removed.
        * kwq/KWQLabel.h: Removed.
        * kwq/KWQLabel.mm: Removed.
        * kwq/KWQLineEdit.h:
        * kwq/KWQLineEdit.mm:
        (QLineEdit::setText):
        (QLineEdit::text):
        (QLineEdit::setAutoSaveName):
        (QLineEdit::setPlaceholderString):
        * kwq/KWQPainter.mm:
        (QPainter::compositeOperatorFromString):
        * kwq/KWQSignal.h:
        * kwq/KWQSignal.mm:
        (KWQSignal::call):
        * kwq/KWQSlot.h:
        * kwq/KWQSlot.mm:
        (KWQSlot::call):
        * kwq/KWQString.h:
        * kwq/KWQString.mm:
        * kwq/KWQTextEdit.h:
        * kwq/KWQTextEdit.mm:
        (QTextEdit::setText):
        (QTextEdit::text):
        (QTextEdit::textWithHardLineBreaks):
        * ksvg2/scripts/cssmakeprops: removed kglobal.h
        * ksvg2/scripts/cssmakevalues: removed kglobal.h

2005-12-23  Alexey Proskuryakov  <ap@nypop.com>

        Reviewed by Eric Seidel.

        - fix http://bugs.webkit.org/show_bug.cgi?id=5924
          Zero-length responses to XMLHTTPRequest mishandled

        * khtml/ecma/xmlhttprequest.cpp (KJS::XMLHttpRequest::slotFinished):
          Make sure to fetch response headers and set the state to Loaded, if
          this hasn't been done already.

2005-12-23  Alexey Proskuryakov  <ap@nypop.com>

        Reviewed by Eric Seidel.

        - fix http://bugs.webkit.org/show_bug.cgi?id=3565
          Posting data via XML HTTP Request doesnt work

        * khtml/ecma/xmlhttprequest.cpp:
        (KJS::XMLHttpRequest::send): Set application/xml as a default Content-Type;
          use a proper codec for request body if a charset is specified.
        (KJS::XMLHttpRequest::getRequestHeader): Use getSpecificHeader.
        (KJS::XMLHttpRequest::getResponseHeader): Ditto.
        (KJS::XMLHttpRequest::getSpecificHeader): Factored out code from getResponseHeader.
        (KJS::XMLHttpRequestProtoFunc::callAsFunction): Removed a FIXME (this is done in send() now).
        * khtml/ecma/xmlhttprequest.h:

2005-12-22  Alexey Proskuryakov  <ap@nypop.com>

        Reviewed by Darin Adler.

        - fix http://bugs.webkit.org/show_bug.cgi?id=6118
        Investigate not using the frameset charset as a default for frames

        * khtml/khtml_part.cpp (KHTMLPart::write):
        Do not use the parent frame encoding as a default for sub-frames (revert
        rdar://3100151). 

2005-12-22  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by Eric.

        - made RefPtr<DOMStringImpl> usable as a hashtable key/value
        - changed XSLTProcessorImpl to make use of this instead of a QDict.
        - partially fixed broken param handling for xslt

        See LayoutTests for updated test case.

        * khtml/xml/dom_stringimpl.cpp:
        * khtml/xml/dom_stringimpl.h:
        (KXMLCore::): Set things up so you can use RefPtr<DOMStringImpl> as
        a hashtable key (should already be usable as a value).
        * khtml/xsl/xslt_processorimpl.cpp:
        (DOM::xsltParamArrayFromParameterMap): Updated to use a HashMap of RefPtrs instead
        of QDict. Also, fixed bugs that would have kept this from ever working at all.
        (DOM::XSLTProcessorImpl::transformToString): ditto
        (DOM::XSLTProcessorImpl::setParameter): ditto
        (DOM::XSLTProcessorImpl::getParameter): ditto
        (DOM::XSLTProcessorImpl::removeParameter): ditto
        * khtml/xsl/xslt_processorimpl.h:

2005-12-21  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by Darin.

        - update for new HashTranslator stuff

        * khtml/xml/dom_atomicstring.cpp:
        (DOM::CStringTranslator::hash):
        (DOM::CStringTranslator::equal):
        (DOM::CStringTranslator::translate):
        (DOM::AtomicString::equal):
        (DOM::AtomicString::add):
        (DOM::QCharBufferTranslator::hash):
        (DOM::QCharBufferTranslator::equal):
        (DOM::QCharBufferTranslator::translate):
        * khtml/xml/dom_qname.cpp:
        (DOM::QNameComponentsTranslator::hash):
        (DOM::QNameComponentsTranslator::equal):
        (DOM::QNameComponentsTranslator::translate):
        (DOM::QualifiedName::QualifiedName):

2005-12-22  Adele Peterson  <adele@apple.com>

        Reviewed by Darin.

        Cleaned up a previous checkin by defining global const defaultForm.

        * khtml/xml/dom_docimpl.cpp:
        (DocumentImpl::radioButtonChecked):
        (DocumentImpl::checkedRadioButtonForGroup):
        (DocumentImpl::removeRadioButtonGroup):

2005-12-22  Adele Peterson  <adele@apple.com>

        Reviewed by Tim Hatcher.

        Fixed <rdar://problem/4387433> Seed: Radio buttons behave incorrectly in Gmail settings

        * khtml/html/html_formimpl.cpp:
        (DOM::HTMLFormElementImpl::registerFormElement): update radio button hash map when moving form elements around.
        (DOM::HTMLGenericFormElementImpl::insertedIntoTree): ditto.
        * khtml/html/html_formimpl.h:
        (DOM::HTMLGenericFormElementImpl::isRadioButton): Added.
        (DOM::HTMLInputElementImpl::isRadioButton): Added.
        * khtml/xml/dom_docimpl.cpp:
        (DocumentImpl::radioButtonChecked): 
        Added comment explaining that we use 1 for the default form.  We can't use a null pointer as a key for the hash map.
        (DocumentImpl::checkedRadioButtonForGroup): Added conversion of null form pointer to 1.
        (DocumentImpl::removeRadioButtonGroup): ditto.

2005-12-22  Anders Carlsson  <andersca@mac.com>

        Reviewed by Eric.

        - fix http://bugs.webkit.org/show_bug.cgi?id=6196
        Would like to be able to define prototypes in headers

        * khtml/ecma/XSLTProcessor.cpp:
        * khtml/ecma/domparser.cpp:
        * khtml/ecma/kjs_css.cpp:
        * khtml/ecma/kjs_dom.cpp:
        * khtml/ecma/kjs_events.cpp:
        * khtml/ecma/kjs_html.cpp:
        * khtml/ecma/kjs_range.cpp:
        * khtml/ecma/kjs_traversal.cpp:
        * khtml/ecma/kjs_views.cpp:
        * khtml/ecma/xmlhttprequest.cpp:
        * khtml/ecma/xmlserializer.cpp:
        Update for changes to JSC.

2005-12-22  Darin Adler  <darin@apple.com>

        Reviewed by Geoff.

        - fix http://bugs.webkit.org/show_bug.cgi?id=6198
          use RefPtr a few places in RenderText and related classes

        * khtml/html/htmlparser.cpp:
        (HTMLParser::parseToken): Use get since text pointer is RefPtr now.
        (HTMLParser::textCreateErrorCheck): Ditto.
        (HTMLParser::commentCreateErrorCheck): Ditto.
        (HTMLParser::handleIsindex): Get rid of explicit deref, no longer needed.

        * khtml/html/htmltokenizer.h: Make attrs and text fields of Token use
        RefPtr. Also stop using bit fields for the flags in Token -- there's no
        evidence this makes things faster.
        * khtml/html/htmltokenizer.cpp:
        (khtml::Token::addAttribute): Get rid of explicit ref, no longer needed.
        (khtml::HTMLTokenizer::processToken): Ditto.

        * khtml/rendering/render_block.cpp: (khtml::RenderBlock::updateFirstLetter):
        Use a PassRefPtr.

        * khtml/rendering/render_text.cpp:
        (khtml::RenderText::previousOffset): Use get since str pointer is RefPtr now.
        (khtml::RenderText::nextOffset): Ditto.
        (khtml::RenderText::RenderText): Get rid of explicit ref, no longer needed.
        Change to use initializer syntax instead of assignment.
        (khtml::RenderText::setStyle): Use PassRefPtr.
        (khtml::RenderText::originalString): Ditto.
        (khtml::RenderText::setText): Get rid of explicit ref, no longer needed.
        (khtml::RenderTextFragment::RenderTextFragment): Get rid of explicit ref,
        no longer needed.
        (khtml::RenderTextFragment::originalString): Use PassRefPtr.

        * khtml/rendering/render_text.h: Change SOFT_HYPEN to be a constant rather than
        a preprocessor macro. Used PassRefPtr in a couple places. Made RenderText's str
        and RenderTextFragment's m_generatedContentStr be RefPtr.

        * khtml/html/html_inlineimpl.cpp: Add a newly-needed include, sort them.
        * kwq/KWQRenderTreeDebug.cpp: Add a newly-needed include.

2005-12-22  Darin Adler  <darin@apple.com>

        Reviewed by Eric.

        - fix http://bugs.webkit.org/show_bug.cgi?id=6193
          remove some unused KWQ code

        * kcanvas/KCanvasCreator.cpp: (KCanvasCreator::self): Don't use static deleter for
        two reasons: (1) We don't want any globals with constructors in any of our frameworks
        because they slow down framework load time. (2) There's no need to destroy this object at
        process termination time -- it's extra work with no benefit. Because of both these
        reasons, our KStaticDeleter implementation was basically a no-op.
        * ksvg2/svg/SVGDOMImplementationImpl.cpp: (SVGDOMImplementationImpl::self): Ditto.
        * khtml/xml/dom_docimpl.cpp: (DocumentImpl::setDocumentChanged): Ditto.

        * khtml/html/html_canvasimpl.cpp: Removed include of kstringhandler.h.
        * khtml/html/html_imageimpl.cpp: Ditto.

        * khtml/khtmlpart_p.h: Removed something that was in an "APPLE_CANGES" ifdef.

        * ForwardingHeaders/kstaticdeleter.h: Removed.
        * ForwardingHeaders/kstringhandler.h: Removed.
        * kwq/KWQKStaticDeleter.h: Removed.
        * kwq/KWQKStringHandler.h: Removed.
        * kwq/KWQKStringHandler.mm: Removed.

        * WebCore.xcodeproj/project.pbxproj: Removed files.

2005-12-22  Darin Adler  <darin@apple.com>

        Reviewed by Eric.

        - fix http://bugs.webkit.org/show_bug.cgi?id=6192
          add support for non-standard &nsup; entity (implemented in other browsers)

        * khtml/html/kentities.gperf: Add "nsup" to table.
        * khtml/html/htmltokenizer.cpp: Removed old workaround for inlining issue that no
        longer seems to be necessary; also touches the file which is important because
        Xcode doesn't seem to understand the dependency on kentities.gperf and the need
        to recompile.

2005-12-22  Darin Adler  <darin@apple.com>

        Reviewed by Eric.

        - fix http://bugs.webkit.org/show_bug.cgi?id=6167
          RenderStyle default constructor should initialize its members for speed

        * khtml/rendering/DataRef.h: (khtml::DataRef::operator=): Eliminate an extra
        branch by doing ref before deref instead of == check.

        * khtml/rendering/render_style.cpp:
        (khtml::initDefaultStyle): Added. Function to initialize the default style
        for use in constructor.
        (khtml::RenderStyle::RenderStyle): Changed constructor to initalize all the
        members with constructor syntax instead of using assignment on all of them.
        * khtml/rendering/render_style.h: Removed static data member _default --
        it's now a file scope global instead.

2005-12-21  Darin Adler  <darin@apple.com>

        Reviewed by Justin.

        - fix http://bugs.webkit.org/show_bug.cgi?id=6142
          intermittent failures in some paste tests

        * khtml/editing/apply_style_command.cpp:
        (khtml::ApplyStyleCommand::applyBlockStyle): Call new updateLayout member function.
        (khtml::ApplyStyleCommand::applyInlineStyle): Ditto.
        (khtml::ApplyStyleCommand::pushDownTextDecorationStyleAtBoundaries): Ditto.
        * khtml/editing/composite_edit_command.cpp:
        (khtml::CompositeEditCommand::addBlockPlaceholderIfNeeded): Ditto.
        (khtml::CompositeEditCommand::findBlockPlaceholder): Ditto.
        (khtml::CompositeEditCommand::moveParagraphContentsToNewBlockIfNecessary): Ditto.
        * khtml/editing/delete_selection_command.cpp:
        (khtml::DeleteSelectionCommand::fixupWhitespace): Ditto.
        (khtml::DeleteSelectionCommand::moveNodesAfterNode): Ditto.
        * khtml/editing/edit_command.cpp:
        (khtml::EditCommand::apply): Ditto.
        (khtml::EditCommand::unapply): Ditto.
        (khtml::EditCommand::reapply): Ditto.
        (khtml::EditCommand::updateLayout): Added. Calls updateLayoutIgnorePendingStylesheets
        on the document.
        * khtml/editing/edit_command.h: Added updateLayout member function.
        * khtml/editing/insert_line_break_command.cpp:
        (khtml::InsertLineBreakCommand::doApply): Call new updateLayout member function.
        * khtml/editing/insert_paragraph_separator_command.cpp:
        (khtml::InsertParagraphSeparatorCommand::doApply): Ditto.
        * khtml/editing/jsediting.cpp:
        (DOM::JSEditor::execCommand): Call updateLayoutIgnorePendingStylesheets instead of updateLayout.
        (DOM::JSEditor::queryCommandEnabled): Ditto.
        (DOM::JSEditor::queryCommandIndeterm): Ditto.
        (DOM::JSEditor::queryCommandState): Ditto.
        (DOM::JSEditor::queryCommandValue): Ditto.
        * khtml/editing/markup.cpp: (khtml::createMarkup): Ditto.
        * khtml/editing/replace_selection_command.cpp:
        (khtml::ReplacementFragment::insertFragmentForTestRendering): Ditto.
        (khtml::ReplaceSelectionCommand::fixupNodeStyles): Call new updateLayout member function.
        (khtml::ReplacementFragment::computeStylesUsingTestRendering): Call
        updateLayoutIgnorePendingStylesheets instead of updateLayout.
        (khtml::ReplaceSelectionCommand::doApply): Call new updateLayout member function.
        (khtml::ReplaceSelectionCommand::removeLinePlaceholderIfNeeded): Ditto.
        (khtml::ReplaceSelectionCommand::completeHTMLReplacement): Ditto.
        * khtml/editing/visible_units.cpp:
        (khtml::previousLinePosition): Call updateLayoutIgnorePendingStylesheets instead of updateLayout.
        (khtml::nextLinePosition): Ditto.
        * khtml/html/html_elementimpl.cpp:
        (HTMLElementImpl::innerText): Ditto.
        * kwq/WebCoreBridge.mm:
        (-[WebCoreBridge setSelectedDOMRange:affinity:closeTyping:]): Ditto.
        (-[WebCoreBridge smartDeleteRangeForProposedRange:]): Ditto.

2005-12-21  Darin Adler  <darin@apple.com>

        Reviewed by Geoff.

        - fix http://bugs.webkit.org/show_bug.cgi?id=6177
          move event code from JavaScript binding into DOM implementation

        * khtml/ecma/kjs_events.cpp:
        (KJS::DOMMouseEvent::getValueProperty): Change everything to just call through instead of doing
        the work here.
        (KJS::DOMWheelEvent::getValueProperty): Ditto.

        * khtml/xml/dom2_eventsimpl.h:
        (DOM::MouseRelatedEventImpl::offsetX):
        (DOM::MouseRelatedEventImpl::offsetY):
        * khtml/xml/dom2_eventsimpl.cpp:
        (DOM::MouseRelatedEventImpl::MouseRelatedEventImpl): Initialize new m_pageX, m_pageY, m_layerX,
        m_layerY, m_offsetX, and m_offsetY.
        (DOM::MouseRelatedEventImpl::computePositions): Renamed from computeLayerPos since it handles
        page position andoffset position too now.
        (DOM::MouseRelatedEventImpl::pageX): Added. Not in header since it's virtual.
        (DOM::MouseRelatedEventImpl::pageY): Ditto.
        (DOM::MouseRelatedEventImpl::x): Added, with FIXME since it should change eventually.
        (DOM::MouseRelatedEventImpl::y): Ditto.
        (DOM::MouseEventImpl::initMouseEvent): Call computePositions instead of computeLayerPos.
        (DOM::MouseEventImpl::toElement): Added.
        (DOM::MouseEventImpl::fromElement): Added.

2005-12-21  Timothy Hatcher  <timothy@apple.com>

        * WebCore.xcodeproj/project.pbxproj:
          Set tab width to 8, indent width to 4 and uses tabs to false per file.

2005-12-21  John Sullivan  <sullivan@apple.com>

        Reviewed by Tim Omernick and Darin Adler.
        
        - fixed HiDPI problem with forms auto-fill menu width

        No test cases added; this code is used for "chrome" only.

        * kwq/DOMHTML.mm:
        (-[DOMHTMLInputElement _rectOnScreen]):
        convert entire rect to window coordinates, not just origin

2005-12-21  David Harrison  <harrison@apple.com>

        Reviewed by Justin.

        <rdar://problem/4039777> Pasting particular snippet of HTML containing list items and a link creates too many list items
        - Fixed paste crash by making calling RenderBox::deleteLineBoxWrapper() from RenderObject::remove(),
        so that the connection is broken before the InlineBox's parent gets deleted.
        - Fixed overzealous style changes when setting the style on a specific range of elements.  These specific
        ranges are derived programmatically, e.g. as a part of pasting, so they must be respected exactly rather
        than modified by converting the endpoints to VisiblePositions.
        
        Test cases coming soon.

        * khtml/editing/apply_style_command.cpp:
        (khtml::ApplyStyleCommand::ApplyStyleCommand):
        (khtml::ApplyStyleCommand::updateStartEnd):
        (khtml::ApplyStyleCommand::startPosition):
        (khtml::ApplyStyleCommand::endPosition):
        (khtml::ApplyStyleCommand::applyBlockStyle):
        (khtml::ApplyStyleCommand::applyRelativeFontStyleChange):
        (khtml::ApplyStyleCommand::applyInlineStyle):
        (khtml::ApplyStyleCommand::removeInlineStyle):
        (khtml::ApplyStyleCommand::splitTextAtStartIfNeeded):
        (khtml::ApplyStyleCommand::splitTextAtEndIfNeeded):
        (khtml::ApplyStyleCommand::splitTextElementAtStartIfNeeded):
        (khtml::ApplyStyleCommand::splitTextElementAtEndIfNeeded):
        (khtml::ApplyStyleCommand::mergeStartWithPreviousIfIdentical):
        (khtml::ApplyStyleCommand::mergeEndWithNextIfIdentical):
        (khtml::ApplyStyleCommand::joinChildTextNodes):
        * khtml/editing/apply_style_command.h:
        * khtml/editing/composite_edit_command.cpp:
        (khtml::CompositeEditCommand::applyStyle):
        * khtml/editing/composite_edit_command.h:
        * khtml/editing/insert_line_break_command.cpp:
        (khtml::InsertLineBreakCommand::doApply):
        * khtml/editing/replace_selection_command.cpp:
        (khtml::ReplaceSelectionCommand::fixupNodeStyles):
        (khtml::ReplaceSelectionCommand::completeHTMLReplacement):
        * khtml/rendering/render_box.cpp:
        (RenderBox::destroy):
        (RenderBox::deleteLineBoxWrapper):
        * khtml/rendering/render_box.h:
        * khtml/rendering/render_list.cpp:
        (RenderListMarker::~RenderListMarker):
        (RenderListMarker::setStyle):
        * khtml/rendering/render_object.cpp:
        (RenderObject::remove):
        * khtml/rendering/render_object.h:
        * khtml/rendering/render_replaced.cpp:
        (RenderWidget::destroy):

2005-12-20  Adele Peterson  <adele@apple.com>

        Reviewed by Darin.

        Fixed http://bugs.webkit.org/show_bug.cgi?id=5911
        REGRESSION: Page scroll position jumps when clicking on word in editable div

        I moved the scrolling code out of setFocusNode, and consolidated some of the focus code to scroll when necessary.

        * khtml/html/html_formimpl.cpp: Removed HTMLButtonElementImpl::blur, HTMLButtonElementImpl::focus, HTMLInputElementImpl::blur, HTMLInputElementImpl::focus.  
        New code in ElementImpl::focus will now handle these cases.  This allows tabbing through the elements to go through the same code path as calling focus() on an element.  
        Before, focus() would scroll to reveal for any form elements that had a RenderWidget, but wouldn't scroll for anchor elements, or any of the new form elements.  
        Now the behavior will be more consistent.
        (DOM::HTMLLabelElementImpl::focus): calls ElementImpl::focus.
        (DOM::HTMLLegendElementImpl::focus): ditto.
        * khtml/html/html_formimpl.h:
        * khtml/khtml_part.cpp:
        (KHTMLPart::selectAll): calls new function selectContentsOfNode
        (KHTMLPart::selectContentsOfNode): factored out code to selectAll for a particular node- which is useful for contenteditable elements.
        * khtml/khtml_part.h: added selectContentsOfNode
        * khtml/xml/dom_docimpl.cpp:
        (DocumentImpl::setFocusNode): removed scrolling code.
        * khtml/xml/dom_elementimpl.cpp:
        (ElementImpl::focus): Calls updateLayout in case focus() is called before there's a renderer.
        Makes a selection for editable elements (right now we select all, but this will change).
        Doesn't scroll if the renderer is a RenderWidget, since that is handled when the view becomes first responder.  This will go away when we convert the rest of our form elements.
        * kwq/KWQKHTMLPart.mm:
        (KWQKHTMLPart::revealSelection): Made this more like centerSelectionInVisibleArea  where we get the right rectangle if the selection is a caret.
        (KWQKHTMLPart::nextKeyViewInFrame): call ElementImpl::focus() for the node.  This will set the selection too, which used to be done here.

2005-12-20  Alexey Proskuryakov  <ap@nypop.com>

        Reviewed by justin
        
        <http://bugs.webkit.org/show_bug.cgi?id=4682>
        -[WebHTMLView firstRectForCharacterRange:] is using _selectedRange instead of the given range if no marked text

        Added layout tests:
        * editing/input/firstrectforcharacterrange-styled
        * editing/input/firstrectforcharacterrange-plain

        * khtml/editing/visible_text.cpp:
        (khtml::TextIterator::rangeFromLocationAndLength): 
        Return null if the range isn't found, instead of a startless/endless 
        range.  Set the end if the requested location+length is out of bounds.
        * kwq/WebCoreBridge.mm:
        (-[WebCoreBridge convertToDOMRange:]): Handle larged unsigned values 
        before calling rangeWithLocationAndLength, which expects signed ints.

2005-12-20  Adele Peterson  <adele@apple.com>

        Reviewed by Darin.

        Fix for <rdar://problem/4387630> REGRESSION: <select> element's onClick event doesn't fire @ bugweb.apple.com

        * kwq/KWQKHTMLPart.mm:
        (KWQKHTMLPart::passSubframeEventToSubframe): only pass mouse down for khtmlviews.

2005-12-20  Justin Garcia  <justin.garcia@apple.com>

        Reviewed by eric, thatcher
        
        <rdar://problem/4172984> KWQExceptions needs to use @try/@catch instead of relying on NSException.h internals
        
        Needed to undef try/catch because of 4333439.  Moved the 
        declarations of variables that are returned from within a @try 
        block outside the @try block (because of "might be clobbered by 
        a longjmp or vfork" warnings).  Moved some return statements
        inside the @try block to fix volatilization errors with gcc4.

        * WebCore.xcodeproj/project.pbxproj:
        * WebCorePrefix.h:
        * kcanvas/device/quartz/KCanvasFilterQuartz.mm:
        (KCanvasFEBlendQuartz::getCIFilter):
        (KCanvasFEColorMatrixQuartz::getCIFilter):
        (KCanvasFECompositeQuartz::getCIFilter):
        (getPointLightVectors):
        (getLightVectors):
        (getNormalMap):
        (KCanvasFEDiffuseLightingQuartz::getCIFilter):
        (KCanvasFEFloodQuartz::getCIFilter):
        (KCanvasFEImageQuartz::getCIFilter):
        (KCanvasFEMergeQuartz::getCIFilter):
        (KCanvasFESpecularLightingQuartz::getCIFilter):
        * kwq/KWQExceptions.h:
        * kwq/KWQExceptions.mm:
        (KWQReportBlockedException):
        * kwq/KWQFileButton.mm:
        (KWQFileButton::sizeForCharacterWidth):
        (KWQFileButton::frameGeometry):
        * kwq/KWQKCursor.mm:
        (+[NSCursor _WebCore_cursorWithName:hotSpot:_WebCore_cursorWithName:hotSpot:]):
        * kwq/KWQKHTMLPart.mm:
        (KWQKHTMLPart::createPart):
        (KWQKHTMLPart::nextKeyView):
        (KWQKHTMLPart::runJavaScriptPrompt):
        (KWQKHTMLPart::keyEvent):
        (KWQKHTMLPart::sendContextMenuEvent):
        (KWQKHTMLPart::fileWrapperForElement):
        (KWQKHTMLPart::attributedString):
        (KWQKHTMLPart::imageFromRect):
        * kwq/KWQKHTMLPartBrowserExtension.mm:
        * kwq/KWQLineEdit.mm:
        (QLineEdit::sizeForCharacterWidth):
        * kwq/KWQListBox.mm:
        (QListBox::sizeForNumberOfLines):
        * kwq/KWQLoader.mm:
        (KWQCheckCacheObjectStatus):
        * kwq/KWQWidget.mm:
        (QWidget::frameGeometry):
        (QWidget::mapFromGlobal):

2005-12-20  David Harrison  <harrison@apple.com>

        <rdar://problem/4294417> Cannot un-italicize some text after triple clicking it

        Reviewed by Justin.

        * khtml/editing/apply_style_command.cpp:
        (khtml::ApplyStyleCommand::addInlineStyleIfNeeded):
        Removed check for tab span because ApplyStyleCommand::removeCSSStyle() already makes the same check.

2005-12-20  Justin Garcia  <justin.garcia@apple.com>

        <rdar://problem/4387270> editing/deleting/delete-3800834-fix failing
        <http://bugs.webkit.org/show_bug.cgi?id=6160> REGRESSION: Crash when running editing/deleting/delete-3800834-fix.html
        <http://bugs.webkit.org/show_bug.cgi?id=6161> REGRESSION: crash when pressing tab in editable WebHTMLView

        Reviewed by darin
    
        Some callers call setAttribute on a floating element.  So, using 
        a RefPtr for the element inside addAttribute can destroy
        it.

        * khtml/xml/dom_elementimpl.cpp:
        (NamedAttrMapImpl::addAttribute):

2005-12-20  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by Darin.

        - fixed leak in createAttributeMap
        http://bugs.webkit.org/show_bug.cgi?id=6162

        * khtml/xml/dom_elementimpl.cpp:
        (StyledElementImpl::createAttributeMap): the new attribute map
        is going in a RefPtr, don't also ref it manually.

2005-12-20  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by Darin.

        - change an assignment to a contructor declaration to build with PassRefPtr
        leak fix changes

        * ksvg2/svg/SVGTransformableImpl.cpp:
        (SVGTransformableImpl::parseTransformAttribute):

2005-12-20  Geoffrey Garen  <ggaren@apple.com>

        Reviewed by John.

        Fixed <rdar://problem/4310363> JavaScript window.open: Height is 1 
        pixel short, and related bugs.

        There were a few bugs here.
        (1) Our code took size arguments and applied them to the window's
            content rect. That's incorrect. The Rhino book says the arguments 
            should apply to the WebView. Other things that occupy the content 
            rect include the tab bar, the status bar, and the 1 pixel border 
            between brushed metal and document. All of these used to impinge 
            on the web page's display area.

            The fix is to calculate sizing based on the WebView instead of
            the content rect. This means that the webViewContentRect and 
            setContentRect delegate methods are obsolete and no longer called
            by any of our code. (setContentRect was never called in the 
            first place.)

        (2) None of our sizing accounted for scaled resolutions.

            The fix is to ask the WebView to scale all coordintes for us.

        (3) Our code assumed that all window accoutrements were on by default.
            Safari works that way, but other WebKit clients might not.

            The fix is always to explicitly set an on/off state.
        
        (a) To facilitate scaling, I added a new bridge method, webView, to 
        access the webView.

        (b) For internal consistency, I changed ___Bars to ___bars in bridge 
        methods, and ___bars to ___Bars in WinArgs data members. (Interestingly,
        the different classes in our code are evenly divided on which format to 
        use.)
        
        Added manual test:
        * manual-tests/window-open-features.html: Added.
        * manual-tests/resources/200x200.png: Added.
        * manual-tests/resources/popup200x200.html: Added.

        * khtml/ecma/kjs_window.cpp:
        (KJS::showModalDialog): see (b)
        (KJS::WindowFunc::callAsFunction): see (b)
        * kwq/KWQKHTMLPart.mm:
        (KWQKHTMLPart::statusbarVisible): see (b)
        * kwq/KWQKHTMLPartBrowserExtension.mm:
        (KHTMLPartBrowserExtension::createNewWindow):
        At the top of this method, I just did some formatting cleanup and
        moved the 'referrer' variable closer to where it's used.
        The changes in the middle of the method are (3), the bottom, (2).
        * kwq/KWQKPartsBrowserExtension.h:
        (KParts::WindowArgs::WindowArgs): see (b)
        * kwq/WebCoreBridge.h: see (a)

2005-12-20  Eric Seidel  <eseidel@apple.com>

        Reviewed by mjs.

        Leaks when running SVG tests
        http://bugs.webkit.org/show_bug.cgi?id=6156
        No additional tests necessary, leaks already caught by other tests.

        * kcanvas/KCanvasFilters.cpp:
        (KCanvasFEDiffuseLighting::setLightSource): takes ownership
        (KCanvasFESpecularLighting::setLightSource): takes ownership
        * kcanvas/KCanvasFilters.h:
        (KCanvasFEDiffuseLighting::KCanvasFEDiffuseLighting): added
        (KCanvasFEDiffuseLighting::~KCanvasFEDiffuseLighting): added
        (KCanvasFEDiffuseLighting::lightSource): fixed spacing
        (KCanvasFESpecularLighting::KCanvasFESpecularLighting): added
        (KCanvasFESpecularLighting::~KCanvasFESpecularLighting): added
        (KCanvasFESpecularLighting::lightSource): fixed spacing
        * kcanvas/device/quartz/KRenderingDeviceQuartz.mm:
        (KRenderingDeviceQuartz::stringForPath): added missing CFRelease

2005-12-20  Eric Seidel  <eseidel@apple.com>

        Reviewed by darin.

        Remove additional bit-rotted DEBUG* ifdefs from WebCore.
        This removes PARSER_DEBUG, FORMS_DEBUG and CSS_STYLESHEET_DEBUG.
        http://bugs.webkit.org/show_bug.cgi?id=5931
        No tests possible, only removing dead code.

        * khtml/css/css_stylesheetimpl.cpp:
        (CSSStyleSheetImpl::parseString):
        (CSSStyleSheetImpl::isLoading):
        * khtml/html/html_formimpl.cpp:
        (DOM::HTMLFormElementImpl::formData):
        (DOM::HTMLFormElementImpl::submit):
        (DOM::HTMLFormElementImpl::reset):
        (DOM::HTMLGenericFormElementImpl::getForm):
        * khtml/html/htmlparser.cpp:
        (HTMLParser::processCloseTag):
        (HTMLParser::createHead):

2005-12-20  Eric Seidel  <eseidel@apple.com>

        Reviewed by darin.

        Move Decoder onto Shared<T> and clients onto RefPtr.
        http://bugs.webkit.org/show_bug.cgi?id=6107
        No test cases possible, no functional changes.

        * khtml/ecma/XSLTProcessor.cpp:
        (KJS::XSLTProcessorProtoFunc::callAsFunction):
        * khtml/ecma/xmlhttprequest.cpp:
        (KJS::XMLHttpRequest::XMLHttpRequest):
        (KJS::XMLHttpRequest::~XMLHttpRequest):
        (KJS::XMLHttpRequest::changeState):
        (KJS::XMLHttpRequest::abort):
        (KJS::XMLHttpRequest::slotFinished):
        (KJS::XMLHttpRequest::slotData):
        * khtml/ecma/xmlhttprequest.h:
        * khtml/khtml_part.cpp:
        (KHTMLPart::clear):
        (KHTMLPart::begin):
        (KHTMLPart::write):
        * khtml/khtmlpart_p.h:
        (KHTMLPartPrivate::KHTMLPartPrivate):
        * khtml/misc/decoder.cpp:
        (Decoder::Decoder):
        (Decoder::~Decoder):
        * khtml/misc/decoder.h:
        * khtml/misc/loader.h:
        * khtml/xml/dom_docimpl.cpp:
        (DocumentImpl::DocumentImpl):
        (DocumentImpl::~DocumentImpl):
        (DocumentImpl::prepareMouseEvent):
        (DocumentImpl::setDecoder):
        * khtml/xml/dom_docimpl.h:
        (DOM::DocumentImpl::decoder):
        * khtml/xsl/xslt_processorimpl.cpp:
        (DOM::XSLTProcessorImpl::createDocumentFromSource):

2005-12-19  Darin Adler  <darin@apple.com>

        Reviewed by Maciej.

        - fix http://bugs.webkit.org/show_bug.cgi?id=6143
          DOM::ElementImpl should use a RefPtr for the attribute map

        * khtml/xml/dom_elementimpl.cpp:
        (ElementImpl::ElementImpl): Remove code to initialize the pointer; not needed since
        RefPtr gets initialized to 0.
        (ElementImpl::~ElementImpl): Remove code to deref the pointer; RefPtr handles that.
        (ElementImpl::attributes): Add get() call to get raw pointer.
        (ElementImpl::setAttributeMap): Remove code to deref the old map and set the new map.
        But added code to clear the element pointer from the old map (missing in the old
        version). Also added a FIXME.
        (ElementImpl::createAttributeMap): Remove ref(); RefPtr handles that.
        (NamedAttrMapImpl::addAttribute): Use a RefPtr to guarantee the element does not go
        away in the middle of dispatching DOM events.
        (StyledElementImpl::attributeChanged): Clean up code by using the inline function
        mappedAttributes() instead of doing type casts.
        (StyledElementImpl::parseMappedAttribute): Ditto.
        (StyledElementImpl::getClassList): Ditto.

        * khtml/xml/dom_elementimpl.h: Make ElementImpl::namedAttrMap be a RefPtr instead
        of raw pointer. Added an overload of StyledElementImpl::mappedAttributes for both
        const and non-const.

        * khtml/xml/dom_nodeimpl.cpp: (DOM::NodeImpl::addChild): Use a RefPtr to ref/deref
        the child so that it doesn't leak.

        * khtml/html/htmlparser.h: Changed isindex to use a RefPtr.
        * khtml/html/htmlparser.cpp:
        (HTMLParser::~HTMLParser): Removed now-unneeded ref.
        (HTMLParser::isindexCreateErrorCheck): Remove now-unneeded deref/ref.
        (HTMLParser::handleIsindex): Put isindex element into a RefPtr. This prevents a
        crash that was otherwise happening during layout tests (caused indirectly by
        the changes above).
        (HTMLParser::startBody): Added call to get().

2005-12-19  Darin Adler  <darin@apple.com>

        Reviewed by Geoff Garen and Eric Seidel.

        - fix http://bugs.webkit.org/show_bug.cgi?id=4923
          stop using <ostream> in WebCore, eliminating the <cmath> troubles it causes

        * ForwardingHeaders/kxmlcore/AlwaysInline.h: Added.
        * WebCorePrefix.h: Removed the use of <ostream>.

        * kwq/KWQDef.h: Removed now-unused Q_INT64, Q_INT16, Q_UINT16, qRound, and _KWQ_IOSTREAM_.

        * kwq/KWQKHTMLPart.h: Removed some unneeded headers and added forward-declarations of classes
        instead. Corrected some incorrect member function declarations.
        * kwq/KWQKHTMLPart.mm: Added a now-needed header.

        * khtml/ecma/kjs_window.cpp: Removed the <cmath> workaround.
        * khtml/rendering/bidi.cpp: Added include of AlwaysInline.h and removed a
        lot of unnecessary includes.
        * khtml/rendering/render_canvasimage.cpp: Removed the <cmath> workaround.
        * khtml/rendering/render_image.cpp: Removed the <cmath> workaround.
        * khtml/rendering/render_text.cpp: Added include of AlwaysInline.h and removed a
        lot of unnecessary includes.

        * ksvg2/css/SVGCSSStyleSelector.cpp: (KDOM::CSSStyleSelector::applySVGProperty):
        * ksvg2/svg/SVGAnimateColorElementImpl.cpp: (SVGAnimateColorElementImpl::calculateColor):
        * ksvg2/svg/SVGAnimateTransformElementImpl.cpp: (SVGAnimateTransformElementImpl::handleTimerEvent):
        * ksvg2/svg/SVGAnimationElementImpl.cpp: (SVGAnimationElementImpl::closeRenderer):
        * ksvg2/svg/SVGLinearGradientElementImpl.cpp: (SVGLinearGradientElementImpl::buildGradient):
        * ksvg2/svg/SVGPatternElementImpl.cpp: (SVGPatternElementImpl::notifyAttributeChange):
        * ksvg2/svg/SVGRadialGradientElementImpl.cpp: (SVGRadialGradientElementImpl::buildGradient):
        Replaced use of qRound with use of lroundf or lround as appropriate.

        * kwq/KWQCString.h:
        * kwq/KWQCString.mm:
        * kwq/KWQDateTime.h:
        * kwq/KWQDateTime.mm:
        * kwq/KWQMap.h:
        * kwq/KWQMemArray.h:
        * kwq/KWQPoint.mm:
        * kwq/KWQPointArray.h:
        * kwq/KWQPtrList.h:
        * kwq/KWQPtrStack.h:
        * kwq/KWQPtrVector.h:
        * kwq/KWQRect.h:
        * kwq/KWQRect.mm:
        * kwq/KWQSize.h:
        * kwq/KWQSize.mm:
        * kwq/KWQValueList.h:
        Removed _KWQ_IOSTREAM_ code that was used at one time for unit tests, but is now unneeded,
        and requires <ostream>.

2005-12-19  Darin Adler  <darin@apple.com>

        Reviewed by Geoff Garen and John Sullivan.

        - fix http://bugs.webkit.org/show_bug.cgi?id=4312
          XMLHttpRequest headers that have two CRLF sequences lead to Obj-C exception

        I found this by code inspection after examining a security report about
        vulnerabilities in other browsers' XMLHttpRequest implementations.

        * kwq/KWQLoader.mm:
        (+[NSDictionary _webcore_dictionaryWithHeaderString:_webcore_dictionaryWithHeaderString:]):
        Check length of string before calling characterAtIndex:0 since it will fail for an empty string.

2005-12-19  Mitz Pettel  <opendarwin.org@mitzpettel.com>

        Reviewed by Beth

        - fix http://bugs.webkit.org/show_bug.cgi?id=6149
          REGRESSION (WebCore-417.5): horizontal scrollbar in overflow with top
          border doesn't receive mouse events

        * khtml/rendering/render_block.cpp:
        (khtml::RenderBlock::isPointInScrollbar):
        Removed borderTop() from horizontal scrollbar rect computation.
        * manual-tests/scrollbar-hittest2.html: Added.

2005-12-19  Alexey Proskuryakov  <ap@nypop.com>

        Reviewed by Darin, committed by Adele.

        - fix http://bugs.webkit.org/show_bug.cgi?id=5744
          XMLHttpRequest does not apply page encoding after assigning via innerHtml

        * khtml/ecma/xmlhttprequest.cpp:
        (getMIMEType): A helper function to get MIME type from a Content-Type string.
        (getCharset): A helper function to get charset from a Content-Type string.
        (KJS::XMLHttpRequest::getValueProperty): Factored out responseIsXML().
        (KJS::XMLHttpRequest::getResponseHeader): Return QString instead of JSValue
          (to get rid of unnecessary JSLocks).
        (KJS::XMLHttpRequest::responseIsXML): A new method that analyses Content-Type.
        (KJS::XMLHttpRequest::slotData): Use a correct charset for responses, see bug for details.
        (KJS::XMLHttpRequestProtoFunc::callAsFunction): Update for getResponseHeader() changes
        * khtml/ecma/xmlhttprequest.h:

== Rolled over to ChangeLog-2005-12-19 ==
