#include "LyXRC.h"
#include "MetricsInfo.h"
#include "qt_helpers.h"
+#include "Text.h"
#include "version.h"
#include "graphics/GraphicsImage.h"
#include <QContextMenuEvent>
#include <QInputContext>
#include <QHelpEvent>
-#ifdef Q_WS_MAC
+#ifdef Q_WS_MACX
#include <QMacStyle>
#endif
#include <QMainWindow>
if (time > 0) {
cursor_timeout_.setInterval(time);
cursor_timeout_.start();
- } else
+ } else {
// let's initialize this just to be safe
cursor_timeout_.setInterval(500);
+ }
screen_ = QPixmap(viewport()->width(), viewport()->height());
cursor_ = new frontend::CursorWidget();
cursor_->hide();
+ // HACK: Prevents an additional redraw when the scrollbar pops up
+ // which regularily happens on documents with more than one page.
+ // The policy should be set to "Qt::ScrollBarAsNeeded" soon.
+ // Since we have no geometry information yet, we assume that
+ // a document needs a scrollbar if there is more then four
+ // paragraph in the outermost text.
+ if (buffer.text().paragraphs().size() > 4)
+ setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOn);
+ QTimer::singleShot(50, this, SLOT(fixVerticalScrollBar()));
+
+
setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
setAcceptDrops(true);
setMouseTracking(true);
}
+void GuiWorkArea::fixVerticalScrollBar()
+{
+ if (!isFullScreen())
+ setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOn);
+}
+
+
void GuiWorkArea::close()
{
lyx_view_->removeWorkArea(this);
theLyXFunc().setLyXView(lyx_view_);
theLyXFunc().processKeySym(key, mod);
-
}
cursorInView = false;
// show cursor on screen
- bool completable = completer_.completionAvailable()
+ bool completable = cur.inset().showCompletionCursor()
+ && completer_.completionAvailable()
&& !completer_.popupVisible()
&& !completer_.inlineVisible();
if (cursorInView) {
{
ScrollbarParameters const & scroll_ = buffer_view_->scrollbarParameters();
+ // Block the scrollbar signal to prevent recursive signal/slot calling.
+ verticalScrollBar()->blockSignals(true);
verticalScrollBar()->setRange(scroll_.min, scroll_.max);
verticalScrollBar()->setPageStep(scroll_.page_step);
verticalScrollBar()->setSingleStep(scroll_.single_step);
- // Block the scrollbar signal to prevent recursive signal/slot calling.
- verticalScrollBar()->blockSignals(true);
verticalScrollBar()->setValue(scroll_.position);
verticalScrollBar()->setSliderPosition(scroll_.position);
verticalScrollBar()->blockSignals(false);
public:
///
QRect subElementRect(SubElement element, const QStyleOption * option,
- const QWidget * widget = 0 ) const
+ const QWidget * widget = 0) const
{
QRect rect = QMacStyle::subElementRect(element, option, widget);
bool noBar = static_cast<QTabWidget const *>(widget)->count() <= 1;
return 0;
GuiWorkArea * wa = dynamic_cast<GuiWorkArea *>(currentWidget());
- BOOST_ASSERT(wa);
+ LASSERT(wa, /**/);
return wa;
}
{
for (int i = 0; i != count(); ++i) {
GuiWorkArea * wa = dynamic_cast<GuiWorkArea *>(widget(i));
- BOOST_ASSERT(wa);
+ LASSERT(wa, return 0);
if (&wa->bufferView().buffer() == &buffer)
return wa;
}
{
while (count()) {
GuiWorkArea * wa = dynamic_cast<GuiWorkArea *>(widget(0));
- BOOST_ASSERT(wa);
+ LASSERT(wa, /**/);
removeTab(0);
delete wa;
}
bool TabWorkArea::setCurrentWorkArea(GuiWorkArea * work_area)
{
- BOOST_ASSERT(work_area);
+ LASSERT(work_area, /**/);
int index = indexOf(work_area);
if (index == -1)
return false;
bool TabWorkArea::removeWorkArea(GuiWorkArea * work_area)
{
- BOOST_ASSERT(work_area);
+ LASSERT(work_area, return false);
int index = indexOf(work_area);
if (index == -1)
return false;
if (count()) {
// make sure the next work area is enabled.
currentWidget()->setUpdatesEnabled(true);
- if ((currentWorkArea() && currentWorkArea()->isFullScreen()))
+ if (currentWorkArea() && currentWorkArea()->isFullScreen())
setFullScreen(true);
else
// Hide tabbar if there's only one tab.
showBar(count() > 1);
- } else
+ } else {
lastWorkAreaRemoved();
+ }
return true;
}
void TabWorkArea::on_currentTabChanged(int i)
{
+ // returns e.g. on application destruction
+ if (i == -1)
+ return;
GuiWorkArea * wa = dynamic_cast<GuiWorkArea *>(widget(i));
- BOOST_ASSERT(wa);
+ LASSERT(wa, return);
BufferView & bv = wa->bufferView();
bv.cursor().fixIfBroken();
bv.updateMetrics();
removeWorkArea(currentWorkArea());
else {
GuiWorkArea * wa = dynamic_cast<GuiWorkArea *>(widget(clicked_tab_));
- BOOST_ASSERT(wa);
+ LASSERT(wa, /**/);
removeWorkArea(wa);
}
}