Reviewed by Dave.
authordarin <darin@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 20 Aug 2004 00:38:01 +0000 (00:38 +0000)
committerdarin <darin@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 20 Aug 2004 00:38:01 +0000 (00:38 +0000)
        - fixed <rdar://problem/3767274> crash in partForWidget inside setFocus (test page attached)

        * kwq/KWQKHTMLPart.mm: (KWQKHTMLPart::nextKeyViewInFrame): Remove code to do position
        the widget; no longer needed since we reworked how widgets get their positions.
        * kwq/KWQWidget.mm: (QWidget::setFocus): Ditto. This was the one that caused the bug.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@7304 268f45cc-cd09-0410-ab3c-d52691b4dbfc

WebCore/ChangeLog-2005-08-23
WebCore/kwq/KWQKHTMLPart.mm
WebCore/kwq/KWQWidget.mm

index 432de2f4104cc9f89d48daf335b592a30bac57e4..c4edd3d2dd02a0d5a8e184c9fda41b36467275ae 100644 (file)
@@ -1,3 +1,13 @@
+2004-08-19  Darin Adler  <darin@apple.com>
+
+        Reviewed by Dave.
+
+        - fixed <rdar://problem/3767274> crash in partForWidget inside setFocus (test page attached)
+
+        * kwq/KWQKHTMLPart.mm: (KWQKHTMLPart::nextKeyViewInFrame): Remove code to do position
+        the widget; no longer needed since we reworked how widgets get their positions.
+        * kwq/KWQWidget.mm: (QWidget::setFocus): Ditto. This was the one that caused the bug.
+
 2004-08-19  David Hyatt  <hyatt@apple.com>
 
        Fix crash when text is contained inside a table-colgroup.
 
 2004-08-18  David Hyatt  <hyatt@apple.com>
 
+        - did WebCore part of <rdar://problem/3682969> SLIDER: absolute left position of slider should be headline only
+
        Make the header overlap the footer in the zero-line case.  Changes to Emerson's template will ensure the
        header draws over the footer.
        
index 7299414a97c6173ce05cf56f1f923b84ceeec4f2..71b7bcbb7cf143b4403c83c416124d41d7f09cbd 100644 (file)
@@ -1111,21 +1111,14 @@ NSView *KWQKHTMLPart::nextKeyViewInFrame(NodeImpl *node, KWQSelectionDirection d
         if (renderWidget) {
             QWidget *widget = renderWidget->widget();
             KHTMLView *childFrameWidget = dynamic_cast<KHTMLView *>(widget);
+            NSView *view = nil;
             if (childFrameWidget) {
-                NSView *view = KWQ(childFrameWidget->part())->nextKeyViewInFrame(0, direction);
-                if (view) {
-                    return view;
-                }
+                view = KWQ(childFrameWidget->part())->nextKeyViewInFrame(0, direction);
             } else if (widget) {
-                NSView *view = widget->getView();
-                // AppKit won't be able to handle scrolling and making us the first responder
-                // well unless we are actually installed in the correct place. KHTML only does
-                // that for visible widgets, so we need to do it explicitly here.
-                int x, y;
-                if (view && renderWidget->absolutePosition(x, y)) {
-                    renderWidget->view()->addChild(widget, x, y);
-                    return view;
-                }
+                view = widget->getView();
+            }
+            if (view) {
+                return view;
             }
         }
         else {
index 12bcb2a389c71524428f666c6805c519594690ac..fceb2f0f0c181f1e22722ff68f0551d06f6a22c2 100644 (file)
@@ -223,20 +223,6 @@ void QWidget::setFocus()
         return;
     }
     
-    // KHTML will call setFocus on us without first putting us in our
-    // superview and positioning us. Normally layout computes the position
-    // and the drawing process positions the widget. Do both things explicitly.
-    RenderWidget *renderWidget = dynamic_cast<RenderWidget *>(const_cast<QObject *>(eventFilterObject()));
-    int x, y;
-    if (renderWidget) {
-        if (renderWidget->canvas()->needsLayout()) {
-            renderWidget->view()->layout();
-        }
-        if (renderWidget->absolutePosition(x, y)) {
-            renderWidget->view()->addChild(this, x, y);
-        }
-    }
-    
     NSView *view = getView();
 
     KWQ_BLOCK_EXCEPTIONS;