Add dragging to table widget

pull/2/head
Stelios Bounanos 2009-06-30 16:26:08 +01:00
rodzic 757a8f8d08
commit 88bedac61f
1 zmienionych plików z 23 dodań i 3 usunięć

Wyświetl plik

@ -406,7 +406,7 @@ Fl_Align Table::columnAlign(int column) const {
}
void Table::columnAlign(int column, Fl_Align align) {
if ((column < 0) && (column >= nCols))
if ((column < 0) || (column >= nCols))
return;
/* NOT REACHED */
@ -1052,7 +1052,8 @@ void Table::GotoRow(int n)
*/
int Table::handle(int event) {
int ret = 0;
int row, column, resize;
static int row, prev_row;
int column, resize;
if (event != FL_KEYDOWN)
ret = Fl_Group::handle(event);
@ -1127,6 +1128,8 @@ int Table::handle(int event) {
Fl::event_y());
if (m != NULL)
m->do_callback(this, m->user_data());
ret = 1;
break;
}
@ -1138,6 +1141,8 @@ int Table::handle(int event) {
}
else if (changed && (when() & FL_WHEN_CHANGED))
do_callback();
else if (!changed && (when() & FL_WHEN_NOT_CHANGED))
do_callback();
ret = 1;
break;
} // switch(row)
@ -1147,7 +1152,7 @@ int Table::handle(int event) {
/*
* DRAG event
*/
case FL_DRAG:
case FL_DRAG:
// Resizing...
if (resizing > -1 ) {
int offset = dragX - Fl::event_x();
@ -1166,6 +1171,21 @@ int Table::handle(int event) {
}
ret = 1;
}
else {
prev_row = row;
where(Fl::event_x(), Fl::event_y(), row, column, resize);
if (row < 0 || pushed != -1) {
ret = 1;
break;
}
if (prev_row != row) {
selected = row;
damage(DAMAGE_ROWS);
take_focus();
if (when() & FL_WHEN_CHANGED)
do_callback();
}
}
break;