Enlightenment CVS committal
Author : kwo
Project : e16
Module : e
Dir : e16/e/src
Modified Files:
E.h Makefile.am arrange.c ewin-ops.c ipc.c menus.c screen.c
setup.c size.c warp.c
Added Files:
screen.h
Log Message:
Add feature to subdivide screen (xinerama style).
===================================================================
RCS file: /cvs/e/e16/e/src/E.h,v
retrieving revision 1.548
retrieving revision 1.549
diff -u -3 -r1.548 -r1.549
--- E.h 21 Apr 2006 22:52:58 -0000 1.548
+++ E.h 22 Apr 2006 22:00:01 -0000 1.549
@@ -795,18 +795,6 @@
/* regex.c */
int matchregexp(const char *rx, const char *s);
-/* screen.c */
-void ScreenInit(void);
-void ScreenShowInfo(void);
-int ScreenGetGeometry(int x, int y, int *px, int *py,
- int *pw, int *ph);
-int ScreenGetAvailableArea(int x, int y, int *px, int *py,
- int *pw, int *ph);
-int GetPointerScreenGeometry(int *px, int *py,
- int *pw, int *ph);
-int GetPointerScreenAvailableArea(int *px, int *py,
- int *pw, int *ph);
-
/* settings.c */
void SettingsMoveResize(void);
void SettingsPlacement(void);
===================================================================
RCS file: /cvs/e/e16/e/src/Makefile.am,v
retrieving revision 1.71
retrieving revision 1.72
diff -u -3 -r1.71 -r1.72
--- Makefile.am 19 Apr 2006 19:13:46 -0000 1.71
+++ Makefile.am 22 Apr 2006 22:00:01 -0000 1.72
@@ -96,6 +96,7 @@
progress.c \
regex.c \
screen.c \
+ screen.h \
session.c \
session.h \
settings.c \
===================================================================
RCS file: /cvs/e/e16/e/src/arrange.c,v
retrieving revision 1.87
retrieving revision 1.88
diff -u -3 -r1.87 -r1.88
--- arrange.c 18 Feb 2006 08:30:03 -0000 1.87
+++ arrange.c 22 Apr 2006 22:00:01 -0000 1.88
@@ -26,6 +26,7 @@
#include "desktops.h"
#include "ewins.h"
#include "groups.h"
+#include "screen.h"
static int
ArrangeAddToList(int **array, int current_size, int value)
===================================================================
RCS file: /cvs/e/e16/e/src/ewin-ops.c,v
retrieving revision 1.95
retrieving revision 1.96
diff -u -3 -r1.95 -r1.96
--- ewin-ops.c 15 Apr 2006 18:32:54 -0000 1.95
+++ ewin-ops.c 22 Apr 2006 22:00:01 -0000 1.96
@@ -31,6 +31,7 @@
#include "groups.h"
#include "hints.h"
#include "iclass.h" /* FIXME - Should not be here */
+#include "screen.h"
#include "snaps.h"
#include "xwin.h"
===================================================================
RCS file: /cvs/e/e16/e/src/ipc.c,v
retrieving revision 1.264
retrieving revision 1.265
diff -u -3 -r1.264 -r1.265
--- ipc.c 19 Apr 2006 19:13:46 -0000 1.264
+++ ipc.c 22 Apr 2006 22:00:02 -0000 1.265
@@ -30,6 +30,7 @@
#include "ewins.h"
#include "ewin-ops.h"
#include "hints.h" /* FIXME - Should not be here */
+#include "screen.h"
#include "session.h"
#include "snaps.h"
#include "timers.h"
@@ -133,9 +134,36 @@
/* The IPC functions */
static void
-IPC_Screen(const char *params __UNUSED__, Client * c __UNUSED__)
+IPC_Screen(const char *params, Client * c __UNUSED__)
{
- ScreenShowInfo();
+ char param[1024];
+ int l;
+ const char *p;
+
+ p = params;
+ if (p)
+ {
+ l = 0;
+ sscanf(p, "%1000s %n", param, &l);
+ p += l;
+ }
+
+ if (!p || !strncmp(param, "list", 2))
+ {
+ ScreenShowInfo(p);
+ }
+ else if (!strcmp(param, "split"))
+ {
+ int i, j, nx, ny;
+
+ nx = 2;
+ ny = 1;
+ sscanf(p, "%i %i\n", &nx, &ny);
+ for (i = 0; i < nx; i++)
+ for (j = 0; j < ny; j++)
+ ScreenAdd(1, VRoot.scr, i * VRoot.w / nx, j * VRoot.h / ny,
+ VRoot.w / nx, VRoot.h / ny);
+ }
}
static void
===================================================================
RCS file: /cvs/e/e16/e/src/menus.c,v
retrieving revision 1.238
retrieving revision 1.239
diff -u -3 -r1.238 -r1.239
--- menus.c 21 Apr 2006 22:52:59 -0000 1.238
+++ menus.c 22 Apr 2006 22:00:02 -0000 1.239
@@ -32,6 +32,7 @@
#include "hints.h"
#include "iclass.h"
#include "menus.h"
+#include "screen.h"
#include "tclass.h"
#include "timers.h"
#include "tooltips.h"
===================================================================
RCS file: /cvs/e/e16/e/src/screen.c,v
retrieving revision 1.15
retrieving revision 1.16
diff -u -3 -r1.15 -r1.16
--- screen.c 22 Apr 2006 14:33:07 -0000 1.15
+++ screen.c 22 Apr 2006 22:00:02 -0000 1.16
@@ -23,51 +23,83 @@
*/
#include "E.h"
#include "ewins.h"
+#include "screen.h"
#include "xwin.h"
#ifdef HAS_XINERAMA
#include <X11/extensions/Xinerama.h>
#endif
-#ifdef HAS_XINERAMA
-static XineramaScreenInfo *screens = NULL;
-static int num_screens = 0;
-#endif
+typedef struct
+{
+ int type;
+ int head;
+ int x, y;
+ int w, h;
+} EScreen;
+
+static EScreen *p_screens = NULL;
+static int n_screens = 0;
+
+void
+ScreenAdd(int type, int head, int x, int y, unsigned int w, unsigned int h)
+{
+ EScreen *es;
+
+ n_screens++;
+ p_screens = Erealloc(p_screens, n_screens * sizeof(EScreen));
+
+ es = p_screens + n_screens - 1;
+ es->type = type;
+ es->head = head;
+ es->x = x;
+ es->y = y;
+ es->w = w;
+ es->h = h;
+}
void
ScreenInit(void)
{
+#ifdef HAS_XINERAMA
+ XineramaScreenInfo *screens = NULL;
+ int num_screens = 0;
+ int i;
+
if (Mode.wm.window)
return;
-#ifdef HAS_XINERAMA
+
Mode.display.xinerama_active = XineramaIsActive(disp);
Conf.extra_head = 0;
if (Mode.display.xinerama_active)
screens = XineramaQueryScreens(disp, &num_screens);
+
+ for (i = 0; i < num_screens; i++)
+ ScreenAdd(0, screens[i].screen_number, screens[i].x_org,
+ screens[i].y_org, screens[i].width, screens[i].height);
#endif
}
void
-ScreenShowInfo(void)
+ScreenShowInfo(const char *prm __UNUSED__)
{
+ int i;
+
#ifdef HAS_XINERAMA
- if (Mode.display.xinerama_active)
+ if (XineramaIsActive(disp))
{
XineramaScreenInfo *scrns;
- int num, i;
+ int num;
scrns = XineramaQueryScreens(disp, &num);
- IpcPrintf("Xinerama active:\n");
+ IpcPrintf("Xinerama screens:\n");
IpcPrintf("Head Screen X-Origin Y-Origin Width Height\n");
for (i = 0; i < num; i++)
- {
- IpcPrintf(" %2d %2d %5d %5d %5d %5d\n",
- i, scrns[i].screen_number,
- scrns[i].x_org, scrns[i].y_org, scrns[i].width,
- scrns[i].height);
- }
+ IpcPrintf(" %2d %2d %5d %5d %5d %5d\n",
+ i, scrns[i].screen_number,
+ scrns[i].x_org, scrns[i].y_org, scrns[i].width,
+ scrns[i].height);
XFree(scrns);
- return;
}
else
{
@@ -75,9 +107,23 @@
}
#endif
+ IpcPrintf("E-screens:\n");
IpcPrintf("Head Screen X-Origin Y-Origin Width Height\n");
- IpcPrintf(" %2d %2d %5d %5d %5d %5d\n",
- 0, VRoot.scr, 0, 0, VRoot.w, VRoot.h);
+ if (n_screens)
+ {
+ for (i = 0; i < n_screens; i++)
+ {
+ EScreen *ps = p_screens + i;
+
+ IpcPrintf(" %2d %2d %5d %5d %5d %5d\n",
+ i, ps->head, ps->x, ps->y, ps->w, ps->h);
+ }
+ }
+ else
+ {
+ IpcPrintf(" %2d %2d %5d %5d %5d %5d\n",
+ 0, VRoot.scr, 0, 0, VRoot.w, VRoot.h);
+ }
}
int
@@ -92,29 +138,27 @@
w = VRoot.w;
h = VRoot.h;
-#ifdef HAS_XINERAMA
- if (Mode.display.xinerama_active)
+ if (n_screens > 1)
{
int i;
- for (i = 0; i < num_screens; i++)
+ for (i = 0; i < n_screens; i++)
{
- XineramaScreenInfo *ps = &screens[i];
+ EScreen *ps = p_screens + i;
- if (xi >= ps->x_org && xi < ps->x_org + ps->width &&
- yi >= ps->y_org && yi < ps->y_org + ps->height)
+ if (xi >= ps->x && xi < ps->x + ps->w &&
+ yi >= ps->y && yi < ps->y + ps->h)
{
- x = ps->x_org;
- y = ps->y_org;
- w = ps->width;
- h = ps->height;
- head = i;
+ x = ps->x;
+ y = ps->y;
+ w = ps->w;
+ h = ps->h;
+ head = ps->head;
/* NB! *First* matching head is used */
break;
}
}
}
-#endif
if (px)
*px = x;
===================================================================
RCS file: /cvs/e/e16/e/src/setup.c,v
retrieving revision 1.173
retrieving revision 1.174
diff -u -3 -r1.173 -r1.174
--- setup.c 21 Apr 2006 15:51:46 -0000 1.173
+++ setup.c 22 Apr 2006 22:00:02 -0000 1.174
@@ -24,6 +24,7 @@
#include "E.h"
#include "eimage.h"
#include "ewins.h"
+#include "screen.h"
#include "xwin.h"
#include <signal.h>
#include <X11/keysym.h>
===================================================================
RCS file: /cvs/e/e16/e/src/size.c,v
retrieving revision 1.50
retrieving revision 1.51
diff -u -3 -r1.50 -r1.51
--- size.c 30 Mar 2006 22:35:20 -0000 1.50
+++ size.c 22 Apr 2006 22:00:02 -0000 1.51
@@ -24,6 +24,7 @@
#include "E.h"
#include "ewins.h"
#include "hints.h"
+#include "screen.h"
#define MAX_HOR 0x1
#define MAX_VER 0x2
===================================================================
RCS file: /cvs/e/e16/e/src/warp.c,v
retrieving revision 1.89
retrieving revision 1.90
diff -u -3 -r1.89 -r1.90
--- warp.c 22 Apr 2006 13:24:51 -0000 1.89
+++ warp.c 22 Apr 2006 22:00:02 -0000 1.90
@@ -36,6 +36,7 @@
#include "ewins.h"
#include "iclass.h"
#include "icons.h"
+#include "screen.h"
#include "tclass.h"
#include "tooltips.h"
#include "xwin.h"
-------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
_______________________________________________
enlightenment-cvs mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs