20 |
*/ |
*/ |
21 |
|
|
22 |
|
|
23 |
/* |
/* |
24 |
* Demo showing the interaction with a canvas object. |
* Demo showing the interaction with a canvas object. |
25 |
* |
* |
26 |
* This file is part of xforms package |
* This file is part of xforms package |
27 |
* T.C. Zhao and M. Overmars (1997) |
* T.C. Zhao and M. Overmars (1997) |
58 |
|
|
59 |
static GC canvasGC; |
static GC canvasGC; |
60 |
|
|
61 |
int |
int |
62 |
canvas_expose(FL_OBJECT *ob, Window win, int w, int h, XEvent *ev, void *d) |
canvas_expose(FL_OBJECT *ob, Window win, int w, int h, XEvent *ev, void *d) |
63 |
{ |
{ |
64 |
FD_canvasform *ui = (FD_canvasform *)d; |
FD_canvasform *ui = (FD_canvasform *)d; |
67 |
return 0; |
return 0; |
68 |
} |
} |
69 |
|
|
70 |
int |
int |
71 |
canvas_key(FL_OBJECT *ob, Window win, int w, int h, XEvent *ev, void *d) |
canvas_key(FL_OBJECT *ob, Window win, int w, int h, XEvent *ev, void *d) |
72 |
{ |
{ |
73 |
FD_canvasform *ui = (FD_canvasform *)d; |
FD_canvasform *ui = (FD_canvasform *)d; |
74 |
char buf[128]; |
char buf[128]; |
75 |
sprintf(buf, "KeyPress: keysym=%ld", |
sprintf(buf, "KeyPress: keysym=%ld", |
76 |
XKeycodeToKeysym(fl_display,ev->xkey.keycode, 0)); |
XKeycodeToKeysym(fl_display,ev->xkey.keycode, 0)); |
77 |
fl_addto_browser(ui->br, buf); |
fl_addto_browser(ui->br, buf); |
78 |
return 0; |
return 0; |
79 |
} |
} |
80 |
|
|
81 |
int |
int |
82 |
canvas_but(FL_OBJECT *ob, Window win, int w, int h, XEvent *ev, void *d) |
canvas_but(FL_OBJECT *ob, Window win, int w, int h, XEvent *ev, void *d) |
83 |
{ |
{ |
84 |
FD_canvasform *ui = (FD_canvasform *)d; |
FD_canvasform *ui = (FD_canvasform *)d; |
89 |
return 0; |
return 0; |
90 |
} |
} |
91 |
|
|
92 |
int |
int |
93 |
canvas_misc(FL_OBJECT *ob, Window win, int w, int h, XEvent *ev, void *d) |
canvas_misc(FL_OBJECT *ob, Window win, int w, int h, XEvent *ev, void *d) |
94 |
{ |
{ |
95 |
FD_canvasform *ui = (FD_canvasform *)d; |
FD_canvasform *ui = (FD_canvasform *)d; |
96 |
fl_addto_browser(ui->br, |
fl_addto_browser(ui->br, |
97 |
ev->xcrossing.type == EnterNotify ? "Enter canvas":"Leave canvas"); |
ev->xcrossing.type == EnterNotify ? "Enter canvas":"Leave canvas"); |
98 |
return 0; |
return 0; |
99 |
} |
} |
158 |
} |
} |
159 |
|
|
160 |
void misc_cb(FL_OBJECT *ob, long data) |
void misc_cb(FL_OBJECT *ob, long data) |
161 |
{ |
{ |
162 |
if(fl_get_button(ob)) |
if(fl_get_button(ob)) |
163 |
{ |
{ |
164 |
fl_add_canvas_handler(fd_canvasform->canvas, EnterNotify, |
fl_add_canvas_handler(fd_canvasform->canvas, EnterNotify, |
165 |
canvas_misc, fd_canvasform); |
canvas_misc, fd_canvasform); |
166 |
fl_add_canvas_handler(fd_canvasform->canvas, LeaveNotify, |
fl_add_canvas_handler(fd_canvasform->canvas, LeaveNotify, |
167 |
canvas_misc, fd_canvasform); |
canvas_misc, fd_canvasform); |
168 |
} |
} |
169 |
else |
else |
170 |
{ |
{ |
171 |
fl_remove_canvas_handler(fd_canvasform->canvas, |
fl_remove_canvas_handler(fd_canvasform->canvas, |
172 |
EnterNotify, canvas_misc); |
EnterNotify, canvas_misc); |
173 |
fl_remove_canvas_handler(fd_canvasform->canvas, |
fl_remove_canvas_handler(fd_canvasform->canvas, |
174 |
LeaveNotify, canvas_misc); |
LeaveNotify, canvas_misc); |
175 |
} |
} |
176 |
} |
} |
197 |
OwnerGrabButtonMask); |
OwnerGrabButtonMask); |
198 |
#endif |
#endif |
199 |
|
|
200 |
while (fl_do_forms() != fd_canvasform->done) |
while (fl_do_forms() != fd_canvasform->done) |
201 |
; |
; |
202 |
|
|
203 |
return 0; |
return 0; |