Mercurial > repos > rhope
comparison syl_window.cpp @ 0:76568becd6d6
Rhope Alpha 2a source import
author | Mike Pavone <pavone@retrodev.com> |
---|---|
date | Tue, 28 Apr 2009 23:06:07 +0000 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:76568becd6d6 |
---|---|
1 #include <util/application.h> | |
2 #include <util/message.h> | |
3 #include <gui/button.h> | |
4 #include <gui/textview.h> | |
5 #include <gui/control.h> | |
6 #include <gui/checkbox.h> | |
7 #include <gui/dropdownmenu.h> | |
8 #include <atheos/threads.h> | |
9 #include <unistd.h> | |
10 #include <stdlib.h> | |
11 #include <string.h> | |
12 #include "syl_window.h" | |
13 #include "structs.h" | |
14 #include "debugmacros.h" | |
15 #include "syl_generic.h" | |
16 | |
17 os::Application *app; | |
18 | |
19 extern "C" { | |
20 | |
21 | |
22 void app_thread(void * param) | |
23 { | |
24 DEBUGPUTS("Before app->Run()\n"); | |
25 app->Run(); | |
26 DEBUGPUTS("After app->Run()\n"); | |
27 } | |
28 | |
29 //VIS_CRITICAL_SECTION_EXTERN(app_lock) | |
30 extern short app_lock; | |
31 | |
32 void check_create_app() | |
33 { | |
34 VIS_EnterCriticalSection(app_lock); | |
35 if(!app) | |
36 { | |
37 | |
38 app = new os::Application("mime type goes here"); | |
39 resume_thread(spawn_thread("vis_app", (void *)app_thread, 1, 0, NULL)); | |
40 DEBUGPUTS("Created application object\n"); | |
41 } | |
42 VIS_LeaveCriticalSection(app_lock); | |
43 } | |
44 | |
45 int vis_window_get_value(datum ** inputlist, queue_entry * worker_entry) | |
46 { | |
47 datum * output = NULL, *name; | |
48 os::String val; | |
49 os::Control * control = NULL; | |
50 os::DropdownMenu * drop; | |
51 vis_window_shown * window = (vis_window_shown *)(inputlist[0]->c.generic.data); | |
52 name = add_ref(inputlist[1]); | |
53 inputlist[2] = inputlist[1]; | |
54 | |
55 DEBUGPUTS("Entering window lock\n"); | |
56 VIS_EnterCriticalSection(window->lock); | |
57 inputlist[1] = add_ref(window->widget_types); | |
58 vis_dict_index(inputlist+1, worker_entry); | |
59 if(inputlist[1]) | |
60 { | |
61 switch(inputlist[1]->c.integers.num_a) | |
62 { | |
63 case BUILTIN_TYPE_INPUTBOX: | |
64 control = (os::Control *)(window->wind->FindView((char *)(name->c.generic.data))); | |
65 if(control) | |
66 { | |
67 DEBUGPUTS("Before GetValue\n"); | |
68 val = control->GetValue().AsString(); | |
69 output = make_string(val.c_str(), val.CountChars(), worker_entry->instance->def->prog); | |
70 } | |
71 break; | |
72 case BUILTIN_TYPE_CHECKBOX: | |
73 control = (os::Control *)(window->wind->FindView((char *)(name->c.generic.data))); | |
74 if(control) | |
75 { | |
76 output = new_datum(BUILTIN_TYPE_YESNO, 2, 0, worker_entry->instance->def->prog); | |
77 output->c.integers.num_a = control->GetValue().AsBool(); | |
78 } | |
79 break; | |
80 case BUILTIN_TYPE_DROPDOWN: | |
81 drop = (os::DropdownMenu *)(window->wind->FindView((char *)(name->c.generic.data))); | |
82 if(drop) | |
83 { | |
84 val = drop->GetCurrentString(); | |
85 output = make_string(val.c_str(), val.CountChars(), worker_entry->instance->def->prog); | |
86 } | |
87 break; | |
88 default: | |
89 printf("Unsupported widget type %d for Get Value\n", inputlist[1]->c.integers.num_a); | |
90 break; | |
91 } | |
92 } | |
93 | |
94 VIS_LeaveCriticalSection(window->lock); | |
95 DEBUGPUTS("Leaving window lock\n"); | |
96 DEBUGPRINTF("window->wind: %X\n", window->wind); | |
97 DEBUGPRINTF("window->title: %X\n", window->title); | |
98 release_ref(inputlist[0]); | |
99 release_ref(inputlist[1]); | |
100 release_ref(name); | |
101 inputlist[0] = output; | |
102 return 0; | |
103 } | |
104 | |
105 int vis_window_set_value(datum ** inputlist, queue_entry * worker_entry) | |
106 { | |
107 datum *name, *value; | |
108 worker_def * converter; | |
109 os::String val; | |
110 os::Control * control = NULL; | |
111 os::DropdownMenu * drop; | |
112 vis_window_shown * window = (vis_window_shown *)(inputlist[0]->c.generic.data); | |
113 name = add_ref(inputlist[1]); | |
114 value = inputlist[2]; | |
115 inputlist[2] = inputlist[1]; | |
116 | |
117 DEBUGPUTS("Entering window lock\n"); | |
118 VIS_EnterCriticalSection(window->lock); | |
119 inputlist[1] = add_ref(window->widget_types); | |
120 vis_dict_index(inputlist+1, worker_entry); | |
121 if(inputlist[1]) | |
122 { | |
123 switch(inputlist[1]->c.integers.num_a) | |
124 { | |
125 case BUILTIN_TYPE_INPUTBOX: | |
126 control = (os::Control *)(window->wind->FindView((char *)(name->c.generic.data))); | |
127 if(control) | |
128 { | |
129 if(value->company->type_id != BUILTIN_TYPE_STRING) | |
130 { | |
131 converter = find_converter_method(BUILTIN_TYPE_STRING, value->company->type_id, worker_entry->instance->def->prog); | |
132 if(!converter) | |
133 { | |
134 if(worker_entry->instance) { | |
135 ERRORPRINTF("Error: Needed conversion from %s to %s for input %d of %s in worker %s\n", value->company->name, worker_entry->instance->def->prog->companylist[BUILTIN_TYPE_STRING].name, 2, "Set Value@Screen Window", worker_entry->instance->def->name); | |
136 } else { | |
137 ERRORPRINTF("Error: Needed conversion from %s to %s for input %d of %s\n", value->company->name, worker_entry->instance->def->prog->companylist[BUILTIN_TYPE_STRING].name, 2, "Set Value@Screen Window"); | |
138 } | |
139 execute_active = FALSE; | |
140 VIS_PROFILE_END(PROF_PROCESS_WORKER); | |
141 return -3; | |
142 } | |
143 ((worker_impl)(converter->implement_func))(&value, worker_entry); | |
144 } | |
145 control->SetValue(os::String((char *)(value->c.generic.data)), false); | |
146 } | |
147 break; | |
148 case BUILTIN_TYPE_CHECKBOX: | |
149 control = (os::Control *)(window->wind->FindView((char *)(name->c.generic.data))); | |
150 if(control) | |
151 { | |
152 if(value->company->type_id != BUILTIN_TYPE_YESNO) | |
153 { | |
154 converter = find_converter_method(BUILTIN_TYPE_YESNO, value->company->type_id, worker_entry->instance->def->prog); | |
155 if(!converter) | |
156 { | |
157 if(worker_entry->instance) { | |
158 ERRORPRINTF("Error: Needed conversion from %s to %s for input %d of %s in worker %s\n", value->company->name, worker_entry->instance->def->prog->companylist[BUILTIN_TYPE_YESNO].name, 2, "Set Value@Screen Window", worker_entry->instance->def->name); | |
159 } else { | |
160 ERRORPRINTF("Error: Needed conversion from %s to %s for input %d of %s\n", value->company->name, worker_entry->instance->def->prog->companylist[BUILTIN_TYPE_YESNO].name, 2, "Set Value@Screen Window"); | |
161 } | |
162 execute_active = FALSE; | |
163 VIS_PROFILE_END(PROF_PROCESS_WORKER); | |
164 return -3; | |
165 } | |
166 ((worker_impl)(converter->implement_func))(&value, worker_entry); | |
167 } | |
168 control->SetValue((bool)(value->c.integers.num_a), false); | |
169 } | |
170 break; | |
171 case BUILTIN_TYPE_DROPDOWN: | |
172 drop = (os::DropdownMenu *)(window->wind->FindView((char *)(name->c.generic.data))); | |
173 if(drop) | |
174 { | |
175 if(value->company->type_id != BUILTIN_TYPE_STRING) | |
176 { | |
177 converter = find_converter_method(BUILTIN_TYPE_STRING, value->company->type_id, worker_entry->instance->def->prog); | |
178 if(!converter) | |
179 { | |
180 if(worker_entry->instance) { | |
181 ERRORPRINTF("Error: Needed conversion from %s to %s for input %d of %s in worker %s\n", value->company->name, worker_entry->instance->def->prog->companylist[BUILTIN_TYPE_STRING].name, 2, "Set Value@Screen Window", worker_entry->instance->def->name); | |
182 } else { | |
183 ERRORPRINTF("Error: Needed conversion from %s to %s for input %d of %s\n", value->company->name, worker_entry->instance->def->prog->companylist[BUILTIN_TYPE_STRING].name, 2, "Set Value@Screen Window"); | |
184 } | |
185 execute_active = FALSE; | |
186 VIS_PROFILE_END(PROF_PROCESS_WORKER); | |
187 return -3; | |
188 } | |
189 ((worker_impl)(converter->implement_func))(&value, worker_entry); | |
190 } | |
191 drop->SetCurrentString(os::String((char *)(value->c.generic.data))); | |
192 } | |
193 break; | |
194 default: | |
195 printf("Unsupported widget type %d for Get Value\n", inputlist[1]->c.integers.num_a); | |
196 break; | |
197 } | |
198 } | |
199 | |
200 VIS_LeaveCriticalSection(window->lock); | |
201 | |
202 release_ref(inputlist[1]); | |
203 release_ref(value); | |
204 return 0; | |
205 } | |
206 | |
207 os::Message * handler_widget_to_window(vis_widget * widget, vis_window_shown * window_show, char * handler_name, queue_entry * entry, bool make_message) | |
208 { | |
209 datum * params[3]; | |
210 params[0] = add_ref(widget->handler_dict); | |
211 params[1] = make_string(handler_name, -1, entry->instance->def->prog); | |
212 DEBUGPUTS("Looking up click handler\n"); | |
213 vis_dict_index(params, entry); | |
214 //if no handler is found, make sure to release output 2 | |
215 if(params[1]) | |
216 release_ref(params[1]); | |
217 if(params[0] || !make_message) | |
218 { | |
219 DEBUGPRINTF("Appending %X to handler list\n", params[0]); | |
220 params[1] = params[0]; | |
221 params[0] = window_show->handler_list; | |
222 vis_list_append(params, NULL); | |
223 window_show->handler_list = params[0]; | |
224 if(make_message) | |
225 return new os::Message(window_show->next_msg_code++); | |
226 } | |
227 return NULL; | |
228 } | |
229 | |
230 void add_widget_shared(vis_window_shown * window_show, datum * widget_datum, char * name, double xpos, double ypos, queue_entry * worker_entry, os::View * parent_view = NULL) | |
231 { | |
232 datum * index; | |
233 os::View * widget_view; | |
234 os::TextView * text_view; | |
235 os::DropdownMenu * drop_view; | |
236 os::Message * msg; | |
237 vis_widget * widget; | |
238 datum * params[3]; | |
239 params[0] = window_show->widget_types; | |
240 params[1] = make_string(name, -1, worker_entry->instance->def->prog); | |
241 params[2] = new_datum(BUILTIN_TYPE_WHOLE, 2, 0, worker_entry->instance->def->prog); | |
242 params[2]->c.integers.num_a = widget_datum->company->type_id; | |
243 vis_dict_set(params, worker_entry); | |
244 window_show->widget_types = params[0]; | |
245 widget = (vis_widget *)(widget_datum->c.generic.data); | |
246 DEBUGPUTS("Instantiating OS native widget object\n"); | |
247 switch(widget_datum->company->type_id) | |
248 { | |
249 case BUILTIN_TYPE_BUTTON: | |
250 DEBUGPUTS("new os::Button()\n"); | |
251 widget_view = new os::Button( | |
252 os::Rect( | |
253 xpos, ypos, | |
254 xpos+widget->width, ypos+widget->height | |
255 ), | |
256 name, | |
257 (char *)(widget->label->c.generic.data), | |
258 new os::Message(window_show->next_msg_code++) | |
259 ); | |
260 /*params[0] = add_ref(widget->handler_dict); | |
261 params[1] = new_datum(BUILTIN_TYPE_STRING, 1, 6, worker_entry->instance->def->prog);//click | |
262 strcpy((char *)(params[1]->c.generic.data), "click"); | |
263 DEBUGPUTS("Looking up click handler\n"); | |
264 vis_dict_index(params, worker_entry); | |
265 if(params[1]) | |
266 release_ref(params[1]); | |
267 DEBUGPRINTF("Appending %X to handler list\n", params[0]); | |
268 params[1] = params[0]; | |
269 params[0] = window_show->handler_list; | |
270 vis_list_append(params, worker_entry); | |
271 window_show->handler_list = params[0];*/ | |
272 handler_widget_to_window(widget, window_show, "click", worker_entry, false); | |
273 break; | |
274 case BUILTIN_TYPE_INPUTBOX: | |
275 text_view = new os::TextView( | |
276 os::Rect( | |
277 xpos, ypos, | |
278 xpos+widget->width, ypos+widget->height | |
279 ), | |
280 name, | |
281 (char *)(widget->value->c.generic.data) | |
282 ); | |
283 switch(widget->flags) | |
284 { | |
285 case 1: | |
286 text_view->SetMultiLine(); | |
287 break; | |
288 case 2: | |
289 text_view->SetNumeric(true); | |
290 break; | |
291 case 3: | |
292 text_view->SetPasswordMode(); | |
293 break; | |
294 case 4: | |
295 text_view->SetReadOnly(); | |
296 break; | |
297 default: | |
298 break; | |
299 } | |
300 widget_view = text_view; | |
301 break; | |
302 case BUILTIN_TYPE_CUSTOM_WIDGET: | |
303 DEBUGPUTS("Creating custom widget\n"); | |
304 widget_view = new GenericView( | |
305 os::Rect( | |
306 xpos, ypos, | |
307 xpos+widget->width, ypos+widget->height | |
308 ), | |
309 name, | |
310 add_ref(widget_datum), | |
311 &(window_show->instance)); | |
312 DEBUGPRINTF("Widget view: %X\n", widget_view); | |
313 break; | |
314 case BUILTIN_TYPE_CHECKBOX: | |
315 widget_view = new os::CheckBox( | |
316 os::Rect( | |
317 xpos, ypos, | |
318 xpos+widget->width, ypos+widget->height | |
319 ), | |
320 name, | |
321 (char *)(widget->label->c.generic.data), | |
322 new os::Message(window_show->next_msg_code++) | |
323 ); | |
324 handler_widget_to_window(widget, window_show, "click", worker_entry, false); | |
325 break; | |
326 case BUILTIN_TYPE_DROPDOWN: | |
327 drop_view = new os::DropdownMenu( | |
328 os::Rect( | |
329 xpos, ypos, | |
330 xpos+widget->width, ypos+widget->height | |
331 ), | |
332 name | |
333 ); | |
334 params[0] = add_ref(widget->label); | |
335 vis_list_first(params, worker_entry); | |
336 index = params[0]; | |
337 while(index) | |
338 { | |
339 params[1] = add_ref(index); | |
340 params[0] = add_ref(widget->label); | |
341 vis_list_index(params, worker_entry); | |
342 if(params[0] && params[0]->company->type_id == BUILTIN_TYPE_STRING) | |
343 drop_view->AppendItem((char *)(params[0]->c.generic.data)); | |
344 params[1] = index; | |
345 params[0] = add_ref(widget->label); | |
346 vis_list_next(params, worker_entry); | |
347 index = params[0]; | |
348 } | |
349 release_ref(params[1]); | |
350 if(widget->selected_index >= 0) | |
351 drop_view->SetSelection(widget->selected_index, false); | |
352 else if(widget->value && widget->value->company->type_id == BUILTIN_TYPE_STRING) | |
353 drop_view->SetCurrentString((char *)(widget->value->c.generic.data)); | |
354 drop_view->SetSendIntermediateMsg(true); | |
355 msg = handler_widget_to_window(widget, window_show, "change", worker_entry, true); | |
356 if(msg) | |
357 drop_view->SetEditMessage(msg); | |
358 msg = handler_widget_to_window(widget, window_show, "select", worker_entry, true); | |
359 if(msg) | |
360 drop_view->SetSelectionMessage(msg); | |
361 drop_view->SetTarget(window_show->wind); | |
362 widget_view = drop_view; | |
363 break; | |
364 default: | |
365 //Do error crap here | |
366 break; | |
367 } | |
368 if(parent_view) { | |
369 //widget_view->SetFlags(widget_view->GetFlags() | os::WID_TRANSPARENT); | |
370 parent_view->AddChild(widget_view); | |
371 } else { | |
372 DEBUGPUTS("Adding OS native object to window\n"); | |
373 window_show->wind->AddChild(widget_view); | |
374 } | |
375 | |
376 } | |
377 | |
378 int vis_window_shown_addwidget(datum ** inputlist, queue_entry * worker_entry) | |
379 { | |
380 vis_window_shown * window = (vis_window_shown *)(inputlist[0]->c.generic.data); | |
381 window->wind->Lock(); | |
382 add_widget_shared(window, inputlist[2], (char *)(inputlist[1]->c.generic.data), inputlist[3]->c.real, inputlist[4]->c.real, worker_entry, NULL); | |
383 window->wind->Unlock(); | |
384 release_ref(inputlist[1]); | |
385 release_ref(inputlist[2]); | |
386 release_ref(inputlist[3]); | |
387 release_ref(inputlist[4]); | |
388 return 0; | |
389 } | |
390 | |
391 int vis_window_show(datum ** inputlist, queue_entry * worker_entry) | |
392 { | |
393 vis_window * window = (vis_window *)(inputlist[0]->c.generic.data); | |
394 vis_window_shown * window_show; | |
395 list_data * list; | |
396 int i; | |
397 datum * params[2]; | |
398 double xpos, ypos; | |
399 datum * widget_datum; | |
400 vis_widget * widget; | |
401 datum * show_datum = new_datum(BUILTIN_TYPE_WINDOW_SHOWN, 1, sizeof(vis_window_shown), worker_entry->instance->def->prog); | |
402 window_show = (vis_window_shown *)(show_datum->c.generic.data); | |
403 window_show->title = add_ref(window->title); | |
404 window_show->width = window->width; | |
405 window_show->height = window->height; | |
406 window_show->xpos = inputlist[1]->c.real; | |
407 release_ref(inputlist[1]); | |
408 window_show->ypos = inputlist[2]->c.real; | |
409 release_ref(inputlist[2]); | |
410 window_show->is_open = TRUE; | |
411 window_show->wait_entry = NULL; | |
412 window_show->next_msg_code = 0; | |
413 window_show->instance.def = worker_entry->instance->def; | |
414 window_show->widget_types = create_dict(worker_entry->instance->def->prog); | |
415 | |
416 check_create_app(); | |
417 VIS_InitializeCriticalSection(window_show->lock); | |
418 window_show->wind = new os_window(add_ref(show_datum)); | |
419 | |
420 window_show->handler_list = create_list(worker_entry->instance->def->prog); | |
421 list = (list_data *)(window->id_list->c.generic.data); | |
422 for(i = 0; i < list->num_entries; ++i) | |
423 { | |
424 DEBUGPRINTF("Retrieving widget %d\n", i); | |
425 params[0] = add_ref(window->widget_dict); | |
426 params[1] = add_ref(list->entries[i]); | |
427 vis_dict_index(params, NULL); | |
428 widget_datum = params[0]; | |
429 DEBUGPRINTF("Retrieving xpos for widget: %d\n", i); | |
430 params[0] = add_ref(window->widget_xpos); | |
431 params[1] = add_ref(list->entries[i]); | |
432 DEBUGPUTS("Calling vis_dict_index(params, NULL) for xpos\n"); | |
433 vis_dict_index(params, NULL); | |
434 DEBUGPUTS("After vis_dict_index\n"); | |
435 xpos = params[0]->c.real; | |
436 DEBUGPUTS("Releasing xpos datum\n"); | |
437 release_ref(params[0]); | |
438 DEBUGPRINTF("Retrieving ypos for widget: %d\n", i); | |
439 params[0] = add_ref(window->widget_ypos); | |
440 params[1] = add_ref(list->entries[i]); | |
441 DEBUGPUTS("Calling vis_dict_index(params, NULL) for ypos\n"); | |
442 vis_dict_index(params, NULL); | |
443 DEBUGPUTS("After vis_dict_index\n"); | |
444 ypos = params[0]->c.real; | |
445 DEBUGPUTS("Releasing ypos datum\n"); | |
446 release_ref(params[0]); | |
447 add_widget_shared(window_show, widget_datum, (char *)(list->entries[i]->c.generic.data), xpos, ypos, worker_entry, NULL); | |
448 } | |
449 | |
450 DEBUGPUTS("Showing window\n"); | |
451 window_show->wind->MakeFocus(); | |
452 window_show->wind->Show(); | |
453 //resume_thread(spawn_thread("vis_mem_check", (void *)vis_mem_check, 1, 0, (void *)window_show)); | |
454 //sleep(5); | |
455 release_ref(inputlist[0]); | |
456 inputlist[0] = show_datum; | |
457 return 0; | |
458 } | |
459 | |
460 | |
461 } | |
462 | |
463 os_window::os_window(datum * vis_wind) : os::Window( | |
464 os::Rect( | |
465 ((vis_window_shown *)(vis_wind->c.generic.data))->xpos, | |
466 ((vis_window_shown *)(vis_wind->c.generic.data))->ypos, | |
467 ((vis_window_shown *)(vis_wind->c.generic.data))->xpos+((vis_window_shown *)(vis_wind->c.generic.data))->width, | |
468 ((vis_window_shown *)(vis_wind->c.generic.data))->ypos+((vis_window_shown *)(vis_wind->c.generic.data))->height), | |
469 "vis_wnd", | |
470 (char *)(((vis_window_shown *)(vis_wind->c.generic.data))->title->c.generic.data)) | |
471 { | |
472 //DEBUGPRINTF("vis_wind lock: %d\n", ((vis_window_shown *)(vis_wind->c.generic.data))->lock); | |
473 this->vis_wind = vis_wind; | |
474 // this->current_focus = NULL; | |
475 } | |
476 os_window::~os_window() | |
477 { | |
478 vis_window_closed(this->vis_wind); | |
479 } | |
480 | |
481 void empty_callback(worker_instance * caller_instance, int caller_workernum, worker_instance * done_instance, void * data) | |
482 { | |
483 } | |
484 | |
485 void os_window::HandleMessage(os::Message * msg) | |
486 { | |
487 int returnval; | |
488 queue_entry entry; | |
489 datum * params[32]; | |
490 datum * io_list; | |
491 datum * worker; | |
492 worker_datum * work; | |
493 int code = msg->GetCode(); | |
494 DEBUGPRINTF("Message Code: %d\n", code); | |
495 DEBUGPRINTF("window->wind: %X\n", ((vis_window_shown *)(this->vis_wind->c.generic.data))->wind); | |
496 DEBUGPRINTF("vis_wind->ref_count: %X\n", this->vis_wind->ref_count); | |
497 params[0] = add_ref(((vis_window_shown *)(this->vis_wind->c.generic.data))->handler_list); | |
498 params[1] = new_datum(BUILTIN_TYPE_WHOLE, 2, 0, ((vis_window_shown *)(this->vis_wind->c.generic.data))->instance.def->prog); | |
499 params[1]->c.integers.num_a = code; | |
500 entry.worker_num = 0; | |
501 entry.instance = &(((vis_window_shown *)(this->vis_wind->c.generic.data))->instance); | |
502 vis_list_index(params, &entry); | |
503 if(params[0] && params[0]->company->type_id == BUILTIN_TYPE_WORKER) | |
504 { | |
505 worker = params[0]; | |
506 work = (worker_datum *)(worker->c.generic.data); | |
507 params[0] = create_list(entry.instance->def->prog); | |
508 params[1] = add_ref(this->vis_wind); | |
509 vis_list_append(params, &entry); | |
510 io_list = params[0]; | |
511 returnval = worker_populate_inputs(worker, io_list, params); | |
512 if(!returnval) | |
513 execute_def(work->def, entry, params, empty_callback); | |
514 } | |
515 DEBUGPRINTF("window->wind: %X\n", ((vis_window_shown *)(this->vis_wind->c.generic.data))->wind); | |
516 DEBUGPUTS("End: HandleMessage\n"); | |
517 } | |
518 /* | |
519 void os_window::DispatchMessage(os::Message * pcMsg, os::Handler * pcHandler) | |
520 { | |
521 os::View * view; | |
522 os::View * handler_view; | |
523 //int code = pcMsg->GetCode(); | |
524 pcMsg->FindPointer("_widget", (void **)&view); | |
525 if(view) { | |
526 handler_view = _FindHandler(view->m_nToken); | |
527 if(handler_view != view) | |
528 printf("DispatchMessage, message view: %X, handler view: %X\n", view, handler_view); | |
529 | |
530 } | |
531 os::Window::DispatchMessage(pcMsg, pcHandler); | |
532 } | |
533 | |
534 os::View *os_window::SetFocusNoHandler(os::View * new_focus ) | |
535 { | |
536 ifthis->current_focus) | |
537 this->current_focus->Activated(false); | |
538 if(new_focus) | |
539 new_focus->Activated(true); | |
540 this->current_focus = new_focus; | |
541 return new_focus; | |
542 }*/ | |
543 | |
544 | |
545 | |
546 | |
547 | |
548 | |
549 | |
550 | |
551 | |
552 | |
553 | |
554 | |
555 | |
556 | |
557 | |
558 | |
559 | |
560 | |
561 |