Some more cursor/redraw problems fixe (hopefully the last ones ;)

git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@1194 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
Jürgen Vigna 2000-11-03 15:56:33 +00:00
parent 70b7660933
commit a6b2d503fb
5 changed files with 30 additions and 10 deletions

View File

@ -1,3 +1,16 @@
2000-11-03 Juergen Vigna <jug@sad.it>
* src/insets/insettabular.h: added fixed number to update codes so
that update is only in one direction.
* src/insets/insettabular.C (UpdateLocal): modified a bit don't think
it matters.
* src/insets/insettext.C (InsetButtonPress): set the_locking_inset
before call to edit because of redraw.
* src/insets/insetcollapsable.C (draw): fixed clearing too much.
2000-11-03 Jean-Marc Lasgouttes <Jean-Marc.Lasgouttes@inria.fr> 2000-11-03 Jean-Marc Lasgouttes <Jean-Marc.Lasgouttes@inria.fr>
* lib/ui/default.ui: Populate "edit_float" menu * lib/ui/default.ui: Populate "edit_float" menu

View File

@ -187,6 +187,8 @@ void InsetCollapsable::draw(BufferView * bv, LyXFont const & f,
h = pain.paperHeight(); h = pain.paperHeight();
if ((top_x + w) > pain.paperWidth()) if ((top_x + w) > pain.paperWidth())
w = pain.paperWidth(); w = pain.paperWidth();
if (baseline < 0)
h += (baseline - ascent(bv, f));
pain.fillRectangle(tx, ty - 1, w, h + 2); pain.fillRectangle(tx, ty - 1, w, h + 2);
cleared = true; cleared = true;
} }

View File

@ -444,7 +444,7 @@ void InsetTabular::Edit(BufferView * bv, int x, int y, unsigned int button)
if (InsetHit(bv, x, y)) { if (InsetHit(bv, x, y)) {
ActivateCellInset(bv, x, y, button); ActivateCellInset(bv, x, y, button);
} }
UpdateLocal(bv, NONE, false); // UpdateLocal(bv, NONE, false);
// bv->getOwner()->getPopups().updateFormTabular(); // bv->getOwner()->getPopups().updateFormTabular();
} }
@ -474,11 +474,14 @@ void InsetTabular::InsetUnlock(BufferView * bv)
void InsetTabular::UpdateLocal(BufferView * bv, UpdateCodes what, void InsetTabular::UpdateLocal(BufferView * bv, UpdateCodes what,
bool mark_dirty) const bool mark_dirty) const
{ {
need_update = what; if (need_update < what) // only set this if it has greater update
need_update = what;
// Dirty Cast! (Lgb) // Dirty Cast! (Lgb)
bv->updateInset(const_cast<InsetTabular *>(this), mark_dirty); if (need_update != NONE) {
if (locked && (what != NONE)) bv->updateInset(const_cast<InsetTabular *>(this), mark_dirty);
resetPos(bv); if (locked) // && (what != NONE))
resetPos(bv);
}
} }

View File

@ -70,11 +70,11 @@ public:
/// ///
enum UpdateCodes { enum UpdateCodes {
NONE = 0, NONE = 0,
INIT, CURSOR = 1,
FULL, CELL = 2,
CELL, SELECTION = 3,
CURSOR, FULL = 4,
SELECTION INIT = 5
}; };
/// ///
InsetTabular(Buffer const &, int rows = 1, int columns = 1); InsetTabular(Buffer const &, int rows = 1, int columns = 1);

View File

@ -608,6 +608,7 @@ void InsetText::InsetButtonPress(BufferView * bv, int x, int y, int button)
the_locking_inset->InsetUnlock(bv); the_locking_inset->InsetUnlock(bv);
inset_x = cx(bv) - top_x + drawTextXOffset; inset_x = cx(bv) - top_x + drawTextXOffset;
inset_y = cy(bv) + drawTextYOffset; inset_y = cy(bv) + drawTextYOffset;
the_locking_inset = static_cast<UpdatableInset*>(inset);
inset->InsetButtonPress(bv, x - inset_x, y - inset_y, button); inset->InsetButtonPress(bv, x - inset_x, y - inset_y, button);
inset->Edit(bv, x - inset_x, y - inset_y, button); inset->Edit(bv, x - inset_x, y - inset_y, button);
if (the_locking_inset) { if (the_locking_inset) {
@ -626,6 +627,7 @@ void InsetText::InsetButtonPress(BufferView * bv, int x, int y, int button)
inset_y = cy(bv) + drawTextYOffset; inset_y = cy(bv) + drawTextYOffset;
inset_pos = cpos(bv); inset_pos = cpos(bv);
inset_par = cpar(bv); inset_par = cpar(bv);
the_locking_inset = uinset;
uinset->InsetButtonPress(bv, x - inset_x, y - inset_y, button); uinset->InsetButtonPress(bv, x - inset_x, y - inset_y, button);
uinset->Edit(bv, x - inset_x, y - inset_y, 0); uinset->Edit(bv, x - inset_x, y - inset_y, 0);
// TEXT(bv)->ClearSelection(); // TEXT(bv)->ClearSelection();