]> git.lyx.org Git - features.git/commitdiff
fix #832
authorAndré Pönitz <poenitz@gmx.net>
Fri, 16 May 2003 14:48:33 +0000 (14:48 +0000)
committerAndré Pönitz <poenitz@gmx.net>
Fri, 16 May 2003 14:48:33 +0000 (14:48 +0000)
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@6973 a592a061-630c-0410-9148-cb99ea01b6c8

src/insets/ChangeLog
src/insets/insetcollapsable.C
src/insets/insetcollapsable.h
src/insets/insetcommand.C
src/insets/insetminipage.C
src/insets/insetminipage.h

index fffb773cf9368b94f36ccc823a30005cc7ded97a..053abfaff9047319fa1cc9624a2fac38e7ee8648 100644 (file)
@@ -1,4 +1,9 @@
 
+2003-05-16 André Pönitz  <poenitz@gmx.net>
+
+       * insetcommand.C:
+       * insetminimpage.[Ch]:
+       * insetcollapsable.[Ch]: fix #832 
 
 2003-05-16 André Pönitz  <poenitz@gmx.net>
 
index ddac8d46c7e0be076c0d7659462995ea06461650..ea684568d03b06aedd2680d111fe71c68e19649f 100644 (file)
@@ -231,9 +231,7 @@ void InsetCollapsable::draw(BufferView * bv, LyXFont const & f,
 
 Inset::EDITABLE InsetCollapsable::editable() const
 {
-       if (collapsed_)
-               return IS_EDITABLE;
-       return HIGHLY_EDITABLE;
+       return collapsed_ ? IS_EDITABLE : HIGHLY_EDITABLE;
 }
 
 
@@ -256,31 +254,36 @@ void InsetCollapsable::insetUnlock(BufferView * bv)
 }
 
 
-void InsetCollapsable::lfunMousePress(FuncRequest const & cmd)
+FuncRequest InsetCollapsable::adjustCommand(FuncRequest const & cmd)
 {
-       if (!collapsed_ && (cmd.y > button_bottom_y)) {
-               LyXFont font(LyXFont::ALL_SANE);
-               FuncRequest cmd1 = cmd;
-               cmd1.y = ascent(cmd.view(), font) + cmd.y -
-                   (ascent_collapsed() +
-                    descent_collapsed() +
-                    inset.ascent(cmd.view(), font));
-               inset.localDispatch(cmd1);
-       }
+       LyXFont font(LyXFont::ALL_SANE);
+       FuncRequest cmd1 = cmd;
+       cmd1.y = ascent(cmd.view(), font) + cmd.y -
+           (ascent_collapsed() +
+            descent_collapsed() +
+            inset.ascent(cmd.view(), font));
+       return cmd1;
 }
 
 
-bool InsetCollapsable::lfunMouseRelease(FuncRequest const & cmd)
+void InsetCollapsable::lfunMouseRelease(FuncRequest const & cmd)
 {
        bool ret = false;
        BufferView * bv = cmd.view();
+
+       if (collapsed_ && cmd.button() != mouse_button::button3) {
+               collapsed_ = false;
+               inset.setUpdateStatus(bv, InsetText::FULL);
+               bv->updateInset(this);
+               bv->buffer()->markDirty();
+               return;
+       }
+
        if ((cmd.button() != mouse_button::button3) && (cmd.x < button_length) &&
            (cmd.y >= button_top_y) && (cmd.y <= button_bottom_y))
        {
                if (collapsed_) {
                        collapsed_ = false;
-// should not be called on inset open!
-//                     inset.insetButtonRelease(bv, 0, 0, button);
                        inset.setUpdateStatus(bv, InsetText::FULL);
                        bv->updateInset(this);
                        bv->buffer()->markDirty();
@@ -291,31 +294,10 @@ bool InsetCollapsable::lfunMouseRelease(FuncRequest const & cmd)
                        bv->buffer()->markDirty();
                }
        } else if (!collapsed_ && (cmd.y > button_bottom_y)) {
-               LyXFont font(LyXFont::ALL_SANE);
-               FuncRequest cmd1 = cmd;
-               cmd1.y = ascent(cmd.view(), font) + cmd.y -
-                   (ascent_collapsed() +
-                    descent_collapsed() +
-                    inset.ascent(cmd.view(), font));
-               ret = (inset.localDispatch(cmd1) == DISPATCHED);
+               ret = (inset.localDispatch(adjustCommand(cmd)) == DISPATCHED);
        }
        if (cmd.button() == mouse_button::button3 && !ret)
-               return showInsetDialog(bv);
-       return ret;
-}
-
-
-void InsetCollapsable::lfunMouseMotion(FuncRequest const & cmd)
-{
-       if (cmd.y > button_bottom_y) {
-               LyXFont font(LyXFont::ALL_SANE);
-               FuncRequest cmd1 = cmd;
-               cmd1.y = ascent(cmd.view(), font) + cmd.y -
-                   (ascent_collapsed() +
-                    descent_collapsed() +
-                    inset.ascent(cmd.view(), font));
-               inset.localDispatch(cmd1);
-       }
+               showInsetDialog(bv);
 }
 
 
@@ -363,6 +345,7 @@ void InsetCollapsable::update(BufferView * bv, bool reinit)
 
 Inset::RESULT InsetCollapsable::localDispatch(FuncRequest const & cmd)
 {
+       //lyxerr << "InsetCollapsable::localDispatch: " << cmd.action << "\n";
        BufferView * bv = cmd.view();
        switch (cmd.action) {
                case LFUN_INSET_EDIT: {
@@ -421,11 +404,13 @@ Inset::RESULT InsetCollapsable::localDispatch(FuncRequest const & cmd)
                }
 
                case LFUN_MOUSE_PRESS:
-                       lfunMousePress(cmd);
+                       if (!collapsed_ && cmd.y > button_bottom_y)
+                               inset.localDispatch(adjustCommand(cmd));
                        return DISPATCHED;
 
                case LFUN_MOUSE_MOTION:
-                       lfunMouseMotion(cmd);
+                       if (!collapsed_ && cmd.y > button_bottom_y)
+                               inset.localDispatch(adjustCommand(cmd));
                        return DISPATCHED;
 
                case LFUN_MOUSE_RELEASE:
index d7310607341b089241356ab47659a65f40e982c3..577111f21a285c4b0d9eb41e0b44c3629b6fc7fb 100644 (file)
@@ -17,6 +17,7 @@
 #include "inset.h"
 #include "insettext.h"
 #include "lyxfont.h"
+#include "funcrequest.h" // for adjustCommand
 #include "LColor.h"
 
 #include <boost/weak_ptr.hpp>
@@ -212,11 +213,9 @@ protected:
 
 private:
        ///
-       void lfunMousePress(FuncRequest const &);
+       void lfunMouseRelease(FuncRequest const &);
        ///
-       bool lfunMouseRelease(FuncRequest const &);
-       ///
-       void lfunMouseMotion(FuncRequest const &);
+       FuncRequest adjustCommand(FuncRequest const &);
 
        ///
        mutable string label;
index fda67c103bfd3807fef70df9bfaca9f12900a04e..7edcececf5560d74d63bcfbcbe8d165dfc024a55 100644 (file)
@@ -67,7 +67,7 @@ int InsetCommand::docbook(Buffer const *, ostream &, bool) const
 
 dispatch_result InsetCommand::localDispatch(FuncRequest const & cmd)
 {
-       lyxerr << "insetCommand::localDispatch\n";
+       lyxerr << "InsetCommand::localDispatch: " << cmd.action << "\n";
        switch (cmd.action) {
        case LFUN_INSET_MODIFY: {
                InsetCommandParams p;
index 8d31230ea2df64e550f10c1dc26abdaea13a9f34..120b6841b34f36e5d6bf07200170ab36622415c6 100644 (file)
@@ -107,8 +107,6 @@ InsetMinipage::~InsetMinipage()
 
 dispatch_result InsetMinipage::localDispatch(FuncRequest const & cmd)
 {
-       Inset::RESULT result = UNDISPATCHED;
-
        switch (cmd.action) {
        case LFUN_INSET_MODIFY: {
                InsetMinipage::Params params;
@@ -125,21 +123,16 @@ dispatch_result InsetMinipage::localDispatch(FuncRequest const & cmd)
                inset.update(cmd.view(), true);
                t->setCursorIntern(t->cursor.par(), t->cursor.pos());
                cmd.view()->updateInset(this);
-               result = DISPATCHED;
+               return DISPATCHED;
        }
-       break;
 
-       case LFUN_INSET_DIALOG_UPDATE: {
-               InsetMinipageMailer mailer(*this);
-               mailer.updateDialog(cmd.view());
-       }
-       break;
+       case LFUN_INSET_DIALOG_UPDATE: 
+               InsetMinipageMailer(*this).updateDialog(cmd.view());
+               return DISPATCHED;
 
        default:
-               result = InsetCollapsable::localDispatch(cmd);
+               return InsetCollapsable::localDispatch(cmd);
        }
-
-       return result;
 }
 
 
index 5b2fcc52c02612300c554882c410718d41ff401e..e6946a650fc72fa5204db7a99600c075b02971d4 100644 (file)
@@ -13,7 +13,6 @@
 #ifndef INSETMINIPAGE_H
 #define INSETMINIPAGE_H
 
-
 #include "insetcollapsable.h"
 #include "lyxlength.h"