{ .value = wdata->default_dirs, .userdata = window_sidebar_user_dirs_item },
{ .value = wdata->user_dirs, .userdata = window_sidebar_user_dirs_item, .separator = TRUE }
};
- ui_sourcelist(obj, .sublists = sublists, .numsublists = 2, .getvalue = window_sidebar_getvalue);
+ ui_sourcelist(obj, .sublists = sublists, .numsublists = 2, .getvalue = window_sidebar_getvalue, .onactivate = action_sourcelist_activate);
}
ui_hbox(obj, .spacing = 4, .fill = UI_OFF) {
FileBrowser *browser = event->document;
filebrowser_load(browser, path);
}
+
+void action_sourcelist_activate(UiEvent *event, void *userdata) {
+ FileBrowser *browser = event->document;
+ UiSubListEventData *eventdata = event->eventdata;
+
+ MZBookmark *bookmark = eventdata->row_data;
+ ui_set(browser->path, bookmark->path);
+ filebrowser_load(browser, bookmark->path);
+}
}
UiListBoxSubList *sublist = data->customdata0;
+ UiSubListEventData eventdata;
+ eventdata.list = sublist->var->value;
+ eventdata.sublist_index = sublist->index;
+ eventdata.row_index = data->value0;
+ eventdata.sublist_userdata = sublist->userdata;
+ eventdata.row_data = ui_list_get(eventdata.list, eventdata.row_index);
+ eventdata.event_data = data->customdata2;
+
UiEvent event;
event.obj = data->obj;
event.window = event.obj->window;
event.document = event.obj->ctx->document;
- event.eventdata = data->customdata2;
+ event.eventdata = &eventdata;
event.intval = data->value0;
if(data->callback) {
void *userdata;
};
+typedef struct UiSubListEventData {
+ UiList *list;
+ int sublist_index;
+ int row_index;
+ void *row_data;
+ void *sublist_userdata;
+ void *event_data;
+} UiSubListEventData;
+
/*
* list item members must be filled by the sublist getvalue func
* all members must be allocated (by malloc, strdup, ...) the pointer