FWIW, here's a (compilable) test program similar to your
code snippet I was using to test your issue.
Note the "<--" comment below, as well as the additional
calls to col_width_all() and row_height_all(), which I'd
recommend you use, so that the table knows the width/height
of your child widgets.
-----------------------------------------------------------------
#include <stdio.h>
#include <FL/Fl.H>
#include <FL/Fl_Double_Window.H>
#include <FL/Fl_Button.H>
#include <FL/Fl_Table.H>
class MyTable : public Fl_Table {
protected:
void draw_cell(TableContext context, int R=0, int C=0, int X=0, int Y=0, int
W=0, int H=0) {
switch ( context ) {
case CONTEXT_STARTPAGE:
break;
case CONTEXT_RC_RESIZE: {
int X, Y, W, H;
int index = 0;
for ( int r = 0; r<rows(); r++ ) {
for ( int c = 0; c<cols(); c++ ) {
if ( index >= children() ) break;
find_cell(CONTEXT_TABLE, r, c, X, Y, W, H);
child(index++)->resize(X,Y,W,H);
}
}
init_sizes(); // tell group children resized
return;
}
case CONTEXT_CELL:
return; // fltk handles drawing the widgets
default:
return;
}
}
public:
MyTable(int x, int y, int w, int h, const char *l=0) : Fl_Table(x,y,w,h,l) {
end();
}
~MyTable() { }
};
int main() {
Fl_Double_Window win(800, 600, "Window");
win.end();
MyTable *t = new MyTable(400, 0, 400, 600);
t->end();
win.add(t);
t->cols(2);
t->rows(10);
t->col_width_all(200); // set column widths
t->row_height_all(25); // set row heights
for ( int c = 0; c < t->cols(); c++ ) {
for ( int r = 0; r < t->rows(); r++ ) {
int X,Y,W,H;
W = t->col_width(c);
H = t->row_height(r);
X = t->x() + (c * W);
Y = t->y() + (r * H);
Fl_Button *b = new Fl_Button(X, Y, W, H, "Table Widget");
t->add(b);
}
}
t->show(); // <-- IF ABOVE PATCH IS APPLIED, CAN COMMENT THIS OUT
win.resizable(t);
win.show();
return(Fl::run());
}
_______________________________________________
fltk mailing list
[email protected]
http://lists.easysw.com/mailman/listinfo/fltk