ui/gtk/graphics.c

changeset 115
102fc0b8fe3e
parent 95
29f5cd5f5367
child 118
bb21210e9cac
equal deleted inserted replaced
114:909fe96e5659 115:102fc0b8fe3e
48 ct->add(ct, widget, TRUE); 48 ct->add(ct, widget, TRUE);
49 49
50 return widget; 50 return widget;
51 } 51 }
52 52
53
54 static gboolean widget_button_pressed(
55 GtkWidget *widget,
56 GdkEvent *event,
57 gpointer userdata)
58 {
59 UiEventData *eventdata = userdata;
60
61 UiMouseEvent me;
62 me.x = (int)event->button.x;
63 me.y = (int)event->button.y;
64
65 int exec = 0;
66 if(event->button.type == GDK_BUTTON_PRESS) {
67 exec = 1;
68 me.type = UI_PRESS;
69 } else if(event->button.type == GDK_2BUTTON_PRESS) {
70 exec = 1;
71 me.type = UI_PRESS2;
72 }
73
74 if(exec) {
75 UiEvent e;
76 e.obj = eventdata->obj;
77 e.window = eventdata->obj->window;
78 e.document = eventdata->obj->ctx->document;
79 e.eventdata = &me;
80 e.intval = 0;
81 eventdata->callback(&e, eventdata->userdata);
82 }
83 return TRUE;
84 }
85
86 void ui_drawingarea_mousehandler(UiObject *obj, UIWIDGET widget, ui_callback f, void *u) {
87 gtk_widget_set_events(widget, GDK_BUTTON_PRESS_MASK);
88 if(f) {
89 UiEventData *event = malloc(sizeof(UiEventData));
90 event->obj = obj;
91 event->callback = f;
92 event->userdata = u;
93
94 g_signal_connect(G_OBJECT(widget),
95 "button-press-event",
96 G_CALLBACK(widget_button_pressed),
97 event);
98 } else {
99 // TODO: warning
100 }
101 }
102
103
53 // text layout 104 // text layout
54 UiTextLayout* ui_text(UiGraphics *g) { 105 UiTextLayout* ui_text(UiGraphics *g) {
55 UiTextLayout *layout = malloc(sizeof(UiTextLayout)); 106 UiTextLayout *layout = malloc(sizeof(UiTextLayout));
56 PangoContext *pc = ui_get_pango_context(g); 107 PangoContext *pc = ui_get_pango_context(g);
57 layout->layout = pango_layout_new(pc); 108 layout->layout = pango_layout_new(pc);

mercurial