rendered paste body#include <stdio.h>#include <dirent.h>#include <ttk.h>#include "izilla.h"#include "desktop.h"//Function Prototypesint global_event_handler(int ev, int earg, int time);extern int ttk_mouse_down(TWidget * wid, int btn);extern int ttk_mouse_scroll(TWidget * wid, int dir);TWidget * get_widget_under_mouse(void);void draw_widget_under_mouse(void);//Global Event Handlerint global_event_handler(int ev, int earg, int time){ int ret = -1; switch(ev) { case TTK_BUTTON_DOWN: switch (earg) { case TTK_BUTTON_ACTION: //nothing for now break; case TTK_BUTTON_HOLD: //nothing for now break; default: draw_widget_under_mouse(); ttk_mouse_down(mouse, earg); break; } break; case TTK_BUTTON_UP: //nothing for now break; case TTK_SCROLL: draw_widget_under_mouse(); ttk_mouse_scroll(mouse, earg); break; } if(ret >= 0) { return ret; } else { return TTK_EV_UNUSED; }}void draw_widget_under_mouse(){ TWidget * wid; wid = get_widget_under_mouse(); if(wid!=NULL) wid->draw(wid, base_win->srf); base_win->dirty++;}TWidget * get_widget_under_mouse(){ TWidget * ret = NULL; TWidgetList * twl = base_win->widgets; //TODO: Add in support for multiple windows using TWindowList while (ret==NULL && twl!=NULL) { if(strcmp(twl->v->name, "mouse")) if((mouse->x > twl->v->x) && (mouse->x < (twl->v->x + twl->v->w))) if((mouse->y > twl->v->y) && (mouse->y < (twl->v->y + twl->v->h))) ret = twl->v; twl = twl->next; } return ret;}