Re: [PATCH] move need_update handling into insetert

2003-03-20 Thread Juergen Vigna
John Levon wrote:
This fixes a long-standing bug, for some reason (namely, switch from
closed to inlined did not correctly recalculate the width), but does not
fix an *existing* bug that is new to 1.4.0cvs (bug 965). Jug, if you're
listening: why doesn't the insettext-update() correctly deal with the
cursor positioning changing ?
But really this is a matter of a start of cleanup, only insetert uses
the insetcollapsable need_update handling, so it should go there.
It also doesn't yet fix bug 966, which is old.

OK ?
IMO this is ok if this need_update is only used in InsetERT then this
surely is wrong.
 Jug

--
-._-._-._-._-._-._-._-._-._-._-._-._-._-._-._-._-._-._-._-._-._-._-._
Dr. Jürgen VignaE-Mail:  [EMAIL PROTECTED]
Mitterstrich 151/A
I-39050 SteineggWeb: http://www.lyx.org/~jug
-._-._-._-._-._-._-._-._-._-._-._-._-._-._-._-._-._-._-._-._-._-._-._


Re: [PATCH] move need_update handling into insetert

2003-03-20 Thread Juergen Vigna
John Levon wrote:
This fixes a long-standing bug, for some reason (namely, switch from
closed to inlined did not correctly recalculate the width), but does not
fix an *existing* bug that is new to 1.4.0cvs (bug 965). Jug, if you're
listening: why doesn't the insettext->update() correctly deal with the
cursor positioning changing ?
But really this is a matter of a start of cleanup, only insetert uses
the insetcollapsable need_update handling, so it should go there.
It also doesn't yet fix bug 966, which is old.

OK ?
IMO this is ok if this need_update is only used in InsetERT then this
surely is wrong.
 Jug

--
-._-._-._-._-._-._-._-._-._-._-._-._-._-._-._-._-._-._-._-._-._-._-._
Dr. Jürgen VignaE-Mail:  [EMAIL PROTECTED]
Mitterstrich 151/A
I-39050 SteineggWeb: http://www.lyx.org/~jug
-._-._-._-._-._-._-._-._-._-._-._-._-._-._-._-._-._-._-._-._-._-._-._


[PATCH] move need_update handling into insetert

2003-03-19 Thread John Levon

This fixes a long-standing bug, for some reason (namely, switch from
closed to inlined did not correctly recalculate the width), but does not
fix an *existing* bug that is new to 1.4.0cvs (bug 965). Jug, if you're
listening: why doesn't the insettext-update() correctly deal with the
cursor positioning changing ?

But really this is a matter of a start of cleanup, only insetert uses
the insetcollapsable need_update handling, so it should go there.

It also doesn't yet fix bug 966, which is old.

OK ?

regards,
john


? a.diff
Index: insetcollapsable.C
===
RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/insets/insetcollapsable.C,v
retrieving revision 1.129
diff -u -p -r1.129 insetcollapsable.C
--- insetcollapsable.C  19 Mar 2003 14:45:18 -  1.129
+++ insetcollapsable.C  19 Mar 2003 18:56:03 -
@@ -46,7 +46,7 @@ class LyXText;
 InsetCollapsable::InsetCollapsable(BufferParams const  bp, bool collapsed)
: UpdatableInset(), collapsed_(collapsed), inset(bp),
  button_length(0), button_top_y(0), button_bottom_y(0),
- need_update(NONE), label(Label),
+ label(Label),
 #if 0
autocollapse(false),
 #endif
@@ -64,7 +64,7 @@ InsetCollapsable::InsetCollapsable(Inset
: UpdatableInset(in, same_id), collapsed_(in.collapsed_),
  framecolor(in.framecolor), labelfont(in.labelfont), inset(in.inset),
  button_length(0), button_top_y(0), button_bottom_y(0),
- need_update(NONE), label(in.label),
+ label(in.label),
 #if 0
  autocollapse(in.autocollapse),
 #endif
@@ -189,12 +189,6 @@ void InsetCollapsable::draw(BufferView *
lyx::Assert(bv);
cache(bv);
 
-   if (need_update != NONE) {
-   const_castInsetText *(inset)-update(bv, f, true);
-   bv-text-postChangedInDraw();
-   need_update = NONE;
-   return;
-   }
if (nodraw())
return;
 
Index: insetcollapsable.h
===
RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/insets/insetcollapsable.h,v
retrieving revision 1.94
diff -u -p -r1.94 insetcollapsable.h
--- insetcollapsable.h  17 Mar 2003 01:34:34 -  1.94
+++ insetcollapsable.h  19 Mar 2003 18:56:04 -
@@ -33,11 +33,6 @@ class LyXCursor;
 class InsetCollapsable : public UpdatableInset {
 public:
///
-   enum UpdateCodes {
-   NONE = 0,
-   FULL
-   };
-   ///
static int const TEXT_TO_TOP_OFFSET = 2;
///
static int const TEXT_TO_BOTTOM_OFFSET = 2;
@@ -226,7 +221,6 @@ protected:
///
mutable int topx;
mutable int topbaseline;
-   mutable UpdateCodes need_update;
 
 private:
///
Index: insetert.C
===
RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/insets/insetert.C,v
retrieving revision 1.110
diff -u -p -r1.110 insetert.C
--- insetert.C  19 Mar 2003 14:45:19 -  1.110
+++ insetert.C  19 Mar 2003 18:56:05 -
@@ -53,7 +53,7 @@ void InsetERT::init()
 
 
 InsetERT::InsetERT(BufferParams const  bp, bool collapsed)
-   : InsetCollapsable(bp, collapsed)
+   : InsetCollapsable(bp, collapsed), need_update(false)
 {
if (collapsed)
status_ = Collapsed;
@@ -64,7 +64,8 @@ InsetERT::InsetERT(BufferParams const  
 
 
 InsetERT::InsetERT(InsetERT const  in, bool same_id)
-   : InsetCollapsable(in, same_id), status_(in.status_)
+   : InsetCollapsable(in, same_id), status_(in.status_),
+   need_update(false)
 {
init();
 }
@@ -572,6 +573,14 @@ void InsetERT::draw(BufferView * bv, LyX
lyx::Assert(bv);
cache(bv);
 
+   if (need_update) {
+   InsetText * it = const_castInsetText *(inset);
+   it-update(bv, f, true);
+   bv-text-postChangedInDraw();
+   need_update = false;
+   return;
+   }
+
Painter  pain = bv-painter();
 
button_length = width_collapsed();
@@ -601,7 +610,6 @@ void InsetERT::draw(BufferView * bv, LyX
draw_collapsed(pain, bl, old_x);
inset.draw(bv, f, bl + descent_collapsed() + inset.ascent(bv, f), x);
}
-   need_update = NONE;
 }
 
 
@@ -623,7 +631,7 @@ void InsetERT::status(BufferView * bv, E
 {
if (st != status_) {
status_ = st;
-   need_update = FULL;
+   need_update = true;
switch (st) {
case Inlined:
if (bv)
@@ -710,10 +718,10 @@ void InsetERT::update(BufferView * bv, L
  bool reinit)
 {
if (inset.need_update  InsetText::INIT ||
-   inset.need_update  InsetText::FULL)
-   {
+   inset.need_update  InsetText::FULL) {
setButtonLabel();
}
+

[PATCH] move need_update handling into insetert

2003-03-19 Thread John Levon

This fixes a long-standing bug, for some reason (namely, switch from
closed to inlined did not correctly recalculate the width), but does not
fix an *existing* bug that is new to 1.4.0cvs (bug 965). Jug, if you're
listening: why doesn't the insettext->update() correctly deal with the
cursor positioning changing ?

But really this is a matter of a start of cleanup, only insetert uses
the insetcollapsable need_update handling, so it should go there.

It also doesn't yet fix bug 966, which is old.

OK ?

regards,
john


? a.diff
Index: insetcollapsable.C
===
RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/insets/insetcollapsable.C,v
retrieving revision 1.129
diff -u -p -r1.129 insetcollapsable.C
--- insetcollapsable.C  19 Mar 2003 14:45:18 -  1.129
+++ insetcollapsable.C  19 Mar 2003 18:56:03 -
@@ -46,7 +46,7 @@ class LyXText;
 InsetCollapsable::InsetCollapsable(BufferParams const & bp, bool collapsed)
: UpdatableInset(), collapsed_(collapsed), inset(bp),
  button_length(0), button_top_y(0), button_bottom_y(0),
- need_update(NONE), label("Label"),
+ label("Label"),
 #if 0
autocollapse(false),
 #endif
@@ -64,7 +64,7 @@ InsetCollapsable::InsetCollapsable(Inset
: UpdatableInset(in, same_id), collapsed_(in.collapsed_),
  framecolor(in.framecolor), labelfont(in.labelfont), inset(in.inset),
  button_length(0), button_top_y(0), button_bottom_y(0),
- need_update(NONE), label(in.label),
+ label(in.label),
 #if 0
  autocollapse(in.autocollapse),
 #endif
@@ -189,12 +189,6 @@ void InsetCollapsable::draw(BufferView *
lyx::Assert(bv);
cache(bv);
 
-   if (need_update != NONE) {
-   const_cast()->update(bv, f, true);
-   bv->text->postChangedInDraw();
-   need_update = NONE;
-   return;
-   }
if (nodraw())
return;
 
Index: insetcollapsable.h
===
RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/insets/insetcollapsable.h,v
retrieving revision 1.94
diff -u -p -r1.94 insetcollapsable.h
--- insetcollapsable.h  17 Mar 2003 01:34:34 -  1.94
+++ insetcollapsable.h  19 Mar 2003 18:56:04 -
@@ -33,11 +33,6 @@ class LyXCursor;
 class InsetCollapsable : public UpdatableInset {
 public:
///
-   enum UpdateCodes {
-   NONE = 0,
-   FULL
-   };
-   ///
static int const TEXT_TO_TOP_OFFSET = 2;
///
static int const TEXT_TO_BOTTOM_OFFSET = 2;
@@ -226,7 +221,6 @@ protected:
///
mutable int topx;
mutable int topbaseline;
-   mutable UpdateCodes need_update;
 
 private:
///
Index: insetert.C
===
RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/insets/insetert.C,v
retrieving revision 1.110
diff -u -p -r1.110 insetert.C
--- insetert.C  19 Mar 2003 14:45:19 -  1.110
+++ insetert.C  19 Mar 2003 18:56:05 -
@@ -53,7 +53,7 @@ void InsetERT::init()
 
 
 InsetERT::InsetERT(BufferParams const & bp, bool collapsed)
-   : InsetCollapsable(bp, collapsed)
+   : InsetCollapsable(bp, collapsed), need_update(false)
 {
if (collapsed)
status_ = Collapsed;
@@ -64,7 +64,8 @@ InsetERT::InsetERT(BufferParams const & 
 
 
 InsetERT::InsetERT(InsetERT const & in, bool same_id)
-   : InsetCollapsable(in, same_id), status_(in.status_)
+   : InsetCollapsable(in, same_id), status_(in.status_),
+   need_update(false)
 {
init();
 }
@@ -572,6 +573,14 @@ void InsetERT::draw(BufferView * bv, LyX
lyx::Assert(bv);
cache(bv);
 
+   if (need_update) {
+   InsetText * it = const_cast();
+   it->update(bv, f, true);
+   bv->text->postChangedInDraw();
+   need_update = false;
+   return;
+   }
+
Painter & pain = bv->painter();
 
button_length = width_collapsed();
@@ -601,7 +610,6 @@ void InsetERT::draw(BufferView * bv, LyX
draw_collapsed(pain, bl, old_x);
inset.draw(bv, f, bl + descent_collapsed() + inset.ascent(bv, f), x);
}
-   need_update = NONE;
 }
 
 
@@ -623,7 +631,7 @@ void InsetERT::status(BufferView * bv, E
 {
if (st != status_) {
status_ = st;
-   need_update = FULL;
+   need_update = true;
switch (st) {
case Inlined:
if (bv)
@@ -710,10 +718,10 @@ void InsetERT::update(BufferView * bv, L
  bool reinit)
 {
if (inset.need_update & InsetText::INIT ||
-   inset.need_update & InsetText::FULL)
-   {
+   inset.need_update & InsetText::FULL) {
setButtonLabel();
}
+
InsetCollapsable::update(bv, font,