mirror of
https://git.lyx.org/repos/lyx.git
synced 2024-11-22 18:08:10 +00:00
Fixed redraw problem when resizing vertically and cursor inside a inset.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@987 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
parent
17674b902d
commit
d4cf7ae0fa
@ -1,3 +1,10 @@
|
||||
2000-08-25 Juergen Vigna <jug@sad.it>
|
||||
|
||||
* src/lyxscreen.h: add force_clear variable and fuction to force
|
||||
a clear area when redrawing in LyXText.
|
||||
|
||||
* src/text.C (GetVisibleRow): look if the screen forces a redraw.
|
||||
|
||||
2000-08-25 Lars Gullik Bjønnes <larsbj@lyx.org>
|
||||
|
||||
* some whitespace and comment changes.
|
||||
|
@ -146,5 +146,7 @@ private:
|
||||
Painter painter_;
|
||||
///
|
||||
FL_OBJECT * figinset_canvas;
|
||||
/// if we call redraw with true needed for locking-insets
|
||||
bool screen_cleared;
|
||||
};
|
||||
#endif
|
||||
|
@ -5,7 +5,7 @@ show_outputview=true
|
||||
show_treeview=true
|
||||
header_file=Untitled.h
|
||||
cpp_file=Untitled.cpp
|
||||
browser_file=file:/usr/doc/qt1x-devel-1.45/qimageio.html
|
||||
browser_file=file:/usr/doc/qt1x-devel-1.45/qlistbox.html
|
||||
[formcopyright.C]
|
||||
install_location=
|
||||
dist=true
|
||||
|
@ -84,6 +84,8 @@ public:
|
||||
If text->status is LyXText::NEED_VERY_LITTLE_REFRESH,
|
||||
we only update the current row. */
|
||||
void Update(LyXText *, int y_offset=0, int x_offset=0);
|
||||
///
|
||||
bool forceClear() const { return force_clear; }
|
||||
|
||||
///
|
||||
bool cursor_visible;
|
||||
@ -113,6 +115,8 @@ private:
|
||||
int cursor_pixmap_h;
|
||||
///
|
||||
GC gc_copy;
|
||||
///
|
||||
bool force_clear;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
@ -47,7 +47,7 @@ GC createGC()
|
||||
|
||||
// Constructor
|
||||
LyXScreen::LyXScreen(WorkArea & o) //, LyXText * text_ptr)
|
||||
: owner(o) //, text(text_ptr)
|
||||
: owner(o), force_clear(true) //, text(text_ptr)
|
||||
{
|
||||
// the cursor isnt yet visible
|
||||
cursor_visible = false;
|
||||
@ -108,7 +108,8 @@ void LyXScreen::DrawFromTo(LyXText * text, int y1, int y2, int y_offset, int x_o
|
||||
y += row->height();
|
||||
row = row->next();
|
||||
}
|
||||
|
||||
force_clear = false;
|
||||
|
||||
// maybe we have to clear the screen at the bottom
|
||||
if ((y < y2) && text->bv_owner) {
|
||||
owner.getPainter().fillRectangle(0, y,
|
||||
@ -135,6 +136,7 @@ void LyXScreen::DrawOneRow(LyXText * text, Row * row, long y_text,
|
||||
} while (text->status == LyXText::CHANGED_IN_DRAW);
|
||||
text->status = st;
|
||||
}
|
||||
force_clear = false;
|
||||
}
|
||||
|
||||
|
||||
|
@ -36,6 +36,7 @@
|
||||
#include "tracer.h"
|
||||
#include "font.h"
|
||||
#include "encoding.h"
|
||||
#include "lyxscreen.h"
|
||||
|
||||
using std::max;
|
||||
using std::min;
|
||||
@ -3928,12 +3929,13 @@ void LyXText::GetVisibleRow(BufferView * bview, int y_offset, int x_offset,
|
||||
bool clear_area = true;
|
||||
Inset * inset = 0;
|
||||
|
||||
if ((last == row_ptr->pos()) &&
|
||||
if (!bview->screen()->forceClear() && (last == row_ptr->pos()) &&
|
||||
(row_ptr->par()->GetChar(row_ptr->pos()) == LyXParagraph::META_INSET) &&
|
||||
(inset = row_ptr->par()->GetInset(row_ptr->pos()))) {
|
||||
clear_area = inset->doClearArea();
|
||||
}
|
||||
if (cleared) { // we don't need to clear it's already done!!!
|
||||
// we don't need to clear it's already done!!!
|
||||
if (cleared) {
|
||||
clear_area = true;
|
||||
} else if (clear_area) {
|
||||
int w = (inset_owner ? inset_owner->width(bview, font) : ww);
|
||||
|
Loading…
Reference in New Issue
Block a user