#include "support/filetools.h" // LibFileSearch
#include "support/os.h"
+#include "support/convert.h"
#include "graphics/GraphicsImage.h"
#include "graphics/GraphicsLoader.h"
namespace lyx {
+using support::FileName;
+
/// return the LyX key state from Qt's
static key_modifier::state q_key_state(Qt::KeyboardModifiers state)
{
setVerticalScrollBarPolicy(Qt::ScrollBarAsNeeded);
setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
setAcceptDrops(true);
+ setMouseTracking(true);
setMinimumSize(100, 70);
viewport()->setAutoFillBackground(false);
- viewport()->setAttribute(Qt::WA_OpaquePaintEvent);
+ // We don't need double-buffering nor SystemBackground on
+ // the viewport because we have our own backing pixmap.
+ viewport()->setAttribute(Qt::WA_NoSystemBackground);
+
setFocusPolicy(Qt::WheelFocus);
viewport()->setCursor(Qt::IBeamCursor);
void GuiWorkArea::focusInEvent(QFocusEvent * /*event*/)
{
// No need to do anything if we didn't change views...
- if (theApp == 0 || &lyx_view_ == &theApp->currentView())
- return;
+// if (theApp() == 0 || &lyx_view_ == theApp()->currentView())
+// return;
- theApp->setCurrentView(lyx_view_);
+ theApp()->setCurrentView(lyx_view_);
// FIXME: it would be better to send a signal "newBuffer()"
// in BufferList that could be connected to the different tabbars.
lyx_view_.updateTab();
startBlinkingCursor();
-
- //FIXME: Use case: Two windows share the same buffer.
- // The first window is resize. This modify the inner Buffer
- // structure because Paragraph has a notion of line break and
- // thus line width (this is very bad!).
- // When switching to the other window which does not have the
- // same size, LyX crashes because the line break is not adapted
- // the this BufferView width.
- // The following line fix the crash by resizing the BufferView
- // on a focusInEvent(). That is not a good fix but it is a fix
- // nevertheless. The bad side effect is that when the two
- // BufferViews show the same portion of the Buffer, the second
- // BufferView will show the same line breaks as the first one;
- // even though those line breaks are not adapted to the second
- // BufferView width... such is life!
- resizeBufferView();
}
void GuiWorkArea::focusOutEvent(QFocusEvent * /*event*/)
{
- // No need to do anything if we didn't change views...
- if (&lyx_view_ == &theApp->currentView())
- return;
-
stopBlinkingCursor();
}
void GuiWorkArea::update(int x, int y, int w, int h)
{
- viewport()->update(x, y, w, h);
+ viewport()->repaint(x, y, w, h);
}
lyxerr[Debug::GUI] << "show banner: " << lyxrc.show_banner << endl;
/// The text to be written on top of the pixmap
QString const text = lyx_version ? QString(lyx_version) : qt_("unknown version");
- string const file = support::libFileSearch("images", "banner", "ppm");
+ FileName const file = support::libFileSearch("images", "banner", "ppm");
if (file.empty())
return;
- QPixmap pm(toqstr(file));
+ QPixmap pm(toqstr(file.absFilename()));
if (!pm) {
lyxerr << "could not load splash screen: '" << file << "'" << endl;
return;
// The font used to display the version info
font.setStyleHint(QFont::SansSerif);
font.setWeight(QFont::Bold);
- font.setPointSize(LyXFont::SIZE_NORMAL);
+ font.setPointSize(convert<int>(lyxrc.font_sizes[LyXFont::SIZE_LARGE]));
int const w = pm.width();
int const h = pm.height();
pain.drawPixmap(x, y, pm);
- x += 260;
+ x += 300;
y += 265;
pain.setPen(QColor(255, 255, 0));
void GuiWorkArea::paintEvent(QPaintEvent * ev)
{
QRect const rc = ev->rect();
+ /*
lyxerr[Debug::PAINTING] << "paintEvent begin: x: " << rc.x()
<< " y: " << rc.y()
<< " w: " << rc.width()
<< " h: " << rc.height() << endl;
+ */
QPainter pain(viewport());
pain.drawPixmap(rc, screen_, rc);