X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Finsets%2Finsettabular.C;h=703c29742d7df88381a4166160ea3fd6acfcd7c0;hb=c130d5dbfd3f4d4a2721c9be786b7fa45b806aca;hp=2d482028e2c36e121cf68abeb97bbb4444e3e038;hpb=e3052dc18bc13cd4ea91cd5e528246e3d4a4ae12;p=features.git diff --git a/src/insets/insettabular.C b/src/insets/insettabular.C index 2d482028e2..703c29742d 100644 --- a/src/insets/insettabular.C +++ b/src/insets/insettabular.C @@ -34,6 +34,7 @@ #include "LyXView.h" #include "insets/insettext.h" #include "frontends/Dialogs.h" +#include "frontends/Alert.h" #include "debug.h" #include "WorkArea.h" #include "gettext.h" @@ -139,6 +140,7 @@ InsetTabular::InsetTabular(Buffer const & buf, int rows, int columns) clearSelection(); need_update = INIT; in_update = false; + in_reset_pos = false; } @@ -146,7 +148,7 @@ InsetTabular::InsetTabular(InsetTabular const & tab, Buffer const & buf, bool same_id) : UpdatableInset(tab, same_id), buffer(&buf) { - tabular.reset(new LyXTabular(this, *(tab.tabular))); + tabular.reset(new LyXTabular(this, *(tab.tabular), same_id)); the_locking_inset = 0; locked = no_selection = false; oldcell = -1; @@ -154,6 +156,7 @@ InsetTabular::InsetTabular(InsetTabular const & tab, Buffer const & buf, sel_cell_start = sel_cell_end = 0; need_update = INIT; in_update = false; + in_reset_pos = false; } @@ -352,7 +355,7 @@ void InsetTabular::draw(BufferView * bv, LyXFont const & font, int baseline, } i = tabular->row_of_cell(cell); if (the_locking_inset != tabular->GetCellInset(cell)) { - lyxerr[Debug::INSETS] << "ERROR this shouldn't happen\n"; + lyxerr[Debug::INSETTEXT] << "ERROR this shouldn't happen\n"; return; } float dx = nx + tabular->GetBeginningOfTextInCell(cell); @@ -523,7 +526,7 @@ void InsetTabular::edit(BufferView * bv, int x, int y, unsigned int button) UpdatableInset::edit(bv, x, y, button); if (!bv->lockInset(this)) { - lyxerr[Debug::INSETS] << "InsetTabular::Cannot lock inset" << endl; + lyxerr[Debug::INSETTEXT] << "InsetTabular::Cannot lock inset" << endl; return; } locked = true; @@ -544,7 +547,7 @@ void InsetTabular::edit(BufferView * bv, bool front) UpdatableInset::edit(bv, front); if (!bv->lockInset(this)) { - lyxerr[Debug::INSETS] << "InsetTabular::Cannot lock inset" << endl; + lyxerr[Debug::INSETTEXT] << "InsetTabular::Cannot lock inset" << endl; return; } locked = true; @@ -599,24 +602,24 @@ void InsetTabular::updateLocal(BufferView * bv, UpdateCodes what, bool InsetTabular::lockInsetInInset(BufferView * bv, UpdatableInset * inset) { - lyxerr[Debug::INSETS] << "InsetTabular::LockInsetInInset(" + lyxerr[Debug::INSETTEXT] << "InsetTabular::LockInsetInInset(" << inset << "): "; if (!inset) return false; oldcell = -1; if (inset == tabular->GetCellInset(actcell)) { - lyxerr[Debug::INSETS] << "OK" << endl; + lyxerr[Debug::INSETTEXT] << "OK" << endl; the_locking_inset = tabular->GetCellInset(actcell); resetPos(bv); return true; } else if (the_locking_inset && (the_locking_inset == inset)) { - lyxerr[Debug::INSETS] << "OK" << endl; + lyxerr[Debug::INSETTEXT] << "OK" << endl; resetPos(bv); } else if (the_locking_inset) { - lyxerr[Debug::INSETS] << "MAYBE" << endl; + lyxerr[Debug::INSETTEXT] << "MAYBE" << endl; return the_locking_inset->lockInsetInInset(bv, inset); } - lyxerr[Debug::INSETS] << "NOT OK" << endl; + lyxerr[Debug::INSETTEXT] << "NOT OK" << endl; return false; } @@ -1349,6 +1352,12 @@ void InsetTabular::resetPos(BufferView * bv) const { if (!locked || nodraw()) return; +#warning This should be fixed in the right manner (20011128 Jug) + // fast hack to fix infinite repaintings! + if (in_reset_pos) + return; + in_reset_pos = true; + actcol = tabular->column_of_cell(actcell); int cell = 0; @@ -1412,6 +1421,7 @@ void InsetTabular::resetPos(BufferView * bv) const bv->owner()->getDialogs()->updateTabular(inset); oldcell = actcell; } + in_reset_pos = false; } @@ -1825,7 +1835,7 @@ void InsetTabular::tabularFeatures(BufferView * bv, case LyXTabular::MULTICOLUMN: { if (sel_row_start != sel_row_end) { - WriteAlert(_("Impossible Operation!"), + Alert::alert(_("Impossible Operation!"), _("Multicolumns can only be horizontally."), _("Sorry.")); return; @@ -1997,7 +2007,7 @@ int InsetTabular::getMaxWidth(BufferView * bv, cell = actcell; if (tabular->GetCellInset(cell) != inset) { - lyxerr << "Actcell not equal to actual cell!\n"; + lyxerr[Debug::INSETTEXT] << "Actcell not equal to actual cell!\n"; cell = -1; } }