#include "vspace.h"
#include "lyx_gui_misc.h"
#include "BufferView.h"
-#include "lyxscreen.h"
#include "gettext.h"
#include "lyxtext.h"
#include "layout.h"
+#include "insets/lyxinset.h"
-extern void BeforeChange();
// Prototypes
extern FD_form_table_options * fd_form_table_options;
extern FD_form_table_extra * fd_form_table_extra;
extern BufferView * current_view;
+extern bool UpdateLayoutTabular(int);
+extern void TabularOptionsCB(FL_OBJECT * ob, long l);
+extern void SetPWidthTabularCB(FL_OBJECT * ob, long l);
+
+
static int Confirmed = false;
static int ActCell;
static int extra_multicol_cursor_x;
// Joacim
+#define IS_TABULAR (current_view->the_locking_inset && \
+ current_view->the_locking_inset->GetFirstLockingInsetOfType(Inset::TABULAR_CODE))
bool UpdateLayoutTable(int flag)
{
bool update = true;
- if (!current_view->getScreen() || !current_view->available())
+ if (!current_view->available())
update = false;
- if (update && current_view->text->cursor.par->table) {
+ if (update && current_view->text->cursor.par()->table) {
char buf[12];
string pwidth, special;
- LyXTable * table = current_view->text->cursor.par->table;
+ LyXTable * table = current_view->text->cursor.par()->table;
int cell = current_view->text->
- NumberOfCell(current_view->text->cursor.par,
- current_view->text->cursor.pos);
+ NumberOfCell(current_view->text->cursor.par(),
+ current_view->text->cursor.pos());
ActCell = cell;
int column = table->column_of_cell(cell)+1;
fl_set_object_label(fd_form_table_options->text_warning, "");
}
}
-
void MenuLayoutTable(int flag)
{
if (UpdateLayoutTable(flag)) {
}
-void TableOptionsCB(FL_OBJECT * ob, long)
+void TableOptionsCB(FL_OBJECT * ob, long l)
{
+ if (IS_TABULAR) {
+ TabularOptionsCB(ob, l);
+ return;
+ }
+
LyXTable * table = 0;
int s, num = 0;
string special, str;
if (!current_view->available()
- || !(table = current_view->text->cursor.par->table)) {
+ || !(table = current_view->text->cursor.par()->table)) {
MenuLayoutTable(0);
return;
}
int cell = current_view->text->
- NumberOfCell(current_view->text->cursor.par,
- current_view->text->cursor.pos);
+ NumberOfCell(current_view->text->cursor.par(),
+ current_view->text->cursor.pos());
if (ActCell != cell) {
MenuLayoutTable(0);
fl_set_object_label(fd_form_table_options->text_warning,
} else
return;
if (current_view->available()) {
- current_view->getScreen()->HideCursor();
+ current_view->hideCursor();
if (!current_view->text->selection){
- BeforeChange();
- current_view->update(-2);
+ current_view->beforeChange();
+ current_view->update(BufferView::SELECT|BufferView::FITCUR);
}
if ((num == LyXTable::SET_SPECIAL_COLUMN) ||
(num == LyXTable::SET_SPECIAL_MULTI))
- current_view->text->TableFeatures(num, special);
+ current_view->text->TableFeatures(current_view, num, special);
else
- current_view->text->TableFeatures(num);
- current_view->update(1);
+ current_view->text->TableFeatures(current_view, num);
+ current_view->update(BufferView::SELECT|BufferView::FITCUR|BufferView::CHANGE);
}
if (num == LyXTable::DELETE_TABLE) {
fl_set_focus_object(fd_form_table_options->form_table_options,
return;
}
-void SetPWidthCB(FL_OBJECT * ob, long)
+void SetPWidthCB(FL_OBJECT * ob, long l)
{
+ if (IS_TABULAR) {
+ SetPWidthTabularCB(ob, l);
+ return;
+ }
+
fl_set_object_label(fd_form_table_options->text_warning, "");
Confirmed = false;
if (ob == fd_form_table_options->input_column_width) {
return;
}
if (current_view->available()){
- current_view->getScreen()->HideCursor();
+ current_view->hideCursor();
if (!current_view->text->selection) {
- BeforeChange();
- current_view->update(-2);
+ current_view->beforeChange();
+ current_view->update(BufferView::SELECT|BufferView::FITCUR);
}
- current_view->text->TableFeatures(LyXTable::SET_PWIDTH, str);
- current_view->update(1);
+ current_view->text->TableFeatures(current_view, LyXTable::SET_PWIDTH, str);
+ current_view->update(BufferView::SELECT|BufferView::FITCUR|BufferView::CHANGE);
}
MenuLayoutTable(0); // update for alignment
}