Reduce use of dynamic_cast.

git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@20980 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
Abdelrazak Younes 2007-10-16 06:50:09 +00:00
parent 727a421a1f
commit 07ac8a473b
3 changed files with 36 additions and 26 deletions

View File

@ -689,12 +689,10 @@ bool GuiViewBase::event(QEvent * e)
//case QEvent::Drop:
// break;
case QEvent::WindowActivate:
case QEvent::WindowActivate: {
theApp()->setCurrentView(*this);
if (d.tab_widget_->count()) {
GuiWorkArea * wa = dynamic_cast<GuiWorkArea *>(
d.tab_widget_->currentWidget());
BOOST_ASSERT(wa);
GuiWorkArea * wa = d.tab_widget_->currentWorkArea();
if (wa) {
BufferView & bv = wa->bufferView();
connectBufferView(bv);
connectBuffer(bv.buffer());
@ -704,7 +702,7 @@ bool GuiViewBase::event(QEvent * e)
getDialogs().updateBufferDependent(true);
}
return QMainWindow::event(e);
}
case QEvent::ShortcutOverride: {
QKeyEvent * ke = static_cast<QKeyEvent*>(e);
if (d.tab_widget_->count() == 0) {
@ -746,9 +744,8 @@ void GuiViewBase::showView()
void GuiViewBase::busy(bool yes)
{
if (d.tab_widget_->count()) {
GuiWorkArea * wa = dynamic_cast<GuiWorkArea *>(d.tab_widget_->currentWidget());
BOOST_ASSERT(wa);
GuiWorkArea * wa = d.tab_widget_->currentWorkArea();
if (wa) {
wa->setUpdatesEnabled(!yes);
if (yes)
wa->stopBlinkingCursor();
@ -812,13 +809,7 @@ GuiToolbar * GuiViewBase::makeToolbar(ToolbarInfo const & tbinfo, bool newline)
WorkArea * GuiViewBase::workArea(Buffer & buffer)
{
for (int i = 0; i != d.tab_widget_->count(); ++i) {
GuiWorkArea * wa = dynamic_cast<GuiWorkArea *>(d.tab_widget_->widget(i));
BOOST_ASSERT(wa);
if (&wa->bufferView().buffer() == &buffer)
return wa;
}
return 0;
return d.tab_widget_->workArea(buffer);
}
@ -838,19 +829,13 @@ WorkArea * GuiViewBase::addWorkArea(Buffer & buffer)
WorkArea * GuiViewBase::currentWorkArea()
{
if (d.tab_widget_->count() == 0)
return 0;
BOOST_ASSERT(dynamic_cast<GuiWorkArea *>(d.tab_widget_->currentWidget()));
return dynamic_cast<GuiWorkArea *>(d.tab_widget_->currentWidget());
return d.tab_widget_->currentWorkArea();
}
WorkArea const * GuiViewBase::currentWorkArea() const
{
if (d.tab_widget_->count() == 0)
return 0;
BOOST_ASSERT(dynamic_cast<GuiWorkArea const *>(d.tab_widget_->currentWidget()));
return dynamic_cast<GuiWorkArea const *>(d.tab_widget_->currentWidget());
return d.tab_widget_->currentWorkArea();
}
@ -862,7 +847,7 @@ void GuiViewBase::setCurrentWorkArea(WorkArea * work_area)
// update the toc in any case.
updateToc();
GuiWorkArea * wa = dynamic_cast<GuiWorkArea *>(work_area);
GuiWorkArea * wa = static_cast<GuiWorkArea *>(work_area);
BOOST_ASSERT(wa);
d.tab_widget_->setCurrentWorkArea(wa);
}
@ -880,7 +865,7 @@ void GuiViewBase::removeWorkArea(WorkArea * work_area)
// update the toc in any case.
updateToc();
GuiWorkArea * gwa = dynamic_cast<GuiWorkArea *>(work_area);
GuiWorkArea * gwa = static_cast<GuiWorkArea *>(work_area);
BOOST_ASSERT(gwa);
d.tab_widget_->removeWorkArea(gwa);

View File

@ -735,6 +735,29 @@ void TabWorkArea::showBar(bool show)
}
GuiWorkArea * TabWorkArea::currentWorkArea()
{
if (count() == 0)
return 0;
GuiWorkArea * wa = dynamic_cast<GuiWorkArea *>(currentWidget());
BOOST_ASSERT(wa);
return wa;
}
GuiWorkArea * TabWorkArea::workArea(Buffer & buffer)
{
for (int i = 0; i != count(); ++i) {
GuiWorkArea * wa = dynamic_cast<GuiWorkArea *>(widget(i));
BOOST_ASSERT(wa);
if (&wa->bufferView().buffer() == &buffer)
return wa;
}
return 0;
}
void TabWorkArea::closeAll()
{
while (count()) {

View File

@ -187,6 +187,8 @@ public:
void closeAll();
bool setCurrentWorkArea(GuiWorkArea *);
bool removeWorkArea(GuiWorkArea *);
GuiWorkArea * currentWorkArea();
GuiWorkArea * workArea(Buffer & buffer);
Q_SIGNALS:
///