]> git.lyx.org Git - features.git/commitdiff
Changed drawing of button in InsetCollapsable and some Mouse/Curosor fixes.
authorJürgen Vigna <jug@sad.it>
Wed, 28 Mar 2001 09:28:48 +0000 (09:28 +0000)
committerJürgen Vigna <jug@sad.it>
Wed, 28 Mar 2001 09:28:48 +0000 (09:28 +0000)
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@1840 a592a061-630c-0410-9148-cb99ea01b6c8

po/POTFILES.in
src/BufferView_pimpl.C
src/ChangeLog
src/frontends/xforms/FormMinipage.C
src/insets/ChangeLog
src/insets/insetcollapsable.C
src/insets/insetminipage.C
src/insets/insettext.C

index 07541bd66be879473f84719bd08c834957bf4126..53ffdc22a4638fda580ff54660f82a1b9cb1134d 100644 (file)
@@ -16,6 +16,9 @@ src/frontends/controllers/ButtonController.h
 src/frontends/controllers/ControlCharacter.C
 src/frontends/controllers/ControlCopyright.C
 src/frontends/controllers/ControlCredits.C
+src/frontends/controllers/ControlPreamble.C
+src/frontends/controllers/ControlPrint.C
+src/frontends/controllers/ControlSearch.C
 src/frontends/gnome/FormCitation.C
 src/frontends/gnome/FormCopyright.C
 src/frontends/gnome/FormError.C
index f29dfba909dfc048b042a7a92c2bfcddd2fbc351..4890ac972e91bbf4aa2a8a6715b722d3bd5d5023 100644 (file)
@@ -921,6 +921,8 @@ Inset * BufferView::Pimpl::checkInsetHit(LyXText * text, int & x, int & y,
   
        LyXCursor cursor;
        text->SetCursorFromCoordinates(bv_, cursor, x, y_tmp);
+       text->SetCursor(bv_, cursor, cursor.par(),cursor.pos(),true);
+
 
 #ifndef NEW_INSETS
        if (cursor.pos() < cursor.par()->Last()
@@ -943,7 +945,8 @@ Inset * BufferView::Pimpl::checkInsetHit(LyXText * text, int & x, int & y,
 
                if (x > start_x && x < end_x
                    && y_tmp > cursor.y() - tmpinset->ascent(bv_, font)
-                   && y_tmp < cursor.y() + tmpinset->descent(bv_, font)) {
+                   && y_tmp < cursor.y() + tmpinset->descent(bv_, font))
+               {
                        text->SetCursor(bv_, cursor.par(),cursor.pos(),true);
                        x = x - start_x;
                        // The origin of an inset is on the baseline
index 8da350ce2b19913c1c0a337d604e4d0d98724e39..e48aad0859c8b53ddfa2705813bd5ce6d80af6ae 100644 (file)
@@ -1,3 +1,7 @@
+2001-03-27  Juergen Vigna  <jug@sad.it>
+
+       * BufferView_pimpl.C: set the temporary cursor right!
+
 2001-03-27  Angus Leeming  <a.leeming@ic.ac.uk>
 
        * BufferView_pimpl.C (Dispatch): corrected spelling givven -> given.
index bf3cb4a6951a9f2ead6d5751738b852e7f84c66d..7ca95f30f73bbcbe39990d284b1880b224bb7141 100644 (file)
@@ -8,7 +8,7 @@
  * ======================================================
  *
  * \file FormMinipage.C
- * \author Juergen Vigna, jug@sad.it
+ * \author Jürgen Vigna, jug@sad.it
  */
 
 #include <config.h>
index c3fae2ce3b9e26b47b25389d3b87e51da6a3385b..57479334389f4acbd1722eb8bc86159a4fe675d0 100644 (file)
@@ -1,3 +1,21 @@
+2001-03-28  Juergen Vigna  <jug@sad.it>
+
+       * insettext.C (InsetButtonPress): only enter !inset if button == 2
+       (checkAndActivateInset): don't use the values returned from
+       call to bv->checkInsetHit.
+
+       * insetminipage.C (Clone): set special minipage values.
+
+       * insetcollapsable.C (draw): changed to draw the button in the
+       upper left corner outside the textinset.
+       (ascent): changed because of different drawing 
+       (descent): ditto
+       (width): ditto
+       (Edit): ditto
+       (InsetButtonPress): ditto
+       (InsetButtonRelease): ditto
+       (InsetMotionNotify): ditto
+
 2001-03-27  Dekel Tsur  <dekelts@tau.ac.il>
 
        * figinset.C (GetPSSizes): Fix for the case when filename doesn't
index 847e86642fa9b1d955a3d205d05062761945eaff..7d7e92c8552317f30c3e4cd83ab1ba1086d449d2 100644 (file)
@@ -132,10 +132,7 @@ int InsetCollapsable::width_collapsed(Painter & pain, LyXFont const &) const
 
 int InsetCollapsable::ascent(BufferView * bv, LyXFont const & font) const
 {
-    if (collapsed) 
-       return ascent_collapsed(bv->painter(), font);
-    else 
-       return inset->ascent(bv, font) + TEXT_TO_TOP_OFFSET;
+    return ascent_collapsed(bv->painter(), font);
 }
 
 
@@ -143,8 +140,9 @@ int InsetCollapsable::descent(BufferView * bv, LyXFont const & font) const
 {
     if (collapsed) 
        return descent_collapsed(bv->painter(), font);
-    else 
-       return inset->descent(bv, font) + TEXT_TO_BOTTOM_OFFSET;
+
+    return descent_collapsed(bv->painter(), font) + inset->descent(bv, font) +
+       inset->ascent(bv, font) + TEXT_TO_BOTTOM_OFFSET;
 }
 
 
@@ -153,7 +151,8 @@ int InsetCollapsable::width(BufferView * bv, LyXFont const & font) const
     if (collapsed) 
        return widthCollapsed;
 
-    return inset->width(bv, font) + widthCollapsed;
+    return (inset->width(bv, font) > widthCollapsed) ?
+       inset->width(bv, font) : widthCollapsed;
 }
 
 
@@ -173,8 +172,9 @@ void InsetCollapsable::draw(BufferView * bv, LyXFont const & f,
     Painter & pain = bv->painter();
 
     button_length = widthCollapsed;
-    button_top_y = -ascent_collapsed(pain, f);
-    button_bottom_y = descent_collapsed(pain, f);
+    button_top_y = -ascent(bv, f);
+    button_bottom_y = -ascent(bv, f) + ascent_collapsed(pain,f) +
+       descent_collapsed(pain, f);
     if (collapsed) {
        draw_collapsed(pain, f, baseline, x);
        x += TEXT_TO_INSET_OFFSET;
@@ -202,19 +202,20 @@ void InsetCollapsable::draw(BufferView * bv, LyXFont const & f,
     top_x = int(x);
     top_baseline = baseline;
 
-    draw_collapsed(pain, f,
-                  baseline - ascent(bv, f) + ascent_collapsed(pain, f),
-                  x);
+    float dummy = x;
+    int bl = baseline - ascent(bv, f) + ascent_collapsed(pain, f);
+
+    draw_collapsed(pain, f, bl, dummy);
     inset->draw(bv, f, 
-               baseline - ascent(bv, f) + ascent_collapsed(pain, f),
+               bl + descent_collapsed(pain, f) + inset->ascent(bv, f),
                x, cleared);
     need_update = NONE;
 }
 
 
-void InsetCollapsable::Edit(BufferView * bv, int x, int y, unsigned int button)
+void InsetCollapsable::Edit(BufferView * bv, int xp, int yp, unsigned int button)
 {
-    UpdatableInset::Edit(bv, x, y, button);
+    UpdatableInset::Edit(bv, xp, yp, button);
 
     if (collapsed && autocollapse) {
        collapsed = false;
@@ -225,7 +226,7 @@ void InsetCollapsable::Edit(BufferView * bv, int x, int y, unsigned int button)
     } else if (!collapsed) {
        if (!bv->lockInset(this))
            return;
-       inset->Edit(bv, x - widthCollapsed, y, button);
+       inset->Edit(bv, xp, yp+(top_baseline - inset->y()), button);
     }
 }
 
@@ -250,10 +251,8 @@ void InsetCollapsable::InsetUnlock(BufferView * bv)
 
 void InsetCollapsable::InsetButtonPress(BufferView * bv,int x,int y,int button)
 {
-    if (!collapsed && (x >= button_length)) {
-       inset->InsetButtonPress(bv, x - widthCollapsed,
-                               y + (top_baseline - inset->y()),
-                               button);
+    if (!collapsed && (y > button_bottom_y)) {
+       inset->InsetButtonPress(bv, x, y+(top_baseline - inset->y()), button);
     }
 }
 
@@ -262,7 +261,7 @@ void InsetCollapsable::InsetButtonRelease(BufferView * bv,
                                          int x, int y, int button)
 {
     if ((x >= 0)  && (x < button_length) &&
-       (y >= button_top_y) &&  (y < button_bottom_y)) {
+       (y >= button_top_y) &&  (y <= button_bottom_y)) {
        if (collapsed) {
            collapsed = false;
            inset->InsetButtonRelease(bv, 0, 0, button);
@@ -272,10 +271,8 @@ void InsetCollapsable::InsetButtonRelease(BufferView * bv,
            bv->unlockInset(this);
            bv->updateInset(this, false);
        }
-    } else if (!collapsed && (x >= button_length) && (y >= button_top_y)) {
-       inset->InsetButtonRelease(bv, x - widthCollapsed,
-                                 y + (top_baseline - inset->y()),
-                                 button);
+    } else if (!collapsed && (y > button_top_y)) {
+       inset->InsetButtonRelease(bv, x, y+(top_baseline-inset->y()), button);
     }
 }
 
@@ -283,10 +280,8 @@ void InsetCollapsable::InsetButtonRelease(BufferView * bv,
 void InsetCollapsable::InsetMotionNotify(BufferView * bv,
                                         int x, int y, int state)
 {
-    if (x >= button_length) {
-       inset->InsetMotionNotify(bv, x-widthCollapsed,
-                                y + (top_baseline - inset->y()),
-                                state);
+    if (x > button_bottom_y) {
+       inset->InsetMotionNotify(bv, x, y+(top_baseline - inset->y()), state);
     }
 }
 
@@ -311,6 +306,7 @@ int InsetCollapsable::getMaxWidth(Painter & pain,
 
     if (w < 0) {
        // What does a negative max width signify? (Lgb)
+       // Use the max width of the draw-area (Jug)
        return w;
     }
     // should be at least 30 pixels !!!
@@ -318,15 +314,6 @@ int InsetCollapsable::getMaxWidth(Painter & pain,
 }
 
 
-#if 0
-int InsetCollapsable::getMaxTextWidth(Painter & pain,
-                                     UpdatableInset const * inset) const
-{
-    return getMaxWidth(pain, inset) - widthCollapsed;
-}
-#endif
-
-
 void InsetCollapsable::update(BufferView * bv, LyXFont const & font,
                              bool reinit)
 {
index ffec4c3848da64cfda4fe47d6294be023903043c..cc096f24e2d3351943178c208700a2831f58beeb 100644 (file)
@@ -173,14 +173,17 @@ Inset * InsetMinipage::Clone(Buffer const &) const
        result->inset->init(inset);
        
        result->collapsed = collapsed;
+       result->pos_ = pos_;
+       result->inner_pos_ = inner_pos_;
+       result->height_ = height_;
+       result->width_ = width_;
+       result->widthp_ = widthp_;
        return result;
 }
 
 
 int InsetMinipage::ascent(BufferView * bv, LyXFont const & font) const
 {
-       lyxerr << "InsetMinipage::ascent" << endl;
-       
        if (collapsed)
                return ascent_collapsed(bv->painter(), font);
        else {
@@ -357,6 +360,7 @@ void InsetMinipage::InsetButtonRelease(BufferView * bv, int x, int y,
     InsetCollapsable::InsetButtonRelease(bv, x, y, button);
 }
 
+
 int InsetMinipage::getMaxWidth(Painter & pain, UpdatableInset const * inset)
     const
 {
index 5a7dd6ac1f38a1d7a28f18688fea891783a6b058..833eb64c621b705b31d4007e9b76d99bc5ebb9a1 100644 (file)
@@ -712,7 +712,7 @@ void InsetText::InsetButtonPress(BufferView * bv, int x, int y, int button)
            return;
        }
     }
-    if (!inset) {
+    if (!inset && (button == 2)) {
        bool paste_internally = false;
        if ((button == 2) && TEXT(bv)->selection) {
            LocalDispatch(bv, LFUN_COPY, "");
@@ -1494,9 +1494,11 @@ bool InsetText::checkAndActivateInset(BufferView * bv, bool behind)
 bool InsetText::checkAndActivateInset(BufferView * bv, int x, int y,
                                      int button)
 {
-    x = x - drawTextXOffset;
-    y = y + insetAscent;
-    Inset * inset = bv->checkInsetHit(TEXT(bv), x, y, button);
+    int dummyx, dummyy;
+
+    dummyx = x = x - drawTextXOffset;
+    dummyy = y + insetAscent;
+    Inset * inset = bv->checkInsetHit(TEXT(bv), dummyx, dummyy, button);
 
     if (inset) {
        if (x < 0)