edit->LFUN_INSET_EDIT + CHangeLog + working URL insets.

git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@6969 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
André Pönitz 2003-05-16 07:44:00 +00:00
parent 08455f2408
commit 14580a289e
55 changed files with 497 additions and 728 deletions

View File

@ -649,7 +649,8 @@ bool BufferView::lockInset(UpdatableInset * inset)
} }
if (it.getInset()->getInsetFromID(id)) { if (it.getInset()->getInsetFromID(id)) {
text->setCursorIntern(pit, it.getPos()); text->setCursorIntern(pit, it.getPos());
it.getInset()->edit(this); FuncRequest cmd(this, LFUN_INSET_EDIT, "left");
it.getInset()->localDispatch(cmd);
return theLockingInset()->lockInsetInInset(this, inset); return theLockingInset()->lockInsetInInset(this, inset);
} }
} }

View File

@ -1,4 +1,13 @@
2003-05-16 André Pönitz <poenitz@gmx.net>
* BufferView.C:
* lyxfunc.C:
* text.C:
* text2.C:
* text3.C:
* undo_funcs.C: edit() -> LFUN_INSET_EDIT
2003-05-14 Alfredo Braunstein <abraunst@libero.it> 2003-05-14 Alfredo Braunstein <abraunst@libero.it>
* lyx_main.C (init): remove spurious static_cast * lyx_main.C (init): remove spurious static_cast

View File

@ -1,4 +1,31 @@
2003-05-16 André Pönitz <poenitz@gmx.net>
* inset.[Ch]:
* insetbibitem.[Ch]:
* insetbibtex.[Ch]:
* insetbutton.[Ch]:
* insetcite.[Ch]:
* insetcollapsable.[Ch]:
* insetcommand.[Ch]:
* inseterror.[Ch]:
* insetert.[Ch]:
* insetexternal.[Ch]:
* insetfloatlist.[Ch]:
* insetgraphics.[Ch]:
* insetinclude.[Ch]:
* insetindex.[Ch]:
* insetlabel.[Ch]:
* insetlatexaccent.[Ch]:
* insetparent.[Ch]:
* insetref.[Ch]:
* insettabular.[Ch]:
* insettext.[Ch]:
* insettoc.[Ch]:
* inseturl.[Ch]:
* updatableinset.[Ch]: edit() -> LFUN_INSET_EDIT
2003-05-13 André Pönitz <poenitz@gmx.net> 2003-05-13 André Pönitz <poenitz@gmx.net>
* insetbibitem.C: * insetbibitem.C:

View File

@ -29,7 +29,6 @@
using std::endl; using std::endl;
// Insets default methods
// Initialization of the counter for the inset id's, // Initialization of the counter for the inset id's,
unsigned int Inset::inset_id = 0; unsigned int Inset::inset_id = 0;
@ -66,10 +65,6 @@ Inset::EDITABLE Inset::editable() const
} }
void Inset::edit(BufferView *, int, int, mouse_button::state)
{}
void Inset::validate(LaTeXFeatures &) const void Inset::validate(LaTeXFeatures &) const
{} {}
@ -80,10 +75,6 @@ bool Inset::autoDelete() const
} }
void Inset::edit(BufferView *, bool)
{}
#if 0 #if 0
LyXFont const Inset::convertFont(LyXFont const & font) const LyXFont const Inset::convertFont(LyXFont const & font) const
{ {
@ -143,10 +134,10 @@ void Inset::setFont(BufferView *, LyXFont const &, bool, bool)
{} {}
bool Inset::forceDefaultParagraphs(Inset const * in) const bool Inset::forceDefaultParagraphs(Inset const * inset) const
{ {
if (owner()) if (owner())
return owner()->forceDefaultParagraphs(in); return owner()->forceDefaultParagraphs(inset);
return false; return false;
} }

View File

@ -15,14 +15,14 @@
#ifndef INSET_H #ifndef INSET_H
#define INSET_H #define INSET_H
#include <vector>
#include "LString.h" #include "LString.h"
#include "LColor.h" #include "LColor.h"
#include "insetbase.h" #include "insetbase.h"
#include "frontends/mouse_state.h" #include "frontends/mouse_state.h"
#include "support/types.h" #include "support/types.h"
#include <vector>
class LyXFont; class LyXFont;
class Buffer; class Buffer;
class Painter; class Painter;
@ -170,10 +170,6 @@ public:
/// what appears in the minibuffer when opening /// what appears in the minibuffer when opening
virtual string const editMessage() const; virtual string const editMessage() const;
/// ///
virtual void edit(BufferView *, int x, int y, mouse_button::state button);
///
virtual void edit(BufferView *, bool front = true);
///
virtual EDITABLE editable() const; virtual EDITABLE editable() const;
/// ///
virtual bool isTextInset() const { return false; } virtual bool isTextInset() const { return false; }

View File

@ -27,6 +27,7 @@ using std::max;
int InsetBibitem::key_counter = 0; int InsetBibitem::key_counter = 0;
const string key_prefix = "key-"; const string key_prefix = "key-";
InsetBibitem::InsetBibitem(InsetCommandParams const & p) InsetBibitem::InsetBibitem(InsetCommandParams const & p)
: InsetCommand(p), counter(1) : InsetCommand(p), counter(1)
{ {
@ -52,14 +53,17 @@ Inset * InsetBibitem::clone(Buffer const &, bool) const
dispatch_result InsetBibitem::localDispatch(FuncRequest const & cmd) dispatch_result InsetBibitem::localDispatch(FuncRequest const & cmd)
{ {
Inset::RESULT result = UNDISPATCHED;
switch (cmd.action) { switch (cmd.action) {
case LFUN_INSET_EDIT:
InsetCommandMailer("bibitem", *this).showDialog(cmd.view());
return DISPATCHED;
case LFUN_INSET_MODIFY: { case LFUN_INSET_MODIFY: {
InsetCommandParams p; InsetCommandParams p;
InsetCommandMailer::string2params(cmd.argument, p); InsetCommandMailer::string2params(cmd.argument, p);
if (p.getCmdName().empty()) if (p.getCmdName().empty())
break; return DISPATCHED;
if (view() && p.getContents() != params().getContents()) { if (view() && p.getContents() != params().getContents()) {
view()->ChangeCitationsIfUnique(params().getContents(), view()->ChangeCitationsIfUnique(params().getContents(),
@ -75,15 +79,12 @@ dispatch_result InsetBibitem::localDispatch(FuncRequest const & cmd)
#warning and whether the repaint() is needed at all #warning and whether the repaint() is needed at all
cmd.view()->repaint(); cmd.view()->repaint();
cmd.view()->fitCursor(); cmd.view()->fitCursor();
return DISPATCHED;
result = DISPATCHED;
} }
break;
default: default:
result = InsetCommand::localDispatch(cmd); return InsetCommand::localDispatch(cmd);
} }
return result;
} }
@ -135,19 +136,6 @@ string const InsetBibitem::getScreenLabel(Buffer const *) const
} }
void InsetBibitem::edit(BufferView * bv, int, int, mouse_button::state)
{
InsetCommandMailer mailer("bibitem", *this);
mailer.showDialog(bv);
}
void InsetBibitem::edit(BufferView * bv, bool)
{
edit(bv, 0, 0, mouse_button::none);
}
// ale070405 This function maybe shouldn't be here. We'll fix this at 0.13. // ale070405 This function maybe shouldn't be here. We'll fix this at 0.13.
int bibitemMaxWidth(BufferView * bv, LyXFont const & font) int bibitemMaxWidth(BufferView * bv, LyXFont const & font)
{ {

View File

@ -41,10 +41,6 @@ public:
/// ///
virtual string const getScreenLabel(Buffer const *) const; virtual string const getScreenLabel(Buffer const *) const;
/// ///
void edit(BufferView *, int x, int y, mouse_button::state button);
///
void edit(BufferView * bv, bool front = true);
///
EDITABLE editable() const { return IS_EDITABLE; } EDITABLE editable() const { return IS_EDITABLE; }
/// ///
Inset::Code lyxCode() const { return Inset::BIBITEM_CODE; } Inset::Code lyxCode() const { return Inset::BIBITEM_CODE; }
@ -53,7 +49,7 @@ public:
/// ///
void setCounter(int); void setCounter(int);
/// ///
int getCounter() const { return counter; } int getCounter() const { return counter; }
/// ///
string const getBibLabel() const; string const getBibLabel() const;
/// ///

View File

@ -48,14 +48,17 @@ InsetBibtex::~InsetBibtex()
dispatch_result InsetBibtex::localDispatch(FuncRequest const & cmd) dispatch_result InsetBibtex::localDispatch(FuncRequest const & cmd)
{ {
Inset::RESULT result = UNDISPATCHED;
switch (cmd.action) { switch (cmd.action) {
case LFUN_INSET_EDIT:
InsetCommandMailer("bibtex", *this).showDialog(cmd.view());
return DISPATCHED;
case LFUN_INSET_MODIFY: { case LFUN_INSET_MODIFY: {
InsetCommandParams p; InsetCommandParams p;
InsetCommandMailer::string2params(cmd.argument, p); InsetCommandMailer::string2params(cmd.argument, p);
if (p.getCmdName().empty()) if (p.getCmdName().empty())
break; return DISPATCHED;
if (view() && p.getContents() != params().getContents()) { if (view() && p.getContents() != params().getContents()) {
view()->ChangeCitationsIfUnique(params().getContents(), view()->ChangeCitationsIfUnique(params().getContents(),
@ -64,14 +67,13 @@ dispatch_result InsetBibtex::localDispatch(FuncRequest const & cmd)
setParams(p); setParams(p);
cmd.view()->updateInset(this); cmd.view()->updateInset(this);
result = DISPATCHED; return DISPATCHED;
} }
break;
default: default:
result = InsetCommand::localDispatch(cmd); return InsetCommand::localDispatch(cmd);
} }
return result;
} }
string const InsetBibtex::getScreenLabel(Buffer const *) const string const InsetBibtex::getScreenLabel(Buffer const *) const
@ -218,19 +220,6 @@ void InsetBibtex::fillWithBibKeys
} }
void InsetBibtex::edit(BufferView * bv, int, int, mouse_button::state)
{
InsetCommandMailer mailer("bibtex", *this);
mailer.showDialog(bv);
}
void InsetBibtex::edit(BufferView * bv, bool)
{
edit(bv, 0, 0, mouse_button::none);
}
bool InsetBibtex::addDatabase(string const & db) bool InsetBibtex::addDatabase(string const & db)
{ {
string contents(getContents()); string contents(getContents());

View File

@ -39,10 +39,6 @@ public:
/// ///
Inset::Code lyxCode() const { return Inset::BIBTEX_CODE; } Inset::Code lyxCode() const { return Inset::BIBTEX_CODE; }
/// ///
void edit(BufferView *, int x, int y, mouse_button::state button);
///
void edit(BufferView * bv, bool front = true);
///
int latex(Buffer const *, std::ostream &, int latex(Buffer const *, std::ostream &,
bool fragile, bool freespace) const; bool fragile, bool freespace) const;
/// ///

View File

@ -132,7 +132,5 @@ BufferView * InsetButton::view() const
dispatch_result InsetButton::localDispatch(FuncRequest const & cmd) dispatch_result InsetButton::localDispatch(FuncRequest const & cmd)
{ {
FuncRequest cmd1(cmd); return Inset::localDispatch(cmd);
edit(cmd1.view(), cmd1.x, cmd1.y, cmd1.button());
return DISPATCHED;
} }

View File

@ -12,6 +12,7 @@
#include <config.h> #include <config.h>
#include "insetcite.h" #include "insetcite.h"
#include "funcrequest.h"
#include "buffer.h" #include "buffer.h"
#include "BufferView.h" #include "BufferView.h"
#include "LaTeXFeatures.h" #include "LaTeXFeatures.h"
@ -317,20 +318,20 @@ void InsetCitation::setLoadingBuffer(Buffer const * buffer, bool state) const
} }
void InsetCitation::edit(BufferView * bv, int, int, mouse_button::state) dispatch_result InsetCitation::localDispatch(FuncRequest const & cmd)
{ {
// A call to edit() indicates that we're no longer loading the switch (cmd.action) {
// buffer but doing some real work. case LFUN_INSET_EDIT:
setLoadingBuffer(bv->buffer(), false); // A call to edit indicates that we're no longer loading the
// buffer but doing some real work.
setLoadingBuffer(cmd.view()->buffer(), false);
InsetCommandMailer("citation", *this).showDialog(cmd.view());
break;
InsetCommandMailer mailer("citation", *this); default:
mailer.showDialog(bv); return UNDISPATCHED;
} }
return DISPATCHED;
void InsetCitation::edit(BufferView * bv, bool)
{
edit(bv, 0, 0, mouse_button::none);
} }

View File

@ -35,14 +35,12 @@ public:
/// ///
Inset::Code lyxCode() const { return Inset::CITE_CODE; } Inset::Code lyxCode() const { return Inset::CITE_CODE; }
/// ///
void edit(BufferView *, int, int, mouse_button::state);
///
void edit(BufferView * bv, bool front = true);
///
int ascii(Buffer const *, std::ostream &, int linelen) const; int ascii(Buffer const *, std::ostream &, int linelen) const;
/// ///
int latex(Buffer const *, std::ostream &, bool, bool) const; int latex(Buffer const *, std::ostream &, bool, bool) const;
/// ///
dispatch_result localDispatch(FuncRequest const & cmd);
///
void validate(LaTeXFeatures &) const; void validate(LaTeXFeatures &) const;
/** Invoked by BufferView::Pimpl::dispatch when a new citation key /** Invoked by BufferView::Pimpl::dispatch when a new citation key
is inserted. Tells us that the buffer is no longer being loaded is inserted. Tells us that the buffer is no longer being loaded

View File

@ -38,9 +38,6 @@ using std::endl;
using std::max; using std::max;
class LyXText;
InsetCollapsable::InsetCollapsable(BufferParams const & bp, bool collapsed) InsetCollapsable::InsetCollapsable(BufferParams const & bp, bool collapsed)
: UpdatableInset(), collapsed_(collapsed), inset(bp), : UpdatableInset(), collapsed_(collapsed), inset(bp),
button_length(0), button_top_y(0), button_bottom_y(0), button_length(0), button_top_y(0), button_bottom_y(0),
@ -232,65 +229,6 @@ void InsetCollapsable::draw(BufferView * bv, LyXFont const & f,
} }
void InsetCollapsable::edit(BufferView * bv, int xp, int yp,
mouse_button::state button)
{
#ifdef WITH_WARNINGS
#warning Fix this properly in BufferView_pimpl::workAreaButtonRelease
#endif
if (button == mouse_button::button3)
return;
UpdatableInset::edit(bv, xp, yp, button);
if (collapsed_) {
collapsed_ = false;
// set this only here as it should be recollapsed only if
// it was already collapsed!
first_after_edit = true;
if (!bv->lockInset(this))
return;
bv->updateInset(this);
bv->buffer()->markDirty();
inset.edit(bv);
} else {
if (!bv->lockInset(this))
return;
if (yp <= button_bottom_y) {
inset.edit(bv, xp, 0, button);
} else {
LyXFont font(LyXFont::ALL_SANE);
int yy = ascent(bv, font) + yp -
(ascent_collapsed() +
descent_collapsed() +
inset.ascent(bv, font));
inset.edit(bv, xp, yy, button);
}
}
}
void InsetCollapsable::edit(BufferView * bv, bool front)
{
UpdatableInset::edit(bv, front);
if (collapsed_) {
collapsed_ = false;
if (!bv->lockInset(this))
return;
inset.setUpdateStatus(bv, InsetText::FULL);
bv->updateInset(this);
bv->buffer()->markDirty();
inset.edit(bv, front);
first_after_edit = true;
} else {
if (!bv->lockInset(this))
return;
inset.edit(bv, front);
}
}
Inset::EDITABLE InsetCollapsable::editable() const Inset::EDITABLE InsetCollapsable::editable() const
{ {
if (collapsed_) if (collapsed_)
@ -425,7 +363,62 @@ void InsetCollapsable::update(BufferView * bv, bool reinit)
Inset::RESULT InsetCollapsable::localDispatch(FuncRequest const & cmd) Inset::RESULT InsetCollapsable::localDispatch(FuncRequest const & cmd)
{ {
BufferView * bv = cmd.view();
switch (cmd.action) { switch (cmd.action) {
case LFUN_INSET_EDIT: {
if (!cmd.argument.empty()) {
UpdatableInset::localDispatch(cmd);
if (collapsed_) {
collapsed_ = false;
if (bv->lockInset(this)) {
inset.setUpdateStatus(bv, InsetText::FULL);
bv->updateInset(this);
bv->buffer()->markDirty();
inset.localDispatch(cmd);
first_after_edit = true;
}
} else {
if (bv->lockInset(this))
inset.localDispatch(cmd);
}
return DISPATCHED;
}
#ifdef WITH_WARNINGS
#warning Fix this properly in BufferView_pimpl::workAreaButtonRelease
#endif
if (cmd.button() == mouse_button::button3)
return DISPATCHED;
UpdatableInset::localDispatch(cmd);
if (collapsed_) {
collapsed_ = false;
// set this only here as it should be recollapsed only if
// it was already collapsed!
first_after_edit = true;
if (!bv->lockInset(this))
return DISPATCHED;
bv->updateInset(this);
bv->buffer()->markDirty();
inset.localDispatch(cmd);
} else {
FuncRequest cmd1 = cmd;
if (!bv->lockInset(this))
return DISPATCHED;
if (cmd.y <= button_bottom_y) {
cmd1.y = 0;
} else {
LyXFont font(LyXFont::ALL_SANE);
cmd1.y = ascent(bv, font) + cmd.y -
(ascent_collapsed() +
descent_collapsed() +
inset.ascent(bv, font));
}
inset.localDispatch(cmd);
}
return DISPATCHED;
}
case LFUN_MOUSE_PRESS: case LFUN_MOUSE_PRESS:
lfunMousePress(cmd); lfunMousePress(cmd);
@ -442,11 +435,10 @@ Inset::RESULT InsetCollapsable::localDispatch(FuncRequest const & cmd)
default: default:
UpdatableInset::RESULT result = inset.localDispatch(cmd); UpdatableInset::RESULT result = inset.localDispatch(cmd);
if (result >= FINISHED) if (result >= FINISHED)
cmd.view()->unlockInset(this); bv->unlockInset(this);
first_after_edit = false; first_after_edit = false;
return result; return result;
} }
return UNDISPATCHED;
} }

View File

@ -14,7 +14,6 @@
#ifndef INSETCOLLAPSABLE_H #ifndef INSETCOLLAPSABLE_H
#define INSETCOLLAPSABLE_H #define INSETCOLLAPSABLE_H
#include "inset.h" #include "inset.h"
#include "insettext.h" #include "insettext.h"
#include "lyxfont.h" #include "lyxfont.h"
@ -58,10 +57,6 @@ public:
/// ///
void update(BufferView *, bool =false); void update(BufferView *, bool =false);
/// ///
void edit(BufferView *, int, int, mouse_button::state);
///
void edit(BufferView *, bool front = true);
///
EDITABLE editable() const; EDITABLE editable() const;
/// ///
bool insertInset(BufferView *, Inset * inset); bool insertInset(BufferView *, Inset * inset);

View File

@ -67,38 +67,30 @@ int InsetCommand::docbook(Buffer const *, ostream &, bool) const
dispatch_result InsetCommand::localDispatch(FuncRequest const & cmd) dispatch_result InsetCommand::localDispatch(FuncRequest const & cmd)
{ {
dispatch_result result = UNDISPATCHED; lyxerr << "insetCommand::localDispatch\n";
switch (cmd.action) { switch (cmd.action) {
case LFUN_INSET_MODIFY: { case LFUN_INSET_MODIFY: {
InsetCommandParams p; InsetCommandParams p;
InsetCommandMailer::string2params(cmd.argument, p); InsetCommandMailer::string2params(cmd.argument, p);
if (p.getCmdName().empty()) if (p.getCmdName().empty())
break; return UNDISPATCHED;
setParams(p); setParams(p);
cmd.view()->updateInset(this); cmd.view()->updateInset(this);
result = DISPATCHED; return DISPATCHED;
} }
break;
case LFUN_INSET_DIALOG_UPDATE: { case LFUN_INSET_DIALOG_UPDATE:
InsetCommandMailer mailer(cmd.argument, *this); InsetCommandMailer(cmd.argument, *this).updateDialog(cmd.view());
mailer.updateDialog(cmd.view()); return DISPATCHED;
result = DISPATCHED;
}
break;
case LFUN_MOUSE_RELEASE: case LFUN_MOUSE_RELEASE:
edit(cmd.view(), cmd.x, cmd.y, cmd.button()); return localDispatch(FuncRequest(cmd.view(), LFUN_INSET_EDIT));
result = DISPATCHED;
break;
default: default:
break; return UNDISPATCHED;
} }
return result;
} }

View File

@ -26,7 +26,6 @@
using std::ostream; using std::ostream;
/* Error, used for the LaTeX-Error Messages */
InsetError::InsetError(string const & str, bool) InsetError::InsetError(string const & str, bool)
: contents(str) : contents(str)
@ -45,14 +44,13 @@ dispatch_result InsetError::localDispatch(FuncRequest const & cmd)
switch (cmd.action) { switch (cmd.action) {
case LFUN_MOUSE_RELEASE: case LFUN_MOUSE_RELEASE:
edit(cmd.view(), cmd.x, cmd.y, cmd.button()); case LFUN_INSET_EDIT:
break; cmd.view()->owner()->getDialogs().show("error", getContents(), this);
return DISPATCHED;
default: default:
break; return Inset::localDispatch(cmd);
} }
return result;
} }
@ -111,15 +109,3 @@ string const InsetError::editMessage() const
{ {
return _("Opened error"); return _("Opened error");
} }
void InsetError::edit(BufferView * bv, int, int, mouse_button::state)
{
bv->owner()->getDialogs().show("error", getContents(), this);
}
void InsetError::edit(BufferView * bv, bool)
{
edit(bv, 0, 0, mouse_button::none);
}

View File

@ -12,7 +12,6 @@
#ifndef INSET_ERROR_H #ifndef INSET_ERROR_H
#define INSET_ERROR_H #define INSET_ERROR_H
#include "inset.h" #include "inset.h"
#include "LString.h" #include "LString.h"
@ -55,10 +54,6 @@ public:
/// what appears in the minibuffer when opening /// what appears in the minibuffer when opening
string const editMessage() const; string const editMessage() const;
/// ///
void edit(BufferView *, int, int, mouse_button::state);
///
void edit(BufferView * bv, bool front = true);
///
EDITABLE editable() const { return IS_EDITABLE; } EDITABLE editable() const { return IS_EDITABLE; }
/// ///
Inset * clone(Buffer const &, bool same_id = false) const { Inset * clone(Buffer const &, bool same_id = false) const {

View File

@ -266,22 +266,6 @@ void InsetERT::updateStatus(BufferView * bv, bool swap) const
} }
} }
void InsetERT::edit(BufferView * bv, int x, int y, mouse_button::state button)
{
if (button == mouse_button::button3)
return;
if (status_ == Inlined) {
if (!bv->lockInset(this))
return;
inset.edit(bv, x, y, button);
} else {
InsetCollapsable::edit(bv, x, y, button);
}
set_latex_font(bv);
updateStatus(bv);
}
Inset::EDITABLE InsetERT::editable() const Inset::EDITABLE InsetERT::editable() const
{ {
@ -291,14 +275,6 @@ Inset::EDITABLE InsetERT::editable() const
} }
void InsetERT::edit(BufferView * bv, bool front)
{
InsetCollapsable::edit(bv, front);
updateStatus(0);
set_latex_font(bv);
}
void InsetERT::lfunMousePress(FuncRequest const & cmd) void InsetERT::lfunMousePress(FuncRequest const & cmd)
{ {
if (status_ == Inlined) if (status_ == Inlined)
@ -449,6 +425,21 @@ Inset::RESULT InsetERT::localDispatch(FuncRequest const & cmd)
} }
switch (cmd.action) { switch (cmd.action) {
case LFUN_INSET_EDIT:
if (cmd.button() == mouse_button::button3)
break;
if (status_ == Inlined) {
if (!bv->lockInset(this))
break;
result = inset.localDispatch(cmd);
} else {
result = InsetCollapsable::localDispatch(cmd);
}
set_latex_font(bv);
updateStatus(bv);
break;
case LFUN_INSET_MODIFY: { case LFUN_INSET_MODIFY: {
InsetERT::ERTStatus status_; InsetERT::ERTStatus status_;
InsetERTMailer::string2params(cmd.argument, status_); InsetERTMailer::string2params(cmd.argument, status_);

View File

@ -62,10 +62,6 @@ public:
void setFont(BufferView *, LyXFont const &, void setFont(BufferView *, LyXFont const &,
bool toggleall = false, bool selectall = false); bool toggleall = false, bool selectall = false);
/// ///
void edit(BufferView *, int, int, mouse_button::state);
///
void edit(BufferView * bv, bool front = true);
///
EDITABLE editable() const; EDITABLE editable() const;
/// ///
int latex(Buffer const *, std::ostream &, bool fragile, int latex(Buffer const *, std::ostream &, bool fragile,

View File

@ -34,7 +34,6 @@
#include <cstdio> #include <cstdio>
#include <utility> #include <utility>
using std::ostream; using std::ostream;
using std::endl; using std::endl;
@ -64,37 +63,30 @@ InsetExternal::Params const & InsetExternal::params() const
dispatch_result InsetExternal::localDispatch(FuncRequest const & cmd) dispatch_result InsetExternal::localDispatch(FuncRequest const & cmd)
{ {
dispatch_result result = UNDISPATCHED;
switch (cmd.action) { switch (cmd.action) {
case LFUN_INSET_MODIFY: { case LFUN_INSET_MODIFY: {
InsetExternal::Params p; InsetExternal::Params p;
InsetExternalMailer::string2params(cmd.argument, p); InsetExternalMailer::string2params(cmd.argument, p);
if (p.filename.empty()) if (!p.filename.empty()) {
break; setFromParams(p);
cmd.view()->updateInset(this);
setFromParams(p); }
cmd.view()->updateInset(this); return DISPATCHED;
result = DISPATCHED;
} }
break;
case LFUN_INSET_DIALOG_UPDATE: { case LFUN_INSET_DIALOG_UPDATE:
InsetExternalMailer mailer(*this); InsetExternalMailer(*this).updateDialog(cmd.view());
mailer.updateDialog(cmd.view()); return DISPATCHED;
}
break;
case LFUN_MOUSE_RELEASE: case LFUN_MOUSE_RELEASE:
edit(cmd.view(), cmd.x, cmd.y, cmd.button()); case LFUN_INSET_EDIT:
result = DISPATCHED; InsetExternalMailer(*this).showDialog(cmd.view());
break; return DISPATCHED;
default: default:
break; return UNDISPATCHED;
} }
return result;
} }
@ -112,19 +104,6 @@ string const InsetExternal::editMessage() const
} }
void InsetExternal::edit(BufferView * bv, int, int, mouse_button::state)
{
InsetExternalMailer mailer(*this);
mailer.showDialog(bv);
}
void InsetExternal::edit(BufferView * bv, bool)
{
edit(bv, 0, 0, mouse_button::none);
}
void InsetExternal::write(Buffer const *, ostream & os) const void InsetExternal::write(Buffer const *, ostream & os) const
{ {
os << "External " << params_.templ.lyxName << ",\"" os << "External " << params_.templ.lyxName << ",\""

View File

@ -12,7 +12,6 @@
#ifndef INSET_EXTERNAL_H #ifndef INSET_EXTERNAL_H
#define INSET_EXTERNAL_H #define INSET_EXTERNAL_H
#include "insetbutton.h" #include "insetbutton.h"
#include "ExternalTemplate.h" #include "ExternalTemplate.h"
#include "LString.h" #include "LString.h"
@ -42,10 +41,6 @@ public:
/// what appears in the minibuffer when opening /// what appears in the minibuffer when opening
virtual string const editMessage() const; virtual string const editMessage() const;
/// ///
virtual void edit(BufferView *, int x, int y, mouse_button::state button);
///
virtual void edit(BufferView * bv, bool front = true);
///
virtual EDITABLE editable() const { return IS_EDITABLE; } virtual EDITABLE editable() const { return IS_EDITABLE; }
/// ///
virtual void write(Buffer const *, std::ostream &) const; virtual void write(Buffer const *, std::ostream &) const;

View File

@ -15,6 +15,7 @@
#include "LaTeXFeatures.h" #include "LaTeXFeatures.h"
#include "lyxlex.h" #include "lyxlex.h"
#include "BufferView.h" #include "BufferView.h"
#include "funcrequest.h"
#include "buffer.h" #include "buffer.h"
#include "toc.h" #include "toc.h"
#include "gettext.h" #include "gettext.h"
@ -23,9 +24,6 @@
#include "support/lstrings.h" #include "support/lstrings.h"
#include "frontends/Dialogs.h"
#include "frontends/LyXView.h"
using std::ostream; using std::ostream;
using std::endl; using std::endl;
@ -97,16 +95,15 @@ void InsetFloatList::read(Buffer const * buf, LyXLex & lex)
} }
void InsetFloatList::edit(BufferView * bv, int, int, mouse_button::state) dispatch_result InsetFloatList::localDispatch(FuncRequest const & cmd)
{ {
InsetCommandMailer mailer("toc", *this); switch (cmd.action) {
mailer.showDialog(bv); case LFUN_INSET_EDIT:
} InsetCommandMailer("toc", *this).showDialog(cmd.view());
return DISPATCHED;
default:
void InsetFloatList::edit(BufferView * bv, bool) return InsetCommand::localDispatch(cmd);
{ }
edit(bv, 0, 0, mouse_button::none);
} }

View File

@ -30,12 +30,10 @@ public:
return new InsetFloatList(getCmdName()); return new InsetFloatList(getCmdName());
} }
/// ///
dispatch_result localDispatch(FuncRequest const & cmd);
///
string const getScreenLabel(Buffer const *) const; string const getScreenLabel(Buffer const *) const;
/// ///
void edit(BufferView * bv, int, int, mouse_button::state);
///
void edit(BufferView * bv, bool front = true);
///
EDITABLE editable() const { return IS_EDITABLE; } EDITABLE editable() const { return IS_EDITABLE; }
/// ///
bool display() const { return true; } bool display() const { return true; }

View File

@ -68,6 +68,7 @@ TODO
#include "funcrequest.h" #include "funcrequest.h"
#include "gettext.h" #include "gettext.h"
#include "LaTeXFeatures.h" #include "LaTeXFeatures.h"
#include "Lsstream.h"
#include "lyxlex.h" #include "lyxlex.h"
#include "lyxrc.h" #include "lyxrc.h"
#include "Lsstream.h" #include "Lsstream.h"
@ -218,38 +219,30 @@ InsetGraphics::~InsetGraphics()
dispatch_result InsetGraphics::localDispatch(FuncRequest const & cmd) dispatch_result InsetGraphics::localDispatch(FuncRequest const & cmd)
{ {
dispatch_result result = UNDISPATCHED;
switch (cmd.action) { switch (cmd.action) {
case LFUN_INSET_MODIFY: { case LFUN_INSET_MODIFY: {
InsetGraphicsParams p; InsetGraphicsParams p;
InsetGraphicsMailer::string2params(cmd.argument, p); InsetGraphicsMailer::string2params(cmd.argument, p);
if (p.filename.empty()) if (!p.filename.empty()) {
break; string const filepath = cmd.view()->buffer()->filePath();
setParams(p, filepath);
string const filepath = cmd.view()->buffer()->filePath(); cmd.view()->updateInset(this);
setParams(p, filepath); }
cmd.view()->updateInset(this); return DISPATCHED;
result = DISPATCHED;
} }
break;
case LFUN_INSET_DIALOG_UPDATE: { case LFUN_INSET_DIALOG_UPDATE:
InsetGraphicsMailer mailer(*this); InsetGraphicsMailer(*this).updateDialog(cmd.view());
mailer.updateDialog(cmd.view()); return DISPATCHED;
}
break;
case LFUN_INSET_EDIT:
case LFUN_MOUSE_RELEASE: case LFUN_MOUSE_RELEASE:
edit(cmd.view(), cmd.x, cmd.y, cmd.button()); InsetGraphicsMailer(*this).showDialog(cmd.view());
break; return DISPATCHED;
default: default:
result = DISPATCHED; return Inset::localDispatch(cmd);
break;
} }
return result;
} }
@ -420,19 +413,6 @@ void InsetGraphics::draw(BufferView * bv, LyXFont const & font,
} }
void InsetGraphics::edit(BufferView * bv, int, int, mouse_button::state)
{
InsetGraphicsMailer mailer(*this);
mailer.showDialog(bv);
}
void InsetGraphics::edit(BufferView * bv, bool)
{
edit(bv, 0, 0, mouse_button::none);
}
Inset::EDITABLE InsetGraphics::editable() const Inset::EDITABLE InsetGraphics::editable() const
{ {
return IS_EDITABLE; return IS_EDITABLE;

View File

@ -13,8 +13,6 @@
#ifndef INSET_GRAPHICS_H #ifndef INSET_GRAPHICS_H
#define INSET_GRAPHICS_H #define INSET_GRAPHICS_H
#include "insets/inset.h" #include "insets/inset.h"
#include "insets/insetgraphicsParams.h" #include "insets/insetgraphicsParams.h"
@ -45,10 +43,6 @@ public:
/// ///
void draw(BufferView *, LyXFont const &, int, float &) const; void draw(BufferView *, LyXFont const &, int, float &) const;
/// ///
void edit(BufferView *, int, int, mouse_button::state);
///
void edit(BufferView * bv, bool front = true);
///
EDITABLE editable() const; EDITABLE editable() const;
/// ///
void write(Buffer const *, std::ostream &) const; void write(Buffer const *, std::ostream &) const;

View File

@ -112,38 +112,31 @@ InsetInclude::~InsetInclude()
dispatch_result InsetInclude::localDispatch(FuncRequest const & cmd) dispatch_result InsetInclude::localDispatch(FuncRequest const & cmd)
{ {
dispatch_result result = UNDISPATCHED;
switch (cmd.action) { switch (cmd.action) {
case LFUN_INSET_MODIFY: { case LFUN_INSET_MODIFY: {
InsetInclude::Params p; InsetInclude::Params p;
InsetIncludeMailer::string2params(cmd.argument, p); InsetIncludeMailer::string2params(cmd.argument, p);
if (p.cparams.getCmdName().empty()) if (!p.cparams.getCmdName().empty()) {
break; set(p);
params_.masterFilename_ = cmd.view()->buffer()->fileName();
set(p); cmd.view()->updateInset(this);
params_.masterFilename_ = cmd.view()->buffer()->fileName(); }
return DISPATCHED;
cmd.view()->updateInset(this);
result = DISPATCHED;
} }
break;
case LFUN_INSET_DIALOG_UPDATE: { case LFUN_INSET_DIALOG_UPDATE:
InsetIncludeMailer mailer(*this); InsetIncludeMailer(*this).updateDialog(cmd.view());
mailer.updateDialog(cmd.view()); return DISPATCHED;
}
break;
case LFUN_MOUSE_RELEASE: case LFUN_MOUSE_RELEASE:
edit(cmd.view(), cmd.x, cmd.y, cmd.button()); case LFUN_INSET_EDIT:
break; InsetIncludeMailer(*this).showDialog(cmd.view());
return DISPATCHED;
default: default:
break; return UNDISPATCHED;
} }
return result;
} }
@ -155,11 +148,8 @@ InsetInclude::Params const & InsetInclude::params() const
bool InsetInclude::Params::operator==(Params const & o) const bool InsetInclude::Params::operator==(Params const & o) const
{ {
if (cparams == o.cparams && flag == o.flag && return cparams == o.cparams && flag == o.flag &&
masterFilename_ == o.masterFilename_) masterFilename_ == o.masterFilename_;
return true;
return false;
} }
@ -209,19 +199,6 @@ Inset * InsetInclude::clone(Buffer const & buffer, bool) const
} }
void InsetInclude::edit(BufferView * bv, int, int, mouse_button::state)
{
InsetIncludeMailer mailer(*this);
mailer.showDialog(bv);
}
void InsetInclude::edit(BufferView * bv, bool)
{
edit(bv, 0, 0, mouse_button::none);
}
void InsetInclude::write(Buffer const *, ostream & os) const void InsetInclude::write(Buffer const *, ostream & os) const
{ {
os << "Include " << params_.cparams.getCommand() << '\n' os << "Include " << params_.cparams.getCommand() << '\n'

View File

@ -12,7 +12,6 @@
#ifndef INSET_INCLUDE_H #ifndef INSET_INCLUDE_H
#define INSET_INCLUDE_H #define INSET_INCLUDE_H
#include "insetcommand.h" #include "insetcommand.h"
#include <boost/scoped_ptr.hpp> #include <boost/scoped_ptr.hpp>
@ -83,10 +82,6 @@ public:
/// This returns the list of bibkeys on the child buffer /// This returns the list of bibkeys on the child buffer
void fillWithBibKeys(std::vector<std::pair<string,string> > & keys) const; void fillWithBibKeys(std::vector<std::pair<string,string> > & keys) const;
/// ///
void edit(BufferView *, int x, int y, mouse_button::state button);
///
void edit(BufferView * bv, bool front = true);
///
EDITABLE editable() const EDITABLE editable() const
{ {
return IS_EDITABLE; return IS_EDITABLE;

View File

@ -12,6 +12,7 @@
#include "insetindex.h" #include "insetindex.h"
#include "BufferView.h" #include "BufferView.h"
#include "funcrequest.h"
#include "frontends/LyXView.h" #include "frontends/LyXView.h"
#include "frontends/Dialogs.h" #include "frontends/Dialogs.h"
#include "LaTeXFeatures.h" #include "LaTeXFeatures.h"
@ -38,16 +39,16 @@ string const InsetIndex::getScreenLabel(Buffer const *) const
} }
void InsetIndex::edit(BufferView * bv, int, int, mouse_button::state) dispatch_result InsetIndex::localDispatch(FuncRequest const & cmd)
{ {
InsetCommandMailer mailer("index", *this); switch (cmd.action) {
mailer.showDialog(bv); case LFUN_INSET_EDIT:
} InsetCommandMailer("index", *this).showDialog(cmd.view());
return DISPATCHED;
default:
void InsetIndex::edit(BufferView * bv, bool) return UNDISPATCHED;
{ }
edit(bv, 0, 0, mouse_button::none);
} }
@ -65,11 +66,16 @@ Inset::Code InsetIndex::lyxCode() const
} }
InsetPrintIndex::InsetPrintIndex(InsetCommandParams const & p, bool) InsetPrintIndex::InsetPrintIndex(InsetCommandParams const & p, bool)
: InsetCommand(p) : InsetCommand(p)
{} {}
InsetPrintIndex::~InsetPrintIndex()
{}
string const InsetPrintIndex::getScreenLabel(Buffer const *) const string const InsetPrintIndex::getScreenLabel(Buffer const *) const
{ {
return _("Index"); return _("Index");

View File

@ -30,14 +30,12 @@ public:
return new InsetIndex(params(), same_id); return new InsetIndex(params(), same_id);
} }
/// ///
dispatch_result localDispatch(FuncRequest const & cmd);
///
string const getScreenLabel(Buffer const *) const; string const getScreenLabel(Buffer const *) const;
/// ///
EDITABLE editable() const { return IS_EDITABLE; } EDITABLE editable() const { return IS_EDITABLE; }
/// ///
void edit(BufferView *, int, int, mouse_button::state);
///
void edit(BufferView * bv, bool front = true);
///
Inset::Code lyxCode() const; Inset::Code lyxCode() const;
/// ///
int docbook(Buffer const *, std::ostream &, bool mixcont) const; int docbook(Buffer const *, std::ostream &, bool mixcont) const;
@ -49,16 +47,16 @@ public:
/// ///
InsetPrintIndex(InsetCommandParams const &, bool same_id = false); InsetPrintIndex(InsetCommandParams const &, bool same_id = false);
/// ///
virtual Inset * clone(Buffer const &, bool same_id = false) const { ~InsetPrintIndex();
///
Inset * clone(Buffer const &, bool same_id = false) const {
return new InsetPrintIndex(params(), same_id); return new InsetPrintIndex(params(), same_id);
} }
///
//dispatch_result localDispatch(FuncRequest const & cmd);
/// Updates needed features for this inset. /// Updates needed features for this inset.
void validate(LaTeXFeatures & features) const; void validate(LaTeXFeatures & features) const;
/// ///
void edit(BufferView *, int, int, mouse_button::state) {}
///
void edit(BufferView *, bool = true) {}
///
EDITABLE editable() const { return NOT_EDITABLE; } EDITABLE editable() const { return NOT_EDITABLE; }
/// ///
bool display() const { return true; } bool display() const { return true; }

View File

@ -45,18 +45,17 @@ vector<string> const InsetLabel::getLabelList() const
} }
void InsetLabel::edit(BufferView * bv, int, int, mouse_button::state)
{
InsetCommandMailer mailer("label", *this);
mailer.showDialog(bv);
}
dispatch_result InsetLabel::localDispatch(FuncRequest const & cmd) dispatch_result InsetLabel::localDispatch(FuncRequest const & cmd)
{ {
Inset::RESULT result = UNDISPATCHED; Inset::RESULT result = UNDISPATCHED;
switch (cmd.action) { switch (cmd.action) {
case LFUN_INSET_EDIT:
InsetCommandMailer("label", *this).showDialog(cmd.view());
result = DISPATCHED;
break;
case LFUN_INSET_MODIFY: { case LFUN_INSET_MODIFY: {
InsetCommandParams p; InsetCommandParams p;
InsetCommandMailer::string2params(cmd.argument, p); InsetCommandMailer::string2params(cmd.argument, p);
@ -83,12 +82,6 @@ dispatch_result InsetLabel::localDispatch(FuncRequest const & cmd)
} }
void InsetLabel::edit(BufferView * bv, bool)
{
edit(bv, 0, 0, mouse_button::none);
}
int InsetLabel::latex(Buffer const *, ostream & os, int InsetLabel::latex(Buffer const *, ostream & os,
bool /*fragile*/, bool /*fs*/) const bool /*fragile*/, bool /*fs*/) const
{ {

View File

@ -34,10 +34,6 @@ public:
/// ///
Inset::Code lyxCode() const { return Inset::LABEL_CODE; } Inset::Code lyxCode() const { return Inset::LABEL_CODE; }
/// ///
void edit(BufferView *, int, int, mouse_button::state);
///
void edit(BufferView * bv, bool front = true);
///
std::vector<string> const getLabelList() const; std::vector<string> const getLabelList() const;
/// ///
int latex(Buffer const *, std::ostream &, int latex(Buffer const *, std::ostream &,

View File

@ -10,8 +10,8 @@
#include <config.h> #include <config.h>
#include "insetlatexaccent.h" #include "insetlatexaccent.h"
#include "debug.h" #include "debug.h"
#include "lyxrc.h" #include "lyxrc.h"
#include "support/lstrings.h" #include "support/lstrings.h"
@ -24,6 +24,7 @@
using std::ostream; using std::ostream;
using std::endl; using std::endl;
/* LatexAccent. Proper handling of accented characters */ /* LatexAccent. Proper handling of accented characters */
/* This part is done by Ivan Schreter, schreter@ccsun.tuke.sk */ /* This part is done by Ivan Schreter, schreter@ccsun.tuke.sk */
/* Later modified by Lars G. Bjønnes, larsbj@lyx.org */ /* Later modified by Lars G. Bjønnes, larsbj@lyx.org */
@ -95,7 +96,9 @@ void InsetLatexAccent::checkContents()
lyxerr[Debug::KEY] << "Decode: " << contents << endl; lyxerr[Debug::KEY] << "Decode: " << contents << endl;
remdot = false; plusasc = false; plusdesc = false; remdot = false;
plusasc = false;
plusdesc = false;
switch (contents[1]) { // second char should be one of these switch (contents[1]) { // second char should be one of these
case '\'': // acute case '\'': // acute

View File

@ -13,10 +13,7 @@
#include <config.h> #include <config.h>
#include "insetparent.h" #include "insetparent.h"
#include "support/filetools.h"
#include "BufferView.h" #include "BufferView.h"
#include "frontends/LyXView.h" #include "frontends/LyXView.h"
#include "support/LOstream.h" #include "support/LOstream.h"
@ -24,7 +21,8 @@
#include "buffer.h" #include "buffer.h"
#include "gettext.h" #include "gettext.h"
#include "support/BoostFormat.h" #include "support/filetools.h"
#include "support/lstrings.h"
using std::ostream; using std::ostream;
@ -39,24 +37,19 @@ InsetParent::InsetParent(InsetCommandParams const & p, Buffer const & bf, bool)
string const InsetParent::getScreenLabel(Buffer const *) const string const InsetParent::getScreenLabel(Buffer const *) const
{ {
#if USE_BOOST_FORMAT return bformat(_("Parent: %1$s"), getContents());
return STRCONV(boost::io::str(boost::format(_("Parent: %s"))
% STRCONV(getContents())));
#else
return _("Parent: ") + getContents();
#endif
} }
void InsetParent::edit(BufferView * bv, int, int, mouse_button::state) dispatch_result InsetParent::localDispatch(FuncRequest const & cmd)
{ {
bv->owner()->dispatch(FuncRequest(LFUN_CHILDOPEN, getContents())); switch (cmd.action) {
} case LFUN_INSET_EDIT:
cmd.view()->owner()->dispatch(FuncRequest(LFUN_CHILDOPEN, getContents()));
return DISPATCHED;
void InsetParent::edit(BufferView * bv, bool) default:
{ return UNDISPATCHED;
edit(bv, 0, 0, mouse_button::none); }
} }

View File

@ -31,19 +31,17 @@ public:
return new InsetParent(params(), buffer, same_id); return new InsetParent(params(), buffer, same_id);
} }
/// ///
dispatch_result localDispatch(FuncRequest const & cmd);
///
string const getScreenLabel(Buffer const *) const; string const getScreenLabel(Buffer const *) const;
/// ///
EDITABLE editable() const { return IS_EDITABLE; } EDITABLE editable() const { return IS_EDITABLE; }
/// ///
Inset::Code lyxCode() const { return Inset::PARENT_CODE; } Inset::Code lyxCode() const { return Inset::PARENT_CODE; }
/// ///
void edit(BufferView *, int, int, mouse_button::state);
///
void edit(BufferView * bv, bool front = true);
///
int latex(Buffer const *, std::ostream &, int latex(Buffer const *, std::ostream &,
bool fragile, bool free_spc) const; bool fragile, bool free_spc) const;
/// ///
void setParent(string fn) { setContents(fn); } void setParent(string const & fn) { setContents(fn); }
}; };
#endif #endif

View File

@ -30,27 +30,28 @@ InsetRef::InsetRef(InsetCommandParams const & p, Buffer const & buf, bool)
InsetRef::~InsetRef() InsetRef::~InsetRef()
{ {
InsetCommandMailer mailer("ref", *this); InsetCommandMailer("ref", *this).hideDialog();
mailer.hideDialog();
} }
void InsetRef::edit(BufferView * bv, int, int, mouse_button::state button) dispatch_result InsetRef::localDispatch(FuncRequest const & cmd)
{ {
// FuncRequestually trigger dialog with button 3 not 1 switch (cmd.action) {
if (button == mouse_button::button3) case LFUN_INSET_EDIT:
bv->owner()->dispatch(FuncRequest(LFUN_REF_GOTO, getContents())); // Eventually trigger dialog with button 3 not 1
else if (button == mouse_button::button1) { if (cmd.button() == mouse_button::button3)
InsetCommandMailer mailer("ref", *this); cmd.view()->owner()->
mailer.showDialog(bv); dispatch(FuncRequest(LFUN_REF_GOTO, getContents()));
if (cmd.button() == mouse_button::button1)
InsetCommandMailer("ref", *this).showDialog(cmd.view());
return DISPATCHED;
default:
return UNDISPATCHED;
} }
} }
void InsetRef::edit(BufferView *, bool)
{}
string const InsetRef::getScreenLabel(Buffer const *) const string const InsetRef::getScreenLabel(Buffer const *) const
{ {
string temp; string temp;

View File

@ -44,16 +44,14 @@ public:
return new InsetRef(params(), buffer, same_id); return new InsetRef(params(), buffer, same_id);
} }
/// ///
dispatch_result localDispatch(FuncRequest const & cmd);
///
string const getScreenLabel(Buffer const *) const; string const getScreenLabel(Buffer const *) const;
/// ///
EDITABLE editable() const { return IS_EDITABLE; } EDITABLE editable() const { return IS_EDITABLE; }
/// ///
Inset::Code lyxCode() const { return Inset::REF_CODE; } Inset::Code lyxCode() const { return Inset::REF_CODE; }
/// ///
void edit(BufferView *, int, int, mouse_button::state);
///
void edit(BufferView * bv, bool front = true);
///
bool display() const { return false; } bool display() const { return false; }
/// ///
int latex(Buffer const *, std::ostream &, int latex(Buffer const *, std::ostream &,

View File

@ -441,57 +441,6 @@ string const InsetTabular::editMessage() const
} }
void InsetTabular::edit(BufferView * bv, int x, int y, mouse_button::state button)
{
UpdatableInset::edit(bv, x, y, button);
if (!bv->lockInset(this)) {
lyxerr[Debug::INSETTEXT] << "InsetTabular::Cannot lock inset" << endl;
return;
}
locked = true;
the_locking_inset = 0;
inset_x = 0;
inset_y = 0;
setPos(bv, x, y);
clearSelection();
finishUndo();
if (insetHit(bv, x, y) && (button != mouse_button::button3)) {
activateCellInsetAbs(bv, x, y, button);
}
}
void InsetTabular::edit(BufferView * bv, bool front)
{
UpdatableInset::edit(bv, front);
if (!bv->lockInset(this)) {
lyxerr[Debug::INSETTEXT] << "InsetTabular::Cannot lock inset" << endl;
return;
}
finishUndo();
locked = true;
the_locking_inset = 0;
inset_x = 0;
inset_y = 0;
if (front) {
if (isRightToLeft(bv))
actcell = tabular->GetLastCellInRow(0);
else
actcell = 0;
} else {
if (isRightToLeft(bv))
actcell = tabular->GetFirstCellInRow(tabular->rows()-1);
else
actcell = tabular->GetNumberOfCells() - 1;
}
clearSelection();
resetPos(bv);
bv->fitCursor();
}
void InsetTabular::insetUnlock(BufferView * bv) void InsetTabular::insetUnlock(BufferView * bv)
{ {
if (the_locking_inset) { if (the_locking_inset) {
@ -556,7 +505,7 @@ bool InsetTabular::lockInsetInInset(BufferView * bv, UpdatableInset * inset)
} }
if (in->getInsetFromID(id)) { if (in->getInsetFromID(id)) {
actcell = i; actcell = i;
in->edit(bv); in->localDispatch(FuncRequest(bv, LFUN_INSET_EDIT));
return the_locking_inset->lockInsetInInset(bv, inset); return the_locking_inset->lockInsetInInset(bv, inset);
} }
} }
@ -777,8 +726,49 @@ Inset::RESULT InsetTabular::localDispatch(FuncRequest const & cmd)
// the_locking_inset->localDispatch might unlock it. // the_locking_inset->localDispatch might unlock it.
old_locking_inset = the_locking_inset; old_locking_inset = the_locking_inset;
RESULT result = UpdatableInset::localDispatch(cmd); RESULT result = UpdatableInset::localDispatch(cmd);
BufferView * bv = cmd.view(); BufferView * bv = cmd.view();
if (cmd.action == LFUN_INSET_EDIT) {
if (!bv->lockInset(this)) {
lyxerr[Debug::INSETTEXT] << "InsetTabular::Cannot lock inset" << endl;
return DISPATCHED;
}
finishUndo();
locked = true;
the_locking_inset = 0;
inset_x = 0;
inset_y = 0;
if (cmd.argument.size()) {
if (cmd.argument == "left") {
if (isRightToLeft(bv))
actcell = tabular->GetLastCellInRow(0);
else
actcell = 0;
} else {
if (isRightToLeft(bv))
actcell = tabular->GetFirstCellInRow(tabular->rows()-1);
else
actcell = tabular->GetNumberOfCells() - 1;
}
clearSelection();
resetPos(bv);
bv->fitCursor();
}
else {
setPos(bv, cmd.x, cmd.y);
clearSelection();
finishUndo();
if (insetHit(bv, cmd.x, cmd.y) && cmd.button() != mouse_button::button3) {
activateCellInsetAbs(bv, cmd.x, cmd.y, cmd.button());
}
}
return DISPATCHED;
}
if (result == DISPATCHED || result == DISPATCHED_NOUPDATE) { if (result == DISPATCHED || result == DISPATCHED_NOUPDATE) {
resetPos(bv); resetPos(bv);
return result; return result;
@ -2082,7 +2072,7 @@ bool InsetTabular::activateCellInset(BufferView * bv, int x, int y, mouse_button
} }
//inset_x = cursor.x() - top_x + tabular->GetBeginningOfTextInCell(actcell); //inset_x = cursor.x() - top_x + tabular->GetBeginningOfTextInCell(actcell);
//inset_y = cursor.y(); //inset_y = cursor.y();
inset->edit(bv, x, y, button); inset->localDispatch(FuncRequest(bv, LFUN_INSET_EDIT, x, y, button));
if (!the_locking_inset) if (!the_locking_inset)
return false; return false;
updateLocal(bv, CELL); updateLocal(bv, CELL);
@ -2574,7 +2564,7 @@ InsetTabular::selectNextWordToSpellcheck(BufferView * bv, float & value) const
// otherwise we have to lock the next inset and ask for it's selecttion // otherwise we have to lock the next inset and ask for it's selecttion
UpdatableInset * inset = UpdatableInset * inset =
static_cast<UpdatableInset*>(tabular->GetCellInset(actcell)); static_cast<UpdatableInset*>(tabular->GetCellInset(actcell));
inset->edit(bv, 0, 0, mouse_button::none); inset->localDispatch(FuncRequest(bv, LFUN_INSET_EDIT));
WordLangTuple word(selectNextWordInt(bv, value)); WordLangTuple word(selectNextWordInt(bv, value));
nodraw(false); nodraw(false);
if (!word.word().empty()) if (!word.word().empty())
@ -2600,7 +2590,7 @@ WordLangTuple InsetTabular::selectNextWordInt(BufferView * bv, float & value) co
// otherwise we have to lock the next inset and ask for it's selecttion // otherwise we have to lock the next inset and ask for it's selecttion
UpdatableInset * inset = UpdatableInset * inset =
static_cast<UpdatableInset*>(tabular->GetCellInset(++actcell)); static_cast<UpdatableInset*>(tabular->GetCellInset(++actcell));
inset->edit(bv); inset->localDispatch(FuncRequest(bv, LFUN_INSET_EDIT));
return selectNextWordInt(bv, value); return selectNextWordInt(bv, value);
} }

View File

@ -45,7 +45,6 @@
#ifndef INSETTABULAR_H #ifndef INSETTABULAR_H
#define INSETTABULAR_H #define INSETTABULAR_H
#include "inset.h" #include "inset.h"
#include "tabular.h" #include "tabular.h"
#include "LString.h" #include "LString.h"
@ -97,10 +96,6 @@ public:
void update(BufferView *, bool = false); void update(BufferView *, bool = false);
/// ///
string const editMessage() const; string const editMessage() const;
///
void edit(BufferView *, int x, int y, mouse_button::state);
///
void edit(BufferView * bv, bool front = true);
// //
void insetUnlock(BufferView *); void insetUnlock(BufferView *);
/// ///

View File

@ -71,6 +71,7 @@ using std::for_each;
using lyx::pos_type; using lyx::pos_type;
using lyx::textclass_type; using lyx::textclass_type;
// These functions should probably go into bufferview_funcs somehow (Jug) // These functions should probably go into bufferview_funcs somehow (Jug)
void InsetText::saveLyXTextState(LyXText * t) const void InsetText::saveLyXTextState(LyXText * t) const
@ -598,109 +599,6 @@ string const InsetText::editMessage() const
} }
void InsetText::edit(BufferView * bv, int x, int y, mouse_button::state button)
{
UpdatableInset::edit(bv, x, y, button);
if (!bv->lockInset(this)) {
lyxerr[Debug::INSETS] << "Cannot lock inset" << endl;
return;
}
locked = true;
the_locking_inset = 0;
inset_pos = inset_x = inset_y = 0;
inset_boundary = false;
inset_par = 0;
old_par = 0;
int tmp_y = (y < 0) ? 0 : y;
bool clear = false;
if (!lt) {
lt = getLyXText(bv);
clear = true;
}
// we put here -1 and not button as now the button in the
// edit call should not be needed we will fix this in 1.3.x
// cycle hopefully (Jug 20020509)
// FIXME: GUII I've changed this to none: probably WRONG
if (!checkAndActivateInset(bv, x, tmp_y, mouse_button::none)) {
lt->setCursorFromCoordinates(x - drawTextXOffset,
y + insetAscent);
lt->cursor.x_fix(lt->cursor.x());
}
lt->clearSelection();
finishUndo();
// If the inset is empty set the language of the current font to the
// language to the surronding text (if different).
if (paragraphs.begin()->empty() &&
boost::next(paragraphs.begin()) == paragraphs.end()&&
bv->getParentLanguage(this) != lt->current_font.language())
{
LyXFont font(LyXFont::ALL_IGNORE);
font.setLanguage(bv->getParentLanguage(this));
setFont(bv, font, false);
}
if (clear)
lt = 0;
int code = CURSOR;
if (drawFrame_ == LOCKED)
code = CURSOR|DRAW_FRAME;
updateLocal(bv, code, false);
// Tell the paragraph dialog that we've entered an insettext.
bv->dispatch(FuncRequest(LFUN_PARAGRAPH_UPDATE));
}
void InsetText::edit(BufferView * bv, bool front)
{
UpdatableInset::edit(bv, front);
if (!bv->lockInset(this)) {
lyxerr[Debug::INSETS] << "Cannot lock inset" << endl;
return;
}
locked = true;
the_locking_inset = 0;
inset_pos = inset_x = inset_y = 0;
inset_boundary = false;
inset_par = 0;
old_par = 0;
bool clear = false;
if (!lt) {
lt = getLyXText(bv);
clear = true;
}
if (front)
lt->setCursor(paragraphs.begin(), 0);
else {
ParagraphList::iterator it = paragraphs.begin();
ParagraphList::iterator end = paragraphs.end();
while (boost::next(it) != end)
++it;
// int const pos = (p->size() ? p->size()-1 : p->size());
lt->setCursor(it, it->size());
}
lt->clearSelection();
finishUndo();
// If the inset is empty set the language of the current font to the
// language to the surronding text (if different).
if (paragraphs.begin()->empty() &&
boost::next(paragraphs.begin()) == paragraphs.end() &&
bv->getParentLanguage(this) != lt->current_font.language()) {
LyXFont font(LyXFont::ALL_IGNORE);
font.setLanguage(bv->getParentLanguage(this));
setFont(bv, font, false);
}
if (clear)
lt = 0;
int code = CURSOR;
if (drawFrame_ == LOCKED)
code = CURSOR|DRAW_FRAME;
updateLocal(bv, code, false);
}
void InsetText::insetUnlock(BufferView * bv) void InsetText::insetUnlock(BufferView * bv)
{ {
if (the_locking_inset) { if (the_locking_inset) {
@ -812,7 +710,7 @@ bool InsetText::lockInsetInInset(BufferView * bv, UpdatableInset * inset)
} }
if (it.getInset()->getInsetFromID(id)) { if (it.getInset()->getInsetFromID(id)) {
getLyXText(bv)->setCursorIntern(pit, it.getPos()); getLyXText(bv)->setCursorIntern(pit, it.getPos());
it.getInset()->edit(bv); it.getInset()->localDispatch(FuncRequest(bv, LFUN_INSET_EDIT));
return the_locking_inset->lockInsetInInset(bv, inset); return the_locking_inset->lockInsetInInset(bv, inset);
} }
} }
@ -1090,18 +988,91 @@ void InsetText::lfunMouseMotion(FuncRequest const & cmd)
} }
Inset::RESULT InsetText::localDispatch(FuncRequest const & ev) Inset::RESULT InsetText::localDispatch(FuncRequest const & cmd)
{ {
BufferView * bv = ev.view(); BufferView * bv = cmd.view();
switch (ev.action) {
if (cmd.action == LFUN_INSET_EDIT) {
UpdatableInset::localDispatch(cmd);
if (!bv->lockInset(this)) {
lyxerr[Debug::INSETS] << "Cannot lock inset" << endl;
return DISPATCHED;
}
locked = true;
the_locking_inset = 0;
inset_pos = inset_x = inset_y = 0;
inset_boundary = false;
inset_par = 0;
old_par = 0;
bool clear = false;
if (!lt) {
lt = getLyXText(bv);
clear = true;
}
if (cmd.argument.size()) {
if (cmd.argument == "left")
lt->setCursor(paragraphs.begin(), 0);
else {
ParagraphList::iterator it = paragraphs.begin();
ParagraphList::iterator end = paragraphs.end();
while (boost::next(it) != end)
++it;
// int const pos = (p->size() ? p->size()-1 : p->size());
lt->setCursor(it, it->size());
}
} else {
int tmp_y = (cmd.y < 0) ? 0 : cmd.y;
// we put here -1 and not button as now the button in the
// edit call should not be needed we will fix this in 1.3.x
// cycle hopefully (Jug 20020509)
// FIXME: GUII I've changed this to none: probably WRONG
if (!checkAndActivateInset(bv, cmd.x, tmp_y, mouse_button::none)) {
lt->setCursorFromCoordinates(cmd.x - drawTextXOffset,
cmd.y + insetAscent);
lt->cursor.x_fix(lt->cursor.x());
}
}
lt->clearSelection();
finishUndo();
// If the inset is empty set the language of the current font to the
// language to the surronding text (if different).
if (paragraphs.begin()->empty() &&
boost::next(paragraphs.begin()) == paragraphs.end()&&
bv->getParentLanguage(this) != lt->current_font.language())
{
LyXFont font(LyXFont::ALL_IGNORE);
font.setLanguage(bv->getParentLanguage(this));
setFont(bv, font, false);
}
if (clear)
lt = 0;
int code = CURSOR;
if (drawFrame_ == LOCKED)
code = CURSOR | DRAW_FRAME;
updateLocal(bv, code, false);
// Tell the paragraph dialog that we've entered an insettext.
bv->dispatch(FuncRequest(LFUN_PARAGRAPH_UPDATE));
return DISPATCHED;
}
switch (cmd.action) {
case LFUN_MOUSE_PRESS: case LFUN_MOUSE_PRESS:
lfunMousePress(ev); lfunMousePress(cmd);
return DISPATCHED; return DISPATCHED;
case LFUN_MOUSE_MOTION: case LFUN_MOUSE_MOTION:
lfunMouseMotion(ev); lfunMouseMotion(cmd);
return DISPATCHED; return DISPATCHED;
case LFUN_MOUSE_RELEASE: case LFUN_MOUSE_RELEASE:
return lfunMouseRelease(ev) ? DISPATCHED : UNDISPATCHED; return lfunMouseRelease(cmd) ? DISPATCHED : UNDISPATCHED;
default: default:
break; break;
} }
@ -1109,16 +1080,16 @@ Inset::RESULT InsetText::localDispatch(FuncRequest const & ev)
bool was_empty = (paragraphs.begin()->empty() && bool was_empty = (paragraphs.begin()->empty() &&
boost::next(paragraphs.begin()) == paragraphs.end()); boost::next(paragraphs.begin()) == paragraphs.end());
no_selection = false; no_selection = false;
RESULT result = UpdatableInset::localDispatch(ev); RESULT result = UpdatableInset::localDispatch(cmd);
if (result != UNDISPATCHED) if (result != UNDISPATCHED)
return DISPATCHED; return DISPATCHED;
result = DISPATCHED; result = DISPATCHED;
if (ev.action < 0 && ev.argument.empty()) if (cmd.action < 0 && cmd.argument.empty())
return FINISHED; return FINISHED;
if (the_locking_inset) { if (the_locking_inset) {
result = the_locking_inset->localDispatch(ev); result = the_locking_inset->localDispatch(cmd);
if (result == DISPATCHED_NOUPDATE) if (result == DISPATCHED_NOUPDATE)
return result; return result;
else if (result == DISPATCHED) { else if (result == DISPATCHED) {
@ -1167,7 +1138,7 @@ Inset::RESULT InsetText::localDispatch(FuncRequest const & ev)
if (lt->selection.set()) if (lt->selection.set())
cursor_update = SELECTION; cursor_update = SELECTION;
switch (ev.action) { switch (cmd.action) {
// Normal chars // Normal chars
case LFUN_SELFINSERT: case LFUN_SELFINSERT:
@ -1175,7 +1146,7 @@ Inset::RESULT InsetText::localDispatch(FuncRequest const & ev)
// setErrorMessage(N_("Document is read only")); // setErrorMessage(N_("Document is read only"));
break; break;
} }
if (!ev.argument.empty()) { if (!cmd.argument.empty()) {
/* Automatically delete the currently selected /* Automatically delete the currently selected
* text and replace it with what is being * text and replace it with what is being
* typed in now. Depends on lyxrc settings * typed in now. Depends on lyxrc settings
@ -1193,9 +1164,9 @@ Inset::RESULT InsetText::localDispatch(FuncRequest const & ev)
} }
} }
lt->clearSelection(); lt->clearSelection();
for (string::size_type i = 0; i < ev.argument.length(); ++i) { for (string::size_type i = 0; i < cmd.argument.length(); ++i) {
bv->owner()->getIntl().getTransManager(). bv->owner()->getIntl().getTransManager().
TranslateAndInsert(ev.argument[i], lt); TranslateAndInsert(cmd.argument[i], lt);
} }
} }
lt->selection.cursor = lt->cursor; lt->selection.cursor = lt->cursor;
@ -1289,7 +1260,7 @@ Inset::RESULT InsetText::localDispatch(FuncRequest const & ev)
if (clip.empty()) if (clip.empty())
break; break;
if (ev.argument == "paragraph") { if (cmd.argument == "paragraph") {
lt->insertStringAsParagraphs(clip); lt->insertStringAsParagraphs(clip);
} else { } else {
lt->insertStringAsLines(clip); lt->insertStringAsLines(clip);
@ -1362,7 +1333,7 @@ Inset::RESULT InsetText::localDispatch(FuncRequest const & ev)
// and current buffer's textclass (number). */ // and current buffer's textclass (number). */
LyXTextClass const & tclass = LyXTextClass const & tclass =
bv->buffer()->params.getLyXTextClass(); bv->buffer()->params.getLyXTextClass();
string layout = ev.argument; string layout = cmd.argument;
bool hasLayout = tclass.hasLayout(layout); bool hasLayout = tclass.hasLayout(layout);
// If the entry is obsolete, use the new one instead. // If the entry is obsolete, use the new one instead.
@ -1375,7 +1346,7 @@ Inset::RESULT InsetText::localDispatch(FuncRequest const & ev)
// see if we found the layout number: // see if we found the layout number:
if (!hasLayout) { if (!hasLayout) {
FuncRequest lf(LFUN_MESSAGE, N_("Layout ") + ev.argument + N_(" not known")); FuncRequest lf(LFUN_MESSAGE, N_("Layout ") + cmd.argument + N_(" not known"));
bv->owner()->dispatch(lf); bv->owner()->dispatch(lf);
break; break;
} }
@ -1405,7 +1376,7 @@ Inset::RESULT InsetText::localDispatch(FuncRequest const & ev)
cur_value = pit->params().spacing().getValue(); cur_value = pit->params().spacing().getValue();
} }
istringstream istr(STRCONV(ev.argument)); istringstream istr(STRCONV(cmd.argument));
string tmp; string tmp;
istr >> tmp; istr >> tmp;
Spacing::Space new_spacing = cur_spacing; Spacing::Space new_spacing = cur_spacing;
@ -1430,7 +1401,7 @@ Inset::RESULT InsetText::localDispatch(FuncRequest const & ev)
new_spacing = Spacing::Default; new_spacing = Spacing::Default;
} else { } else {
lyxerr << _("Unknown spacing argument: ") lyxerr << _("Unknown spacing argument: ")
<< ev.argument << endl; << cmd.argument << endl;
} }
if (cur_spacing != new_spacing || cur_value != new_value) { if (cur_spacing != new_spacing || cur_value != new_value) {
pit->params().spacing(Spacing(new_spacing, new_value)); pit->params().spacing(Spacing(new_spacing, new_value));
@ -1452,7 +1423,7 @@ Inset::RESULT InsetText::localDispatch(FuncRequest const & ev)
case LFUN_ENDBUF: case LFUN_ENDBUF:
case LFUN_BEGINNINGBUF: case LFUN_BEGINNINGBUF:
updwhat = cursor_update; updwhat = cursor_update;
if (!bv->dispatch(ev)) if (!bv->dispatch(cmd))
result = UNDISPATCHED; result = UNDISPATCHED;
break; break;
@ -1469,7 +1440,7 @@ Inset::RESULT InsetText::localDispatch(FuncRequest const & ev)
// fallthrough // fallthrough
default: default:
if (!bv->dispatch(ev)) if (!bv->dispatch(cmd))
result = UNDISPATCHED; result = UNDISPATCHED;
break; break;
} }
@ -1929,7 +1900,8 @@ bool InsetText::checkAndActivateInset(BufferView * bv, bool front)
static_cast<UpdatableInset*>(cpar(bv)->getInset(cpos(bv))); static_cast<UpdatableInset*>(cpar(bv)->getInset(cpos(bv)));
if (!isHighlyEditableInset(inset)) if (!isHighlyEditableInset(inset))
return false; return false;
inset->edit(bv, front); FuncRequest cmd(bv, LFUN_INSET_EDIT, front ? "left" : "right");
inset->localDispatch(cmd);
if (!the_locking_inset) if (!the_locking_inset)
return false; return false;
updateLocal(bv, CURSOR, false); updateLocal(bv, CURSOR, false);
@ -1961,7 +1933,8 @@ bool InsetText::checkAndActivateInset(BufferView * bv, int x, int y,
y = insetDescent; y = insetDescent;
inset_x = cix(bv) - top_x + drawTextXOffset; inset_x = cix(bv) - top_x + drawTextXOffset;
inset_y = ciy(bv) + drawTextYOffset; inset_y = ciy(bv) + drawTextYOffset;
inset->edit(bv, x - inset_x, y - inset_y, button); FuncRequest cmd(bv, LFUN_INSET_EDIT, x - inset_x, y - inset_y, button);
inset->localDispatch(cmd);
if (!the_locking_inset) if (!the_locking_inset)
return false; return false;
updateLocal(bv, CURSOR, false); updateLocal(bv, CURSOR, false);

View File

@ -12,12 +12,12 @@
#ifndef INSETTEXT_H #ifndef INSETTEXT_H
#define INSETTEXT_H #define INSETTEXT_H
#include "updatableinset.h" #include "updatableinset.h"
#include "LString.h" #include "LString.h"
#include "LColor.h" #include "LColor.h"
#include "ParagraphList.h" #include "ParagraphList.h"
#include "RowList.h" #include "RowList.h"
#include "frontends/mouse_state.h"
#include "support/types.h" #include "support/types.h"
@ -102,10 +102,6 @@ public:
/// ///
string const editMessage() const; string const editMessage() const;
/// ///
void edit(BufferView *, int, int, mouse_button::state);
///
void edit(BufferView *, bool front = true);
///
bool isTextInset() const { return true; } bool isTextInset() const { return true; }
/// ///
void insetUnlock(BufferView *); void insetUnlock(BufferView *);

View File

@ -12,6 +12,7 @@
#include "gettext.h" #include "gettext.h"
#include "insettoc.h" #include "insettoc.h"
#include "funcrequest.h"
#include "BufferView.h" #include "BufferView.h"
#include "frontends/LyXView.h" #include "frontends/LyXView.h"
#include "frontends/Dialogs.h" #include "frontends/Dialogs.h"
@ -53,16 +54,15 @@ Inset::Code InsetTOC::lyxCode() const
} }
void InsetTOC::edit(BufferView * bv, int, int, mouse_button::state) dispatch_result InsetTOC::localDispatch(FuncRequest const & cmd)
{ {
InsetCommandMailer mailer("toc", *this); switch (cmd.action) {
mailer.showDialog(bv); case LFUN_INSET_EDIT:
} InsetCommandMailer("toc", *this).showDialog(cmd.view());
return DISPATCHED;
default:
void InsetTOC::edit(BufferView * bv, bool) return UNDISPATCHED;
{ }
edit(bv, 0, 0, mouse_button::none);
} }

View File

@ -28,12 +28,10 @@ public:
return new InsetTOC(params(), same_id); return new InsetTOC(params(), same_id);
} }
/// ///
dispatch_result localDispatch(FuncRequest const & cmd);
///
string const getScreenLabel(Buffer const *) const; string const getScreenLabel(Buffer const *) const;
/// ///
void edit(BufferView * bv, int, int, mouse_button::state);
///
void edit(BufferView * bv, bool front = true);
///
EDITABLE editable() const { return IS_EDITABLE; } EDITABLE editable() const { return IS_EDITABLE; }
/// ///
bool display() const { return true; } bool display() const { return true; }

View File

@ -7,10 +7,11 @@
* *
* Full author contact details are available in file CREDITS * Full author contact details are available in file CREDITS
*/ */
#include <config.h> #include <config.h>
#include "inseturl.h" #include "inseturl.h"
#include "funcrequest.h"
#include "BufferView.h" #include "BufferView.h"
#include "LaTeXFeatures.h" #include "LaTeXFeatures.h"
#include "frontends/LyXView.h" #include "frontends/LyXView.h"
@ -29,21 +30,19 @@ InsetUrl::InsetUrl(InsetCommandParams const & p, bool)
InsetUrl::~InsetUrl() InsetUrl::~InsetUrl()
{ {
InsetCommandMailer mailer("url", *this); InsetCommandMailer("url", *this).hideDialog();
mailer.hideDialog();
} }
void InsetUrl::edit(BufferView * bv, int, int, mouse_button::state) dispatch_result InsetUrl::localDispatch(FuncRequest const & cmd)
{ {
InsetCommandMailer mailer("url", *this); switch (cmd.action) {
mailer.showDialog(bv); case LFUN_INSET_EDIT:
} InsetCommandMailer("url", *this).showDialog(cmd.view());
return DISPATCHED;
default:
void InsetUrl::edit(BufferView * bv, bool) return InsetCommand::localDispatch(cmd);
{ }
edit(bv, 0, 0, mouse_button::none);
} }

View File

@ -31,6 +31,8 @@ public:
return new InsetUrl(params(), same_id); return new InsetUrl(params(), same_id);
} }
/// ///
dispatch_result localDispatch(FuncRequest const & cmd);
///
Inset::Code lyxCode() const { return Inset::URL_CODE; } Inset::Code lyxCode() const { return Inset::URL_CODE; }
/// ///
void validate(LaTeXFeatures &) const; void validate(LaTeXFeatures &) const;
@ -39,10 +41,6 @@ public:
/// ///
EDITABLE editable() const { return IS_EDITABLE; } EDITABLE editable() const { return IS_EDITABLE; }
/// ///
void edit(BufferView *, int, int, mouse_button::state);
///
void edit(BufferView * bv, bool front = true);
///
bool display() const { return false; } bool display() const { return false; }
/// ///
int latex(Buffer const *, std::ostream &, int latex(Buffer const *, std::ostream &,

View File

@ -52,14 +52,6 @@ void UpdatableInset::fitInsetCursor(BufferView *) const
{} {}
void UpdatableInset::edit(BufferView *, int, int, mouse_button::state)
{}
void UpdatableInset::edit(BufferView *, bool)
{}
void UpdatableInset::draw(BufferView *, LyXFont const &, void UpdatableInset::draw(BufferView *, LyXFont const &,
int /* baseline */, float & x) const int /* baseline */, float & x) const
{ {

View File

@ -66,10 +66,6 @@ public:
/// ///
virtual void insetUnlock(BufferView *); virtual void insetUnlock(BufferView *);
/// ///
virtual void edit(BufferView *, int x, int y, mouse_button::state button);
///
virtual void edit(BufferView *, bool front = true);
///
virtual void draw(BufferView *, LyXFont const &, virtual void draw(BufferView *, LyXFont const &,
int baseline, float & x) const; int baseline, float & x) const;
/// ///

View File

@ -312,7 +312,7 @@ enum kb_action {
LFUN_MOUSE_RELEASE, // André 9 Aug 2002 LFUN_MOUSE_RELEASE, // André 9 Aug 2002
LFUN_MOUSE_DOUBLE, // André 9 Aug 2002 LFUN_MOUSE_DOUBLE, // André 9 Aug 2002
LFUN_MOUSE_TRIPLE, // André 9 Aug 2002 LFUN_MOUSE_TRIPLE, // André 9 Aug 2002
LFUN_EDIT, // André 16 Aug 2002 LFUN_INSET_EDIT, // André 16 Aug 2002
LFUN_INSET_WRAP, // Dekel 7 Apr 2002 LFUN_INSET_WRAP, // Dekel 7 Apr 2002
// 240 // 240
LFUN_TRACK_CHANGES, // Levon 20021001 (cool date !) LFUN_TRACK_CHANGES, // Levon 20021001 (cool date !)

View File

@ -1366,7 +1366,8 @@ void LyXFunc::dispatch(FuncRequest const & ev, bool verbose)
if (view()->theLockingInset()) if (view()->theLockingInset())
view()->unlockInset(view()->theLockingInset()); view()->unlockInset(view()->theLockingInset());
if (par->inInset()) { if (par->inInset()) {
par->inInset()->edit(view()); FuncRequest cmd(view(), LFUN_INSET_EDIT, "left");
par->inInset()->localDispatch(cmd);
} }
// Set the cursor // Set the cursor
view()->getLyXText()->setCursor(par, 0); view()->getLyXText()->setCursor(par, 0);

View File

@ -13,12 +13,9 @@
*/ */
#include <config.h> #include <config.h>
#include <fstream>
#include "Lsstream.h" #include "Lsstream.h"
#include "support/LAssert.h" #include "support/LAssert.h"
#include "formula.h" #include "formula.h"
#include "formulamacro.h" #include "formulamacro.h"
#include "lyxrc.h" #include "lyxrc.h"
@ -53,14 +50,16 @@
#include "intl.h" #include "intl.h"
#include "ref_inset.h" #include "ref_inset.h"
#include <fstream>
using std::endl; using std::endl;
using std::ostream; using std::ostream;
using std::vector; using std::vector;
using std::abs; using std::abs;
using std::max; using std::max;
MathCursor * mathcursor = 0;
MathCursor * mathcursor = 0;
namespace { namespace {
@ -68,15 +67,13 @@ namespace {
int first_x; int first_x;
int first_y; int first_y;
bool openNewInset(BufferView * bv, UpdatableInset * new_inset) bool openNewInset(BufferView * bv, UpdatableInset * new_inset)
{ {
if (!bv->insertInset(new_inset)) { if (!bv->insertInset(new_inset)) {
delete new_inset; delete new_inset;
return false; return false;
} }
new_inset->edit(bv, true); new_inset->localDispatch(FuncRequest(bv, LFUN_INSET_EDIT, "left"));
return true; return true;
} }
@ -169,31 +166,6 @@ string const InsetFormulaBase::editMessage() const
} }
void InsetFormulaBase::edit(BufferView * bv, int x, int y, mouse_button::state)
{
if (!bv->lockInset(this))
lyxerr[Debug::MATHED] << "Cannot lock inset!!!" << endl;
releaseMathCursor(bv);
mathcursor = new MathCursor(this, true);
metrics(bv);
mathcursor->setPos(x + xo_, y + yo_);
// if that is removed, we won't get the magenta box when entering an
// inset for the first time
bv->updateInset(this);
}
void InsetFormulaBase::edit(BufferView * bv, bool front)
{
if (!bv->lockInset(this))
lyxerr << "Cannot lock math inset in edit call!\n";
releaseMathCursor(bv);
mathcursor = new MathCursor(this, front);
metrics(bv);
bv->updateInset(this);
}
void InsetFormulaBase::insetUnlock(BufferView * bv) void InsetFormulaBase::insetUnlock(BufferView * bv)
{ {
if (mathcursor) { if (mathcursor) {
@ -369,10 +341,29 @@ dispatch_result InsetFormulaBase::localDispatch(FuncRequest const & cmd)
// << " y: '" << cmd.y // << " y: '" << cmd.y
// << "' button: " << cmd.button() << endl; // << "' button: " << cmd.button() << endl;
BufferView * bv = cmd.view();
// delete empty mathbox (LFUN_BACKSPACE and LFUN_DELETE) // delete empty mathbox (LFUN_BACKSPACE and LFUN_DELETE)
bool remove_inset = false; bool remove_inset = false;
switch (cmd.action) { switch (cmd.action) {
case LFUN_INSET_EDIT:
if (!bv->lockInset(this))
lyxerr << "Cannot lock math inset in edit call!\n";
releaseMathCursor(bv);
if (!cmd.argument.empty()) {
mathcursor = new MathCursor(this, cmd.argument == "left");
metrics(bv);
} else {
mathcursor = new MathCursor(this, true);
metrics(bv);
mathcursor->setPos(cmd.x + xo_, cmd.y + yo_);
}
// if that is removed, we won't get the magenta box when entering an
// inset for the first time
bv->updateInset(this);
return DISPATCHED;
case LFUN_MOUSE_PRESS: case LFUN_MOUSE_PRESS:
//lyxerr << "Mouse single press\n"; //lyxerr << "Mouse single press\n";
return lfunMousePress(cmd); return lfunMousePress(cmd);
@ -392,7 +383,6 @@ dispatch_result InsetFormulaBase::localDispatch(FuncRequest const & cmd)
if (!mathcursor) if (!mathcursor)
return UNDISPATCHED; return UNDISPATCHED;
BufferView * bv = cmd.view();
string argument = cmd.argument; string argument = cmd.argument;
RESULT result = DISPATCHED; RESULT result = DISPATCHED;
bool sel = false; bool sel = false;

View File

@ -59,10 +59,6 @@ public:
/// what appears in the minibuffer when opening /// what appears in the minibuffer when opening
virtual string const editMessage() const; virtual string const editMessage() const;
/// ///
virtual void edit(BufferView *, int x, int y, mouse_button::state button);
///
virtual void edit(BufferView *, bool front = true);
///
virtual void fitInsetCursor(BufferView *) const; virtual void fitInsetCursor(BufferView *) const;
/// FIXME /// FIXME
virtual void getCursorPos(BufferView *, int &, int &) const; virtual void getCursorPos(BufferView *, int &, int &) const;

View File

@ -241,9 +241,6 @@ public:
/// identifies things that can get \limits or \nolimits /// identifies things that can get \limits or \nolimits
virtual bool takesLimits() const { return false; } virtual bool takesLimits() const { return false; }
///
virtual void edit(BufferView *, int, int, mouse_button::state) {}
/// request "external features" /// request "external features"
virtual void validate(LaTeXFeatures &) const {} virtual void validate(LaTeXFeatures &) const {}
/// char char code if possible /// char char code if possible

View File

@ -2203,7 +2203,8 @@ LyXText::selectNextWordToSpellcheck(float & value)
if (cursor.pos() < cursor.par()->size() && if (cursor.pos() < cursor.par()->size() &&
cursor.par()->isInset(cursor.pos())) { cursor.par()->isInset(cursor.pos())) {
// lock the inset! // lock the inset!
cursor.par()->getInset(cursor.pos())->edit(bv()); FuncRequest cmd(bv(), LFUN_INSET_EDIT, "left");
cursor.par()->getInset(cursor.pos())->localDispatch(cmd);
// now call us again to do the above trick // now call us again to do the above trick
// but obviously we have to start from down below ;) // but obviously we have to start from down below ;)
return bv()->text->selectNextWordToSpellcheck(value); return bv()->text->selectNextWordToSpellcheck(value);

View File

@ -1231,7 +1231,7 @@ void LyXText::updateCounters()
string const oldLabel = pit->params().labelString(); string const oldLabel = pit->params().labelString();
int maxdepth = 0; size_t maxdepth = 0;
if (pit != ownerParagraphs().begin()) if (pit != ownerParagraphs().begin())
maxdepth = boost::prior(pit)->getMaxDepthAfter(); maxdepth = boost::prior(pit)->getMaxDepthAfter();
@ -2046,7 +2046,8 @@ void LyXText::cursorUp(bool selecting)
y -= topy; y -= topy;
Inset * inset_hit = checkInsetHit(x, y1); Inset * inset_hit = checkInsetHit(x, y1);
if (inset_hit && isHighlyEditableInset(inset_hit)) { if (inset_hit && isHighlyEditableInset(inset_hit)) {
inset_hit->edit(bv(), x, y - (y2 - y1), mouse_button::none); inset_hit->localDispatch(
FuncRequest(bv(), LFUN_INSET_EDIT, x, y - (y2 - y1), mouse_button::none));
} }
} }
#else #else
@ -2070,7 +2071,8 @@ void LyXText::cursorDown(bool selecting)
y -= topy; y -= topy;
Inset * inset_hit = checkInsetHit(x, y1); Inset * inset_hit = checkInsetHit(x, y1);
if (inset_hit && isHighlyEditableInset(inset_hit)) { if (inset_hit && isHighlyEditableInset(inset_hit)) {
inset_hit->edit(bv(), x, y - (y2 - y1), mouse_button::none); FuncRequest cmd(bv(), LFUN_INSET_EDIT, x, y - (y2 - y1), mouse_button::none);
inset_hit->localDispatch(cmd);
} }
} }
#else #else

View File

@ -385,8 +385,10 @@ void doInsertInset(LyXText * lt, FuncRequest const & cmd,
gotsel = true; gotsel = true;
} }
if (bv->insertInset(inset)) { if (bv->insertInset(inset)) {
if (edit) if (edit) {
inset->edit(bv); FuncRequest cmd(bv, LFUN_INSET_EDIT, "left");
inset->localDispatch(cmd);
}
if (gotsel && pastesel) if (gotsel && pastesel)
bv->owner()->dispatch(FuncRequest(LFUN_PASTESELECTION)); bv->owner()->dispatch(FuncRequest(LFUN_PASTESELECTION));
} }
@ -606,7 +608,8 @@ Inset::RESULT LyXText::dispatch(FuncRequest const & cmd)
&& isHighlyEditableInset(cursor.par()->getInset(cursor.pos()))) { && isHighlyEditableInset(cursor.par()->getInset(cursor.pos()))) {
Inset * tmpinset = cursor.par()->getInset(cursor.pos()); Inset * tmpinset = cursor.par()->getInset(cursor.pos());
cmd.message(tmpinset->editMessage()); cmd.message(tmpinset->editMessage());
tmpinset->edit(bv, !is_rtl); FuncRequest cmd1(bv, LFUN_INSET_EDIT, is_rtl ? "left" : "right");
tmpinset->localDispatch(cmd1);
break; break;
} }
if (!is_rtl) if (!is_rtl)
@ -631,7 +634,8 @@ Inset::RESULT LyXText::dispatch(FuncRequest const & cmd)
isHighlyEditableInset(cursor.par()->getInset(cursor.pos()))) { isHighlyEditableInset(cursor.par()->getInset(cursor.pos()))) {
Inset * tmpinset = cursor.par()->getInset(cursor.pos()); Inset * tmpinset = cursor.par()->getInset(cursor.pos());
cmd.message(tmpinset->editMessage()); cmd.message(tmpinset->editMessage());
tmpinset->edit(bv, is_rtl); FuncRequest cmd1(bv, LFUN_INSET_EDIT, is_rtl ? "right" : "left");
tmpinset->localDispatch(cmd1);
break; break;
} }
if (is_rtl) if (is_rtl)

View File

@ -11,6 +11,7 @@
#include "undo_funcs.h" #include "undo_funcs.h"
#include "lyxtext.h" #include "lyxtext.h"
#include "funcrequest.h"
#include "BufferView.h" #include "BufferView.h"
#include "buffer.h" #include "buffer.h"
#include "insets/updatableinset.h" #include "insets/updatableinset.h"
@ -218,7 +219,8 @@ bool textHandleUndo(BufferView * bv, Undo & undo)
it = static_cast<UpdatableInset*>(tmppar->inInset()); it = static_cast<UpdatableInset*>(tmppar->inInset());
LyXText * t; LyXText * t;
if (it) { if (it) {
it->edit(bv); FuncRequest cmd(bv, LFUN_INSET_EDIT, "left");
it->localDispatch(cmd);
t = it->getLyXText(bv); t = it->getLyXText(bv);
} else { } else {
t = bv->text; t = bv->text;
@ -242,7 +244,8 @@ bool textHandleUndo(BufferView * bv, Undo & undo)
LyXText * t; LyXText * t;
Inset * it = tmppar->inInset(); Inset * it = tmppar->inInset();
if (it) { if (it) {
it->edit(bv); FuncRequest cmd(bv, LFUN_INSET_EDIT, "left");
it->localDispatch(cmd);
t = it->getLyXText(bv); t = it->getLyXText(bv);
} else { } else {
t = bv->text; t = bv->text;