[bt-devel] couple of non-working commits

Eeli Kaikkonen eekaikko at mail.student.oulu.fi
Fri Nov 16 07:57:23 MST 2007


On Fri, 16 Nov 2007, Eeli Kaikkonen wrote:
> It is really something with the system. I went back to an earlier
> working revision but these problems stayed.

I looked in the KDE svn. 3.96 tag has associateWidget() but 3.94 and
3.95 do not. That is not a real problem, but khtml is. When I first saw
our code which creates the html renderer I thought that it was an ugly
hack or something. Then I learned that it is the fault of khtml: it has
a circular dependency between khtmlpart and khtmlview. We create the
khtmlview on the fly while khtmlpart is still being initialized and the
khtmlpart pointer is given to the khtmlview constructor. It is not a
very good idea but no matter how hard I read the docs and think about it
I cannot find a way to do it otherwise if we want to inherit from
khtmlview.

We could use the default khtmlview which the khtmlpart creates
internally but then we would loose the d'n'd functionality. I don't know
if it's possible to implement it in khtmlpart. If it is, then we can
probably get rid of the CHTMLReadDisplayView. If it is not, I don't know
how we can continue.


The backtrace:

6  0xb7ef515f in QMetaObject::cast () from /usr/lib/libQtCore.so.4
#7  0xb674132c in qobject_cast<KHTMLPart*> (object=0xb6203238)
    at /usr/include/qt4/QtCore/qobject.h:428
#8  0xb674afc5 in KHTMLPart::parentPart (this=0x8c55870)
    at /build/buildd/kde4libs-3.95.0/khtml/khtml_part.cpp:5313
#9  0xb673375a in KHTMLView::init (this=0x8327358)
    at /build/buildd/kde4libs-3.95.0/khtml/khtmlview.cpp:521
#10 0xb6733cfa in KHTMLView (this=0x8327358, part=0x8c55870,
parent=0x81dce00)
    at /build/buildd/kde4libs-3.95.0/khtml/khtmlview.cpp:486
#11 0x08133c08 in CHTMLReadDisplayView (this=0x8327358,
    displayWidget=0x8c55870, parent=0x81dce00)
    at
/work/src/bt/btportsvn/src/frontend/display/chtmlreaddisplay.cpp:461
#12 0x0813782d in CHTMLReadDisplay (this=0x8c55870, readWindow=0x0,
    parentWidget=0x81dce00)
    at
/work/src/bt/btportsvn/src/frontend/display/chtmlreaddisplay.cpp:62
#13 0x08132289 in CDisplay::createReadInstance (readWindow=0x0,
    parent=0x81dce00)
    at /work/src/bt/btportsvn/src/frontend/display/cdisplay.cpp:125
#14 0x080d3b30 in CInfoDisplay (this=0x81dce00, parent=0x85b7828)
    at /work/src/bt/btportsvn/src/frontend/cinfodisplay.cpp:60
#15 0x081584d2 in BibleTime::initView (this=0x8760ba8)
    at /work/src/bt/btportsvn/src/bibletime_init.cpp:81


The critical parts in the code are the constructors:


	CHTMLReadDisplay::CHTMLReadDisplay(CReadWindow* readWindow, QWidget*
	parentWidget)
		: KHTMLPart(m_view = new CHTMLReadDisplayView(
			this, parentWidget ? parentWidget : readWindow),
			readWindow ? readWindow : parentWidget)

and:


	CHTMLReadDisplayView::CHTMLReadDisplayView(CHTMLReadDisplay*
	displayWidget, QWidget* parent)
		: KHTMLView(displayWidget, parent)




  Yours,
	Eeli Kaikkonen (Mr.), Oulu, Finland
	e-mail: eekaikko at mailx.studentx.oulux.fix (with no x)



More information about the bt-devel mailing list