BufferView.[Ch]:

don't provide direct access to WorkArea, use two simple
		acessors haveSelction() and workHeight() instead

  [And the ChangeLog entry, which was in the editor but not saved...]


git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@5173 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
André Pönitz 2002-08-29 13:41:58 +00:00
parent edc55ba120
commit 65e2f0f63d
6 changed files with 63 additions and 41 deletions

View File

@ -86,12 +86,6 @@ LyXScreen & BufferView::screen() const
}
WorkArea & BufferView::workarea() const
{
return pimpl_->workarea();
}
LyXView * BufferView::owner() const
{
return pimpl_->owner_;
@ -937,3 +931,15 @@ Language const * BufferView::getParentLanguage(Inset * inset) const
return text->cursor.par()->getFontSettings(buffer()->params,
text->cursor.pos()).language();
}
void BufferView::haveSelection(bool sel)
{
pimpl_->workarea().haveSelection(sel);
}
int BufferView::workHeight() const
{
return pimpl_->workarea().workHeight();
}

View File

@ -30,7 +30,6 @@ class Language;
class Painter;
class UpdatableInset;
class WordLangTuple;
class WorkArea;
///
class BufferView : boost::noncopyable {
@ -57,8 +56,6 @@ public:
Painter & painter() const;
///
LyXScreen & screen() const;
/// return the work area for this bview
WorkArea & workarea() const;
///
void buffer(Buffer * b);
///
@ -192,6 +189,10 @@ public:
bool dispatch(FuncRequest const & argument);
/// height of a normal line in pixels (zoom factor considered)
int defaultHeight() const;
///
void haveSelection(bool sel);
///
int workHeight() const;
private:
///

View File

@ -1067,18 +1067,6 @@ bool BufferView::Pimpl::dispatch(FuncRequest const & ev)
}
break;
case LFUN_HTMLURL:
case LFUN_URL:
{
InsetCommandParams p;
if (ev.action == LFUN_HTMLURL)
p.setCmdName("htmlurl");
else
p.setCmdName("url");
owner_->getDialogs().createUrl(p.getAsString());
}
break;
// --- accented characters ---------------------------
case LFUN_UMLAUT:

View File

@ -35,8 +35,6 @@ struct BufferView::Pimpl : public boost::signals::trackable {
int xpos, int ypos, int width, int height);
///
Painter & painter() const;
/// return the work area for this bview
WorkArea & workarea() const;
/// return the screen for this bview
LyXScreen & screen() const;
///
@ -142,5 +140,7 @@ private:
Inset * getInsetByCode(Inset::Code code);
///
void MenuInsertLyXFile(string const & filen);
/// our workarea
WorkArea & Pimpl::workarea() const;
};
#endif // BUFFERVIEW_PIMPL_H

View File

@ -4,6 +4,20 @@
* lyxtext.h:
* text2.C: remove unused member number_of_rows
* Makefile.am:
* BufferView2.C: remove file, move contents to...
* BufferView.C: ... here
* BufferView_pimpl.C:
* factory.C: move more inset creation to factory
* vspace.C: avoid direct usage of LyXText, ws changes
* BufferView.[Ch]:
don't provide direct access to WorkArea, use two simple
acessors haveSelction() and workHeight() instead
2002-08-29 John Levon <levon@movementarian.org>
* BufferView_pimpl.C (dispatch): do not continue when

View File

@ -28,7 +28,7 @@
#include "support/lstrings.h"
#include "frontends/LyXView.h"
#include "frontends/screen.h"
#include "frontends/WorkArea.h"
#include "frontends/Dialogs.h"
#include "insets/insetspecialchar.h"
#include "insets/insettext.h"
#include "insets/insetbib.h"
@ -75,7 +75,7 @@ namespace {
}
if (!lt->selection.set())
bv->workarea().haveSelection(false);
bv->haveSelection(false);
bv->switchKeyMap();
}
@ -240,7 +240,7 @@ void LyXText::cursorPrevious(BufferView * bv)
{
if (!cursor.row()->previous()) {
if (first_y > 0) {
int new_y = bv->text->first_y - bv->workarea().workHeight();
int new_y = bv->text->first_y - bv->workHeight();
bv->screen().draw(bv->text, bv, new_y < 0 ? 0 : new_y);
bv->updateScrollbar();
}
@ -260,18 +260,18 @@ void LyXText::cursorPrevious(BufferView * bv)
// as we move the cursor or do something while inside the row (it may
// span several workarea-heights) we'll move to the top again, but this
// is better than just jump down and only display part of the row.
new_y = bv->text->first_y - bv->workarea().workHeight();
new_y = bv->text->first_y - bv->workHeight();
} else {
if (inset_owner) {
new_y = bv->text->cursor.iy()
+ bv->theLockingInset()->insetInInsetY() + y
+ cursor.row()->height()
- bv->workarea().workHeight() + 1;
- bv->workHeight() + 1;
} else {
new_y = cursor.y()
- cursor.row()->baseline()
+ cursor.row()->height()
- bv->workarea().workHeight() + 1;
- bv->workHeight() + 1;
}
}
bv->screen().draw(bv->text, bv, new_y < 0 ? 0 : new_y);
@ -292,15 +292,15 @@ void LyXText::cursorNext(BufferView * bv)
if (!cursor.row()->next()) {
int y = cursor.y() - cursor.row()->baseline() +
cursor.row()->height();
if (y > int(first_y + bv->workarea().workHeight())) {
if (y > int(first_y + bv->workHeight())) {
bv->screen().draw(bv->text, bv,
bv->text->first_y + bv->workarea().workHeight());
bv->text->first_y + bv->workHeight());
bv->updateScrollbar();
}
return;
}
int y = first_y + bv->workarea().workHeight();
int y = first_y + bv->workHeight();
if (inset_owner && !first_y) {
y -= (bv->text->cursor.iy()
- bv->text->first_y
@ -311,7 +311,7 @@ void LyXText::cursorNext(BufferView * bv)
Row * cursorrow = cursor.row();
setCursorFromCoordinates(bv, cursor.x_fix(), y);
// + workarea().workHeight());
// + bv->workHeight());
finishUndo();
int new_y;
@ -321,7 +321,7 @@ void LyXText::cursorNext(BufferView * bv)
// as we move the cursor or do something while inside the row (it may
// span several workarea-heights) we'll move to the top again, but this
// is better than just jump down and only display part of the row.
new_y = bv->text->first_y + bv->workarea().workHeight();
new_y = bv->text->first_y + bv->workHeight();
} else {
if (inset_owner) {
new_y = bv->text->cursor.iy()
@ -336,7 +336,7 @@ void LyXText::cursorNext(BufferView * bv)
LyXCursor cur;
setCursor(bv, cur, cursor.row()->next()->par(),
cursor.row()->next()->pos(), false);
if (cur.y() < int(first_y + bv->workarea().workHeight())) {
if (cur.y() < int(first_y + bv->workHeight())) {
cursorDown(bv, true);
}
}
@ -1111,7 +1111,7 @@ Inset::RESULT LyXText::dispatch(FuncRequest const & cmd)
// this was originally a beforeChange(bv->text), i.e
// the outermost LyXText!
bv->beforeChange(this);
string const clip = bv->workarea().getClipboard();
string const clip = bv->getClipboard();
if (!clip.empty()) {
if (cmd.argument == "paragraph")
insertStringAsParagraphs(bv, clip);
@ -1201,7 +1201,7 @@ Inset::RESULT LyXText::dispatch(FuncRequest const & cmd)
if (bv_owner)
bv->screen().toggleSelection(this, bv, false);
update(bv, false);
bv->workarea().haveSelection(selection.set());
bv->haveSelection(selection.set());
}
break;
@ -1220,7 +1220,7 @@ Inset::RESULT LyXText::dispatch(FuncRequest const & cmd)
selectWord(bv, LyXText::WHOLE_WORD_STRICT);
}
update(bv, false);
bv->workarea().haveSelection(selection.set());
bv->haveSelection(selection.set());
}
break;
@ -1273,7 +1273,7 @@ Inset::RESULT LyXText::dispatch(FuncRequest const & cmd)
#endif
// This is to allow jumping over large insets
if (cursorrow == bv->text->cursor.row()) {
if (cmd.y >= int(bv->workarea().workHeight()))
if (cmd.y >= int(bv->workHeight()))
bv->text->cursorDown(bv, false);
else if (cmd.y < 0)
bv->text->cursorUp(bv, false);
@ -1430,7 +1430,7 @@ Inset::RESULT LyXText::dispatch(FuncRequest const & cmd)
// finish selection
if (cmd.button() == mouse_button::button1)
bv->workarea().haveSelection(selection.set());
bv->haveSelection(selection.set());
bv->switchKeyMap();
bv->owner()->view_state_changed();
@ -1524,7 +1524,7 @@ Inset::RESULT LyXText::dispatch(FuncRequest const & cmd)
cutSelection(bv, false, false);
update(bv);
}
bv->workarea().haveSelection(false);
bv->haveSelection(false);
}
bv->beforeChange(this);
@ -1547,6 +1547,19 @@ Inset::RESULT LyXText::dispatch(FuncRequest const & cmd)
break;
}
case LFUN_HTMLURL: {
InsetCommandParams p("htmlurl");
bv->owner()->getDialogs().createUrl(p.getAsString());
break;
}
case LFUN_URL: {
InsetCommandParams p("url");
bv->owner()->getDialogs().createUrl(p.getAsString());
break;
}
#if 0
case LFUN_INSET_LIST:
case LFUN_INSET_THEOREM: