Lines Matching refs:dialog

57 		gg_dialog_t *dialog = TAILQ_FIRST(&closed_dialogs);  in gg_dialog_cleanup()  local
58 TAILQ_REMOVE(&closed_dialogs, dialog, entries); in gg_dialog_cleanup()
59 dialog->destroy(GG_WIDGET(dialog)); in gg_dialog_cleanup()
66 void gg_dialog_open(gg_dialog_t *dialog) { in gg_dialog_open() argument
67 TAILQ_INSERT_HEAD(&dialogs, dialog, entries); in gg_dialog_open()
69 if ((dialog->flags & GG_DIALOG_AUTOHIDE_PARENT) && dialog->parent_dialog) in gg_dialog_open()
70 dialog->parent_dialog->flags |= GG_DIALOG_HIDDEN; in gg_dialog_open()
73 static void gg_dialog_cls(gg_dialog_t *dialog) { in gg_dialog_cls() argument
74 if ((dialog->flags & GG_DIALOG_AUTOHIDE_PARENT) && dialog->parent_dialog) in gg_dialog_cls()
75 dialog->parent_dialog->flags &= ~GG_DIALOG_HIDDEN; in gg_dialog_cls()
77 TAILQ_REMOVE(&dialogs, dialog, entries); in gg_dialog_cls()
78 TAILQ_INSERT_HEAD(&closed_dialogs, dialog, entries); in gg_dialog_cls()
101 void gg_dialog_set_active(gg_dialog_t *dialog) { in gg_dialog_set_active() argument
102 TAILQ_REMOVE(&dialogs, dialog, entries); in gg_dialog_set_active()
103 TAILQ_INSERT_HEAD(&dialogs, dialog, entries); in gg_dialog_set_active()
106 void gg_dialog_get_screen_pos(gg_dialog_t *dialog, int *x, int *y) { in gg_dialog_get_screen_pos() argument
107 *x = dialog->pos.x - dialog->width * dialog->pos.x_align; in gg_dialog_get_screen_pos()
108 *y = dialog->pos.y - dialog->height * dialog->pos.y_align; in gg_dialog_get_screen_pos()
245 void gg_dialog_render(gg_dialog_t *dialog) { in gg_dialog_render() argument
246 gg_dialog_style_t *style = &dialog->style; in gg_dialog_render()
247 gg_widget_t *child = gg_bin_get_child(GG_BIN(dialog)); in gg_dialog_render()
254 if (dialog->flags & GG_DIALOG_HIDDEN) in gg_dialog_render()
257 gg_dialog_get_screen_pos(dialog, &xmin, &ymin); in gg_dialog_render()
259 xmax = (xmin + dialog->width); in gg_dialog_render()
260 ymax = (ymin + dialog->height); in gg_dialog_render()
277 active = gg_dialog_get_active() == dialog; in gg_dialog_render()
282 draw_border(style->border.image, dialog->title, active, area, size); in gg_dialog_render()
296 gg_dialog_t *dialog = GG_DIALOG(widget); in gg_dialog_input() local
300 if (dialog->flags & GG_DIALOG_HIDDEN) in gg_dialog_input()
303 if (!dialog->modal && event.type == GG_EVENT_KEY && event.key == GG_KEY_ESCAPE) in gg_dialog_input()
306 if (!dialog->modal && event.type == GG_EVENT_MOUSE && event.mouse.type == GG_MOUSE_BUTTON_DOWN && in gg_dialog_input()
310 gg_dialog_get_screen_pos(dialog, &x, &y); in gg_dialog_input()
318 gg_system_get_image_size(dialog->style.border.image[0], &size, NULL); in gg_dialog_input()
321 if (dialog->title) { in gg_dialog_input()
324 gg_system_get_string_size(dialog->title, NULL, &text_height); in gg_dialog_input()
327 dialog->dialog_state |= GG_DIALOG_LEFT_BUTTON; in gg_dialog_input()
330 if (event.mouse.y >= dialog->height || event.mouse.y < 0 || event.mouse.x >= dialog->width || in gg_dialog_input()
334 gg_dialog_set_active(dialog); in gg_dialog_input()
337 …if (event.mouse.y >= dialog->height - size - titlebar_height && event.mouse.y < dialog->height - s… in gg_dialog_input()
338 event.mouse.x >= size && event.mouse.x < dialog->width - size) { in gg_dialog_input()
339 dialog->dialog_state |= GG_DIALOG_MOVING; in gg_dialog_input()
340 dialog->movement_org_x = event.mouse.x; in gg_dialog_input()
341 dialog->movement_org_y = event.mouse.y; in gg_dialog_input()
346 if (dialog->title) { in gg_dialog_input()
347 dialog->dialog_state &= ~GG_DIALOG_LEFT_BUTTON; in gg_dialog_input()
348 if (dialog->dialog_state & GG_DIALOG_MOVING) { in gg_dialog_input()
349 dialog->dialog_state &= ~GG_DIALOG_MOVING; in gg_dialog_input()
355 if ((event.mouse.type == GG_MOUSE_MOVE) && (dialog->dialog_state & GG_DIALOG_MOVING)) { in gg_dialog_input()
356 int xoff = dialog->width * dialog->pos.x_align; in gg_dialog_input()
357 int yoff = dialog->height * dialog->pos.y_align; in gg_dialog_input()
359 gg_dialog_set_position(dialog, x + event.mouse.x - dialog->movement_org_x + xoff, in gg_dialog_input()
360 y + event.mouse.y - dialog->movement_org_y + yoff, dialog->pos.x_align, in gg_dialog_input()
361 dialog->pos.y_align); in gg_dialog_input()
364 event.mouse.x -= size + dialog->style.hor_pad; in gg_dialog_input()
365 event.mouse.y -= size + dialog->style.vert_pad; in gg_dialog_input()
367 if (!(event.mouse.type == GG_MOUSE_MOVE && dialog->dialog_state & GG_DIALOG_LEFT_BUTTON)) { in gg_dialog_input()
368 gg_widget_t *child = gg_bin_get_child(GG_BIN(dialog)); in gg_dialog_input()
372 dialog->set_focus_pos(GG_WIDGET(dialog), event.mouse.x, event.mouse.y); in gg_dialog_input()
383 gg_dialog_t *dialog; in gg_dialog_input_current() local
385 TAILQ_FOREACH(dialog, &dialogs, entries) in gg_dialog_input_current()
386 if (!(dialog->flags & GG_DIALOG_HIDDEN) && gg_dialog_input(GG_WIDGET(dialog), event)) in gg_dialog_input_current()
390 void gg_dialog_set_modal(gg_dialog_t *dialog, int modal) { in gg_dialog_set_modal() argument
391 dialog->modal = modal; in gg_dialog_set_modal()
394 void gg_dialog_show(gg_dialog_t *dialog) { in gg_dialog_show() argument
395 dialog->flags &= ~GG_DIALOG_HIDDEN; in gg_dialog_show()
398 void gg_dialog_hide(gg_dialog_t *dialog) { in gg_dialog_hide() argument
399 dialog->flags |= GG_DIALOG_HIDDEN; in gg_dialog_hide()
402 void gg_dialog_set_position(gg_dialog_t *dialog, int x, int y, float x_align, float y_align) { in gg_dialog_set_position() argument
403 dialog->pos.x = x; in gg_dialog_set_position()
404 dialog->pos.y = y; in gg_dialog_set_position()
405 dialog->pos.x_align = x_align; in gg_dialog_set_position()
406 dialog->pos.y_align = y_align; in gg_dialog_set_position()
409 void gg_dialog_init(gg_dialog_t *dialog, gg_widget_t *child, char *title, gg_dialog_t *parent, int … in gg_dialog_init() argument
410 gg_bin_init((gg_bin_t *)dialog, child); in gg_dialog_init()
412 dialog->input = gg_dialog_input; in gg_dialog_init()
413 dialog->destroy = gg_dialog_destroy; in gg_dialog_init()
414 dialog->id = gg_dialog_get_class_id(); in gg_dialog_init()
415 dialog->flags = flags; in gg_dialog_init()
416 dialog->dialog_state = 0; in gg_dialog_init()
417 dialog->parent_dialog = parent; in gg_dialog_init()
418 dialog->modal = 0; in gg_dialog_init()
421 dialog->title = malloc(strlen(title) + 1); in gg_dialog_init()
422 strcpy(dialog->title, title); in gg_dialog_init()
424 dialog->title = NULL; in gg_dialog_init()
426 child->get_requested_size(child, &dialog->width, &dialog->height); in gg_dialog_init()
427 child->set_size(child, dialog->width, dialog->height); in gg_dialog_init()
429 gg_dialog_set_position(dialog, gg_system_get_screen_width() / 2, SCREEN_HEIGHT / 2, 0.5f, 0.5f); in gg_dialog_init()
441 gg_dialog_t *dialog = malloc(sizeof(gg_dialog_t)); in gg_dialog_create() local
443 gg_dialog_init(dialog, child, title, parent, flags); in gg_dialog_create()
445 return GG_WIDGET(dialog); in gg_dialog_create()
449 gg_dialog_t *dialog = GG_DIALOG(widget); in gg_dialog_destroy() local
451 if (dialog->title) in gg_dialog_destroy()
452 free(dialog->title); in gg_dialog_destroy()
457 void gg_dialog_set_style(gg_dialog_t *dialog, gg_dialog_style_t *style) { in gg_dialog_set_style() argument
459 gg_widget_t *child = gg_bin_get_child(GG_BIN(dialog)); in gg_dialog_set_style()
461 dialog->style = *style; in gg_dialog_set_style()
462 dialog->width = child->width_a + 2 * dialog->style.hor_pad; in gg_dialog_set_style()
463 dialog->height = child->height_a + 2 * dialog->style.vert_pad; in gg_dialog_set_style()
466 dialog->width += 2 * size; in gg_dialog_set_style()
467 dialog->height += 2 * size; in gg_dialog_set_style()
469 if (dialog->title) { in gg_dialog_set_style()
471 gg_system_get_string_size(dialog->title, NULL, &text_height); in gg_dialog_set_style()
472 dialog->height += text_height * GG_DIALOG_TITLE_FACT; in gg_dialog_set_style()
473 dialog->height += GG_DIALOG_TITLE_SEP_HEIGHT; in gg_dialog_set_style()
478 gg_dialog_t *dialog; in gg_dialog_render_all() local
480 TAILQ_FOREACH_REVERSE(dialog, &dialogs, dialogs_head, entries) in gg_dialog_render_all()
481 if (!(dialog->flags & GG_DIALOG_HIDDEN)) in gg_dialog_render_all()
482 gg_dialog_render(dialog); in gg_dialog_render_all()