Enlightenment CVS committal
Author : kwo
Project : e16
Module : e
Dir : e16/e/src
Modified Files:
E.h buttons.c desktops.c lists.c pager.c settings.c
Log Message:
Create/destroy desktops as needed.
===================================================================
RCS file: /cvsroot/enlightenment/e16/e/src/E.h,v
retrieving revision 1.341
retrieving revision 1.342
diff -u -3 -r1.341 -r1.342
--- E.h 8 Jan 2005 08:31:55 -0000 1.341
+++ E.h 9 Jan 2005 10:06:05 -0000 1.342
@@ -1354,7 +1354,7 @@
void ButtonSetSwallowed(Button * b);
const char *ButtonGetName(const Button * b);
int ButtonGetRefcount(const Button * b);
-int ButtonGetDesktop(const Button * b);
+int ButtonGetDesk(const Button * b);
void ButtonGetGeometry(const Button * b, int *x, int *y,
unsigned int *w, unsigned int *h);
int ButtonGetInfo(const Button * b, RectBox * r, int desk);
@@ -1441,12 +1441,9 @@
Window DeskGetCurrentRoot(void);
void DeskSetCurrentArea(int ax, int ay);
int DesksGetNumber(void);
-int DesksGetTotal(void);
int DesksGetCurrent(void);
void DesksSetCurrent(int desk);
-void InitDesktopControls(void);
-void ShowDesktopControls(void);
void SlideWindowTo(Window win, int fx, int fy, int tx, int ty,
int speed);
void RefreshDesktop(int num);
===================================================================
RCS file: /cvsroot/enlightenment/e16/e/src/buttons.c,v
retrieving revision 1.41
retrieving revision 1.42
diff -u -3 -r1.41 -r1.42
--- buttons.c 8 Jan 2005 08:46:39 -0000 1.41
+++ buttons.c 9 Jan 2005 10:06:06 -0000 1.42
@@ -176,6 +176,7 @@
}
while (RemoveItemByPtr(b, LIST_TYPE_BUTTON));
+
EobjListStackDel(&b->o);
if (b->name)
@@ -307,6 +308,9 @@
EDBUG(3, "ButtonMoveToDesktop");
+ if (desk < 0 || desk >= DesksGetNumber())
+ EDBUG_RETURN_;
+
if (EoIsSticky(b) && EoGetLayer(b) == 1)
desk = 0;
pdesk = EoGetDesk(b);
@@ -471,7 +475,7 @@
}
int
-ButtonGetDesktop(const Button * b)
+ButtonGetDesk(const Button * b)
{
return EoGetDesk(b);
}
@@ -617,7 +621,7 @@
{
d = DesktopAt(Mode.x, Mode.y);
ButtonMoveToDesktop(b, d);
- d = ButtonGetDesktop(b);
+ d = EoGetDesk(b);
ButtonMoveRelative(b, -DeskGetX(d), -DeskGetY(d));
}
else
@@ -1006,7 +1010,6 @@
break;
case BUTTON_DESK:
desk = atoi(s2);
- desk = ((unsigned int)desk) % DesksGetTotal();
if (pbt)
ButtonMoveToDesktop(pbt, desk);
break;
@@ -1234,6 +1237,7 @@
{
Button **lst, *b;
+ IpcPrintf("Win d s l x y w h name\n");
lst = (Button **) ListItemType(&num, LIST_TYPE_BUTTON);
for (i = 0; i < num; i++)
{
===================================================================
RCS file: /cvsroot/enlightenment/e16/e/src/desktops.c,v
retrieving revision 1.109
retrieving revision 1.110
diff -u -3 -r1.109 -r1.110
--- desktops.c 8 Jan 2005 08:31:55 -0000 1.109
+++ desktops.c 9 Jan 2005 10:06:07 -0000 1.110
@@ -32,6 +32,7 @@
typedef struct
{
EObj o;
+ int num;
char viewable;
Background *bg;
Button *tag;
@@ -45,7 +46,7 @@
typedef struct _desktops
{
int current;
- Desk desk[ENLIGHTENMENT_CONF_NUM_DESKTOPS];
+ Desk *desk[ENLIGHTENMENT_CONF_NUM_DESKTOPS];
int order[ENLIGHTENMENT_CONF_NUM_DESKTOPS];
}
Desktops;
@@ -55,7 +56,403 @@
/* The desktops */
static Desktops desks;
-#define _DeskGet(d) (&desks.desk[d])
+#define _DeskGet(d) (desks.desk[d])
+
+static void
+DeskControlsCreate(Desk * d)
+{
+ char s[512];
+ ActionClass *ac, *ac2, *ac3;
+ ImageClass *ic, *ic2, *ic3, *ic4;
+ Button *b;
+ Action *a;
+ int x[3], y[3], w[3], h[3], m, n, o;
+ const char *t;
+
+ Esnprintf(s, sizeof(s), "DRAGBAR_DESKTOP_%i", d->num);
+
+ ac = FindItem(s, 0, LIST_FINDBY_NAME, LIST_TYPE_ACLASS);
+ if (!ac)
+ {
+ ac = ActionclassCreate(s, 0);
+ a = ActionCreate(EVENT_MOUSE_DOWN, 0, 0, 0, 1, 0, NULL, NULL);
+ ActionclassAddAction(ac, a);
+
+ Esnprintf(s, sizeof(s), "desk drag %i", d->num);
+ ActionAddTo(a, s);
+
+ a = ActionCreate(EVENT_MOUSE_DOWN, 0, 0, 0, 3, 0, NULL, NULL);
+ ActionclassAddAction(ac, a);
+ ActionAddTo(a, "menus show deskmenu");
+
+ a = ActionCreate(EVENT_MOUSE_DOWN, 0, 0, 0, 2, 0, NULL, NULL);
+ ActionclassAddAction(ac, a);
+ ActionAddTo(a, "menus show taskmenu");
+
+ if (d->num > 0)
+ {
+ t = _("Hold down the mouse button and drag\n"
+ "the mouse to be able to drag the desktop\n"
+ "back and forth.\n"
+ "Click right mouse button for a list of all\n"
+ "Desktops and their applications.\n"
+ "Click middle mouse button for a list of all\n"
+ "applications currently running.\n");
+ ActionclassSetTooltipString(ac, t);
+ }
+ else
+ {
+ t = _("This is the Root desktop.\n"
+ "You cannot drag the root desktop around.\n"
+ "Click right mouse button for a list of all\n"
+ "Desktops and their applications.\n"
+ "Click middle mouse button for a list of all\n"
+ "applications currently running.\n");
+ ActionclassSetTooltipString(ac, t);
+ }
+ }
+
+ Esnprintf(s, sizeof(s), "RAISEBUTTON_DESKTOP_%i", d->num);
+ ac2 = FindItem(s, 0, LIST_FINDBY_NAME, LIST_TYPE_ACLASS);
+ if (!ac2)
+ {
+ ac2 = ActionclassCreate(s, 0);
+ a = ActionCreate(EVENT_MOUSE_UP, 1, 0, 1, 0, 0, NULL, NULL);
+ ActionclassAddAction(ac2, a);
+
+ Esnprintf(s, sizeof(s), "desk raise %i", d->num);
+ ActionAddTo(a, s);
+ t = _("Click here to raise this desktop\nto the top.\n");
+ ActionclassSetTooltipString(ac, t);
+ }
+
+ Esnprintf(s, sizeof(s), "LOWERBUTTON_DESKTOP_%i", d->num);
+ ac3 = FindItem(s, 0, LIST_FINDBY_NAME, LIST_TYPE_ACLASS);
+ if (!ac3)
+ {
+ ac3 = ActionclassCreate(s, 0);
+ a = ActionCreate(EVENT_MOUSE_UP, 1, 0, 1, 0, 0, NULL, NULL);
+ ActionclassAddAction(ac3, a);
+
+ Esnprintf(s, sizeof(s), "desk lower %i", d->num);
+ ActionAddTo(a, s);
+ t = _("Click here to lower this desktop\nto the bottom.\n");
+ ActionclassSetTooltipString(ac, t);
+ }
+
+ if (Conf.desks.dragdir < 2)
+ {
+ ic = ImageclassFind("DESKTOP_DRAGBUTTON_VERT", 0);
+ ic2 = ImageclassFind("DESKTOP_RAISEBUTTON_VERT", 0);
+ ic3 = ImageclassFind("DESKTOP_LOWERBUTTON_VERT", 0);
+ ic4 = ImageclassFind("DESKTOP_DESKRAY_VERT", 0);
+ }
+ else
+ {
+ ic = ImageclassFind("DESKTOP_DRAGBUTTON_HORIZ", 0);
+ ic2 = ImageclassFind("DESKTOP_RAISEBUTTON_HORIZ", 0);
+ ic3 = ImageclassFind("DESKTOP_LOWERBUTTON_HORIZ", 0);
+ ic4 = ImageclassFind("DESKTOP_DESKRAY_HORIZ", 0);
+ }
+
+ switch (Conf.desks.dragbar_ordering)
+ {
+ case 0:
+ m = 0;
+ n = 1;
+ o = 2;
+ break;
+ case 1:
+ m = 0;
+ n = 2;
+ o = 1;
+ break;
+ case 2:
+ m = 2;
+ n = 0;
+ o = 1;
+ break;
+ case 3:
+ m = 1;
+ n = 0;
+ o = 2;
+ break;
+ case 4:
+ m = 1;
+ n = 2;
+ o = 0;
+ break;
+ case 5:
+ m = 2;
+ n = 1;
+ o = 0;
+ break;
+ default:
+ m = 0;
+ n = 1;
+ o = 2;
+ break;
+ }
+
+ switch (Conf.desks.dragdir)
+ {
+ case 0:
+ w[0] = w[1] = w[2] = h[0] = h[1] = Conf.desks.dragbar_width;
+ if (Conf.desks.dragbar_length == 0)
+ h[2] = VRoot.h - (Conf.desks.dragbar_width * 2);
+ else
+ h[2] = Conf.desks.dragbar_length;
+ x[0] = x[1] = x[2] = 0;
+ y[m] = 0;
+ y[n] = y[m] + h[m];
+ y[o] = y[n] + h[n];
+ break;
+ case 1:
+ w[0] = w[1] = w[2] = h[0] = h[1] = Conf.desks.dragbar_width;
+ if (Conf.desks.dragbar_length == 0)
+ h[2] = VRoot.h - (Conf.desks.dragbar_width * 2);
+ else
+ h[2] = Conf.desks.dragbar_length;
+ x[0] = x[1] = x[2] = VRoot.w - Conf.desks.dragbar_width;
+ y[m] = 0;
+ y[n] = y[m] + h[m];
+ y[o] = y[n] + h[n];
+ break;
+ case 2:
+ h[0] = h[1] = h[2] = w[0] = w[1] = Conf.desks.dragbar_width;
+ if (Conf.desks.dragbar_length == 0)
+ w[2] = VRoot.w - (Conf.desks.dragbar_width * 2);
+ else
+ w[2] = Conf.desks.dragbar_length;
+ y[0] = y[1] = y[2] = 0;
+ x[m] = 0;
+ x[n] = x[m] + w[m];
+ x[o] = x[n] + w[n];
+ break;
+ case 3:
+ h[0] = h[1] = h[2] = w[0] = w[1] = Conf.desks.dragbar_width;
+ if (Conf.desks.dragbar_length == 0)
+ w[2] = VRoot.w - (Conf.desks.dragbar_width * 2);
+ else
+ w[2] = Conf.desks.dragbar_length;
+ y[0] = y[1] = y[2] = VRoot.h - Conf.desks.dragbar_width;
+ x[m] = 0;
+ x[n] = x[m] + w[m];
+ x[o] = x[n] + w[n];
+ break;
+ default:
+ break;
+ }
+
+ b = NULL;
+
+ if (Conf.desks.dragbar_width > 0)
+ {
+ b = ButtonCreate("_DESKTOP_DRAG_CONTROL", 1, ic2, ac2, NULL, NULL,
+ -1, FLAG_FIXED, 1, 99999, 1, 99999, 0, 0, x[0], 0,
+ y[0], 0, 0, w[0], 0, h[0], 0, d->num, 0);
+ b = ButtonCreate("_DESKTOP_DRAG_CONTROL", 1, ic3, ac3, NULL, NULL,
+ -1, FLAG_FIXED, 1, 99999, 1, 99999, 0, 0, x[1], 0,
+ y[1], 0, 0, w[1], 0, h[1], 0, d->num, 0);
+ b = ButtonCreate("_DESKTOP_DRAG_CONTROL", 1, ic, ac, NULL, NULL,
+ -1, FLAG_FIXED, 1, 99999, 1, 99999, 0, 0, x[2], 0,
+ y[2], 0, 0, w[2], 0, h[2], 0, d->num, 0);
+ }
+
+#if 0 /* What is this anyway? */
+ if (d->num > 0)
+ {
+ if (Conf.desks.dragdir == 0)
+ {
+ b = ButtonCreate("_DESKTOP_DESKRAY_DRAG_CONTROL", 2, ic4, ac,
+ NULL, NULL, 1, FLAG_FIXED_VERT, 1, 99999, 1,
+ 99999, 0, 0, EoGetX(d), 0, EoGetY(d),
+ 0, 0, 0, 0, 0, 1, 0, 1);
+ }
+ else if (Conf.desks.dragdir == 1)
+ {
+ b = ButtonCreate("_DESKTOP_DESKRAY_DRAG_CONTROL", 2, ic4, ac,
+ NULL, NULL, 1, FLAG_FIXED_VERT, 1, 99999, 1,
+ 99999, 0, 0,
+ EoGetX(d) + VRoot.w -
+ Conf.desks.dragbar_width, 0, EoGetY(d),
+ 0, 0, 0, 0, 0, 1, 0, 1);
+ }
+ else if (Conf.desks.dragdir == 2)
+ {
+ b = ButtonCreate("_DESKTOP_DESKRAY_DRAG_CONTROL", 2, ic4, ac,
+ NULL, NULL, 1, FLAG_FIXED_HORIZ, 1, 99999, 1,
+ 99999, 0, 0, EoGetX(d), 0, EoGetY(d),
+ 0, 0, 0, 0, 0, 1, 0, 1);
+ }
+ else
+ {
+ b = ButtonCreate("_DESKTOP_DESKRAY_DRAG_CONTROL", 2, ic4, ac,
+ NULL, NULL, 1, FLAG_FIXED_HORIZ, 1, 99999, 1,
+ 99999, 0, 0, EoGetX(d), 0,
+ EoGetY(d) + VRoot.h - Conf.desks.dragbar_width,
+ 0, 0, 0, 0, 0, 1, 0, 1);
+ }
+ }
+#endif
+
+ d->tag = b;
+}
+
+static void
+DeskControlsDestroy(Desk * d)
+{
+ Button **blst;
+ int num, i;
+
+ blst = (Button **) ListItemTypeID(&num, LIST_TYPE_BUTTON, 1);
+ if (blst)
+ {
+ for (i = 0; i < num; i++)
+ if (ButtonGetDesk(blst[i]) == d->num)
+ ButtonDestroy(blst[i]);
+ Efree(blst);
+ }
+}
+
+static void
+DeskControlsShow(Desk * d)
+{
+ Button **blst;
+ int num, i;
+
+ blst = (Button **) ListItemTypeID(&num, LIST_TYPE_BUTTON, 1);
+ if (blst)
+ {
+ for (i = 0; i < num; i++)
+ if (ButtonGetDesk(blst[i]) == d->num)
+ ButtonShow(blst[i]);
+ Efree(blst);
+ }
+}
+
+static void
+DeskEventsConfigure(Desk * d, int mode)
+{
+ long event_mask;
+ XWindowAttributes xwa;
+
+ if (mode)
+ {
+ event_mask = d->event_mask;
+ }
+ else
+ {
+ XGetWindowAttributes(disp, EoGetWin(d), &xwa);
+ d->event_mask = xwa.your_event_mask | EDESK_EVENT_MASK;
+ event_mask =
+ PropertyChangeMask | SubstructureRedirectMask |
+ ButtonPressMask | ButtonReleaseMask;
+#if USE_COMPOSITE
+ /* Handle ConfigureNotify's while sliding */
+ event_mask |= SubstructureNotifyMask;
+#endif
+ }
+ XSelectInput(disp, EoGetWin(d), event_mask);
+}
+
+static Desk *
+DeskCreate(int desk, int add_controls)
+{
+ Desk *d;
+ Window win;
+
+ if (desk < 0 || desk >= ENLIGHTENMENT_CONF_NUM_DESKTOPS)
+ return NULL;
+
+ d = Ecalloc(1, sizeof(Desk));
+
+ desks.desk[desk] = d;
+ d->num = desk;
+ desks.order[desk] = desk;
+
+ if (desk == 0)
+ win = VRoot.win;
+ else
+ win = ECreateWindow(VRoot.win, -VRoot.w, -VRoot.h, VRoot.w, VRoot.h, 0);
+
+ EobjInit(&d->o, EOBJ_TYPE_DESK, 0, 0, VRoot.w, VRoot.h);
+ EoSetWin(d, win);
+ EoSetLayer(d, 0);
+ EoDisableShadows(d);
+ if (desk > 0)
+ {
+ EoSetFloating(d, 1);
+ EobjListStackAdd(&d->o, 0);
+ }
+ EventCallbackRegister(win, 0, DesktopHandleEvents, d);
+
+ if (add_controls)
+ {
+ DeskControlsCreate(d);
+ DeskControlsShow(d);
+ }
+
+ DeskEventsConfigure(d, 1);
+
+ {
+ Background **lst;
+ int num;
+ unsigned int rnd;
+
+ lst = (Background **) ListItemType(&num, LIST_TYPE_BACKGROUND);
+ if (lst)
+ {
+ rnd = rand();
+ rnd %= num;
+ DesktopSetBg(desk, lst[rnd], 0);
+ Efree(lst);
+ }
+ }
+
+ return d;
+}
+
+static void
+DeskDestroy(int desk)
+{
+ Desk *d;
+ Button **blst;
+ int num, i;
+
+ d = _DeskGet(desk);
+
+ EventCallbackUnregister(EoGetWin(d), 0, DesktopHandleEvents, d);
+
+ blst = (Button **) ListItemTypeID(&num, LIST_TYPE_BUTTON, 1);
+ for (i = 0; i < num; i++)
+ {
+ if (ButtonGetDesk(blst[i]) == desk)
+ ButtonDestroy(blst[i]);
+ }
+ if (blst)
+ Efree(blst);
+
+ blst = (Button **) ListItemTypeID(&num, LIST_TYPE_BUTTON, 2);
+ for (i = 0; i < num; i++)
+ {
+ if (ButtonGetDesk(blst[i]) == desk)
+ ButtonDestroy(blst[i]);
+ }
+ if (blst)
+ Efree(blst);
+
+ if (d->bg)
+ BackgroundDecRefcount(d->bg);
+
+ if (desk > 0)
+ EobjListStackDel(&d->o);
+
+ EDestroyWindow(disp, EoGetWin(d));
+
+ Efree(d);
+ desks.desk[desk] = NULL;
+}
Window
DeskGetWin(int desk)
@@ -78,33 +475,36 @@
Background *
DeskGetBackground(int desk)
{
- return desks.desk[desk].bg;
+ if (desk < 0 || desk >= Conf.desks.num)
+ return NULL;
+
+ return _DeskGet(desk)->bg;
}
void
DeskGetArea(int desk, int *ax, int *ay)
{
- *ax = desks.desk[desk].current_area_x;
- *ay = desks.desk[desk].current_area_y;
+ *ax = _DeskGet(desk)->current_area_x;
+ *ay = _DeskGet(desk)->current_area_y;
}
void
DeskSetArea(int desk, int ax, int ay)
{
- desks.desk[desk].current_area_x = ax;
- desks.desk[desk].current_area_y = ay;
+ _DeskGet(desk)->current_area_x = ax;
+ _DeskGet(desk)->current_area_y = ay;
}
int
DeskIsViewable(int desk)
{
- return desks.desk[desk].viewable;
+ return _DeskGet(desk)->viewable;
}
void
DeskSetViewable(int desk, int on)
{
- desks.desk[desk].viewable = on;
+ _DeskGet(desk)->viewable = on;
}
Window
@@ -132,12 +532,6 @@
}
int
-DesksGetTotal(void)
-{
- return ENLIGHTENMENT_CONF_NUM_DESKTOPS;
-}
-
-int
DesksGetCurrent(void)
{
return desks.current;
@@ -150,42 +544,21 @@
}
static void
-DesktopInit(unsigned int desk)
+DesktopsInit(void)
{
- Desk *d;
- Window win;
-
- if (desk >= ENLIGHTENMENT_CONF_NUM_DESKTOPS)
- return;
-
- d = &desks.desk[desk];
- memset(d, 0, sizeof(Desk));
- desks.order[desk] = desk;
-
- if (desk == 0)
- win = VRoot.win;
- else
- win = ECreateWindow(VRoot.win, -VRoot.w, -VRoot.h, VRoot.w, VRoot.h, 0);
+ int i;
- EobjInit(&d->o, EOBJ_TYPE_DESK, 0, 0, VRoot.w, VRoot.h);
- EoSetWin(d, win);
- EoSetLayer(d, 0);
- EoDisableShadows(d);
- if (desk > 0)
- {
- EoSetFloating(d, 1);
- EobjListStackAdd(&d->o, 0);
- }
- EventCallbackRegister(win, 0, DesktopHandleEvents, d);
+ for (i = 0; i < Conf.desks.num; i++)
+ DeskCreate(i, 0);
}
-static void
-DesktopsInit(void)
+void
+DesktopsEventsConfigure(int mode)
{
int i;
- for (i = 0; i < ENLIGHTENMENT_CONF_NUM_DESKTOPS; i++)
- DesktopInit(i);
+ for (i = 0; i < Conf.desks.num; i++)
+ DeskEventsConfigure(_DeskGet(i), mode);
}
static void
@@ -194,32 +567,39 @@
int pnum, i, num;
EWin *const *lst;
+ if (quantity >= ENLIGHTENMENT_CONF_NUM_DESKTOPS)
+ quantity = ENLIGHTENMENT_CONF_NUM_DESKTOPS;
+
+ if (quantity <= 0 || quantity == Conf.desks.num)
+ return;
+
pnum = Conf.desks.num;
- for (i = quantity; i < ENLIGHTENMENT_CONF_NUM_DESKTOPS; i++)
+ for (i = quantity; i < Conf.desks.num; i++)
LowerDesktop(i);
Conf.desks.num = quantity;
- if (Conf.desks.num <= 0)
- Conf.desks.num = 1;
- else if (Conf.desks.num > ENLIGHTENMENT_CONF_NUM_DESKTOPS)
- Conf.desks.num = ENLIGHTENMENT_CONF_NUM_DESKTOPS;
-
- lst = EwinListGetAll(&num);
- for (i = 0; i < num; i++)
- {
- if (EoGetDesk(lst[i]) >= Conf.desks.num)
- MoveEwinToDesktop(lst[i], Conf.desks.num - 1);
- }
-
if (Conf.desks.num > pnum)
{
for (i = pnum; i < Conf.desks.num; i++)
- ModulesSignal(ESIGNAL_DESK_ADDED, (void *)i);
+ {
+ DeskCreate(i, 1);
+ ModulesSignal(ESIGNAL_DESK_ADDED, (void *)i);
+ }
}
else if (Conf.desks.num < pnum)
{
+ lst = EwinListGetAll(&num);
+ for (i = 0; i < num; i++)
+ {
+ if (EoGetDesk(lst[i]) >= Conf.desks.num)
+ MoveEwinToDesktop(lst[i], Conf.desks.num - 1);
+ }
+
for (i = Conf.desks.num; i < pnum; i++)
- ModulesSignal(ESIGNAL_DESK_REMOVED, (void *)i);
+ {
+ DeskDestroy(i);
+ ModulesSignal(ESIGNAL_DESK_REMOVED, (void *)i);
+ }
}
if (DesksGetCurrent() >= Conf.desks.num)
GotoDesktop(Conf.desks.num - 1);
@@ -227,20 +607,50 @@
HintsSetDesktopConfig();
}
-void
-ShowDesktopControls(void)
+static void
+DesksControlsCreate(void)
{
- Button **blst;
- int num, i;
+ int i;
- blst = (Button **) ListItemTypeID(&num, LIST_TYPE_BUTTON, 1);
- if (blst)
- {
- for (i = 0; i < num; i++)
- ButtonShow(blst[i]);
- Efree(blst);
- StackDesktops();
- }
+ for (i = 0; i < Conf.desks.num; i++)
+ DeskControlsCreate(_DeskGet(i));
+}
+
+static void
+DesksControlsDestroy(void)
+{
+ int i;
+
+ for (i = 0; i < Conf.desks.num; i++)
+ DeskControlsDestroy(_DeskGet(i));
+#if 0
+ while ((b = RemoveItem("_DESKTOP_DRAG_CONTROL", 0,
+ LIST_FINDBY_NAME, LIST_TYPE_BUTTON)))
+ ButtonDestroy(b);
+ while ((b = RemoveItem("_DESKTOP_DESKRAY_DRAG_CONTROL", 0,
+ LIST_FINDBY_NAME, LIST_TYPE_BUTTON)))
+ ButtonDestroy(b);
+#endif
+}
+
+static void
+DesksControlsShow(void)
+{
+ int i;
+
+ for (i = 0; i < Conf.desks.num; i++)
+ DeskControlsShow(_DeskGet(i));
+}
+
+static void
+DesksControlsRefresh(void)
+{
+ DesksControlsDestroy();
+ DesksControlsCreate();
+ DesksControlsShow();
+
+ /* Restack buttons - Hmmm. */
+ StackDesktops();
}
#if 0 /* Unused */
@@ -300,11 +710,11 @@
{
int i, j;
- EobjListStackRaise(&desks.desk[num].o);
+ EobjListStackRaise(&desks.desk[num]->o);
j = -1;
i = 0;
- while ((j < 0) && (i < ENLIGHTENMENT_CONF_NUM_DESKTOPS))
+ while (j < 0 && i < Conf.desks.num)
{
if (desks.order[i] == num)
j = i;
@@ -325,11 +735,11 @@
{
int i, j;
- EobjListStackLower(&desks.desk[num].o);
+ EobjListStackLower(&desks.desk[num]->o);
j = -1;
i = 0;
- while ((j < 0) && (i < ENLIGHTENMENT_CONF_NUM_DESKTOPS))
+ while (j < 0 && i < Conf.desks.num)
{
if (desks.order[i] == num)
j = i;
@@ -337,11 +747,11 @@
}
if (j < 0)
return;
- if (j < ENLIGHTENMENT_CONF_NUM_DESKTOPS - 1)
+ if (j < Conf.desks.num - 1)
{
- for (i = j; i < ENLIGHTENMENT_CONF_NUM_DESKTOPS - 1; i++)
+ for (i = j; i < Conf.desks.num - 1; i++)
desks.order[i] = desks.order[i + 1];
- desks.order[ENLIGHTENMENT_CONF_NUM_DESKTOPS - 1] = num;
+ desks.order[Conf.desks.num - 1] = num;
}
}
@@ -373,8 +783,10 @@
Desk *d;
Background *bg;
- desk = desk % ENLIGHTENMENT_CONF_NUM_DESKTOPS;
- if (!desks.desk[desk].viewable)
+ if (desk < 0 || desk >= Conf.desks.num)
+ return;
+
+ if (!_DeskGet(desk)->viewable)
return;
if (EventDebug(EDBUG_TYPE_DESKS))
@@ -394,280 +806,44 @@
void
DesktopsRefresh(void)
{
- int i;
-
- for (i = 0; i < ENLIGHTENMENT_CONF_NUM_DESKTOPS; i++)
- {
- if (desks.desk[i].bg)
- DesktopSetBg(i, desks.desk[i].bg, 1);
- }
-}
-
-void
-InitDesktopControls(void)
-{
Desk *d;
int i;
- ActionClass *ac, *ac2, *ac3;
- ImageClass *ic, *ic2, *ic3, *ic4;
- Button *b;
- Action *a;
- int x[3], y[3], w[3], h[3], m, n, o;
- char s[512];
- const char *t;
- for (i = 0; i < ENLIGHTENMENT_CONF_NUM_DESKTOPS; i++)
+ for (i = 0; i < Conf.desks.num; i++)
{
d = _DeskGet(i);
-
- Esnprintf(s, sizeof(s), "DRAGBAR_DESKTOP_%i", i);
-
- ac = FindItem(s, 0, LIST_FINDBY_NAME, LIST_TYPE_ACLASS);
- if (!ac)
- {
- ac = ActionclassCreate(s, 0);
- a = ActionCreate(EVENT_MOUSE_DOWN, 0, 0, 0, 1, 0, NULL, NULL);
- ActionclassAddAction(ac, a);
-
- Esnprintf(s, sizeof(s), "desk drag %i", i);
- ActionAddTo(a, s);
-
- a = ActionCreate(EVENT_MOUSE_DOWN, 0, 0, 0, 3, 0, NULL, NULL);
- ActionclassAddAction(ac, a);
- ActionAddTo(a, "menus show deskmenu");
-
- a = ActionCreate(EVENT_MOUSE_DOWN, 0, 0, 0, 2, 0, NULL, NULL);
- ActionclassAddAction(ac, a);
- ActionAddTo(a, "menus show taskmenu");
-
- if (i > 0)
- {
- t = _("Hold down the mouse button and drag\n"
- "the mouse to be able to drag the desktop\n"
- "back and forth.\n"
- "Click right mouse button for a list of all\n"
- "Desktops and their applications.\n"
- "Click middle mouse button for a list of all\n"
- "applications currently running.\n");
- ActionclassSetTooltipString(ac, t);
- }
- else
- {
- t = _("This is the Root desktop.\n"
- "You cannot drag the root desktop around.\n"
- "Click right mouse button for a list of all\n"
- "Desktops and their applications.\n"
- "Click middle mouse button for a list of all\n"
- "applications currently running.\n");
- ActionclassSetTooltipString(ac, t);
- }
- }
- Esnprintf(s, sizeof(s), "RAISEBUTTON_DESKTOP_%i", i);
- ac2 = FindItem(s, 0, LIST_FINDBY_NAME, LIST_TYPE_ACLASS);
- if (!ac2)
- {
- ac2 = ActionclassCreate(s, 0);
- a = ActionCreate(EVENT_MOUSE_UP, 1, 0, 1, 0, 0, NULL, NULL);
- ActionclassAddAction(ac2, a);
-
- Esnprintf(s, sizeof(s), "desk raise %i", i);
- ActionAddTo(a, s);
- t = _("Click here to raise this desktop\nto the top.\n");
- ActionclassSetTooltipString(ac, t);
- }
- Esnprintf(s, sizeof(s), "LOWERBUTTON_DESKTOP_%i", i);
- ac3 = FindItem(s, 0, LIST_FINDBY_NAME, LIST_TYPE_ACLASS);
- if (!ac3)
- {
- ac3 = ActionclassCreate(s, 0);
- a = ActionCreate(EVENT_MOUSE_UP, 1, 0, 1, 0, 0, NULL, NULL);
- ActionclassAddAction(ac3, a);
-
- Esnprintf(s, sizeof(s), "desk lower %i", i);
- ActionAddTo(a, s);
- t = _("Click here to lower this desktop\nto the bottom.\n");
- ActionclassSetTooltipString(ac, t);
- }
- b = NULL;
-
- if (Conf.desks.dragdir < 2)
- {
- ic = ImageclassFind("DESKTOP_DRAGBUTTON_VERT", 0);
- ic2 = ImageclassFind("DESKTOP_RAISEBUTTON_VERT", 0);
- ic3 = ImageclassFind("DESKTOP_LOWERBUTTON_VERT", 0);
- ic4 = ImageclassFind("DESKTOP_DESKRAY_VERT", 0);
- }
- else
- {
- ic = ImageclassFind("DESKTOP_DRAGBUTTON_HORIZ", 0);
- ic2 = ImageclassFind("DESKTOP_RAISEBUTTON_HORIZ", 0);
- ic3 = ImageclassFind("DESKTOP_LOWERBUTTON_HORIZ", 0);
- ic4 = ImageclassFind("DESKTOP_DESKRAY_HORIZ", 0);
- }
-
- switch (Conf.desks.dragbar_ordering)
- {
- case 0:
- m = 0;
- n = 1;
- o = 2;
- break;
- case 1:
- m = 0;
- n = 2;
- o = 1;
- break;
- case 2:
- m = 2;
- n = 0;
- o = 1;
- break;
- case 3:
- m = 1;
- n = 0;
- o = 2;
- break;
- case 4:
- m = 1;
- n = 2;
- o = 0;
- break;
- case 5:
- m = 2;
- n = 1;
- o = 0;
- break;
- default:
- m = 0;
- n = 1;
- o = 2;
- break;
- }
-
- switch (Conf.desks.dragdir)
- {
- case 0:
- w[0] = w[1] = w[2] = h[0] = h[1] = Conf.desks.dragbar_width;
- if (Conf.desks.dragbar_length == 0)
- h[2] = VRoot.h - (Conf.desks.dragbar_width * 2);
- else
- h[2] = Conf.desks.dragbar_length;
- x[0] = x[1] = x[2] = 0;
- y[m] = 0;
- y[n] = y[m] + h[m];
- y[o] = y[n] + h[n];
- break;
- case 1:
- w[0] = w[1] = w[2] = h[0] = h[1] = Conf.desks.dragbar_width;
- if (Conf.desks.dragbar_length == 0)
- h[2] = VRoot.h - (Conf.desks.dragbar_width * 2);
- else
- h[2] = Conf.desks.dragbar_length;
- x[0] = x[1] = x[2] = VRoot.w - Conf.desks.dragbar_width;
- y[m] = 0;
- y[n] = y[m] + h[m];
- y[o] = y[n] + h[n];
- break;
- case 2:
- h[0] = h[1] = h[2] = w[0] = w[1] = Conf.desks.dragbar_width;
- if (Conf.desks.dragbar_length == 0)
- w[2] = VRoot.w - (Conf.desks.dragbar_width * 2);
- else
- w[2] = Conf.desks.dragbar_length;
- y[0] = y[1] = y[2] = 0;
- x[m] = 0;
- x[n] = x[m] + w[m];
- x[o] = x[n] + w[n];
- break;
- case 3:
- h[0] = h[1] = h[2] = w[0] = w[1] = Conf.desks.dragbar_width;
- if (Conf.desks.dragbar_length == 0)
- w[2] = VRoot.w - (Conf.desks.dragbar_width * 2);
- else
- w[2] = Conf.desks.dragbar_length;
- y[0] = y[1] = y[2] = VRoot.h - Conf.desks.dragbar_width;
- x[m] = 0;
- x[n] = x[m] + w[m];
- x[o] = x[n] + w[n];
- break;
- default:
- break;
- }
-
- if (Conf.desks.dragbar_width > 0)
- {
- b = ButtonCreate("_DESKTOP_DRAG_CONTROL", 1, ic2, ac2, NULL, NULL,
- -1, FLAG_FIXED, 1, 99999, 1, 99999, 0, 0, x[0], 0,
- y[0], 0, 0, w[0], 0, h[0], 0, i, 0);
- b = ButtonCreate("_DESKTOP_DRAG_CONTROL", 1, ic3, ac3, NULL, NULL,
- -1, FLAG_FIXED, 1, 99999, 1, 99999, 0, 0, x[1], 0,
- y[1], 0, 0, w[1], 0, h[1], 0, i, 0);
- b = ButtonCreate("_DESKTOP_DRAG_CONTROL", 1, ic, ac, NULL, NULL,
- -1, FLAG_FIXED, 1, 99999, 1, 99999, 0, 0, x[2], 0,
- y[2], 0, 0, w[2], 0, h[2], 0, i, 0);
- }
- if (i > 0)
- {
- if (Conf.desks.dragdir == 0)
- {
- b = ButtonCreate("_DESKTOP_DESKRAY_DRAG_CONTROL", 2, ic4, ac,
- NULL, NULL, 1, FLAG_FIXED_VERT, 1, 99999, 1,
- 99999, 0, 0, EoGetX(d), 0,
- EoGetY(d), 0, 0, 0, 0, 0, 1, 0, 1);
- }
- else if (Conf.desks.dragdir == 1)
- {
- b = ButtonCreate("_DESKTOP_DESKRAY_DRAG_CONTROL", 2, ic4, ac,
- NULL, NULL, 1, FLAG_FIXED_VERT, 1, 99999, 1,
- 99999, 0, 0,
- EoGetX(d) + VRoot.w -
- Conf.desks.dragbar_width, 0, EoGetY(d),
- 0, 0, 0, 0, 0, 1, 0, 1);
- }
- else if (Conf.desks.dragdir == 2)
- {
- b = ButtonCreate("_DESKTOP_DESKRAY_DRAG_CONTROL", 2, ic4, ac,
- NULL, NULL, 1, FLAG_FIXED_HORIZ, 1, 99999, 1,
- 99999, 0, 0, EoGetX(d), 0,
- EoGetY(d), 0, 0, 0, 0, 0, 1, 0, 1);
- }
- else
- {
- b = ButtonCreate("_DESKTOP_DESKRAY_DRAG_CONTROL", 2, ic4, ac,
- NULL, NULL, 1, FLAG_FIXED_HORIZ, 1, 99999, 1,
- 99999, 0, 0, EoGetX(d), 0,
- EoGetY(d) + VRoot.h -
- Conf.desks.dragbar_width, 0, 0, 0, 0, 0, 1,
- 0, 1);
- }
- }
- d->tag = b;
+ if (d->bg)
+ DesktopSetBg(i, d->bg, 1);
}
}
void
DesktopSetBg(int desk, Background * bg, int refresh)
{
- if (desk < 0 || desk >= ENLIGHTENMENT_CONF_NUM_DESKTOPS)
+ Desk *d;
+
+ if (desk < 0 || desk >= Conf.desks.num)
return;
+ d = _DeskGet(desk);
+
if (refresh)
- BackgroundPixmapFree(desks.desk[desk].bg);
+ BackgroundPixmapFree(d->bg);
if (bg && !strcmp(BackgroundGetName(bg), "NONE"))
bg = NULL;
- if (desks.desk[desk].bg != bg)
+ if (d->bg != bg)
{
- if (desks.desk[desk].bg)
- BackgroundDecRefcount(desks.desk[desk].bg);
+ if (d->bg)
+ BackgroundDecRefcount(d->bg);
if (bg)
BackgroundIncRefcount(bg);
}
- desks.desk[desk].bg = bg;
+ d->bg = bg;
- if (desks.desk[desk].viewable)
+ if (d->viewable)
RefreshDesktop(desk);
ModulesSignal(ESIGNAL_BACKGROUND_CHANGE, (void *)desk);
@@ -679,7 +855,7 @@
Desk *d;
int i;
- for (i = 0; i < ENLIGHTENMENT_CONF_NUM_DESKTOPS; i++)
+ for (i = 0; i < Conf.desks.num; i++)
{
d = _DeskGet(desks.order[i]);
if (x >= EoGetX(d) && x < (EoGetX(d) + VRoot.w) &&
@@ -851,7 +1027,7 @@
{
n = -1;
i = 0;
- while ((n < 0) && (i < ENLIGHTENMENT_CONF_NUM_DESKTOPS))
+ while (n < 0 && i < Conf.desks.num)
{
if (desks.order[i] == desk)
n = i;
@@ -859,7 +1035,7 @@
}
if (n >= 0)
{
- for (i = n + 1; i < ENLIGHTENMENT_CONF_NUM_DESKTOPS; i++)
+ for (i = n + 1; i < Conf.desks.num; i++)
{
dd = _DeskGet(desks.order[i]);
if (dd->viewable)
@@ -873,7 +1049,7 @@
n = -1;
i = 0;
- while ((n < 0) && (i < ENLIGHTENMENT_CONF_NUM_DESKTOPS))
+ while (n < 0 && i < Conf.desks.num)
{
if (desks.order[i] == desk)
n = i;
@@ -892,7 +1068,7 @@
v = 0;
}
- for (i = n + 1; i < ENLIGHTENMENT_CONF_NUM_DESKTOPS; i++)
+ for (i = n + 1; i < Conf.desks.num; i++)
{
dd = _DeskGet(desks.order[i]);
if ((!d->viewable) && (v))
@@ -966,7 +1142,7 @@
if (desk == 0)
{
- for (i = ENLIGHTENMENT_CONF_NUM_DESKTOPS - 1; i > 0; i--)
+ for (i = Conf.desks.num - 1; i > 0; i--)
{
HideDesktop(desks.order[i]);
}
@@ -1043,7 +1219,7 @@
if (desk == 0)
{
- for (i = ENLIGHTENMENT_CONF_NUM_DESKTOPS - 1; i > 0; i--)
+ for (i = Conf.desks.num - 1; i > 0; i--)
HideDesktop(desks.order[i]);
}
else
@@ -1160,38 +1336,6 @@
}
}
-void
-DesktopsEventsConfigure(int mode)
-{
- Desk *d;
- int i;
- long event_mask;
- XWindowAttributes xwa;
-
- for (i = 0; i < Conf.desks.num; i++)
- {
- d = _DeskGet(i);
-
- if (mode)
- {
- event_mask = d->event_mask;
- }
- else
- {
- XGetWindowAttributes(disp, EoGetWin(d), &xwa);
- d->event_mask = xwa.your_event_mask | EDESK_EVENT_MASK;
- event_mask =
- PropertyChangeMask | SubstructureRedirectMask |
- ButtonPressMask | ButtonReleaseMask;
-#if USE_COMPOSITE
- /* Handle ConfigureNotify's while sliding */
- event_mask |= SubstructureNotifyMask;
-#endif
- }
- XSelectInput(disp, EoGetWin(d), event_mask);
- }
-}
-
static char sentpress = 0;
static void
@@ -1205,12 +1349,16 @@
void
DeskDragStart(int desk)
{
+ Desk *d;
+
+ d = _DeskGet(desk);
+
Mode.deskdrag = desk;
Mode.mode = MODE_DESKDRAG;
Mode.start_x = Mode.x;
Mode.start_y = Mode.y;
- Mode.win_x = DeskGetX(desk);
- Mode.win_y = DeskGetY(desk);
+ Mode.win_x = EoGetX(d);
+ Mode.win_y = EoGetY(d);
}
void
@@ -1320,19 +1468,13 @@
if (Conf.desks.dragdir > 3)
Conf.desks.dragdir = 0;
}
+
if (pd != Conf.desks.dragdir)
{
GotoDesktop(DesksGetCurrent());
- for (i = 0; i < ENLIGHTENMENT_CONF_NUM_DESKTOPS; i++)
+ for (i = 0; i < Conf.desks.num; i++)
MoveDesktop(i, 0, 0);
- while ((b = RemoveItem("_DESKTOP_DRAG_CONTROL", 0,
- LIST_FINDBY_NAME, LIST_TYPE_BUTTON)))
- ButtonDestroy(b);
- while ((b = RemoveItem("_DESKTOP_DESKRAY_DRAG_CONTROL", 0,
- LIST_FINDBY_NAME, LIST_TYPE_BUTTON)))
- ButtonDestroy(b);
- InitDesktopControls();
- ShowDesktopControls();
+ DesksControlsRefresh();
}
autosave();
return 0;
@@ -1353,13 +1495,10 @@
if (Conf.desks.dragbar_ordering > 5)
Conf.desks.dragbar_ordering = 0;
}
+
if (pd != Conf.desks.dragbar_ordering)
{
- while ((b = RemoveItem("_DESKTOP_DRAG_CONTROL", 0,
- LIST_FINDBY_NAME, LIST_TYPE_BUTTON)))
- ButtonDestroy(b);
- InitDesktopControls();
- ShowDesktopControls();
+ DesksControlsRefresh();
}
autosave();
return 0;
@@ -1374,13 +1513,10 @@
pd = Conf.desks.dragbar_width;
if (params)
Conf.desks.dragbar_width = atoi(params);
+
if (pd != Conf.desks.dragbar_width)
{
- while ((b = RemoveItem("_DESKTOP_DRAG_CONTROL", 0,
- LIST_FINDBY_NAME, LIST_TYPE_BUTTON)))
- ButtonDestroy(b);
- InitDesktopControls();
- ShowDesktopControls();
+ DesksControlsRefresh();
}
autosave();
return 0;
@@ -1395,13 +1531,10 @@
pd = Conf.desks.dragbar_length;
if (params)
Conf.desks.dragbar_length = atoi(params);
+
if (pd != Conf.desks.dragbar_length)
{
- while ((b = RemoveItem("_DESKTOP_DRAG_CONTROL", 0,
- LIST_FINDBY_NAME, LIST_TYPE_BUTTON)))
- ButtonDestroy(b);
- InitDesktopControls();
- ShowDesktopControls();
+ DesksControlsRefresh();
}
autosave();
return 0;
@@ -1460,12 +1593,11 @@
RefreshDesktop(0);
/* toss down the dragbar and related */
- InitDesktopControls();
+ DesksControlsCreate();
+ DesksControlsShow();
/* then draw all the buttons that belong on the desktop */
ShowDesktopButtons();
-
- ShowDesktopControls();
break;
}
}
@@ -1477,6 +1609,8 @@
static DItem *tmp_desk_text;
static Dialog *tmp_desk_dialog;
static char tmp_desktop_wraparound;
+static char tmp_dragbar;
+static int tmp_dragdir;
static void
CB_ConfigureDesktops(Dialog * d __UNUSED__, int val, void *data __UNUSED__)
@@ -1485,6 +1619,18 @@
{
ChangeNumberOfDesktops(tmp_desktops);
Conf.desks.desks_wraparound = tmp_desktop_wraparound;
+
+ if ((Conf.desks.dragdir != tmp_dragdir) ||
+ ((tmp_dragbar) && (Conf.desks.dragbar_width < 1)) ||
+ ((!tmp_dragbar) && (Conf.desks.dragbar_width > 0)))
+ {
+ if (tmp_dragbar)
+ Conf.desks.dragbar_width = 16;
+ else
+ Conf.desks.dragbar_width = 0;
+ Conf.desks.dragdir = tmp_dragdir;
+ DesksControlsRefresh();
+ }
}
autosave();
}
@@ -1499,45 +1645,57 @@
int w, h;
static int prev_desktops = -1;
char s[64];
+ ImageClass *ic;
if (val == 1)
called = 0;
if ((val != 1) && (prev_desktops == tmp_desktops))
return;
+
prev_desktops = tmp_desktops;
di = (DItem *) data;
win = DialogItemAreaGetWindow(di);
DialogItemAreaGetSize(di, &w, &h);
+
if (!called)
{
- ImageClass *ic;
-
ic = ImageclassFind("SETTINGS_DESKTOP_AREA", 0);
if (ic)
ImageclassApply(ic, win, w, h, 0, 0, STATE_NORMAL, 0, ST_UNKNWN);
- for (i = 0; i < ENLIGHTENMENT_CONF_NUM_DESKTOPS; i++)
+ for (i = 0; i < Conf.desks.num; i++)
wins[i] = 0;
called = 1;
}
+
for (i = 0; i < tmp_desktops; i++)
{
if (!wins[i])
{
+ Background *bg;
+ Pixmap pmap;
+
wins[i] = ECreateWindow(win, 0, 0, 64, 48, 0);
XSetWindowBorderWidth(disp, wins[i], 1);
- if (DeskGetBackground(i))
- {
- Pixmap pmap;
+ pmap = ecore_x_pixmap_new(wins[i], 64, 48, VRoot.depth);
+ ESetWindowBackgroundPixmap(disp, wins[i], pmap);
- pmap = ecore_x_pixmap_new(wins[i], 64, 48, VRoot.depth);
- ESetWindowBackgroundPixmap(disp, wins[i], pmap);
- BackgroundApply(DeskGetBackground(i), pmap, 0);
- ecore_x_pixmap_del(pmap);
+ bg = DeskGetBackground(i);
+ if (bg)
+ BackgroundApply(DeskGetBackground(i), pmap, 0);
+ else
+ {
+ ic = ImageclassFind("SETTINGS_DESKTOP_AREA", 0);
+ if (ic)
+ ImageclassApply(ic, wins[i], 64, 48, 0, 0, STATE_NORMAL, 0,
+ ST_UNKNWN);
}
+
+ ecore_x_pixmap_del(pmap);
}
}
- for (i = (tmp_desktops - 1); i >= 0; i--)
+
+ for (i = tmp_desktops - 1; i >= 0; i--)
{
int num;
@@ -1549,8 +1707,14 @@
(i * (h - 48 - 2)) / num);
EMapWindow(disp, wins[i]);
}
- for (i = tmp_desktops; i < ENLIGHTENMENT_CONF_NUM_DESKTOPS; i++)
- EUnmapWindow(disp, wins[i]);
+
+ for (i = tmp_desktops; i < Conf.desks.num; i++)
+ {
+ EUnmapWindow(disp, wins[i]);
+ EDestroyWindow(disp, wins[i]);
+ wins[i] = None;
+ }
+
if (tmp_desktops > 1)
Esnprintf(s, sizeof(s), _("%i Desktops"), tmp_desktops);
else
@@ -1563,7 +1727,7 @@
SettingsDesktops(void)
{
Dialog *d;
- DItem *table, *di, *area, *slider;
+ DItem *table, *di, *area, *slider, *radio;
char s[64];
if ((d =
@@ -1577,6 +1741,11 @@
tmp_desktops = Conf.desks.num;
tmp_desktop_wraparound = Conf.desks.desks_wraparound;
+ if (Conf.desks.dragbar_width < 1)
+ tmp_dragbar = 0;
+ else
+ tmp_dragbar = 1;
+ tmp_dragdir = Conf.desks.dragdir;
d = tmp_desk_dialog = DialogCreate("CONFIGURE_DESKTOPS");
DialogSetTitle(d, _("Multiple Desktop Settings"));
@@ -1657,6 +1826,60 @@
DialogItemSetFill(di, 1, 0);
DialogItemSeparatorSetOrientation(di, 0);
+ di = DialogAddItem(table, DITEM_CHECKBUTTON);
+ DialogItemSetPadding(di, 2, 2, 2, 2);
+ DialogItemSetFill(di, 1, 0);
+ DialogItemSetColSpan(di, 2);
+ DialogItemCheckButtonSetText(di, _("Display desktop dragbar"));
+ DialogItemCheckButtonSetState(di, tmp_dragbar);
+ DialogItemCheckButtonSetPtr(di, &tmp_dragbar);
+
+ di = DialogAddItem(table, DITEM_TEXT);
+ DialogItemSetColSpan(di, 2);
+ DialogItemSetPadding(di, 2, 2, 2, 2);
+ DialogItemSetFill(di, 1, 0);
+ DialogItemSetAlign(di, 0, 512);
+ DialogItemTextSetText(di, _("Drag bar position:"));
+
+ radio = di = DialogAddItem(table, DITEM_RADIOBUTTON);
+ DialogItemSetColSpan(di, 2);
+ DialogItemSetPadding(di, 2, 2, 2, 2);
+ DialogItemSetFill(di, 1, 0);
+ DialogItemRadioButtonSetText(di, _("Top"));
+ DialogItemRadioButtonSetFirst(di, radio);
+ DialogItemRadioButtonGroupSetVal(di, 2);
+
+ di = DialogAddItem(table, DITEM_RADIOBUTTON);
+ DialogItemSetColSpan(di, 2);
+ DialogItemSetPadding(di, 2, 2, 2, 2);
+ DialogItemSetFill(di, 1, 0);
+ DialogItemRadioButtonSetText(di, _("Bottom"));
+ DialogItemRadioButtonSetFirst(di, radio);
+ DialogItemRadioButtonGroupSetVal(di, 3);
+
+ di = DialogAddItem(table, DITEM_RADIOBUTTON);
+ DialogItemSetColSpan(di, 2);
+ DialogItemSetPadding(di, 2, 2, 2, 2);
+ DialogItemSetFill(di, 1, 0);
+ DialogItemRadioButtonSetText(di, _("Left"));
+ DialogItemRadioButtonSetFirst(di, radio);
+ DialogItemRadioButtonGroupSetVal(di, 0);
+
+ di = DialogAddItem(table, DITEM_RADIOBUTTON);
+ DialogItemSetColSpan(di, 2);
+ DialogItemSetPadding(di, 2, 2, 2, 2);
+ DialogItemSetFill(di, 1, 0);
+ DialogItemRadioButtonSetText(di, _("Right"));
+ DialogItemRadioButtonSetFirst(di, radio);
+ DialogItemRadioButtonGroupSetVal(di, 1);
+ DialogItemRadioButtonGroupSetValPtr(radio, &tmp_dragdir);
+
+ di = DialogAddItem(table, DITEM_SEPARATOR);
+ DialogItemSetColSpan(di, 2);
+ DialogItemSetPadding(di, 2, 2, 2, 2);
+ DialogItemSetFill(di, 1, 0);
+ DialogItemSeparatorSetOrientation(di, 0);
+
DialogAddButton(d, _("OK"), CB_ConfigureDesktops, 1);
DialogAddButton(d, _("Apply"), CB_ConfigureDesktops, 0);
DialogAddButton(d, _("Close"), CB_ConfigureDesktops, 1);
===================================================================
RCS file: /cvsroot/enlightenment/e16/e/src/lists.c,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -3 -r1.13 -r1.14
--- lists.c 21 Mar 2004 01:39:40 -0000 1.13
+++ lists.c 9 Jan 2005 10:06:07 -0000 1.14
@@ -319,7 +319,8 @@
while (ptr)
{
- if (ptr == ptritem)
+ p = ptr->item;
+ if (p == ptritem)
{
if (pptr)
{
@@ -329,7 +330,6 @@
{
lists[type].next = ptr->next;
}
- p = ptr->item;
if (ptr->name)
Efree(ptr->name);
Efree(ptr);
===================================================================
RCS file: /cvsroot/enlightenment/e16/e/src/pager.c,v
retrieving revision 1.108
retrieving revision 1.109
diff -u -3 -r1.108 -r1.109
--- pager.c 28 Dec 2004 23:46:46 -0000 1.108
+++ pager.c 9 Jan 2005 10:06:07 -0000 1.109
@@ -286,6 +286,10 @@
return;
}
+ /* Desk may be gone */
+ if (p->desktop >= DesksGetNumber())
+ return;
+
p->update_phase = 0;
GetAreaSize(&ax, &ay);
DeskGetArea(p->desktop, &cx, &cy);
@@ -454,6 +458,10 @@
return;
}
+ /* Desk may be gone */
+ if (p->desktop >= DesksGetNumber())
+ return;
+
if ((p->desktop != DesksGetCurrent()) || (!Conf.pagers.snap))
{
PagerRedraw(p, 0);
===================================================================
RCS file: /cvsroot/enlightenment/e16/e/src/settings.c,v
retrieving revision 1.127
retrieving revision 1.128
diff -u -3 -r1.127 -r1.128
--- settings.c 31 Dec 2004 11:53:44 -0000 1.127
+++ settings.c 9 Jan 2005 10:06:29 -0000 1.128
@@ -1039,8 +1039,6 @@
static char tmp_cleanup_slide;
static char tmp_desktop_slide;
static char tmp_animate_shading;
-static char tmp_dragbar;
-static int tmp_dragdir;
static int tmp_slide_mode;
static int tmp_map_slide_speed;
static int tmp_cleanup_slide_speed;
@@ -1065,25 +1063,6 @@
Conf.slidespeedmap = tmp_map_slide_speed;
Conf.slidespeedcleanup = tmp_cleanup_slide_speed;
Conf.desks.slidespeed = tmp_desktop_slide_speed;
-
- if ((Conf.desks.dragdir != tmp_dragdir) ||
- ((tmp_dragbar) && (Conf.desks.dragbar_width < 1)) ||
- ((!tmp_dragbar) && (Conf.desks.dragbar_width > 0)))
- {
- Button *b;
-
- if (tmp_dragbar)
- Conf.desks.dragbar_width = 16;
- else
- Conf.desks.dragbar_width = 0;
- Conf.desks.dragdir = tmp_dragdir;
- while ((b =
- RemoveItem("_DESKTOP_DRAG_CONTROL", 0, LIST_FINDBY_NAME,
- LIST_TYPE_BUTTON)))
- ButtonDestroy(b);
- InitDesktopControls();
- ShowDesktopControls();
- }
}
autosave();
}
@@ -1110,11 +1089,6 @@
tmp_cleanup_slide = Conf.cleanupslide;
tmp_desktop_slide = Conf.desks.slidein;
tmp_animate_shading = Conf.animate_shading;
- if (Conf.desks.dragbar_width < 1)
- tmp_dragbar = 0;
- else
- tmp_dragbar = 1;
- tmp_dragdir = Conf.desks.dragdir;
tmp_slide_mode = Conf.slidemode;
tmp_map_slide_speed = Conf.slidespeedmap;
tmp_shade_speed = Conf.shadespeed;
@@ -1270,70 +1244,6 @@
DialogItemSetFill(di, 1, 0);
DialogItemSeparatorSetOrientation(di, 0);
- di = DialogAddItem(table, DITEM_CHECKBUTTON);
- DialogItemSetPadding(di, 2, 2, 2, 2);
- DialogItemSetFill(di, 1, 0);
- DialogItemSetColSpan(di, 4);
- DialogItemCheckButtonSetText(di, _("Display desktop dragbar"));
- DialogItemCheckButtonSetState(di, tmp_dragbar);
- DialogItemCheckButtonSetPtr(di, &tmp_dragbar);
-
- di = DialogAddItem(table, DITEM_TEXT);
- DialogItemSetColSpan(di, 1);
- DialogItemSetPadding(di, 2, 2, 2, 2);
- DialogItemSetFill(di, 0, 0);
- DialogItemSetAlign(di, 0, 512);
- DialogItemTextSetText(di, _("Drag bar position:"));
-
- di = DialogAddItem(table, DITEM_NONE);
-
- di = DialogAddItem(table, DITEM_NONE);
-
- di = DialogAddItem(table, DITEM_NONE);
-
- radio = di = DialogAddItem(table, DITEM_RADIOBUTTON);
- DialogItemSetPadding(di, 2, 2, 2, 2);
- DialogItemSetFill(di, 1, 0);
- DialogItemRadioButtonSetText(di, _("Top"));
- DialogItemRadioButtonSetFirst(di, radio);
- DialogItemRadioButtonGroupSetVal(di, 2);
-
- di = DialogAddItem(table, DITEM_RADIOBUTTON);
- DialogItemSetPadding(di, 2, 2, 2, 2);
- DialogItemSetFill(di, 1, 0);
- DialogItemRadioButtonSetText(di, _("Bottom"));
- DialogItemRadioButtonSetFirst(di, radio);
- DialogItemRadioButtonGroupSetVal(di, 3);
-
- di = DialogAddItem(table, DITEM_NONE);
-
- di = DialogAddItem(table, DITEM_NONE);
-
- di = DialogAddItem(table, DITEM_RADIOBUTTON);
- DialogItemSetPadding(di, 2, 2, 2, 2);
- DialogItemSetFill(di, 1, 0);
- DialogItemRadioButtonSetText(di, _("Left"));
- DialogItemRadioButtonSetFirst(di, radio);
- DialogItemRadioButtonGroupSetVal(di, 0);
-
- di = DialogAddItem(table, DITEM_RADIOBUTTON);
- DialogItemSetPadding(di, 2, 2, 2, 2);
- DialogItemSetFill(di, 1, 0);
- DialogItemRadioButtonSetText(di, _("Right"));
- DialogItemRadioButtonSetFirst(di, radio);
- DialogItemRadioButtonGroupSetVal(di, 1);
- DialogItemRadioButtonGroupSetValPtr(radio, &tmp_dragdir);
-
- di = DialogAddItem(table, DITEM_NONE);
-
- di = DialogAddItem(table, DITEM_NONE);
-
- di = DialogAddItem(table, DITEM_SEPARATOR);
- DialogItemSetColSpan(di, 4);
- DialogItemSetPadding(di, 2, 2, 2, 2);
- DialogItemSetFill(di, 1, 0);
- DialogItemSeparatorSetOrientation(di, 0);
-
di = DialogAddItem(table, DITEM_TEXT);
DialogItemSetPadding(di, 2, 2, 2, 2);
DialogItemSetFill(di, 0, 0);
-------------------------------------------------------
The SF.Net email is sponsored by: Beat the post-holiday blues
Get a FREE limited edition SourceForge.net t-shirt from ThinkGeek.
It's fun and FREE -- well, almost....http://www.thinkgeek.com/sfshirt
_______________________________________________
enlightenment-cvs mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs