ui/gtk/toolbar.c

changeset 1111
3910be3b2ac6
parent 1028
925a345ea298
equal deleted inserted replaced
1110:11bc246ff158 1111:3910be3b2ac6
138 } 138 }
139 gtk_tool_item_set_is_important(button, TRUE); 139 gtk_tool_item_set_is_important(button, TRUE);
140 140
141 ui_set_widget_nstates(obj->ctx, GTK_WIDGET(button), item->args.states, item->nstates); 141 ui_set_widget_nstates(obj->ctx, GTK_WIDGET(button), item->args.states, item->nstates);
142 142
143 if(item->args.onclick) { 143 if(item->args.onclick || item->args.action) {
144 UiEventData *event = cxMalloc( 144 UiEventData *event = cxMalloc(
145 obj->ctx->allocator, 145 obj->ctx->allocator,
146 sizeof(UiEventData)); 146 sizeof(UiEventData));
147 event->obj = obj; 147 event->obj = obj;
148 event->callback = item->args.onclick; 148 event->callback = item->args.onclick;
149 event->userdata = item->args.onclickdata; 149 event->userdata = item->args.onclickdata;
150 event->action = item->args.action ? ui_strdup(obj->ctx, item->args.action) : NULL;
150 event->customdata = NULL; 151 event->customdata = NULL;
151 event->customint = 0; 152 event->customint = 0;
152 event->value = 0; 153 event->value = 0;
153 154
154 g_signal_connect( 155 g_signal_connect(
200 obj->ctx->allocator, 201 obj->ctx->allocator,
201 sizeof(UiVarEventData)); 202 sizeof(UiVarEventData));
202 event->obj = obj; 203 event->obj = obj;
203 event->callback = item->args.onchange; 204 event->callback = item->args.onchange;
204 event->userdata = item->args.onchangedata; 205 event->userdata = item->args.onchangedata;
206 event->action = item->args.action ? ui_strdup(obj->ctx, item->args.action) : NULL;;
205 event->var = var; 207 event->var = var;
206 208
207 g_signal_connect( 209 g_signal_connect(
208 button, 210 button,
209 "toggled", 211 "toggled",
236 UiVar *var = event->var; 238 UiVar *var = event->var;
237 UiInteger *i = var ? var->value : NULL; 239 UiInteger *i = var ? var->value : NULL;
238 240
239 if(i) { 241 if(i) {
240 ui_notify_evt(i->observers, &e); 242 ui_notify_evt(i->observers, &e);
243 }
244
245 if(event->action) {
246 uic_action_callback(&e, event->action);
241 } 247 }
242 } 248 }
243 249
244 int64_t ui_tool_toggle_button_get(UiInteger *integer) { 250 int64_t ui_tool_toggle_button_get(UiInteger *integer) {
245 integer->value = gtk_toggle_tool_button_get_active(GTK_TOGGLE_TOOL_BUTTON(integer->obj)); 251 integer->value = gtk_toggle_tool_button_get_active(GTK_TOGGLE_TOOL_BUTTON(integer->obj));

mercurial