Transfer some code from GuiView to TabWorkArea.

git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@20806 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
Abdelrazak Younes 2007-10-07 08:05:02 +00:00
parent 24cf8ce58f
commit 769185bc90
3 changed files with 46 additions and 22 deletions

View File

@ -868,13 +868,7 @@ void GuiViewBase::setCurrentWorkArea(WorkArea * work_area)
GuiWorkArea * wa = dynamic_cast<GuiWorkArea *>(work_area); GuiWorkArea * wa = dynamic_cast<GuiWorkArea *>(work_area);
BOOST_ASSERT(wa); BOOST_ASSERT(wa);
if (wa != d.tab_widget_->currentWidget()) d.tab_widget_->setCurrentWorkArea(wa);
// Switch to the work area.
d.tab_widget_->setCurrentWidget(wa);
else
// Make sure the work area is up to date.
d.tab_widget_->on_currentTabChanged(d.tab_widget_->currentIndex());
wa->setFocus();
} }
@ -891,26 +885,14 @@ void GuiViewBase::removeWorkArea(WorkArea * work_area)
updateToc(); updateToc();
GuiWorkArea * gwa = dynamic_cast<GuiWorkArea *>(work_area); GuiWorkArea * gwa = dynamic_cast<GuiWorkArea *>(work_area);
gwa->setUpdatesEnabled(false);
BOOST_ASSERT(gwa); BOOST_ASSERT(gwa);
int index = d.tab_widget_->indexOf(gwa); d.tab_widget_->removeWorkArea(gwa);
d.tab_widget_->removeTab(index);
delete gwa;
if (d.tab_widget_->count()) {
// make sure the next work area is enabled.
d.tab_widget_->currentWidget()->setUpdatesEnabled(true);
// Hide tabbar if there's only one tab.
d.tab_widget_->showBar(d.tab_widget_->count() > 1);
return;
}
getDialogs().hideBufferDependent(); getDialogs().hideBufferDependent();
if (d.stack_widget_) {
if (d.tab_widget_->count() == 0 && d.stack_widget_)
// No more work area, switch to the background widget. // No more work area, switch to the background widget.
d.setBackground(); d.setBackground();
}
} }

View File

@ -728,6 +728,46 @@ void TabWorkArea::showBar(bool show)
} }
bool TabWorkArea::setCurrentWorkArea(GuiWorkArea * work_area)
{
BOOST_ASSERT(work_area);
int index = indexOf(work_area);
if (index == -1)
return false;
if (index == currentIndex())
// Make sure the work area is up to date.
on_currentTabChanged(index);
else
// Switch to the work area.
setCurrentIndex(index);
work_area->setFocus();
return true;
}
bool TabWorkArea::removeWorkArea(GuiWorkArea * work_area)
{
BOOST_ASSERT(work_area);
int index = indexOf(work_area);
if (index == -1)
return false;
work_area->setUpdatesEnabled(false);
removeTab(index);
delete work_area;
if (count()) {
// make sure the next work area is enabled.
currentWidget()->setUpdatesEnabled(true);
// Hide tabbar if there's only one tab.
showBar(count() > 1);
}
return true;
}
void TabWorkArea::on_currentTabChanged(int i) void TabWorkArea::on_currentTabChanged(int i)
{ {
GuiWorkArea * wa = dynamic_cast<GuiWorkArea *>(widget(i)); GuiWorkArea * wa = dynamic_cast<GuiWorkArea *>(widget(i));

View File

@ -180,6 +180,8 @@ class TabWorkArea : public QTabWidget
public: public:
TabWorkArea(QWidget * parent = 0); TabWorkArea(QWidget * parent = 0);
void showBar(bool show); void showBar(bool show);
bool setCurrentWorkArea(GuiWorkArea *);
bool removeWorkArea(GuiWorkArea *);
Q_SIGNALS: Q_SIGNALS:
/// ///