[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: branches/KDE/4.1/kdelibs/khtml
From: Germain Garand <germain () ebooksfrance ! org>
Date: 2008-10-19 22:31:19
Message-ID: 1224455479.454045.6438.nullmailer () svn ! kde ! org
[Download RAW message or body]
SVN commit 873673 by ggarand:
automatically merged revision 869762:
HTML Frames fixes
- make frame resizing dynamic
- eliminate most frame flicker by cleaning up RenderWidget's resizing code.
- prepare for some more work
M +0 -2 ecma/kjs_window.cpp
M +27 -27 html/html_baseimpl.cpp
M +1 -1 html/html_baseimpl.h
M +14 -1 khtmlview.cpp
M +27 -7 rendering/render_frames.cpp
M +2 -0 rendering/render_frames.h
--- branches/KDE/4.1/kdelibs/khtml/ecma/kjs_window.cpp #873672:873673
@@ -903,7 +903,6 @@
{
if (!part->view())
return jsUndefined();
- khtml::RenderWidget::flushWidgetResizes(); // make sure frames have their \
final size int ret = part->view()->visibleHeight();
// match Gecko which does not subtract the scrollbars
if (part->view()->horizontalScrollBar()->isVisible()) {
@@ -918,7 +917,6 @@
{
if (!part->view())
return jsUndefined();
- khtml::RenderWidget::flushWidgetResizes(); // make sure frames have their \
final size int ret = part->view()->visibleWidth();
// match Gecko which does not subtract the scrollbars
if (part->view()->verticalScrollBar()->isVisible()) {
--- branches/KDE/4.1/kdelibs/khtml/html/html_baseimpl.cpp #873672:873673
@@ -275,6 +275,33 @@
name = DOMString(parentPart->requestFrameName());
}
+void HTMLFrameElementImpl::defaultEventHandler(EventImpl *e)
+{
+ // ### duplicated in HTMLObjectBaseElementImpl
+ if ( e->target() == this && m_render && m_render->isWidget()
+ && \
static_cast<RenderWidget*>(m_render)->isRedirectedWidget() + \
&& qobject_cast<KHTMLView*>(static_cast<RenderWidget*>(m_render)->widget())) { + \
switch(e->id()) { + case EventImpl::MOUSEDOWN_EVENT:
+ case EventImpl::MOUSEUP_EVENT:
+ case EventImpl::MOUSEMOVE_EVENT:
+ case EventImpl::MOUSEOUT_EVENT:
+ case EventImpl::MOUSEOVER_EVENT:
+ case EventImpl::KHTML_MOUSEWHEEL_EVENT:
+ case EventImpl::KEYDOWN_EVENT:
+ case EventImpl::KEYUP_EVENT:
+ case EventImpl::KEYPRESS_EVENT:
+ case EventImpl::DOMFOCUSIN_EVENT:
+ case EventImpl::DOMFOCUSOUT_EVENT:
+ if (static_cast<RenderWidget*>(m_render)->handleEvent(*e))
+ e->setDefaultHandled();
+ default:
+ break;
+ }
+ }
+ HTMLPartContainerElementImpl::defaultEventHandler(e);
+}
+
void HTMLFrameElementImpl::parseAttribute(AttributeImpl *attr)
{
switch(attr->id())
@@ -677,33 +704,6 @@
return ID_IFRAME;
}
-void HTMLIFrameElementImpl::defaultEventHandler(EventImpl *e)
-{
- // ### duplicated in HTMLObjectBaseElementImpl
- if ( e->target() == this && m_render && m_render->isWidget()
- && \
static_cast<RenderWidget*>(m_render)->isRedirectedWidget()
- && \
qobject_cast<KHTMLView*>(static_cast<RenderWidget*>(m_render)->widget())) \
{
- switch(e->id()) {
- case EventImpl::MOUSEDOWN_EVENT:
- case EventImpl::MOUSEUP_EVENT:
- case EventImpl::MOUSEMOVE_EVENT:
- case EventImpl::MOUSEOUT_EVENT:
- case EventImpl::MOUSEOVER_EVENT:
- case EventImpl::KHTML_MOUSEWHEEL_EVENT:
- case EventImpl::KEYDOWN_EVENT:
- case EventImpl::KEYUP_EVENT:
- case EventImpl::KEYPRESS_EVENT:
- case EventImpl::DOMFOCUSIN_EVENT:
- case EventImpl::DOMFOCUSOUT_EVENT:
- if (static_cast<RenderWidget*>(m_render)->handleEvent(*e))
- e->setDefaultHandled();
- default:
- break;
- }
- }
- HTMLFrameElementImpl::defaultEventHandler(e);
-}
-
void HTMLIFrameElementImpl::parseAttribute(AttributeImpl *attr )
{
switch ( attr->id() )
--- branches/KDE/4.1/kdelibs/khtml/html/html_baseimpl.h #873672:873673
@@ -97,6 +97,7 @@
virtual void parseAttribute(AttributeImpl *);
virtual void attach();
+ virtual void defaultEventHandler(EventImpl *evt);
bool noResize() { return noresize; }
void setLocation( const DOMString& str );
@@ -203,7 +204,6 @@
virtual void parseAttribute(AttributeImpl *attr);
virtual void attach();
- virtual void defaultEventHandler(EventImpl *evt);
virtual void computeContent();
virtual void setWidgetNotify(QWidget *widget);
--- branches/KDE/4.1/kdelibs/khtml/khtmlview.cpp #873672:873673
@@ -244,6 +244,7 @@
smoothScrolling = false;
smoothScrollModeIsDefault = true;
shouldSmoothScroll = false;
+ hasFrameset = false;
#ifdef FIX_QT_BROKEN_QWIDGET_SCROLL
oldVScrollUpdatesEnabled = true;
oldHScrollUpdatesEnabled = true;
@@ -435,6 +436,7 @@
bool smoothScrolling :1;
bool smoothScrollModeIsDefault :1;
bool shouldSmoothScroll :1;
+ bool hasFrameset :1;
#ifdef FIX_QT_BROKEN_QWIDGET_SCROLL
bool oldHScrollUpdatesEnabled :1;
bool oldVScrollUpdatesEnabled :1;
@@ -643,6 +645,9 @@
setWidget( new QWidget(this) );
widget()->setAttribute( Qt::WA_NoSystemBackground );
+ verticalScrollBar()->setCursor( Qt::ArrowCursor );
+ horizontalScrollBar()->setCursor( Qt::ArrowCursor );
+
connect(&d->smoothScrollTimer, SIGNAL(timeout()), this, SLOT(scrollTick()));
}
@@ -963,6 +968,14 @@
m_part->xmlDocImpl()->renderer()->layer()->paint(&p, r);
+ if (d->hasFrameset) {
+ NodeImpl *body = \
static_cast<HTMLDocumentImpl*>(m_part->xmlDocImpl())->body(); + if(body && \
body->renderer() && body->id() == ID_FRAMESET) + \
static_cast<RenderFrameSet*>(body->renderer())->paintFrameSetRules(&p, r); + \
else + d->hasFrameset = false;
+ }
+
khtml::DrawContentsEvent event( &p, ex, ey, ew, eh );
QApplication::sendEvent( m_part, &event );
@@ -1009,6 +1022,7 @@
QScrollArea::setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
QScrollArea::setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
body->renderer()->setNeedsLayout(true);
+ d->hasFrameset = true;
}
else if (root) // only apply body's overflow to canvas if root has a \
visible overflow
ref = (!body || root->style()->hidesOverflow()) ? root : \
body->renderer(); @@ -3217,7 +3231,6 @@
root->setNeedsLayoutAndMinMaxRecalc();
root->layout();
- khtml::RenderWidget::flushWidgetResizes(); // make sure widgets have their \
final size
// check sizes ask for action.. (scale or clip)
--- branches/KDE/4.1/kdelibs/khtml/rendering/render_frames.cpp #873672:873673
@@ -442,7 +442,7 @@
bool RenderFrameSet::userResize( MouseEventImpl *evt )
{
- if (needsLayout()) return false;
+ if (needsLayout()) return false;
bool res = false;
int _x = evt->clientX();
@@ -456,7 +456,6 @@
m_hSplit = -1;
m_vSplit = -1;
- //bool resizePossible = true;
// check if we're over a horizontal or vertical boundary
int pos = m_gridLayout[1][0] + xPos();
@@ -494,7 +493,6 @@
#endif
}
-
m_cursor = Qt::ArrowCursor;
if(m_hSplit != -1 && m_vSplit != -1)
m_cursor = Qt::SizeAllCursor;
@@ -513,10 +511,12 @@
}
// ### check the resize is not going out of bounds.
- if(m_resizing && evt->id() == EventImpl::MOUSEUP_EVENT)
+ if(m_resizing)
{
- setResizing(false);
- QApplication::restoreOverrideCursor();
+ if (evt->id() == EventImpl::MOUSEUP_EVENT) {
+ setResizing(false);
+ QApplication::restoreOverrideCursor();
+ }
if(m_vSplit != -1 )
{
@@ -526,6 +526,7 @@
int delta = m_vSplitPos - _x;
m_gridDelta[1][m_vSplit] -= delta;
m_gridDelta[1][m_vSplit+1] += delta;
+ m_vSplitPos = _x;
}
if(m_hSplit != -1 )
{
@@ -535,6 +536,7 @@
int delta = m_hSplitPos - _y;
m_gridDelta[0][m_hSplit] -= delta;
m_gridDelta[0][m_hSplit+1] += delta;
+ m_hSplitPos = _y;
}
// this just schedules the relayout
@@ -542,6 +544,7 @@
setNeedsLayout(true);
}
+/*
KHTMLView *view = canvas()->view();
if ((m_resizing || evt->id() == EventImpl::MOUSEUP_EVENT) && view) {
QPainter paint( view );
@@ -567,10 +570,27 @@
}
m_oldpos = p;
}
-
+*/
return res;
}
+void RenderFrameSet::paintFrameSetRules( QPainter *paint, const QRect& damageRect )
+{
+ KHTMLView *view = canvas()->view();
+ if (view && !noResize()) {
+ paint->setPen( Qt::gray );
+ paint->setBrush( Qt::gray );
+ const int rBord = 3;
+ int sw = element()->border();
+
+ // ### implement me
+
+ (void) rBord;
+ (void) sw;
+ }
+
+}
+
void RenderFrameSet::setResizing(bool e)
{
m_resizing = e;
--- branches/KDE/4.1/kdelibs/khtml/rendering/render_frames.h #873672:873673
@@ -52,6 +52,7 @@
virtual void layout();
void positionFrames( );
+ void paintFrameSetRules( QPainter *paint, const QRect& damageRect );
bool resizing() const { return m_resizing; }
bool noResize() const { return element()->noResize(); }
@@ -87,6 +88,7 @@
int m_vSplitPos;
bool m_resizing;
+ bool m_paint;
bool m_clientresizing;
};
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic