Scrolling through tasks by schattenprinz

git-svn-id: http://tint2.googlecode.com/svn/trunk@275 121b4492-b84c-0410-8b4c-0d4edfb3f3cc
This commit is contained in:
thilor77 2009-11-18 05:13:38 +00:00
parent c7346fc56b
commit f43facc277
5 changed files with 71 additions and 1 deletions

View file

@ -173,6 +173,10 @@ void get_action (char *event, int *action)
*action = DESKTOP_LEFT;
else if (strcmp (event, "desktop_right") == 0)
*action = DESKTOP_RIGHT;
else if (strcmp (event, "next_task") == 0)
*action = NEXT_TASK;
else if (strcmp (event, "prev_task") == 0)
*action = PREV_TASK;
}

View file

@ -361,6 +361,55 @@ void draw_task (void *obj, cairo_t *c, int active)
}
Task *next_task(Task *tsk)
{
GSList *l0;
int i, j;
Task *tsk1;
for (i=0 ; i < nb_panel ; i++) {
for (j=0 ; j < panel1[i].nb_desktop ; j++) {
for (l0 = panel1[i].taskbar[j].area.list; l0 ; l0 = l0->next) {
tsk1 = l0->data;
if (tsk1 == tsk) {
if (l0->next == NULL) l0 = panel1[i].taskbar[j].area.list;
else l0 = l0->next;
return l0->data;
}
}
}
}
return NULL;
}
Task *prev_task(Task *tsk)
{
GSList *l0;
int i, j;
Task *tsk1, *tsk2;
for (i=0 ; i < nb_panel ; i++) {
for (j=0 ; j < panel1[i].nb_desktop ; j++) {
tsk2 = NULL;
for (l0 = panel1[i].taskbar[j].area.list; l0 ; l0 = l0->next) {
tsk1 = l0->data;
if (tsk1 == tsk) {
if (l0 == panel1[i].taskbar[j].area.list) {
l0 = g_slist_last ( l0 );
tsk2 = l0->data;
}
return tsk2;
}
tsk2 = tsk1;
}
}
}
return NULL;
}
void active_task()
{
GSList *l0;

View file

@ -70,6 +70,9 @@ void get_icon (Task *tsk);
void get_title(Task *tsk);
void active_task();
Task *next_task (Task *tsk);
Task *prev_task (Task *tsk);
void add_urgent(Task *tsk);
void del_urgent(Task *tsk);
int is_urgent(Task *tsk);

View file

@ -223,6 +223,20 @@ void window_action (Task *tsk, int action)
windows_set_desktop(tsk->win, desk);
if (desk == server.desktop)
set_active(tsk->win);
break;
case NEXT_TASK:
if (task_active) {
Task *tsk1;
tsk1 = next_task(task_active);
set_active(tsk1->win);
}
break;
case PREV_TASK:
if (task_active) {
Task *tsk1;
tsk1 = prev_task(task_active);
set_active(tsk1->win);
}
}
}

View file

@ -29,7 +29,7 @@ FXint fxmalloc(void** ptr,unsigned long size){
*/
// mouse actions
enum { NONE=0, CLOSE, TOGGLE, ICONIFY, SHADE, TOGGLE_ICONIFY, MAXIMIZE_RESTORE, MAXIMIZE, RESTORE, DESKTOP_LEFT, DESKTOP_RIGHT };
enum { NONE=0, CLOSE, TOGGLE, ICONIFY, SHADE, TOGGLE_ICONIFY, MAXIMIZE_RESTORE, MAXIMIZE, RESTORE, DESKTOP_LEFT, DESKTOP_RIGHT, NEXT_TASK, PREV_TASK };
#define ALLDESKTOP 0xFFFFFFFF