X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Finsets%2Finsetfloat.C;h=e31523429f107f9da5c754b0923f0d5a92981d9b;hb=4a5b7a5952ad2381fcdf4830511293e184c7c5a1;hp=1d22dce160550e8b0e60003c6e071ca96a68efaa;hpb=e574fa4a0d926b5f313f0f17989daa995582f439;p=lyx.git diff --git a/src/insets/insetfloat.C b/src/insets/insetfloat.C index 1d22dce160..e31523429f 100644 --- a/src/insets/insetfloat.C +++ b/src/insets/insetfloat.C @@ -20,11 +20,14 @@ #include "lyxtext.h" #include "insets/insettext.h" #include "support/LOstream.h" +#include "support/lstrings.h" #include "FloatList.h" #include "LaTeXFeatures.h" #include "debug.h" #include "Floating.h" #include "buffer.h" +#include "LyXView.h" +#include "frontends/Dialogs.h" using std::ostream; using std::endl; @@ -118,6 +121,12 @@ InsetFloat::InsetFloat(InsetFloat const & in, bool same_id) {} +InsetFloat::~InsetFloat() +{ + hideDialog(); +} + + void InsetFloat::write(Buffer const * buf, ostream & os) const { os << "Float " // getInsetName() @@ -141,12 +150,12 @@ void InsetFloat::write(Buffer const * buf, ostream & os) const void InsetFloat::read(Buffer const * buf, LyXLex & lex) { - if (lex.IsOK()) { + if (lex.isOK()) { lex.next(); - string token = lex.GetString(); + string token = lex.getString(); if (token == "placement") { lex.next(); - floatPlacement_ = lex.GetString(); + floatPlacement_ = lex.getString(); } else { lyxerr << "InsetFloat::Read: Missing placement!" << endl; @@ -154,10 +163,10 @@ void InsetFloat::read(Buffer const * buf, LyXLex & lex) lex.pushToken(token); } lex.next(); - token = lex.GetString(); + token = lex.getString(); if (token == "wide") { lex.next(); - string const tmptoken = lex.GetString(); + string const tmptoken = lex.getString(); if (tmptoken == "true") wide(true); else @@ -175,7 +184,11 @@ void InsetFloat::read(Buffer const * buf, LyXLex & lex) void InsetFloat::validate(LaTeXFeatures & features) const { - features.usedFloats.insert(floatType_); + if (contains(placement(), "H")) { + features.require("float"); + } + + features.useFloat(floatType_); InsetCollapsable::validate(features); } @@ -227,10 +240,10 @@ int InsetFloat::latex(Buffer const * buf, } -int InsetFloat::docBook(Buffer const * buf, ostream & os) const +int InsetFloat::docbook(Buffer const * buf, ostream & os) const { os << "<" << floatType_ << ">"; - int const i = inset.docBook(buf, os); + int const i = inset.docbook(buf, os); os << ""; return i; @@ -249,20 +262,12 @@ bool InsetFloat::insetAllowed(Inset::Code code) const } -void InsetFloat::insetButtonRelease(BufferView * bv, int x, int y, int button) +bool InsetFloat::showInsetDialog(BufferView * bv) const { - if (x >= top_x - && x < button_length - && y >= button_top_y - && y < button_bottom_y - && button == 3) { - // This obviously need to change. - lyxerr << "InsetFloat: Let's edit this floats parameters!" - << endl; - //bv->owner()->getDialogs()->showFloat(this); - } else { - InsetCollapsable::insetButtonRelease(bv, x, y, button); + if (!inset.showInsetDialog(bv)) { + bv->owner()->getDialogs()->showFloat(const_cast(this)); } + return true; } @@ -274,11 +279,8 @@ string const & InsetFloat::type() const void InsetFloat::placement(string const & p) { - // Here we should only allow the placement to be set + // FIX: Here we should only allow the placement to be set // if a valid value. -#ifdef WITH_WARNINGS -#warning FIX! -#endif floatPlacement_ = p; }