void dirs_on_filter_changed(GObject* _filter, gpointer _actor) { DirectoriesView* view = (DirectoriesView*)_actor; if(samplecat.model->filters.dir->value[0] == '\0'){ view->selection = -1; agl_actor__invalidate((AGlActor*)_actor); } }
bool scrollable_event(AGlActor* actor, GdkEvent* event, AGliPt xy) { ScrollableView* view = (ScrollableView*)actor; switch(event->type){ case GDK_BUTTON_PRESS: switch(event->button.button){ case 4: scrollable_set_scroll_position(actor, view->scroll_offset - 10); agl_actor__invalidate(actor); break; case 5: if(agl_actor__scrollable_height(((AGlActor*)actor->children->data)) > agl_actor__height(actor)){ scrollable_set_scroll_position(actor, view->scroll_offset + 10); agl_actor__invalidate(actor); } break; } break; default: break; } return AGL_HANDLED; }
bool list_event(AGlActor* actor, GdkEvent* event, AGliPt xy) { // TODO why is y not relative to actor.y ? switch(event->type){ case GDK_BUTTON_PRESS: case GDK_BUTTON_RELEASE: agl_actor__invalidate(actor); int row = (xy.y - actor->region.y1) / row_height; dbg(0, "y=%i", xy.y - actor->region.y1); list_view_select((ListView*)actor, row); break; default: break; } return AGL_HANDLED; }
void dirs_set_size(AGlActor* actor) { DirectoriesView* view = (DirectoriesView*)actor; #define N_ROWS_VISIBLE(A) (agl_actor__height(((AGlActor*)A)) / row_height) view->cache.n_rows_visible = N_ROWS_VISIBLE(actor); if(!view->cache.n_rows){ GNode* node = g_node_first_child (samplecat.model->dir_tree); for(; node; node = g_node_next_sibling(node)){ view->cache.n_rows++; } agl_actor__invalidate(actor); } actor->region.y2 = MIN(actor->region.y2, actor->region.y1 + (view->cache.n_rows + 1) * row_height); }
void list_on_search_filter_changed(GObject* _filter, gpointer _actor) { // update list... agl_actor__invalidate((AGlActor*)_actor); }