Fixed <rdar://problem/
3937203> when a div adds a scrollbar (overflow:auto) we do not get regions
Just set dashboard dirty bit when overflow scrolling changes.
Don't do comparison of regions in before scroll regions are
added, instead do it in WebKit after automatic scroll regions
are added.
Reviewed by Maciej.
* khtml/css/cssparser.cpp:
(CSSParser::parseDashboardRegions): Cleaned up comments
* khtml/css/cssstyleselector.cpp:
(khtml::CSSStyleSelector::styleForElement): Cleaned up comments
* khtml/khtmlview.cpp:
(KHTMLView::updateDashboardRegions):
* khtml/rendering/render_layer.cpp:
(RenderLayer::updateScrollInfoAfterLayout):
* kwq/WebDashboardRegion.m:
(-[WebDashboardRegion isEqual:]):
Webkit:
Fixed <rdar://problem/
3937203> when a div adds a scrollbar (overflow:auto) we do not get regions
Compare regions after automatice scroll regions have been
added.
Reviewed by Maciej.
* WebCoreSupport.subproj/WebBridge.h:
* WebCoreSupport.subproj/WebBridge.m:
(-[WebBridge dealloc]):
(-[WebBridge _compareDashboardRegions:]):
(-[WebBridge dashboardRegionsChanged:]):
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@8665
268f45cc-cd09-0410-ab3c-
d52691b4dbfc
+2005-02-22 Richard Williamson <rjw@apple.com>
+
+ Fixed <rdar://problem/3937203> when a div adds a scrollbar (overflow:auto) we do not get regions
+
+ Just set dashboard dirty bit when overflow scrolling changes.
+
+ Don't do comparison of regions in before scroll regions are
+ added, instead do it in WebKit after automatic scroll regions
+ are added.
+
+ Reviewed by Maciej.
+
+ * khtml/css/cssparser.cpp:
+ (CSSParser::parseDashboardRegions): Cleaned up comments
+ * khtml/css/cssstyleselector.cpp:
+ (khtml::CSSStyleSelector::styleForElement): Cleaned up comments
+
+ * khtml/khtmlview.cpp:
+ (KHTMLView::updateDashboardRegions):
+ * khtml/rendering/render_layer.cpp:
+ (RenderLayer::updateScrollInfoAfterLayout):
+ * kwq/WebDashboardRegion.m:
+ (-[WebDashboardRegion isEqual:]):
+
2005-02-22 Chris Blumenberg <cblu@apple.com>
Fixed: <rdar://problem/3976872> Pasted plain text doesn't get the proper style if pasted into newlines
}
// Commas count as values, so allow:
- // dashbaord-region(label, type, t, r, b, l) or dashbaord-region(label type t r b l)
- // dashbaord-region(label, type, t, r, b, l) or dashbaord-region(label type t r b l)
+ // dashboard-region(label, type, t, r, b, l) or dashboard-region(label type t r b l)
+ // dashboard-region(label, type, t, r, b, l) or dashboard-region(label type t r b l)
// also allow
- // dashbaord-region(label, type) or dashbaord-region(label type)
- // dashbaord-region(label, type) or dashbaord-region(label type)
+ // dashboard-region(label, type) or dashboard-region(label type)
+ // dashboard-region(label, type) or dashboard-region(label type)
ValueList *args = value->function->args;
int numArgs = value->function->args->numValues;
if ((numArgs != DASHBOARD_REGION_NUM_PARAMETERS && numArgs != (DASHBOARD_REGION_NUM_PARAMETERS*2-1)) &&
}
initElementAndPseudoState(e);
- if (allowSharing) {
+ //if (allowSharing) {
+ if (false) {
style = locateSharedStyle();
#ifdef STYLE_SHARING_STATS
fraction += style != 0;
if (document->hasDashboardRegions()) {
QValueList<DashboardRegionValue> newRegions = document->renderer()->computeDashboardRegions();
QValueList<DashboardRegionValue> currentRegions = document->dashboardRegions();
- if (!(newRegions == currentRegions)) {
- document->setDashboardRegions(newRegions);
- KWQ(m_part)->dashboardRegionsChanged();
- }
+ document->setDashboardRegions(newRegions);
+ KWQ(m_part)->dashboardRegionsChanged();
}
}
#endif
setHasHorizontalScrollbar(needHorizontalBar);
setHasVerticalScrollbar(needVerticalBar);
- m_object->repaint();
-
#if APPLE_CHANGES
- // Force an update since we know the scrollbars have changed things.
- if (m_object->document()->hasDashboardRegions())
- KWQ(m_object->document()->part())->dashboardRegionsChanged();
+ // Force an update since we know the scrollbars have changed things.
+ if (m_object->document()->hasDashboardRegions())
+ m_object->document()->setDashboardRegionsDirty(true);
#endif
+ m_object->repaint();
+
if (m_object->style()->overflow() == OAUTO) {
// Our proprietary overflow: overlay value doesn't trigger a layout.
m_object->setNeedsLayout(true);
static_cast<RenderBlock*>(m_object)->layoutBlock(true);
else
m_object->layout();
+
return;
}
}
m_object->height() - m_object->borderTop() - m_object->borderBottom()));
}
+#if APPLE_CHANGES
+ // Force an update since we know the scrollbars have changed things.
+ if (m_object->document()->hasDashboardRegions())
+ m_object->document()->setDashboardRegionsDirty(true);
+#endif
+
m_object->repaint();
}
"Unknown")))];
}
+- (BOOL)isEqual:(id)other
+{
+ return NSEqualRects (rect, [other dashboardRegionRect]) && NSEqualRects (clip, [other dashboardRegionClip]) && type == [other dashboardRegionType];
+}
+
@end
\ No newline at end of file
+2005-02-22 Richard Williamson <rjw@apple.com>
+
+ Fixed <rdar://problem/3937203> when a div adds a scrollbar (overflow:auto) we do not get regions
+
+ Compare regions after automatice scroll regions have been
+ added.
+
+ Reviewed by Maciej.
+
+ * WebCoreSupport.subproj/WebBridge.h:
+ * WebCoreSupport.subproj/WebBridge.m:
+ (-[WebBridge dealloc]):
+ (-[WebBridge _compareDashboardRegions:]):
+ (-[WebBridge dashboardRegionsChanged:]):
+
2005-02-22 Richard Williamson <rjw@apple.com>
Fixed <rdar://problem/4012463> Dashboard widgets don't work with authenticating proxies
BOOL _doingClientRedirect;
BOOL _inNextKeyViewOutsideWebFrameViews;
BOOL _haveUndoRedoOperations;
+
+ NSDictionary *lastDashboardRegions;
}
- (id)initWithWebFrame:(WebFrame *)webFrame;
- (void)dealloc
{
+ [lastDashboardRegions release];
+
[self fini];
[super dealloc];
}
[[wv _frameLoadDelegateForwarder] webView:wv didFirstLayoutInFrame:_frame];
}
+- (BOOL)_compareDashboardRegions:(NSDictionary *)regions
+{
+ return [lastDashboardRegions isEqualToDictionary:regions];
+}
+
- (void)dashboardRegionsChanged:(NSMutableDictionary *)regions
{
WebView *wv = [_frame webView];
[wv _addScrollerDashboardRegions:regions];
- if ([wd respondsToSelector: @selector(webView:dashboardRegionsChanged:)]) {
- [wd webView:wv dashboardRegionsChanged:regions];
+ if (![self _compareDashboardRegions:regions]) {
+ if ([wd respondsToSelector: @selector(webView:dashboardRegionsChanged:)]) {
+ [wd webView:wv dashboardRegionsChanged:regions];
+ [lastDashboardRegions release];
+ lastDashboardRegions = [regions retain];
+ }
}
}