remove patch on omnipresent task to try another solution
git-svn-id: http://tint2.googlecode.com/svn/trunk@197 121b4492-b84c-0410-8b4c-0d4edfb3f3cc
This commit is contained in:
parent
8f4e5c269d
commit
c59330d16a
5 changed files with 41 additions and 55 deletions
|
@ -57,6 +57,7 @@ extern int max_tick_urgent;
|
|||
extern Imlib_Image default_icon;
|
||||
|
||||
|
||||
// tint2 use one panel per monitor and one taskbar per desktop.
|
||||
typedef struct {
|
||||
// always start with area
|
||||
// area.list own all objects of the panel according to config file
|
||||
|
|
|
@ -61,16 +61,16 @@ Task *add_task (Window win)
|
|||
Taskbar *tskbar;
|
||||
Task *new_tsk2=0;
|
||||
int i, j;
|
||||
for (i = 0; i < nb_panel; i++) {
|
||||
if (nb_panel > 1 && panel1[i].monitor != monitor) continue;
|
||||
for (j = 0; j < panel1[i].nb_desktop; j++) {
|
||||
if ((new_tsk.desktop != ALLDESKTOP && new_tsk.desktop != j)
|
||||
|| (panel_mode == MULTI_DESKTOP && new_tsk.desktop == ALLDESKTOP && server.desktop != j))
|
||||
continue;
|
||||
// for (i=0 ; i < nb_panel ; i++) {
|
||||
// for (j=0 ; j < panel1[i].nb_desktop ; j++) {
|
||||
// if (new_tsk.desktop != ALLDESKTOP && new_tsk.desktop != j) continue;
|
||||
// if (nb_panel > 1 && panel1[i].monitor != monitor) continue;
|
||||
// for (i = 0; i < nb_panel; i++) {
|
||||
// if (nb_panel > 1 && panel1[i].monitor != monitor) continue;
|
||||
// for (j = 0; j < panel1[i].nb_desktop; j++) {
|
||||
// if ((new_tsk.desktop != ALLDESKTOP && new_tsk.desktop != j)
|
||||
// || (panel_mode == MULTI_DESKTOP && new_tsk.desktop == ALLDESKTOP && server.desktop != j))
|
||||
// continue;
|
||||
for (i=0 ; i < nb_panel ; i++) {
|
||||
for (j=0 ; j < panel1[i].nb_desktop ; j++) {
|
||||
if (new_tsk.desktop != ALLDESKTOP && new_tsk.desktop != j) continue;
|
||||
if (nb_panel > 1 && panel1[i].monitor != monitor) continue;
|
||||
|
||||
tskbar = &panel1[i].taskbar[j];
|
||||
new_tsk2 = malloc(sizeof(Task));
|
||||
|
|
|
@ -258,6 +258,7 @@ void resize_taskbar(void *obj)
|
|||
x = taskbar->area.posx + taskbar->area.pix.border.width + taskbar->area.paddingxlr;
|
||||
for (l = taskbar->area.list; l ; l = l->next) {
|
||||
tsk = l->data;
|
||||
if (!tsk->area.on_screen) continue;
|
||||
tsk->area.posx = x;
|
||||
tsk->area.width = pixel_width;
|
||||
tsk->area.redraw = 1;
|
||||
|
@ -299,6 +300,7 @@ void resize_taskbar(void *obj)
|
|||
y = taskbar->area.posy + taskbar->area.pix.border.width + taskbar->area.paddingxlr;
|
||||
for (l = taskbar->area.list; l ; l = l->next) {
|
||||
tsk = l->data;
|
||||
if (!tsk->area.on_screen) continue;
|
||||
tsk->area.posy = y;
|
||||
tsk->area.height = pixel_height;
|
||||
tsk->area.redraw = 1;
|
||||
|
|
|
@ -10,7 +10,7 @@
|
|||
|
||||
#include "task.h"
|
||||
|
||||
|
||||
// tint2 use one taskbar per desktop.
|
||||
typedef struct {
|
||||
// always start with area
|
||||
Area area;
|
||||
|
|
71
src/tint.c
71
src/tint.c
|
@ -394,52 +394,35 @@ void event_property_notify (XEvent *e)
|
|||
// Change desktop
|
||||
else if (at == server.atom._NET_CURRENT_DESKTOP) {
|
||||
server.desktop = server_get_current_desktop ();
|
||||
for (i = 0; i < nb_panel; i++) {
|
||||
for (i=0 ; i < nb_panel ; i++) {
|
||||
Panel *panel = &panel1[i];
|
||||
if (panel_mode == MULTI_DESKTOP) {
|
||||
Taskbar *tskbar, *tskbar_active;
|
||||
GSList *l;
|
||||
Task *tsk;
|
||||
char redraw_tasks;
|
||||
|
||||
tskbar_active = &panel->taskbar[server.desktop];
|
||||
if (panel->g_taskbar.use_active) {
|
||||
tskbar_active->area.is_active = 1;
|
||||
tskbar_active->area.redraw = 1;
|
||||
}
|
||||
|
||||
for (j = 0; j < panel->nb_desktop; j++) {
|
||||
tskbar = &panel->taskbar[j];
|
||||
|
||||
// need to redraw tasks only on taskbar, which was active, or which became active
|
||||
redraw_tasks = 0;
|
||||
if (panel->g_taskbar.use_active && tskbar->area.is_active && tskbar != tskbar_active) {
|
||||
tskbar->area.is_active = 0;
|
||||
tskbar->area.redraw = 1;
|
||||
redraw_tasks = 1;
|
||||
} else if (panel->g_taskbar.use_active && tskbar == tskbar_active) {
|
||||
redraw_tasks = 1;
|
||||
}
|
||||
|
||||
for (l = tskbar->area.list; l;) {
|
||||
tsk = l->data;
|
||||
l = l->next;
|
||||
|
||||
if (redraw_tasks) tsk->area.redraw = 1;
|
||||
|
||||
if (tsk->desktop == ALLDESKTOP && tskbar != tskbar_active) {
|
||||
// move omnipresent tasks to current taskbar
|
||||
tskbar->area.list = g_slist_remove(tskbar->area.list, tsk);
|
||||
tskbar->area.resize = 1;
|
||||
tsk->area.parent = tskbar_active;
|
||||
tskbar_active->area.list = g_slist_append(tskbar_active->area.list, tsk);
|
||||
tskbar_active->area.resize = 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (panel_mode == MULTI_DESKTOP && panel->g_taskbar.use_active) {
|
||||
// redraw taskbar
|
||||
panel_refresh = 1;
|
||||
}
|
||||
}
|
||||
Taskbar *tskbar;
|
||||
Task *tsk;
|
||||
GSList *l;
|
||||
for (j=0 ; j < panel->nb_desktop ; j++) {
|
||||
tskbar = &panel->taskbar[j];
|
||||
if (tskbar->area.is_active) {
|
||||
tskbar->area.is_active = 0;
|
||||
tskbar->area.redraw = 1;
|
||||
for (l = tskbar->area.list; l ; l = l->next) {
|
||||
tsk = l->data;
|
||||
tsk->area.redraw = 1;
|
||||
}
|
||||
}
|
||||
if (j == server.desktop) {
|
||||
tskbar->area.is_active = 1;
|
||||
tskbar->area.redraw = 1;
|
||||
for (l = tskbar->area.list; l ; l = l->next) {
|
||||
tsk = l->data;
|
||||
tsk->area.redraw = 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (panel_mode != MULTI_DESKTOP) {
|
||||
visible_object();
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue