#include "lyxfont.h"
#include "commandtags.h"
#include "buffer.h"
-#include "LyXView.h"
+#include "frontends/LyXView.h"
#include "BufferView.h"
#include "lyxtextclasslist.h"
#include "LaTeXFeatures.h"
-#include "Painter.h"
+#include "frontends/Painter.h"
#include "lyxtext.h"
#include "lyxcursor.h"
#include "CutAndPaste.h"
-#include "font.h"
+#include "frontends/font_metrics.h"
#include "LColor.h"
#include "lyxrow.h"
#include "lyxrc.h"
#include "intl.h"
#include "trans_mgr.h"
-#include "lyxscreen.h"
+#include "frontends/screen.h"
#include "gettext.h"
#include "lyxfunc.h"
#include "ParagraphParameters.h"
int yf = y_offset + first;
y = 0;
while ((row != 0) && (yf < ph)) {
- lt->getVisibleRow(bv, y+y_offset+first, int(x), row,
- y+lt->first_y, cleared);
+ lt->getVisibleRow(bv, y + y_offset + first, int(x),
+ row, y + lt->first_y, cleared);
if (bv->text->status() == LyXText::CHANGED_IN_DRAW) {
lt->need_break_row = row;
- if (lt->fullRebreak(bv)) {
- lt->setCursor(bv, lt->cursor.par(),lt->cursor.pos());
- if (lt->selection.set()) {
- lt->setCursor(bv, lt->selection.start,
- lt->selection.start.par(),
- lt->selection.start.pos());
- lt->setCursor(bv, lt->selection.end,
- lt->selection.end.par(),
- lt->selection.end.pos());
- }
+ lt->fullRebreak(bv);
+ lt->setCursor(bv, lt->cursor.par(),
+ lt->cursor.pos());
+ if (lt->selection.set()) {
+ lt->setCursor(bv, lt->selection.start,
+ lt->selection.start.par(),
+ lt->selection.start.pos());
+ lt->setCursor(bv, lt->selection.end,
+ lt->selection.end.par(),
+ lt->selection.end.pos());
}
break;
}
}
-void InsetText::edit(BufferView * bv, int x, int y, unsigned int button)
+void InsetText::edit(BufferView * bv, int x, int y, mouse_button::state button)
{
UpdatableInset::edit(bv, x, y, button);
lt = getLyXText(bv);
clear = true;
}
- if (!checkAndActivateInset(bv, x, tmp_y, button)) {
+ // 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(bv, x - drawTextXOffset,
y + insetAscent);
lt->cursor.x_fix(lt->cursor.x());
hideInsetCursor(bv);
no_selection = true;
locked = false;
- int code;
+ int code = NONE;
#if 0
if (drawFrame_ == LOCKED)
code = CURSOR|CLEAR_FRAME;
#if 0
updateLocal(bv, code, false);
#else
- setUpdateStatus(bv, code);
+ if (code != NONE)
+ setUpdateStatus(bv, code);
#endif
}
}
-void InsetText::insetButtonPress(BufferView * bv, int x, int y, int button)
+void InsetText::insetButtonPress(BufferView * bv,
+ int x, int y, mouse_button::state button)
{
no_selection = true;
return;
}
}
- if (!inset) { // && (button == 2)) {
+ if (!inset) { // && (button == mouse_button::button2)) {
bool paste_internally = false;
- if ((button == 2) && getLyXText(bv)->selection.set()) {
+ if ((button == mouse_button::button2) && getLyXText(bv)->selection.set()) {
localDispatch(bv, LFUN_COPY, "");
paste_internally = true;
}
// Insert primary selection with middle mouse
// if there is a local selection in the current buffer,
// insert this
- if (button == 2) {
+ if (button == mouse_button::button2) {
if (paste_internally)
localDispatch(bv, LFUN_PASTE, "");
else
}
-bool InsetText::insetButtonRelease(BufferView * bv, int x, int y, int button)
+bool InsetText::insetButtonRelease(BufferView * bv,
+ int x, int y, mouse_button::state button)
{
no_selection = true;
if (the_locking_inset) {
}
-void InsetText::insetMotionNotify(BufferView * bv, int x, int y, int state)
+void InsetText::insetMotionNotify(BufferView * bv, int x, int y, mouse_button::state state)
{
if (the_locking_inset) {
the_locking_inset->insetMotionNotify(bv, x - inset_x,
}
-void InsetText::insetKeyPress(XKeyEvent * xke)
-{
- if (the_locking_inset) {
- the_locking_inset->insetKeyPress(xke);
- return;
- }
-}
-
-
UpdatableInset::RESULT
InsetText::localDispatch(BufferView * bv,
kb_action action, string const & arg)
} else {
lt->insertStringAsLines(bv, clip);
}
+ // bug 393
+ lt->clearSelection();
+
updwhat = CURSOR_PAR;
updflag = true;
break;
setUndo(bv, Undo::INSERT,
lt->cursor.par(), lt->cursor.par()->next());
lt->pasteSelection(bv);
+ // bug 393
+ lt->clearSelection();
updwhat = CURSOR_PAR;
updflag = true;
}
}
-int InsetText::latex(Buffer const * buf, ostream & os, bool, bool) const
+int InsetText::latex(Buffer const * buf, ostream & os, bool moving_arg, bool) const
{
TexRow texrow;
- buf->latexParagraphs(os, par, 0, texrow);
+ buf->latexParagraphs(os, par, 0, texrow, moving_arg);
return texrow.rows();
}
LyXFont const font(getLyXText(bv)->getFont(bv->buffer(), cpar(bv), cpos(bv)));
- int const asc = lyxfont::maxAscent(font);
- int const desc = lyxfont::maxDescent(font);
-
+ int const asc = font_metrics::maxAscent(font);
+ int const desc = font_metrics::maxDescent(font);
+
if (isCursorVisible())
bv->hideLockedInsetCursor();
else
if (!isCursorVisible()) {
LyXFont const font =
getLyXText(bv)->getFont(bv->buffer(), cpar(bv), cpos(bv));
-
- int const asc = lyxfont::maxAscent(font);
- int const desc = lyxfont::maxDescent(font);
+
+ int const asc = font_metrics::maxAscent(font);
+ int const desc = font_metrics::maxDescent(font);
bv->fitLockedInsetCursor(cx(bv), cy(bv), asc, desc);
if (show)
}
LyXFont const font =
getLyXText(bv)->getFont(bv->buffer(), cpar(bv), cpos(bv));
-
- int const asc = lyxfont::maxAscent(font);
- int const desc = lyxfont::maxDescent(font);
+
+ int const asc = font_metrics::maxAscent(font);
+ int const desc = font_metrics::maxDescent(font);
if (bv->fitLockedInsetCursor(cx(bv), cy(bv), asc, desc))
need_update |= FULL;
bool InsetText::checkAndActivateInset(BufferView * bv, int x, int y,
- int button)
+ mouse_button::state button)
{
x -= drawTextXOffset;
int dummyx = x;
int dummyy = y + insetAscent;
Inset * inset = bv->checkInsetHit(getLyXText(bv), dummyx, dummyy);
-
+ // we only do the edit() call if the inset was hit by the mouse
+ // or if it is a highly editable inset. So we should call this
+ // function from our own edit with button < 0.
+ // FIXME: GUII jbl. I've changed this to ::none for now which is probably
+ // WRONG
+ if (button == mouse_button::none && !isHighlyEditableInset(inset))
+ return false;
+
if (inset) {
if (x < 0)
x = insetWidth;
if ((top_x + drawTextXOffset + w) > pain.paperWidth())
w = pain.paperWidth();
// w -= TEXT_TO_INSET_OFFSET;
- pain.fillRectangle(top_x, ty, w+1, h+1, backgroundColor());
+ pain.fillRectangle(top_x + 1, ty + 1, w - 1, h - 1, backgroundColor());
cleared = true;
need_update = FULL;
frame_is_visible = false;
{
BufferParams const & bparams = bv->buffer()->params;
LyXText * llt = getLyXText(bv);
-
+
while(par->next()) {
if (par->size() && par->next()->size() &&
!par->isSeparator(par->size()-1))