various changes

git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@2089 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
Lars Gullik Bjønnes 2001-06-04 23:57:32 +00:00
parent 9b7b1a17fc
commit 313252eb8b
27 changed files with 332 additions and 304 deletions

View File

@ -1,3 +1,7 @@
2001-06-01 Lars Gullik Bjønnes <larsbj@birdstep.com>
* acconfig.h: add BOOST_NO_LIMITS hack to help boost lib.
2001-05-31 Lars Gullik Bjønnes <larsbj@birdstep.com> 2001-05-31 Lars Gullik Bjønnes <larsbj@birdstep.com>
* acconfig.h: auto update * acconfig.h: auto update

View File

@ -8,7 +8,8 @@
* *
* LyX, the High Level Word Processor * LyX, the High Level Word Processor
* *
* Copyright (C) 1995 Matthias Ettrich * Copyright 1995 Matthias Ettrich
* Copyright 1995-2001 The LyX Team.
* *
*======================================================*/ *======================================================*/
@ -123,5 +124,14 @@ int mkstemp(char*);
#include "nt_defines.h" #include "nt_defines.h"
#endif #endif
/* Some support for the boost library. */
#ifndef HAVE_LIMITS
#define BOOST_NO_LIMITS
#endif
#ifndef HAVE_SSTREAM
#define BOOST_NO_STRINGSTREAM
#endif
#endif /* _CONFIG_H */ #endif /* _CONFIG_H */

View File

@ -1,3 +1,7 @@
2001-06-01 Lars Gullik Bjønnes <larsbj@birdstep.com>
* boost/config.hpp: remove hack moved to config.h
2001-06-01 Jean-Marc Lasgouttes <Jean-Marc.Lasgouttes@inria.fr> 2001-06-01 Jean-Marc Lasgouttes <Jean-Marc.Lasgouttes@inria.fr>
* boost/config.hpp (BOOST_NO_LIMITS): fix the hack mentionned * boost/config.hpp (BOOST_NO_LIMITS): fix the hack mentionned

View File

@ -266,11 +266,6 @@
# define BOOST_NO_HASH # define BOOST_NO_HASH
# endif # endif
# endif # endif
// LYX: begin
# ifndef HAVE_LIMITS
# define BOOST_NO_LIMITS
# endif
// LYX: end
// Intel on Linux --------------------------------------------------------- // Intel on Linux ---------------------------------------------------------

View File

@ -27,7 +27,6 @@ BufferView::BufferView(LyXView * o, int xpos, int ypos,
: pimpl_(new Pimpl(this, o, xpos, ypos, width, height)) : pimpl_(new Pimpl(this, o, xpos, ypos, width, height))
{ {
text = 0; text = 0;
inset_slept = false;
} }

View File

@ -78,11 +78,6 @@ public:
/// ///
int resizeCurrentBuffer(); int resizeCurrentBuffer();
/// ///
void gotoInset(std::vector<Inset::Code> const & codes,
bool same_content);
///
void gotoInset(Inset::Code codes, bool same_content);
///
void cursorPrevious(LyXText *); void cursorPrevious(LyXText *);
/// ///
void cursorNext(LyXText *); void cursorNext(LyXText *);
@ -117,8 +112,6 @@ public:
/// ///
void updateInset(Inset * inset, bool mark_dirty); void updateInset(Inset * inset, bool mark_dirty);
/// ///
bool inset_slept;
///
int slx; int slx;
/// ///
int sly; int sly;
@ -164,8 +157,9 @@ public:
Placie it in a layout of lout, Placie it in a layout of lout,
if no_table make sure that it doesn't end up in a table. if no_table make sure that it doesn't end up in a table.
*/ */
bool insertInset(Inset * inset, string const & lout = string(), //bool insertInset(Inset * inset, string const & lout = string(),
bool no_table = false); // bool no_table = false);
bool insertInset(Inset * inset, string const & lout = string());
/** Inserts a lyx file at cursor position. /** Inserts a lyx file at cursor position.
@return #false# if it fails. @return #false# if it fails.
*/ */

View File

@ -1,4 +1,4 @@
// -*- C++ -*- a// -*- C++ -*-
/* This file is part of /* This file is part of
* ====================================================== * ======================================================
* *
@ -19,7 +19,6 @@
#include "lyxcursor.h" #include "lyxcursor.h"
#include "lyxtext.h" #include "lyxtext.h"
#include "insets/inseterror.h" #include "insets/inseterror.h"
#include "insets/insetinfo.h"
#include "LyXView.h" #include "LyXView.h"
#include "bufferlist.h" #include "bufferlist.h"
#include "support/FileInfo.h" #include "support/FileInfo.h"
@ -191,64 +190,9 @@ void BufferView::setCursorFromRow(int row)
} }
bool BufferView::insertInset(Inset * inset, string const & lout, bool BufferView::insertInset(Inset * inset, string const & lout)
bool /*no_table*/)
{ {
// if we are in a locking inset we should try to insert the return pimpl_->insertInset(inset, lout);
// inset there otherwise this is a illegal function now
if (theLockingInset()) {
if (theLockingInset()->InsertInsetAllowed(inset))
return theLockingInset()->InsertInset(this, inset);
return false;
}
// not quite sure if we want this...
text->SetCursorParUndo(buffer());
text->FreezeUndo();
beforeChange(text);
if (!lout.empty()) {
update(text, BufferView::SELECT|BufferView::FITCUR);
text->BreakParagraph(this);
update(text, BufferView::SELECT|BufferView::FITCUR|BufferView::CHANGE);
if (text->cursor.par()->size()) {
text->CursorLeft(this);
text->BreakParagraph(this);
update(text, BufferView::SELECT|BufferView::FITCUR|BufferView::CHANGE);
}
pair<bool, LyXTextClass::size_type> lres =
textclasslist.NumberOfLayout(buffer()->params
.textclass, lout);
LyXTextClass::size_type lay;
if (lres.first != false) {
// layout found
lay = lres.second;
} else {
// layout not fount using default "Standard" (0)
lay = 0;
}
text->SetLayout(this, lay);
text->SetParagraph(this, 0, 0,
0, 0,
VSpace(VSpace::NONE), VSpace(VSpace::NONE),
LYX_ALIGN_LAYOUT,
string(),
0);
update(text, BufferView::SELECT|BufferView::FITCUR|BufferView::CHANGE);
text->current_font.setLatex(LyXFont::OFF);
}
text->InsertInset(this, inset);
update(text, BufferView::SELECT|BufferView::FITCUR|BufferView::CHANGE);
text->UnFreezeUndo();
return true;
} }
@ -384,48 +328,6 @@ void BufferView::paste()
} }
void BufferView::gotoInset(std::vector<Inset::Code> const & codes,
bool same_content)
{
if (!available()) return;
hideCursor();
beforeChange(text);
update(text, BufferView::SELECT|BufferView::FITCUR);
string contents;
if (same_content &&
text->cursor.par()->GetChar(text->cursor.pos()) == LyXParagraph::META_INSET) {
Inset const * inset = text->cursor.par()->GetInset(text->cursor.pos());
if (find(codes.begin(), codes.end(), inset->LyxCode())
!= codes.end())
contents =
static_cast<InsetCommand const *>(inset)->getContents();
}
if (!text->GotoNextInset(this, codes, contents)) {
if (text->cursor.pos()
|| text->cursor.par() != text->FirstParagraph()) {
LyXCursor tmp = text->cursor;
text->cursor.par(text->FirstParagraph());
text->cursor.pos(0);
if (!text->GotoNextInset(this, codes, contents)) {
text->cursor = tmp;
owner()->message(_("No more insets"));
}
} else {
owner()->message(_("No more insets"));
}
}
update(text, BufferView::SELECT|BufferView::FITCUR);
text->selection.cursor = text->cursor;
}
void BufferView::gotoInset(Inset::Code code, bool same_content)
{
gotoInset(vector<Inset::Code>(1, code), same_content);
}
void BufferView::insertCorrectQuote() void BufferView::insertCorrectQuote()
@ -592,44 +494,7 @@ void BufferView::lockedInsetStoreUndo(Undo::undo_kind kind)
void BufferView::updateInset(Inset * inset, bool mark_dirty) void BufferView::updateInset(Inset * inset, bool mark_dirty)
{ {
if (!inset) pimpl_->updateInset(inset, mark_dirty);
return;
// first check for locking insets
if (theLockingInset()) {
if (theLockingInset() == inset) {
if (text->UpdateInset(this, inset)) {
update();
if (mark_dirty) {
buffer()->markDirty();
}
updateScrollbar();
return;
}
} else if (theLockingInset()->UpdateInsetInInset(this,inset)) {
if (text->UpdateInset(this, theLockingInset())) {
update();
if (mark_dirty){
buffer()->markDirty();
}
updateScrollbar();
return;
}
}
}
// then check the current buffer
if (available()) {
hideCursor();
update(text, BufferView::UPDATE);
if (text->UpdateInset(this, inset)) {
if (mark_dirty)
update(text, BufferView::SELECT|BufferView::FITCUR|BufferView::CHANGE);
else
update(text, SELECT);
return;
}
}
} }
@ -694,6 +559,7 @@ bool BufferView::ChangeCitationsIfUnique(string const & from, string const & to)
return ChangeInsets(Inset::CITE_CODE, from, to); return ChangeInsets(Inset::CITE_CODE, from, to);
} }
UpdatableInset * BufferView::theLockingInset() const UpdatableInset * BufferView::theLockingInset() const
{ {
// If NULL is not allowed we should put an Assert here. (Lgb) // If NULL is not allowed we should put an Assert here. (Lgb)

View File

@ -81,10 +81,10 @@ extern bool math_insert_greek(BufferView *, char);
extern void sigchldhandler(pid_t pid, int * status); extern void sigchldhandler(pid_t pid, int * status);
extern int bibitemMaxWidth(BufferView *, LyXFont const &); extern int bibitemMaxWidth(BufferView *, LyXFont const &);
const unsigned int saved_positions_num = 20;
namespace { namespace {
const unsigned int saved_positions_num = 20;
inline inline
void waitForX() void waitForX()
{ {
@ -112,7 +112,8 @@ BufferView::Pimpl::Pimpl(BufferView * b, LyXView * o,
int xpos, int ypos, int width, int height) int xpos, int ypos, int width, int height)
: bv_(b), owner_(o), buffer_(0), : bv_(b), owner_(o), buffer_(0),
current_scrollbar_value(0), cursor_timeout(400), current_scrollbar_value(0), cursor_timeout(400),
workarea_(xpos, ypos, width, height), using_xterm_cursor(false) workarea_(xpos, ypos, width, height), using_xterm_cursor(false),
inset_slept(false)
{ {
// Setup the signals // Setup the signals
workarea_.scrollCB.connect(slot(this, &BufferView::Pimpl::scrollCB)); workarea_.scrollCB.connect(slot(this, &BufferView::Pimpl::scrollCB));
@ -138,10 +139,8 @@ BufferView::Pimpl::Pimpl(BufferView * b, LyXView * o,
cursor_timeout.timeout.connect(slot(this, cursor_timeout.timeout.connect(slot(this,
&BufferView::Pimpl::cursorToggle)); &BufferView::Pimpl::cursorToggle));
//current_scrollbar_value = 0;
cursor_timeout.start(); cursor_timeout.start();
workarea_.setFocus(); workarea_.setFocus();
//using_xterm_cursor = false;
saved_positions.resize(saved_positions_num); saved_positions.resize(saved_positions_num);
} }
@ -157,7 +156,7 @@ void BufferView::Pimpl::buffer(Buffer * b)
lyxerr[Debug::INFO] << "Setting buffer in BufferView (" lyxerr[Debug::INFO] << "Setting buffer in BufferView ("
<< b << ")" << endl; << b << ")" << endl;
if (buffer_) { if (buffer_) {
bv_->insetSleep(); insetSleep();
buffer_->delUser(bv_); buffer_->delUser(bv_);
// Put the old text into the TextCache, but // Put the old text into the TextCache, but
@ -203,7 +202,7 @@ void BufferView::Pimpl::buffer(Buffer * b)
// require bv_->text. // require bv_->text.
owner_->getDialogs()->updateBufferDependent(true); owner_->getDialogs()->updateBufferDependent(true);
redraw(); redraw();
bv_->insetWakeup(); insetWakeup();
} else { } else {
lyxerr[Debug::INFO] << " No Buffer!" << endl; lyxerr[Debug::INFO] << " No Buffer!" << endl;
owner_->updateMenubar(); owner_->updateMenubar();
@ -344,7 +343,7 @@ int BufferView::Pimpl::resizeCurrentBuffer()
updateScrollbar(); updateScrollbar();
redraw(); redraw();
bv_->setState(); setState();
AllowInput(bv_); AllowInput(bv_);
/// get rid of the splash screen if it's not gone already /// get rid of the splash screen if it's not gone already
@ -367,58 +366,41 @@ void BufferView::Pimpl::updateScrollbar()
* maximum must be the working area height. No scrolling will * maximum must be the working area height. No scrolling will
* be possible */ * be possible */
if (!buffer_) { if (!bv_->text) {
workarea_.setScrollbar(0, 1.0); workarea_.setScrollbar(0, 1.0);
return; return;
} }
static unsigned long text_height;
static unsigned long work_height;
unsigned long const tmp_text_height = bv_->text->height;
long const tmp_scrollbar_value = bv_->text->first;
static unsigned long max2 = 0;
static unsigned long height2 = 0;
unsigned long cbth = 0;
long cbsf = 0;
if (bv_->text) {
cbth = bv_->text->height;
cbsf = bv_->text->first;
}
// check if anything has changed. // check if anything has changed.
if (max2 == cbth && if (text_height == tmp_text_height
height2 == workarea_.height() && && work_height == workarea_.height()
current_scrollbar_value == cbsf) && current_scrollbar_value == tmp_scrollbar_value)
return; // no return; // no
max2 = cbth;
height2 = workarea_.height();
current_scrollbar_value = cbsf;
if (cbth <= height2) { // text is smaller than screen // update values
workarea_.setScrollbar(0, 1.0); // right? text_height = tmp_text_height;
work_height = workarea_.height();
current_scrollbar_value = tmp_scrollbar_value;
long const height_diff = text_height - work_height;
if (height_diff <= 0) {
workarea_.setScrollbar(0, 1.0);
return; return;
} }
long maximum_height = workarea_.height() * 3 / 4 + cbth;
long value = cbsf; workarea_.setScrollbarBounds(0, height_diff);
// set the scrollbar
double hfloat = workarea_.height();
double maxfloat = maximum_height;
float slider_size = 0.0;
int slider_value = value;
workarea_.setScrollbarBounds(0, bv_->text->height - workarea_.height());
double const lineh = bv_->text->DefaultHeight(); double const lineh = bv_->text->DefaultHeight();
workarea_.setScrollbarIncrements(lineh); workarea_.setScrollbarIncrements(lineh);
if (maxfloat > 0.0) { double const slider_size = 1.0 / double(height_diff) ;
if ((hfloat / maxfloat) * float(height2) < 3) workarea_.setScrollbar(current_scrollbar_value, slider_size);
slider_size = 3.0/float(height2);
else
slider_size = hfloat / maxfloat;
} else
slider_size = hfloat;
workarea_.setScrollbar(slider_value, slider_size / workarea_.height());
} }
@ -491,7 +473,7 @@ int BufferView::Pimpl::scrollDown(long time)
double value = workarea_.getScrollbarValue(); double value = workarea_.getScrollbarValue();
pair<float, float> p = workarea_.getScrollbarBounds(); pair<float, float> p = workarea_.getScrollbarBounds();
double max = p.second; double const max = p.second;
if (value == max) return 0; if (value == max) return 0;
@ -531,7 +513,7 @@ void BufferView::Pimpl::workAreaMotionNotify(int x, int y, unsigned int state)
// Check for inset locking // Check for inset locking
if (bv_->theLockingInset()) { if (bv_->theLockingInset()) {
LyXCursor cursor = bv_->text->cursor; LyXCursor cursor = bv_->text->cursor;
LyXFont font = bv_->text->GetFont(bv_->buffer(), LyXFont font = bv_->text->GetFont(buffer_,
cursor.par(), cursor.pos()); cursor.par(), cursor.pos());
int width = bv_->theLockingInset()->width(bv_, font); int width = bv_->theLockingInset()->width(bv_, font);
int inset_x = font.isVisibleRightToLeft() int inset_x = font.isVisibleRightToLeft()
@ -545,8 +527,9 @@ void BufferView::Pimpl::workAreaMotionNotify(int x, int y, unsigned int state)
return; return;
} }
/* The test for not selection possible is needed, that only motion events are /* The test for not selection possible is needed, that only motion
* used, where the bottom press event was on the drawing area too */ events are used, where the bottom press event was on
the drawing area too */
if (!selection_possible) if (!selection_possible)
return; return;
@ -568,9 +551,6 @@ void BufferView::Pimpl::workAreaMotionNotify(int x, int y, unsigned int state)
void BufferView::Pimpl::workAreaButtonPress(int xpos, int ypos, void BufferView::Pimpl::workAreaButtonPress(int xpos, int ypos,
unsigned int button) unsigned int button)
{ {
last_click_x = -1;
last_click_y = -1;
if (!buffer_ || !screen_.get()) return; if (!buffer_ || !screen_.get()) return;
Inset * inset_hit = checkInsetHit(bv_->text, xpos, ypos, button); Inset * inset_hit = checkInsetHit(bv_->text, xpos, ypos, button);
@ -766,7 +746,7 @@ void BufferView::Pimpl::workAreaButtonRelease(int x, int y,
if (button == 2) if (button == 2)
return; return;
bv_->setState(); setState();
owner_->showState(); owner_->showState();
// Did we hit an editable inset? // Did we hit an editable inset?
@ -790,7 +770,7 @@ void BufferView::Pimpl::workAreaButtonRelease(int x, int y,
// ...or maybe the SetCursorParUndo() // ...or maybe the SetCursorParUndo()
// below isn't necessary at all anylonger? // below isn't necessary at all anylonger?
if (inset_hit->LyxCode() == Inset::REF_CODE) { if (inset_hit->LyxCode() == Inset::REF_CODE) {
bv_->text->SetCursorParUndo(bv_->buffer()); bv_->text->SetCursorParUndo(buffer_);
} }
owner_->message(inset_hit->EditMessage()); owner_->message(inset_hit->EditMessage());
@ -862,7 +842,7 @@ Inset * BufferView::Pimpl::checkInsetHit(LyXText * text, int & x, int & y,
// Check whether the inset really was hit // Check whether the inset really was hit
Inset * tmpinset = cursor.par()->GetInset(cursor.pos()); Inset * tmpinset = cursor.par()->GetInset(cursor.pos());
LyXFont font = text->GetFont(bv_->buffer(), LyXFont font = text->GetFont(buffer_,
cursor.par(), cursor.pos()); cursor.par(), cursor.pos());
int const width = tmpinset->width(bv_, font); int const width = tmpinset->width(bv_, font);
int const inset_x = font.isVisibleRightToLeft() int const inset_x = font.isVisibleRightToLeft()
@ -886,7 +866,7 @@ Inset * BufferView::Pimpl::checkInsetHit(LyXText * text, int & x, int & y,
(cursor.par()->GetInset(cursor.pos() - 1)) && (cursor.par()->GetInset(cursor.pos() - 1)) &&
(cursor.par()->GetInset(cursor.pos() - 1)->Editable())) { (cursor.par()->GetInset(cursor.pos() - 1)->Editable())) {
Inset * tmpinset = cursor.par()->GetInset(cursor.pos()-1); Inset * tmpinset = cursor.par()->GetInset(cursor.pos()-1);
LyXFont font = text->GetFont(bv_->buffer(), cursor.par(), LyXFont font = text->GetFont(buffer_, cursor.par(),
cursor.pos()-1); cursor.pos()-1);
int const width = tmpinset->width(bv_, font); int const width = tmpinset->width(bv_, font);
int const inset_x = font.isVisibleRightToLeft() int const inset_x = font.isVisibleRightToLeft()
@ -914,8 +894,8 @@ Inset * BufferView::Pimpl::checkInsetHit(LyXText * text, int & x, int & y,
void BufferView::Pimpl::workAreaExpose() void BufferView::Pimpl::workAreaExpose()
{ {
static int work_area_width = 0; static int work_area_width;
static unsigned int work_area_height = 0; static unsigned int work_area_height;
bool const widthChange = workarea_.workWidth() != work_area_width; bool const widthChange = workarea_.workWidth() != work_area_width;
bool const heightChange = workarea_.height() != work_area_height; bool const heightChange = workarea_.height() != work_area_height;
@ -1016,7 +996,7 @@ void BufferView::Pimpl::update(LyXText * text, BufferView::UpdateCodes f)
if (text->inset_owner) { if (text->inset_owner) {
text->inset_owner->SetUpdateStatus(bv_, InsetText::NONE); text->inset_owner->SetUpdateStatus(bv_, InsetText::NONE);
bv_->updateInset(text->inset_owner, true); updateInset(text->inset_owner, true);
} else } else
update(); update();
@ -1041,7 +1021,7 @@ void BufferView::Pimpl::cursorToggle()
} }
int status = 1; int status = 1;
int pid = waitpid(static_cast<pid_t>(0), &status, WNOHANG); int const pid = waitpid(static_cast<pid_t>(0), &status, WNOHANG);
if (pid == -1) // error find out what is wrong if (pid == -1) // error find out what is wrong
; // ignore it for now. ; // ignore it for now.
else if (pid > 0) else if (pid > 0)
@ -1202,19 +1182,19 @@ void BufferView::Pimpl::setState()
void BufferView::Pimpl::insetSleep() void BufferView::Pimpl::insetSleep()
{ {
if (bv_->theLockingInset() && !bv_->inset_slept) { if (bv_->theLockingInset() && !inset_slept) {
bv_->theLockingInset()->GetCursorPos(bv_, bv_->slx, bv_->sly); bv_->theLockingInset()->GetCursorPos(bv_, bv_->slx, bv_->sly);
bv_->theLockingInset()->InsetUnlock(bv_); bv_->theLockingInset()->InsetUnlock(bv_);
bv_->inset_slept = true; inset_slept = true;
} }
} }
void BufferView::Pimpl::insetWakeup() void BufferView::Pimpl::insetWakeup()
{ {
if (bv_->theLockingInset() && bv_->inset_slept) { if (bv_->theLockingInset() && inset_slept) {
bv_->theLockingInset()->Edit(bv_, bv_->slx, bv_->sly, 0); bv_->theLockingInset()->Edit(bv_, bv_->slx, bv_->sly, 0);
bv_->inset_slept = false; inset_slept = false;
} }
} }
@ -1222,11 +1202,11 @@ void BufferView::Pimpl::insetWakeup()
void BufferView::Pimpl::insetUnlock() void BufferView::Pimpl::insetUnlock()
{ {
if (bv_->theLockingInset()) { if (bv_->theLockingInset()) {
if (!bv_->inset_slept) if (!inset_slept)
bv_->theLockingInset()->InsetUnlock(bv_); bv_->theLockingInset()->InsetUnlock(bv_);
bv_->theLockingInset(0); bv_->theLockingInset(0);
bv_->text->FinishUndo(); bv_->text->FinishUndo();
bv_->inset_slept = false; inset_slept = false;
} }
} }
@ -1336,7 +1316,7 @@ void BufferView::Pimpl::moveCursorUpdate(bool selecting)
if (selecting || lt->selection.mark()) { if (selecting || lt->selection.mark()) {
lt->SetSelection(bv_); lt->SetSelection(bv_);
if (lt->bv_owner) if (lt->bv_owner)
bv_->toggleToggle(); toggleToggle();
} }
update(lt, BufferView::SELECT|BufferView::FITCUR); update(lt, BufferView::SELECT|BufferView::FITCUR);
showCursor(); showCursor();
@ -1344,7 +1324,7 @@ void BufferView::Pimpl::moveCursorUpdate(bool selecting)
/* ---> Everytime the cursor is moved, show the current font state. */ /* ---> Everytime the cursor is moved, show the current font state. */
// should this too me moved out of this func? // should this too me moved out of this func?
//owner->showState(); //owner->showState();
bv_->setState(); setState();
} }
@ -1355,8 +1335,7 @@ Inset * BufferView::Pimpl::getInsetByCode(Inset::Code code)
find_if(Buffer::inset_iterator( find_if(Buffer::inset_iterator(
cursor.par(), cursor.pos()), cursor.par(), cursor.pos()),
buffer_->inset_iterator_end(), buffer_->inset_iterator_end(),
lyx::compare_memfun(&Inset::LyxCode, code) lyx::compare_memfun(&Inset::LyxCode, code));
);
return it != buffer_->inset_iterator_end() ? (*it) : 0; return it != buffer_->inset_iterator_end() ? (*it) : 0;
} }
@ -1445,7 +1424,7 @@ bool BufferView::Pimpl::Dispatch(kb_action action, string const & argument)
InsetCommandParams p; InsetCommandParams p;
p.setCmdName("tableofcontents"); p.setCmdName("tableofcontents");
Inset * inset = new InsetTOC(p); Inset * inset = new InsetTOC(p);
if (!bv_->insertInset(inset, "Standard", true)) if (!insertInset(inset, "Standard"))
delete inset; delete inset;
break; break;
} }
@ -1460,11 +1439,11 @@ bool BufferView::Pimpl::Dispatch(kb_action action, string const & argument)
case LFUN_INSET_GRAPHICS: case LFUN_INSET_GRAPHICS:
{ {
Inset * new_inset = new InsetGraphics; Inset * new_inset = new InsetGraphics;
if (!bv_->insertInset(new_inset)) { if (!insertInset(new_inset)) {
delete new_inset; delete new_inset;
} else { } else {
// this is need because you don't use a inset->Edit() // this is need because you don't use a inset->Edit()
bv_->updateInset(new_inset, true); updateInset(new_inset, true);
new_inset->Edit(bv_, 0, 0, 0); new_inset->Edit(bv_, 0, 0, 0);
} }
break; break;
@ -1501,11 +1480,11 @@ bool BufferView::Pimpl::Dispatch(kb_action action, string const & argument)
break; break;
case LFUN_GOTOERROR: case LFUN_GOTOERROR:
bv_->gotoInset(Inset::ERROR_CODE, false); gotoInset(Inset::ERROR_CODE, false);
break; break;
case LFUN_GOTONOTE: case LFUN_GOTONOTE:
bv_->gotoInset(Inset::IGNORE_CODE, false); gotoInset(Inset::IGNORE_CODE, false);
break; break;
case LFUN_REFERENCE_GOTO: case LFUN_REFERENCE_GOTO:
@ -1513,7 +1492,7 @@ bool BufferView::Pimpl::Dispatch(kb_action action, string const & argument)
vector<Inset::Code> tmp; vector<Inset::Code> tmp;
tmp.push_back(Inset::LABEL_CODE); tmp.push_back(Inset::LABEL_CODE);
tmp.push_back(Inset::REF_CODE); tmp.push_back(Inset::REF_CODE);
bv_->gotoInset(tmp, true); gotoInset(tmp, true);
break; break;
} }
@ -1684,7 +1663,7 @@ bool BufferView::Pimpl::Dispatch(kb_action action, string const & argument)
| BufferView::FITCUR); | BufferView::FITCUR);
lt->ChangeWordCase(bv_, LyXText::text_uppercase); lt->ChangeWordCase(bv_, LyXText::text_uppercase);
if (lt->inset_owner) if (lt->inset_owner)
bv_->updateInset(lt->inset_owner, true); updateInset(lt->inset_owner, true);
update(lt, update(lt,
BufferView::SELECT BufferView::SELECT
| BufferView::FITCUR | BufferView::FITCUR
@ -1699,7 +1678,7 @@ bool BufferView::Pimpl::Dispatch(kb_action action, string const & argument)
update(lt, BufferView::SELECT|BufferView::FITCUR); update(lt, BufferView::SELECT|BufferView::FITCUR);
lt->ChangeWordCase(bv_, LyXText::text_lowercase); lt->ChangeWordCase(bv_, LyXText::text_lowercase);
if (lt->inset_owner) if (lt->inset_owner)
bv_->updateInset(lt->inset_owner, true); updateInset(lt->inset_owner, true);
update(lt, update(lt,
BufferView::SELECT BufferView::SELECT
| BufferView::FITCUR | BufferView::FITCUR
@ -1715,7 +1694,7 @@ bool BufferView::Pimpl::Dispatch(kb_action action, string const & argument)
lt->ChangeWordCase(bv_, lt->ChangeWordCase(bv_,
LyXText::text_capitalization); LyXText::text_capitalization);
if (lt->inset_owner) if (lt->inset_owner)
bv_->updateInset(lt->inset_owner, true); updateInset(lt->inset_owner, true);
update(lt, update(lt,
BufferView::SELECT BufferView::SELECT
| BufferView::FITCUR | BufferView::FITCUR
@ -1730,7 +1709,7 @@ bool BufferView::Pimpl::Dispatch(kb_action action, string const & argument)
update(lt, BufferView::SELECT|BufferView::FITCUR); update(lt, BufferView::SELECT|BufferView::FITCUR);
lt->TransposeChars(*bv_); lt->TransposeChars(*bv_);
if (lt->inset_owner) if (lt->inset_owner)
bv_->updateInset(lt->inset_owner, true); updateInset(lt->inset_owner, true);
update(lt, update(lt,
BufferView::SELECT BufferView::SELECT
| BufferView::FITCUR | BufferView::FITCUR
@ -1752,10 +1731,10 @@ bool BufferView::Pimpl::Dispatch(kb_action action, string const & argument)
p.setFromString(argument); p.setFromString(argument);
InsetRef * inset = new InsetRef(p, *buffer_); InsetRef * inset = new InsetRef(p, *buffer_);
if (!bv_->insertInset(inset)) if (!insertInset(inset))
delete inset; delete inset;
else else
bv_->updateInset(inset, true); updateInset(inset, true);
} }
break; break;
@ -2656,17 +2635,17 @@ bool BufferView::Pimpl::Dispatch(kb_action action, string const & argument)
p.setFromString( argument ); p.setFromString( argument );
InsetUrl * inset = new InsetUrl( p ); InsetUrl * inset = new InsetUrl( p );
if (!bv_->insertInset(inset)) if (!insertInset(inset))
delete inset; delete inset;
else else
bv_->updateInset( inset, true ); updateInset( inset, true );
} }
break; break;
case LFUN_INSET_TEXT: case LFUN_INSET_TEXT:
{ {
InsetText * new_inset = new InsetText; InsetText * new_inset = new InsetText;
if (bv_->insertInset(new_inset)) if (insertInset(new_inset))
new_inset->Edit(bv_, 0, 0, 0); new_inset->Edit(bv_, 0, 0, 0);
else else
delete new_inset; delete new_inset;
@ -2676,7 +2655,7 @@ bool BufferView::Pimpl::Dispatch(kb_action action, string const & argument)
case LFUN_INSET_ERT: case LFUN_INSET_ERT:
{ {
InsetERT * new_inset = new InsetERT; InsetERT * new_inset = new InsetERT;
if (bv_->insertInset(new_inset)) if (insertInset(new_inset))
new_inset->Edit(bv_, 0, 0, 0); new_inset->Edit(bv_, 0, 0, 0);
else else
delete new_inset; delete new_inset;
@ -2686,7 +2665,7 @@ bool BufferView::Pimpl::Dispatch(kb_action action, string const & argument)
case LFUN_INSET_EXTERNAL: case LFUN_INSET_EXTERNAL:
{ {
InsetExternal * new_inset = new InsetExternal; InsetExternal * new_inset = new InsetExternal;
if (bv_->insertInset(new_inset)) if (insertInset(new_inset))
new_inset->Edit(bv_, 0, 0, 0); new_inset->Edit(bv_, 0, 0, 0);
else else
delete new_inset; delete new_inset;
@ -2696,7 +2675,7 @@ bool BufferView::Pimpl::Dispatch(kb_action action, string const & argument)
case LFUN_INSET_FOOTNOTE: case LFUN_INSET_FOOTNOTE:
{ {
InsetFoot * new_inset = new InsetFoot; InsetFoot * new_inset = new InsetFoot;
if (bv_->insertInset(new_inset)) if (insertInset(new_inset))
new_inset->Edit(bv_, 0, 0, 0); new_inset->Edit(bv_, 0, 0, 0);
else else
delete new_inset; delete new_inset;
@ -2706,7 +2685,7 @@ bool BufferView::Pimpl::Dispatch(kb_action action, string const & argument)
case LFUN_INSET_MARGINAL: case LFUN_INSET_MARGINAL:
{ {
InsetMarginal * new_inset = new InsetMarginal; InsetMarginal * new_inset = new InsetMarginal;
if (bv_->insertInset(new_inset)) if (insertInset(new_inset))
new_inset->Edit(bv_, 0, 0, 0); new_inset->Edit(bv_, 0, 0, 0);
else else
delete new_inset; delete new_inset;
@ -2716,7 +2695,7 @@ bool BufferView::Pimpl::Dispatch(kb_action action, string const & argument)
case LFUN_INSET_MINIPAGE: case LFUN_INSET_MINIPAGE:
{ {
InsetMinipage * new_inset = new InsetMinipage; InsetMinipage * new_inset = new InsetMinipage;
if (bv_->insertInset(new_inset)) if (insertInset(new_inset))
new_inset->Edit(bv_, 0, 0, 0); new_inset->Edit(bv_, 0, 0, 0);
else else
delete new_inset; delete new_inset;
@ -2728,7 +2707,7 @@ bool BufferView::Pimpl::Dispatch(kb_action action, string const & argument)
// check if the float type exist // check if the float type exist
if (floatList.typeExist(argument)) { if (floatList.typeExist(argument)) {
InsetFloat * new_inset = new InsetFloat(argument); InsetFloat * new_inset = new InsetFloat(argument);
if (bv_->insertInset(new_inset)) if (insertInset(new_inset))
new_inset->Edit(bv_, 0, 0, 0); new_inset->Edit(bv_, 0, 0, 0);
else else
delete new_inset; delete new_inset;
@ -2746,7 +2725,7 @@ bool BufferView::Pimpl::Dispatch(kb_action action, string const & argument)
if (floatList.typeExist(argument)) { if (floatList.typeExist(argument)) {
InsetFloat * new_inset = new InsetFloat(argument); InsetFloat * new_inset = new InsetFloat(argument);
new_inset->wide(true); new_inset->wide(true);
if (bv_->insertInset(new_inset)) if (insertInset(new_inset))
new_inset->Edit(bv_, 0, 0, 0); new_inset->Edit(bv_, 0, 0, 0);
else else
delete new_inset; delete new_inset;
@ -2761,7 +2740,7 @@ bool BufferView::Pimpl::Dispatch(kb_action action, string const & argument)
case LFUN_INSET_LIST: case LFUN_INSET_LIST:
{ {
InsetList * new_inset = new InsetList; InsetList * new_inset = new InsetList;
if (bv_->insertInset(new_inset)) if (insertInset(new_inset))
new_inset->Edit(bv_, 0, 0, 0); new_inset->Edit(bv_, 0, 0, 0);
else else
delete new_inset; delete new_inset;
@ -2771,7 +2750,7 @@ bool BufferView::Pimpl::Dispatch(kb_action action, string const & argument)
case LFUN_INSET_THEOREM: case LFUN_INSET_THEOREM:
{ {
InsetTheorem * new_inset = new InsetTheorem; InsetTheorem * new_inset = new InsetTheorem;
if (bv_->insertInset(new_inset)) if (insertInset(new_inset))
new_inset->Edit(bv_, 0, 0, 0); new_inset->Edit(bv_, 0, 0, 0);
else else
delete new_inset; delete new_inset;
@ -2789,7 +2768,7 @@ bool BufferView::Pimpl::Dispatch(kb_action action, string const & argument)
new_inset->SetAutoBreakRows(true); new_inset->SetAutoBreakRows(true);
new_inset->SetDrawFrame(0, InsetText::LOCKED); new_inset->SetDrawFrame(0, InsetText::LOCKED);
new_inset->SetFrameColor(0, LColor::footnoteframe); new_inset->SetFrameColor(0, LColor::footnoteframe);
if (bv_->insertInset(new_inset)) if (insertInset(new_inset))
new_inset->Edit(bv_, 0, 0, 0); new_inset->Edit(bv_, 0, 0, 0);
else else
delete new_inset; delete new_inset;
@ -2799,12 +2778,13 @@ bool BufferView::Pimpl::Dispatch(kb_action action, string const & argument)
case LFUN_INSET_TABULAR: case LFUN_INSET_TABULAR:
{ {
int r = 2, c = 2; int r = 2;
int c = 2;
if (!argument.empty()) if (!argument.empty())
::sscanf(argument.c_str(),"%d%d", &r, &c); ::sscanf(argument.c_str(),"%d%d", &r, &c);
InsetTabular * new_inset = InsetTabular * new_inset =
new InsetTabular(*buffer_, r, c); new InsetTabular(*buffer_, r, c);
bool rtl = bool const rtl =
bv_->getLyXText()->real_current_font.isRightToLeft(); bv_->getLyXText()->real_current_font.isRightToLeft();
if (!open_new_inset(new_inset, rtl)) if (!open_new_inset(new_inset, rtl))
delete new_inset; delete new_inset;
@ -2832,6 +2812,7 @@ bool BufferView::Pimpl::Dispatch(kb_action action, string const & argument)
case LFUN_SETXY: case LFUN_SETXY:
{ {
#warning Should check sscanf for errors (Lgb)
int x; int x;
int y; int y;
::sscanf(argument.c_str(), " %d %d", &x, &y); ::sscanf(argument.c_str(), " %d %d", &x, &y);
@ -2960,10 +2941,10 @@ bool BufferView::Pimpl::Dispatch(kb_action action, string const & argument)
p.setFromString( argument ); p.setFromString( argument );
InsetCitation * inset = new InsetCitation( p ); InsetCitation * inset = new InsetCitation( p );
if (!bv_->insertInset(inset)) if (!insertInset(inset))
delete inset; delete inset;
else else
bv_->updateInset( inset, true ); updateInset( inset, true );
} }
break; break;
@ -2980,7 +2961,7 @@ bool BufferView::Pimpl::Dispatch(kb_action action, string const & argument)
InsetCommandParams p( "BibTeX", db, bibstyle ); InsetCommandParams p( "BibTeX", db, bibstyle );
InsetBibtex * inset = new InsetBibtex(p); InsetBibtex * inset = new InsetBibtex(p);
if (bv_->insertInset(inset)) { if (insertInset(inset)) {
if (argument.empty()) if (argument.empty())
inset->Edit(bv_, 0, 0, 0); inset->Edit(bv_, 0, 0, 0);
} else } else
@ -3048,10 +3029,10 @@ bool BufferView::Pimpl::Dispatch(kb_action action, string const & argument)
p.setFromString(argument); p.setFromString(argument);
InsetIndex * inset = new InsetIndex(p); InsetIndex * inset = new InsetIndex(p);
if (!bv_->insertInset(inset)) if (!insertInset(inset))
delete inset; delete inset;
else else
bv_->updateInset(inset, true); updateInset(inset, true);
} }
break; break;
@ -3069,10 +3050,10 @@ bool BufferView::Pimpl::Dispatch(kb_action action, string const & argument)
InsetCommandParams p("index", curstring); InsetCommandParams p("index", curstring);
InsetIndex * inset = new InsetIndex(p); InsetIndex * inset = new InsetIndex(p);
if (!bv_->insertInset(inset)) if (!insertInset(inset))
delete inset; delete inset;
else else
bv_->updateInset(inset, true); updateInset(inset, true);
} }
break; break;
@ -3080,7 +3061,7 @@ bool BufferView::Pimpl::Dispatch(kb_action action, string const & argument)
{ {
InsetCommandParams p("printindex"); InsetCommandParams p("printindex");
Inset * inset = new InsetPrintIndex(p); Inset * inset = new InsetPrintIndex(p);
if (!bv_->insertInset(inset, "Standard", true)) if (!insertInset(inset, "Standard"))
delete inset; delete inset;
} }
break; break;
@ -3090,7 +3071,7 @@ bool BufferView::Pimpl::Dispatch(kb_action action, string const & argument)
lyxerr << "arg " << argument << endl; lyxerr << "arg " << argument << endl;
InsetCommandParams p( "lyxparent", argument ); InsetCommandParams p( "lyxparent", argument );
Inset * inset = new InsetParent(p, *buffer_); Inset * inset = new InsetParent(p, *buffer_);
if (!bv_->insertInset(inset, "Standard", true)) if (!insertInset(inset, "Standard"))
delete inset; delete inset;
} }
@ -3103,10 +3084,10 @@ bool BufferView::Pimpl::Dispatch(kb_action action, string const & argument)
p.masterFilename_ = buffer_->fileName(); p.masterFilename_ = buffer_->fileName();
InsetInclude * inset = new InsetInclude(p); InsetInclude * inset = new InsetInclude(p);
if (!bv_->insertInset(inset)) if (!insertInset(inset))
delete inset; delete inset;
else { else {
bv_->updateInset(inset, true); updateInset(inset, true);
bv_->owner()->getDialogs()->showInclude(inset); bv_->owner()->getDialogs()->showInclude(inset);
} }
} }
@ -3116,7 +3097,7 @@ bool BufferView::Pimpl::Dispatch(kb_action action, string const & argument)
{ {
// We should check the argument for validity. (Lgb) // We should check the argument for validity. (Lgb)
Inset * inset = new InsetFloatList(argument); Inset * inset = new InsetFloatList(argument);
if (!bv_->insertInset(inset, "Standard", true)) if (!insertInset(inset, "Standard"))
delete inset; delete inset;
} }
break; break;
@ -3258,10 +3239,10 @@ void BufferView::Pimpl::protectedBlank(LyXText * lt)
update(lt, BufferView::SELECT|BufferView::FITCUR); update(lt, BufferView::SELECT|BufferView::FITCUR);
InsetSpecialChar * new_inset = InsetSpecialChar * new_inset =
new InsetSpecialChar(InsetSpecialChar::PROTECTED_SEPARATOR); new InsetSpecialChar(InsetSpecialChar::PROTECTED_SEPARATOR);
if (!bv_->insertInset(new_inset)) if (!insertInset(new_inset))
delete new_inset; delete new_inset;
else else
bv_->updateInset(new_inset, true); updateInset(new_inset, true);
} }
} }
@ -3275,7 +3256,7 @@ void BufferView::Pimpl::menuSeparator()
update(lt, BufferView::SELECT|BufferView::FITCUR); update(lt, BufferView::SELECT|BufferView::FITCUR);
InsetSpecialChar * new_inset = InsetSpecialChar * new_inset =
new InsetSpecialChar(InsetSpecialChar::MENU_SEPARATOR); new InsetSpecialChar(InsetSpecialChar::MENU_SEPARATOR);
bv_->insertInset(new_inset); insertInset(new_inset);
} }
} }
@ -3287,7 +3268,7 @@ void BufferView::Pimpl::endOfSentenceDot()
update(bv_->getLyXText(), BufferView::SELECT|BufferView::FITCUR); update(bv_->getLyXText(), BufferView::SELECT|BufferView::FITCUR);
InsetSpecialChar * new_inset = InsetSpecialChar * new_inset =
new InsetSpecialChar(InsetSpecialChar::END_OF_SENTENCE); new InsetSpecialChar(InsetSpecialChar::END_OF_SENTENCE);
bv_->insertInset(new_inset); insertInset(new_inset);
} }
} }
@ -3299,7 +3280,7 @@ void BufferView::Pimpl::ldots()
update(bv_->getLyXText(), BufferView::SELECT|BufferView::FITCUR); update(bv_->getLyXText(), BufferView::SELECT|BufferView::FITCUR);
InsetSpecialChar * new_inset = InsetSpecialChar * new_inset =
new InsetSpecialChar(InsetSpecialChar::LDOTS); new InsetSpecialChar(InsetSpecialChar::LDOTS);
bv_->insertInset(new_inset); insertInset(new_inset);
} }
} }
@ -3311,7 +3292,7 @@ void BufferView::Pimpl::hyphenationPoint()
update(bv_->getLyXText(), BufferView::SELECT|BufferView::FITCUR); update(bv_->getLyXText(), BufferView::SELECT|BufferView::FITCUR);
InsetSpecialChar * new_inset = InsetSpecialChar * new_inset =
new InsetSpecialChar(InsetSpecialChar::HYPHENATION); new InsetSpecialChar(InsetSpecialChar::HYPHENATION);
bv_->insertInset(new_inset); insertInset(new_inset);
} }
} }
@ -3319,7 +3300,7 @@ void BufferView::Pimpl::hyphenationPoint()
void BufferView::Pimpl::insertNote() void BufferView::Pimpl::insertNote()
{ {
InsetInfo * new_inset = new InsetInfo(); InsetInfo * new_inset = new InsetInfo();
bv_->insertInset(new_inset); insertInset(new_inset);
new_inset->Edit(bv_, 0, 0, 0); new_inset->Edit(bv_, 0, 0, 0);
} }
@ -3331,7 +3312,7 @@ bool BufferView::Pimpl::open_new_inset(UpdatableInset * new_inset, bool behind)
beforeChange(lt); beforeChange(lt);
lt->FinishUndo(); lt->FinishUndo();
if (!bv_->insertInset(new_inset)) { if (!insertInset(new_inset)) {
delete new_inset; delete new_inset;
return false; return false;
} }
@ -3342,3 +3323,155 @@ bool BufferView::Pimpl::open_new_inset(UpdatableInset * new_inset, bool behind)
new_inset->Edit(bv_, 0, 0, 0); new_inset->Edit(bv_, 0, 0, 0);
return true; return true;
} }
bool BufferView::Pimpl::insertInset(Inset * inset, string const & lout)
{
// if we are in a locking inset we should try to insert the
// inset there otherwise this is a illegal function now
if (bv_->theLockingInset()) {
if (bv_->theLockingInset()->InsertInsetAllowed(inset))
return bv_->theLockingInset()->InsertInset(bv_, inset);
return false;
}
// not quite sure if we want this...
bv_->text->SetCursorParUndo(buffer_);
bv_->text->FreezeUndo();
beforeChange(bv_->text);
if (!lout.empty()) {
update(bv_->text, BufferView::SELECT|BufferView::FITCUR);
bv_->text->BreakParagraph(bv_);
update(bv_->text, BufferView::SELECT|BufferView::FITCUR|BufferView::CHANGE);
if (bv_->text->cursor.par()->size()) {
bv_->text->CursorLeft(bv_);
bv_->text->BreakParagraph(bv_);
update(bv_->text, BufferView::SELECT|BufferView::FITCUR|BufferView::CHANGE);
}
pair<bool, LyXTextClass::size_type> lres =
textclasslist.NumberOfLayout(buffer_->params
.textclass, lout);
LyXTextClass::size_type lay;
if (lres.first != false) {
// layout found
lay = lres.second;
} else {
// layout not fount using default "Standard" (0)
lay = 0;
}
bv_->text->SetLayout(bv_, lay);
bv_->text->SetParagraph(bv_, 0, 0,
0, 0,
VSpace(VSpace::NONE), VSpace(VSpace::NONE),
LYX_ALIGN_LAYOUT,
string(),
0);
update(bv_->text, BufferView::SELECT|BufferView::FITCUR|BufferView::CHANGE);
bv_->text->current_font.setLatex(LyXFont::OFF);
}
bv_->text->InsertInset(bv_, inset);
update(bv_->text, BufferView::SELECT|BufferView::FITCUR|BufferView::CHANGE);
bv_->text->UnFreezeUndo();
return true;
}
void BufferView::Pimpl::updateInset(Inset * inset, bool mark_dirty)
{
if (!inset)
return;
// first check for locking insets
if (bv_->theLockingInset()) {
if (bv_->theLockingInset() == inset) {
if (bv_->text->UpdateInset(bv_, inset)) {
update();
if (mark_dirty) {
buffer_->markDirty();
}
updateScrollbar();
return;
}
} else if (bv_->theLockingInset()->UpdateInsetInInset(bv_, inset)) {
if (bv_->text->UpdateInset(bv_,
bv_->theLockingInset())) {
update();
if (mark_dirty){
buffer_->markDirty();
}
updateScrollbar();
return;
}
}
}
// then check the current buffer
if (available()) {
hideCursor();
update(bv_->text, BufferView::UPDATE);
if (bv_->text->UpdateInset(bv_, inset)) {
if (mark_dirty) {
update(bv_->text,
BufferView::SELECT
| BufferView::FITCUR
| BufferView::CHANGE);
} else {
update(bv_->text, SELECT);
}
return;
}
}
}
void BufferView::Pimpl::gotoInset(vector<Inset::Code> const & codes,
bool same_content)
{
if (!available()) return;
hideCursor();
beforeChange(bv_->text);
update(bv_->text, BufferView::SELECT|BufferView::FITCUR);
string contents;
if (same_content &&
bv_->text->cursor.par()->GetChar(bv_->text->cursor.pos()) == LyXParagraph::META_INSET) {
Inset const * inset = bv_->text->cursor.par()->GetInset(bv_->text->cursor.pos());
if (find(codes.begin(), codes.end(), inset->LyxCode())
!= codes.end())
contents =
static_cast<InsetCommand const *>(inset)->getContents();
}
if (!bv_->text->GotoNextInset(bv_, codes, contents)) {
if (bv_->text->cursor.pos()
|| bv_->text->cursor.par() != bv_->text->FirstParagraph()) {
LyXCursor tmp = bv_->text->cursor;
bv_->text->cursor.par(bv_->text->FirstParagraph());
bv_->text->cursor.pos(0);
if (!bv_->text->GotoNextInset(bv_, codes, contents)) {
bv_->text->cursor = tmp;
bv_->owner()->message(_("No more insets"));
}
} else {
bv_->owner()->message(_("No more insets"));
}
}
update(bv_->text, BufferView::SELECT|BufferView::FITCUR);
bv_->text->selection.cursor = bv_->text->cursor;
}
void BufferView::Pimpl::gotoInset(Inset::Code code, bool same_content)
{
gotoInset(vector<Inset::Code>(1, code), same_content);
}

View File

@ -118,6 +118,10 @@ struct BufferView::Pimpl : public SigC::Object {
/// ///
void center(); void center();
/// ///
bool insertInset(Inset * inset, string const & lout = string());
///
void updateInset(Inset * inset, bool mark_dirty);
///
bool Dispatch(kb_action action, string const & argument); bool Dispatch(kb_action action, string const & argument);
private: private:
/// ///
@ -141,6 +145,11 @@ private:
/// ///
void insertNote(); void insertNote();
/// ///
void gotoInset(std::vector<Inset::Code> const & codes,
bool same_content);
///
void gotoInset(Inset::Code codes, bool same_content);
///
BufferView * bv_; BufferView * bv_;
/// ///
LyXView * owner_; LyXView * owner_;
@ -152,10 +161,6 @@ private:
long current_scrollbar_value; long current_scrollbar_value;
/// ///
Timeout cursor_timeout; Timeout cursor_timeout;
///
int last_click_x;
///
int last_click_y;
/// ///
WorkArea workarea_; WorkArea workarea_;
/// ///
@ -188,5 +193,7 @@ private:
Inset * getInsetByCode(Inset::Code code); Inset * getInsetByCode(Inset::Code code);
/// ///
void MenuInsertLyXFile(string const & filen); void MenuInsertLyXFile(string const & filen);
///
bool inset_slept;
}; };
#endif #endif

View File

@ -1,3 +1,14 @@
2001-06-05 Lars Gullik Bjønnes <larsbj@birdstep.com>
* BufferView_pimpl.C (updateScrollbar): simplify.
* BufferView2.C: don't include insets/insetinfo.h, change
prototype for insertInset and call the Pimpl version. let
updateInset call Pimpl version.
* BufferView.h: move inset_slept to BufferView::Pimpl, move
gotoInset to BufferView::Pimpl
2001-06-01 Juergen Vigna <jug@sad.it> 2001-06-01 Juergen Vigna <jug@sad.it>
* lyxfunc.C (Dispatch): LFUN_PREFIX don't call the update if we're * lyxfunc.C (Dispatch): LFUN_PREFIX don't call the update if we're

View File

@ -62,7 +62,7 @@ void LyXAction::init()
// occupies after the init is completed. It compiles several // occupies after the init is completed. It compiles several
// magnitudes faster. // magnitudes faster.
static bool init = false; static bool init;
if (init) return; if (init) return;
struct lfun_item { struct lfun_item {

View File

@ -355,7 +355,7 @@ PainterBase & Painter::text(int x, int y, XChar2b const * s, int ls,
} else { } else {
LyXFont smallfont(f); LyXFont smallfont(f);
smallfont.decSize().decSize().setShape(LyXFont::UP_SHAPE); smallfont.decSize().decSize().setShape(LyXFont::UP_SHAPE);
static XChar2b c = {0, 0}; static XChar2b c;
int tmpx = x; int tmpx = x;
for (int i = 0; i < ls; ++i) { for (int i = 0; i < ls; ++i) {
if (s[i].byte1 == 0 && islower(s[i].byte2)) { if (s[i].byte1 == 0 && islower(s[i].byte2)) {

View File

@ -402,9 +402,9 @@ int WorkArea::work_area_handler(FL_OBJECT * ob, int event,
// If you have a better way to handle "wild-output" of // If you have a better way to handle "wild-output" of
// characters after the key has been released than the one // characters after the key has been released than the one
// below, please contact me. (Lgb) // below, please contact me. (Lgb)
static Time last_time_pressed = 0; static Time last_time_pressed;
static unsigned int last_key_pressed = 0; static unsigned int last_key_pressed;
static unsigned int last_state_pressed = 0; static unsigned int last_state_pressed;
lyxerr[Debug::KEY] << "Workarea Diff: " lyxerr[Debug::KEY] << "Workarea Diff: "
<< xke->time - last_time_pressed << xke->time - last_time_pressed
<< endl; << endl;

View File

@ -362,11 +362,11 @@ Buffer::parseSingleLyXformat2Token(LyXLex & lex, LyXParagraph *& par,
#ifndef NO_PEXTRA_REALLY #ifndef NO_PEXTRA_REALLY
// This is super temporary but is needed to get the compability // This is super temporary but is needed to get the compability
// mode for minipages work correctly together with new tabulars. // mode for minipages work correctly together with new tabulars.
static int call_depth = 0; static int call_depth;
++call_depth; ++call_depth;
bool checkminipage = false; bool checkminipage = false;
static LyXParagraph * minipar = 0; static LyXParagraph * minipar;
static LyXParagraph * parBeforeMinipage = 0; static LyXParagraph * parBeforeMinipage;
#endif #endif
if (token[0] != '\\') { if (token[0] != '\\') {

View File

@ -177,7 +177,7 @@ int lyxfont::width(XChar2b const * s, int n, LyXFont const & f)
} else { } else {
// emulate smallcaps since X doesn't support this // emulate smallcaps since X doesn't support this
unsigned int result = 0; unsigned int result = 0;
static XChar2b c = {0, 0}; static XChar2b c;
LyXFont smallfont(f); LyXFont smallfont(f);
smallfont.decSize().decSize().setShape(LyXFont::UP_SHAPE); smallfont.decSize().decSize().setShape(LyXFont::UP_SHAPE);
for (int i = 0; i < n; ++i) { for (int i = 0; i < n; ++i) {

View File

@ -171,7 +171,7 @@ string const ControlExternal::Browse(string const & input) const
// FIXME: a temporary hack until the FileDialog interface is updated // FIXME: a temporary hack until the FileDialog interface is updated
regexp += "|"; regexp += "|";
static int once = 0; static int once;
string current_path; string current_path;
while (1) { while (1) {

View File

@ -22,11 +22,13 @@
#include "deco.xbm" #include "deco.xbm"
static char const * decoration_names[] = { static char const * decoration_names[] = {
"widehat", "widetilde", "overbrace", "overleftarrow", "overrightarrow", "widehat", "widetilde", "overbrace", "overleftarrow", "overrightarrow",
"overline", "underbrace", "underline" "overline", "underbrace", "underline"
}; };
static int const nr_decoration_names = sizeof(decoration_names) / sizeof(char const *); static int const nr_decoration_names = sizeof(decoration_names) / sizeof(char const *);
FormMathsDeco::FormMathsDeco(LyXView * lv, Dialogs * d, FormMathsDeco::FormMathsDeco(LyXView * lv, Dialogs * d,

View File

@ -1936,10 +1936,11 @@ void InsetFig::Preview(string const & p)
lyxerr << "Can't view " << buf2 << endl; lyxerr << "Can't view " << buf2 << endl;
} }
void InsetFig::BrowseFile() void InsetFig::BrowseFile()
{ {
static string current_figure_path; static string current_figure_path;
static int once = 0; static int once;
if (lyxerr.debugging()) { if (lyxerr.debugging()) {
lyxerr << "Filename: " lyxerr << "Filename: "

View File

@ -196,7 +196,8 @@ string const InsetInfo::EditMessage() const
void InsetInfo::Edit(BufferView *bv, int, int, unsigned int) void InsetInfo::Edit(BufferView *bv, int, int, unsigned int)
{ {
static int ow = -1, oh; static int ow = -1;
static int oh;
if (bv->buffer()->isReadonly()) if (bv->buffer()->isReadonly())
WarnReadonly(bv->buffer()->fileName()); WarnReadonly(bv->buffer()->fileName());

View File

@ -1258,7 +1258,7 @@ string const &
LyXTextClassList::NameOfLayout(LyXTextClassList::size_type textclass, LyXTextClassList::NameOfLayout(LyXTextClassList::size_type textclass,
LyXTextClass::size_type layout) const LyXTextClass::size_type layout) const
{ {
static string dummy("dummy"); static string const dummy("dummy");
classlist[textclass].load(); classlist[textclass].load();
if (layout < classlist[textclass].numLayouts()) if (layout < classlist[textclass].numLayouts())
return classlist[textclass][layout].name(); return classlist[textclass][layout].name();
@ -1270,7 +1270,7 @@ LyXTextClassList::NameOfLayout(LyXTextClassList::size_type textclass,
string const & string const &
LyXTextClassList::NameOfClass(LyXTextClassList::size_type number) const LyXTextClassList::NameOfClass(LyXTextClassList::size_type number) const
{ {
static string dummy("dummy"); static string const dummy("dummy");
if (classlist.size() == 0) { if (classlist.size() == 0) {
return dummy; return dummy;
} }
@ -1283,7 +1283,7 @@ LyXTextClassList::NameOfClass(LyXTextClassList::size_type number) const
string const & string const &
LyXTextClassList::LatexnameOfClass(LyXTextClassList::size_type number) const LyXTextClassList::LatexnameOfClass(LyXTextClassList::size_type number) const
{ {
static string dummy("dummy"); static string const dummy("dummy");
classlist[number].load(); classlist[number].load();
if (classlist.size() == 0) { if (classlist.size() == 0) {
return dummy; return dummy;
@ -1297,7 +1297,7 @@ LyXTextClassList::LatexnameOfClass(LyXTextClassList::size_type number) const
string const & string const &
LyXTextClassList::DescOfClass(LyXTextClassList::size_type number) const LyXTextClassList::DescOfClass(LyXTextClassList::size_type number) const
{ {
static string dummy("dummy"); static string const dummy("dummy");
if (classlist.size() == 0) { if (classlist.size() == 0) {
return dummy; return dummy;
} }

View File

@ -1508,7 +1508,7 @@ void LyXFunc::MenuNew(bool fromTemplate)
initpath = trypath; initpath = trypath;
} }
static int newfile_number = 0; static int newfile_number;
string s; string s;
if (lyxrc.new_ask_filename) { if (lyxrc.new_ask_filename) {

View File

@ -685,7 +685,7 @@ InsetFormula::LocalDispatch(BufferView * bv, kb_action action,
bool space_on = false; bool space_on = false;
bool was_selection = mathcursor->Selection(); bool was_selection = mathcursor->Selection();
RESULT result = DISPATCHED; RESULT result = DISPATCHED;
static MathSpaceInset * sp= 0; static MathSpaceInset * sp;
HideInsetCursor(bv); HideInsetCursor(bv);

View File

@ -229,7 +229,7 @@ char LexGetArg(char lf, bool accept_spaces = false)
int yylex(void) int yylex(void)
{ {
static int init_done = 0; static int init_done;
if (!init_done) LexInitCodes(); if (!init_done) LexInitCodes();

View File

@ -22,7 +22,7 @@
extern BufferList bufferlist; extern BufferList bufferlist;
void emergencySave() { void emergencySave() {
static bool didSafe = false; static bool didSafe;
if (didSafe) if (didSafe)
return; return;

View File

@ -466,12 +466,12 @@ int DestroyTmpDir(string const & tmpdir, bool Allfiles)
string const CreateBufferTmpDir(string const & pathfor) string const CreateBufferTmpDir(string const & pathfor)
{ {
static int count = 0; static int count;
static string const tmpdir(pathfor.empty() ? os::getTmpDir() : pathfor); static string const tmpdir(pathfor.empty() ? os::getTmpDir() : pathfor);
// We are in our own directory. Why bother to mangle name? // We are in our own directory. Why bother to mangle name?
// In fact I wrote this code to circumvent a problematic behaviour (bug?) // In fact I wrote this code to circumvent a problematic behaviour (bug?)
// of EMX mkstemp(). // of EMX mkstemp().
string tmpfl = tmpdir + "/lyx_tmpbuf" + tostr(count++); string const tmpfl = tmpdir + "/lyx_tmpbuf" + tostr(count++);
if (lyx::mkdir(tmpfl, 0777)) { if (lyx::mkdir(tmpfl, 0777)) {
WriteFSAlert(_("Error! Couldn't create temporary directory:"), WriteFSAlert(_("Error! Couldn't create temporary directory:"),
tmpdir); tmpdir);

View File

@ -1952,7 +1952,7 @@ void LyXText::charInserted()
{ {
// Here we could call FinishUndo for every 20 characters inserted. // Here we could call FinishUndo for every 20 characters inserted.
// This is from my experience how emacs does it. // This is from my experience how emacs does it.
static unsigned int counter = 0; static unsigned int counter;
if (counter < 20) { if (counter < 20) {
++counter; ++counter;
} else { } else {

View File

@ -344,8 +344,9 @@ bool Trans::isAccentDefined(tex_accent accent, KmodInfo & i) const
string const Trans::process(char c, TransManager & k) string const Trans::process(char c, TransManager & k)
{ {
string dummy("?"); //string dummy("?");
string dt = dummy; //string dt = dummy;
string dt("?");
string const t = Match(static_cast<unsigned char>(c)); string const t = Match(static_cast<unsigned char>(c));
if (t.empty() && c != 0) { if (t.empty() && c != 0) {