Consider the following program:
--- Beginning ---
#include <fltk/Window.h>
#include <fltk/PopupMenu.h>
#include <fltk/Menu.h>
#include <fltk/Item.h>
#include <fltk/ask.h>
#include <fltk/events.h>
#include <fltk/run.h>
#include <stdlib.h>
using namespace fltk;
class MainWindow : public Window {
PopupMenu *menu;
Item *about_item, *exit_item;
Window *win;
static void cb_menu(Widget* w, void* d) {
if (((Menu*)w)->value() == 1)
exit(0);
message("FLTK");
}
public:
MainWindow(int w, int h, char *s = 0): Window(w, h, s) {
begin();
menu = new PopupMenu(0, 0, w, h);
menu->type(PopupMenu::POPUP3);
menu->begin();
about_item = new Item("About clock");
exit_item = new Item("Exit clock");
menu->end();
menu->callback(cb_menu, this);
win = new Window(100, 100);
end();
color(12);
show();
win->show();
}
};
int main(int argc, char **argv) {
MainWindow win(200, 200, "Test");
return run();
}
--- End ---
This window in its begin/end block first creates and defines PopupMenu (menu),
and then it creates one subwindow (win). After compiling and running it, it
behaves as expected, with third mouse button click on main window, menu
appears.
However, if it was subwindow that was first created, followed by menu creation
and definition, like in the following:
--- Beginning ---
#include <fltk/Window.h>
#include <fltk/PopupMenu.h>
#include <fltk/Menu.h>
#include <fltk/Item.h>
#include <fltk/ask.h>
#include <fltk/events.h>
#include <fltk/run.h>
#include <stdlib.h>
using namespace fltk;
class MainWindow : public Window {
PopupMenu *menu;
Item *about_item, *exit_item;
Window *win;
static void cb_menu(Widget* w, void* d) {
if (((Menu*)w)->value() == 1)
exit(0);
message("FLTK");
}
public:
MainWindow(int w, int h, char *s = 0): Window(w, h, s) {
begin();
win = new Window(100, 100);
menu = new PopupMenu(0, 0, w, h);
menu->type(PopupMenu::POPUP3);
menu->begin();
about_item = new Item("About clock");
exit_item = new Item("Exit clock");
menu->end();
menu->callback(cb_menu, this);
end();
color(12);
show();
win->show();
}
};
int main(int argc, char **argv) {
MainWindow win(200, 200, "Test");
return run();
}
--- End ---
then right mouse button click on main window wont bring up the menu!?
_______________________________________________
fltk mailing list
[email protected]
http://lists.easysw.com/mailman/listinfo/fltk