E CVS: apps/e azundris

2003-01-11 Thread enlightenment-cvs
Enlightenment CVS committal

Author  : azundris
Project : e17
Module  : apps/e

Dir : e17/apps/e/src


Modified Files:
  Tag: SPLIT
e_dir.c 


Log Message:
DESCRIPTION

Fixed crash reported by benr.  e17 tried to set efsd watches on
~/.e/desktop//.e_layout; if they didn't exist, realpath would
fail, the dir-string would hence become NULL, setting the monitor
would then fail, and the D() supposed to alert us to that failure
would to try to print the NULL string, which bombs out on Solaris
(but not on Lin).

MEASURES TAKEN

- e_dir_handle_fs_restart() will now do more error checking, and
  should not crash anymore if given dubious or invalid data; the
  error msgs should also be more elaborate

- if the realpath thingie fails in e_dir_set_dir() (which also has
  more error-checking now), we throw the whole idea of realpath out
  of the window and make a copy of the path the coder requested in
  the first place, assuming they really meant "...and if it doesn't
  exist YET, tell me if and when it is created!"  rather than failing
  right there and then, we hope the backend actually supports watching
  something it cannot determine an inode for (but we'll still throw a
  warning, just for good measure).  actually, it can't for now, so
  e_dir_handle_fs_restart() will complain that it can't set a monitor.

CAVEATS

This averts the crash.  However, e17 will not be informed if any of the
desktops suddenly pops into existence.

TODO

A possible remedy for a given parth

  /existentDir1/existentDir2/nonexistentDir1/nonexistentDir2/nonexistentFile

would be to place a dir-monitor on existentDir2.  once nonexistentDir1 is
created, the monitor will see it.  then, the monitor on existentDir2 should
be replaced with one on the newly created nonexistentDir1.  likewise for
nonexistentDir2.  only if nonexistentFile should be created in nonexistentDir2
should the high-level parts of the application be notified.

This functionality could reside in e17 or, preferably, in efsd.


===
RCS file: /cvsroot/enlightenment/e17/apps/e/src/e_dir.c,v
retrieving revision 1.2.2.6
retrieving revision 1.2.2.7
diff -u -3 -r1.2.2.6 -r1.2.2.7
--- e_dir.c 30 Oct 2002 22:24:28 -  1.2.2.6
+++ e_dir.c 11 Jan 2003 08:36:54 -  1.2.2.7
@@ -66,39 +66,47 @@
 }
 
 static void
-e_dir_handle_fs_restart(void *data)
-{
+e_dir_handle_fs_restart(void *data) {
E_Dir  *d;
 
D_ENTER;
-   d = data;
-   D("e_dir_handle_fs_restart\n");
-   if (e_fs_get_connection())
- {
-   EfsdOptions*ops;
 
-   /* FIXME restart with metadata pending for views */
-
-   ops = efsd_ops(3,
-  efsd_op_get_stat(),
-  efsd_op_get_filetype(), efsd_op_list_all());
-   d->monitor_id = efsd_start_monitor(e_fs_get_connection(), d->dir,
-  ops, TRUE);
+   D("e_dir_handle_fs_restart\n");
 
- }
-   D("restarted monitor id (connection = %p), %i for %s\n",
- e_fs_get_connection(), d->monitor_id, d->dir);
+   if((d = data)) {
+ if(d->dir&&*(d->dir)) {
+   if (e_fs_get_connection()) {
+EfsdOptions*ops;
+
+/* FIXME restart with metadata pending for views */
+
+ops = efsd_ops(3,
+   efsd_op_get_stat(),
+   efsd_op_get_filetype(), efsd_op_list_all());
+if((d->monitor_id=efsd_start_monitor(e_fs_get_connection(), d->dir,
+ ops, TRUE))<0) {
+  D("could not restart monitor (connx %p) for \"%s\" => %i\n",
+e_fs_get_connection(), d->dir, d->monitor_id); }
+else {
+  D("restarted monitor (connx %p) for \"%s\" => ID %i...\n",
+e_fs_get_connection(), d->dir, d->monitor_id); }}
+   else {
+D("could not restart, connection refused\n"); }}
+ else {
+D("could not restart, no dir given!?\n"); }}
+   else {
+ D("could not restart, no data\n"); }
 
-   D_RETURN;
-}
+   D_RETURN; }
 
 void
 e_dir_set_dir(E_Dir * d, char *dir)
 {
D_ENTER;
 
-   if (!d)
-  D_RETURN;
+   if (!d) {
+ D("e_dir_set_dir -- no E_Dir!\n");
+ D_RETURN; }
 
/* stop monitoring old dir */
if ((d->dir) && (d->monitor_id))
@@ -107,8 +115,29 @@
d->monitor_id = 0;
  }
IF_FREE(d->dir);
+
+   if(!dir||!*dir) {
+ D("e_dir_set_dir -- no dir!\n");
+ D_RETURN; }
+
d->dir = e_file_realpath(dir);
-   
+
+   if(!d->dir||!*(d->dir)) {
+ /* realpath failed. this would mean that we tried to set a monitor
+on a non-existent (or inacessible) file.  this may mean that the
+programmer really meant "...and if it doesn't exist YET, tell me
+if and when it is created", so rather than failing right here and
+now, we'll forget about the realpath, stick in the path they
+requested in the first place, and hope the backend actually supports
+

E CVS: apps/e azundris

2003-01-11 Thread enlightenment-cvs
Enlightenment CVS committal

Author  : azundris
Project : e17
Module  : apps/e

Dir : e17/apps/e/src


Modified Files:
  Tag: SPLIT
desktops.c e_dir.c 


Log Message:
further debug failsafes for slowlaris

===
RCS file: /cvsroot/enlightenment/e17/apps/e/src/desktops.c,v
retrieving revision 1.46.2.9
retrieving revision 1.46.2.10
diff -u -3 -r1.46.2.9 -r1.46.2.10
--- desktops.c  7 Jan 2003 22:15:52 -   1.46.2.9
+++ desktops.c  11 Jan 2003 13:38:47 -  1.46.2.10
@@ -249,21 +249,32 @@
 
D_ENTER;
 
-   if (event & E_EVENT_BG_CHANGED)
-   {
-  snprintf(buf, PATH_MAX, "background_reload:%s", a->desktop->name);
-  e_desktop_bg_reload(a->desktop);
-   }
-   else if (event & E_EVENT_ICB_CHANGED)
-   {
-  snprintf(buf, PATH_MAX, "iconbar_reload:%s", a->desktop->name);
-  e_desktop_ib_reload(a->desktop);
-   }
-   else if (event & E_EVENT_LAYOUT_CHANGED)
-   {
-  snprintf(buf, PATH_MAX, "layout_reload:%s", a->desktop->name);
-  e_desktop_layout_reload(a->desktop);
-   }
+   if(a&&a->desktop&&a->desktop->name) {
+ if (event & E_EVENT_BG_CHANGED) {
+   snprintf(buf, PATH_MAX, "background_reload:%s", a->desktop->name);
+   e_desktop_bg_reload(a->desktop); }
+ else if (event & E_EVENT_ICB_CHANGED) {
+   snprintf(buf, PATH_MAX, "iconbar_reload:%s", a->desktop->name);
+   e_desktop_ib_reload(a->desktop); }
+ else if (event & E_EVENT_LAYOUT_CHANGED) {
+   snprintf(buf, PATH_MAX, "layout_reload:%s", a->desktop->name);
+   e_desktop_layout_reload(a->desktop); }}
+#ifdef DEBUG
+   else {
+ if(a) {
+   if(a->desktop) {
+ D("e_desktop_file_event_handler: E_Desktop_Adaptor->desktop->name not set, 
+"); }
+   else { D("e_desktop_file_event_handler: E_Desktop_Adaptor->desktop not set, 
+"); }}
+ else { D("e_desktop_file_event_handler: E_Desktop_Adaptor not set, "); }
+
+ if (event & E_EVENT_BG_CHANGED) {
+   D("BG_CHANGED\n"); }
+ else if (event & E_EVENT_ICB_CHANGED) {
+   D("ICB_CHANGED\n"); }
+ else if (event & E_EVENT_LAYOUT_CHANGED) {
+   D("LAYOUT_CHANGED\n"); }
+ else { D(" (unknown event-type)\n"); }}
+#endif
 
D_RETURN;
UN(o);
===
RCS file: /cvsroot/enlightenment/e17/apps/e/src/e_dir.c,v
retrieving revision 1.2.2.7
retrieving revision 1.2.2.8
diff -u -3 -r1.2.2.7 -r1.2.2.8
--- e_dir.c 11 Jan 2003 08:36:54 -  1.2.2.7
+++ e_dir.c 11 Jan 2003 13:38:47 -  1.2.2.8
@@ -135,7 +135,7 @@
  if(d->dir)
free(d->dir);
  if(!(d->dir=strdup(dir))) {
-   D("e_dir_set_dir: OOM");
+   D("e_dir_set_dir: OOM\n");
D_RETURN; }}
 
/* start monitoring new dir */




---
This SF.NET email is sponsored by:
SourceForge Enterprise Edition + IBM + LinuxWorld = Something 2 See!
http://www.vasoftware.com
___
enlightenment-cvs mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs



E CVS: apps/e azundris

2003-01-11 Thread enlightenment-cvs
Enlightenment CVS committal

Author  : azundris
Project : e17
Module  : apps/e

Dir : e17/apps/e/src


Modified Files:
  Tag: SPLIT
desktops.c 


Log Message:
PROBLEM

e_desktop_file_event_handler() pointlessly tried to printf a NULL to a
buffer that would then be discarded without ever being used, anyway.

MEASURES

a) more debug in e_desktop_file_event_handler()

b) desk-names are initialized to "Desk N", where N is the index of the
   desktop

c) nonetheless, e_desktop_file_event_handler() will no longer crash when
   a lambda-desk is to be processed


===
RCS file: /cvsroot/enlightenment/e17/apps/e/src/desktops.c,v
retrieving revision 1.46.2.10
retrieving revision 1.46.2.11
diff -u -3 -r1.46.2.10 -r1.46.2.11
--- desktops.c  11 Jan 2003 13:38:47 -  1.46.2.10
+++ desktops.c  11 Jan 2003 14:15:07 -  1.46.2.11
@@ -245,27 +245,28 @@
 e_desktop_file_event_handler(E_Observer *obs, E_Observee *o, E_Event_Type event, void 
*data)
 {
E_Desktop_Adaptor *a = (E_Desktop_Adaptor *) obs;
-   char buf[PATH_MAX]; 
 
D_ENTER;
 
-   if(a&&a->desktop&&a->desktop->name) {
+   if(a&&a->desktop) {
+ char *mn=a->desktop->name?a->desktop->name:"";
  if (event & E_EVENT_BG_CHANGED) {
-   snprintf(buf, PATH_MAX, "background_reload:%s", a->desktop->name);
+   D("background_reload: %s\n",mn);
e_desktop_bg_reload(a->desktop); }
  else if (event & E_EVENT_ICB_CHANGED) {
-   snprintf(buf, PATH_MAX, "iconbar_reload:%s", a->desktop->name);
+   D("iconbar_reload: %s\n",mn);
e_desktop_ib_reload(a->desktop); }
  else if (event & E_EVENT_LAYOUT_CHANGED) {
-   snprintf(buf, PATH_MAX, "layout_reload:%s", a->desktop->name);
+   D("layout_reload: %s\n",mn);
e_desktop_layout_reload(a->desktop); }}
 #ifdef DEBUG
-   else {
+   else {  /* add'l debug foo. technically, a, a->desktop should always be
+  set, it's only a->desktop->name that we really worry about.
+  Azundris 2003/01/11 */
  if(a) {
-   if(a->desktop) {
- D("e_desktop_file_event_handler: E_Desktop_Adaptor->desktop->name not set, 
"); }
-   else { D("e_desktop_file_event_handler: E_Desktop_Adaptor->desktop not set, 
"); }}
- else { D("e_desktop_file_event_handler: E_Desktop_Adaptor not set, "); }
+   D("e_desktop_file_event_handler: E_Desktop_Adaptor->desktop not set, "); }
+ else {
+   D("e_desktop_file_event_handler: E_Desktop_Adaptor not set, "); }
 
  if (event & E_EVENT_BG_CHANGED) {
D("BG_CHANGED\n"); }
@@ -293,8 +294,6 @@
  * <[EMAIL PROTECTED]> and Michael Jennings <[EMAIL PROTECTED]>).  raster
  * intensely dislikes the pseudo-transparency hacks, so don't go to him
  * if you need to discuss them. : )
- *
- * THIS CODE IS CONSIDERED EXPERIMENTAL (alpha).  
  * */
 
 static void
@@ -547,12 +546,23 @@
 
e_view_look_set_dir(desk->look, buf);
 
+   /* experimental, Azundris 2003/01/11 */
+   if(!desk->name) {
+ size_t l=0;
+ int j=10,k=1;
+ while(i>=j) {
+   j*=10;
+   k++; }
+#define DESK_DFLT_NAME "Desk "
+ if((desk->name=malloc(l=sizeof(DESK_DFLT_NAME)+k)))
+   snprintf(desk->name,l,"%s%d",DESK_DFLT_NAME,i); }
+
/* The adaptor allows us to watch the look for events, while keeping the
 * desktop an observable object */
desk->adaptor = NEW(E_Desktop_Adaptor, 1);
-   e_observer_init(E_OBSERVER(desk->adaptor), E_EVENT_BG_CHANGED | 
E_EVENT_ICB_CHANGED |
-  E_EVENT_LAYOUT_CHANGED, e_desktop_file_event_handler,
-  e_desktop_adaptor_cleanup);
+   e_observer_init(E_OBSERVER(desk->adaptor),
+  E_EVENT_BG_CHANGED | E_EVENT_ICB_CHANGED | E_EVENT_LAYOUT_CHANGED,
+  e_desktop_file_event_handler, e_desktop_adaptor_cleanup);
desk->adaptor->desktop = desk;
e_observer_register_observee(E_OBSERVER(desk->adaptor), 
E_OBSERVEE(desk->look->obj));
 




---
This SF.NET email is sponsored by:
SourceForge Enterprise Edition + IBM + LinuxWorld = Something 2 See!
http://www.vasoftware.com
___
enlightenment-cvs mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs



Re: [E-devel] E17 on Linux ppc

2003-01-11 Thread Nathan Ingersoll
On Sat, Jan 11, 2003 at 01:56:50AM -0500, Mike Frysinger wrote:
> down in esmall you'll find 2 files that make reference to 'sys/io.h' ...
> sc1.c @ line 10
> sc5.c @ line 8
> the powerpc version of glibc does not install sys/io.h, but an asm/io.h does 
> exist ...
> after changing these 2 files to reflect 'asm/io.h', compiliation resumed and 
> finished up without problems.  ran e and all that other fun stuff and they 
> all worked as well as on an x86.
> 
> thoughts !?
> -mike

Don't install esmall, it's not used by anything else. Otherwise, if you follow
the build directions on the "cvs notes" page, everything should work just as
well as on x86.

-- 

| Nathan Ingersoll   \\ Computer Systems & Network Coordinator |
| [EMAIL PROTECTED]\\ http://www.ruralcenter.org|
| http://atmos.org/~ningerso/  \\ Minnesota Center for Rural Health|





msg00037/pgp0.pgp
Description: PGP signature


E CVS: apps/efsd azundris

2003-01-11 Thread enlightenment-cvs
Enlightenment CVS committal

Author  : azundris
Project : e17
Module  : apps/efsd

Dir : e17/apps/efsd/efsd


Modified Files:
efsd_fs.c 


Log Message:
file_move() gave wrong return value

===
RCS file: /cvsroot/enlightenment/e17/apps/efsd/efsd/efsd_fs.c,v
retrieving revision 1.15
retrieving revision 1.16
diff -u -3 -r1.15 -r1.16
--- efsd_fs.c   25 Dec 2002 14:20:39 -  1.15
+++ efsd_fs.c   11 Jan 2003 16:54:16 -  1.16
@@ -406,8 +406,8 @@
  success = efsd_misc_remove(src_path);
  D_RETURN_(success);
}
+  D_RETURN_(FALSE);
 }
-  
   D_RETURN_(TRUE);
 }
 




---
This SF.NET email is sponsored by:
SourceForge Enterprise Edition + IBM + LinuxWorld = Something 2 See!
http://www.vasoftware.com
___
enlightenment-cvs mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs



E CVS: elogin tillsan

2003-01-11 Thread enlightenment-cvs
Enlightenment CVS committal

Author  : tillsan
Project : misc
Module  : elogin

Dir : misc/elogin/src/client


Modified Files:
e_login_auth.c 


Log Message:
patch by Ibukun Olumuyiwa <[EMAIL PROTECTED]>. He asked me to commit this
and it looks good to me. atmos, please review.

Bugs fixed:

- waitpid() was set to nohang, and it only checked for the elogin and 
  X processes - causing all other child processes to zombie (not good!)

- Elogind does not check to make sure elogin is executable before 
  spawning X. This causes X to keep respawning if the elogin 
  executable is inaccessible

- Elogin binary location should not be hardwired into the source. Use
  config.h instead.

- Exit status of 0 instead of 1 when x spawn fails

===
RCS file: /cvsroot/enlightenment/misc/elogin/src/client/e_login_auth.c,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -3 -r1.7 -r1.8
--- e_login_auth.c  16 Oct 2002 02:05:13 -  1.7
+++ e_login_auth.c  11 Jan 2003 20:46:10 -  1.8
@@ -1,4 +1,4 @@
-#include"e_login_auth.h"
+#include "e_login_auth.h"
 #include "util.h"
 
 static char *




---
This SF.NET email is sponsored by:
SourceForge Enterprise Edition + IBM + LinuxWorld = Something 2 See!
http://www.vasoftware.com
___
enlightenment-cvs mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs



E CVS: elogin tillsan

2003-01-11 Thread enlightenment-cvs
Enlightenment CVS committal

Author  : tillsan
Project : misc
Module  : elogin

Dir : misc/elogin/src/daemon


Modified Files:
spawner.c spawner.h 


Log Message:
patch by Ibukun Olumuyiwa <[EMAIL PROTECTED]>. He asked me to commit this
and it looks good to me. atmos, please review.

Bugs fixed:

- waitpid() was set to nohang, and it only checked for the elogin and 
  X processes - causing all other child processes to zombie (not good!)

- Elogind does not check to make sure elogin is executable before 
  spawning X. This causes X to keep respawning if the elogin 
  executable is inaccessible

- Elogin binary location should not be hardwired into the source. Use
  config.h instead.

- Exit status of 0 instead of 1 when x spawn fails

===
RCS file: /cvsroot/enlightenment/misc/elogin/src/daemon/spawner.c,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -3 -r1.6 -r1.7
--- spawner.c   16 Oct 2002 02:05:13 -  1.6
+++ spawner.c   11 Jan 2003 20:46:11 -  1.7
@@ -99,6 +99,13 @@
/* setup a spawner context */
d = spawner_display_new();
 
+   /* Check to make sure elogin binary is executable */
+   if(access(ELOGIN, X_OK))
+   {
+  fprintf(stderr, "Elogin: Fatal Error: Cannot execute elogin binary. 
+Aborting.");
+  exit(1);
+   }
+
/* run X */
spawn_x();
 
@@ -106,7 +113,7 @@
{
   free(d);
   fprintf(stderr, "Elogin: Could not start X server\n");
-  exit(0);
+  exit(1);
}
 
/* run elogin */
@@ -161,10 +168,11 @@
int status = 0;
pid_t pid;
 
-   while ((pid = waitpid(-1, &status, WNOHANG)) > 0)
+   while ((pid = waitpid(-1, &status, 0)) > 0)
{
   if (pid == d->pid.client)
   {
+ printf("INFO: Elogin process died.\n");
  if (d->display)
  {
 XSync(d->display, False);
@@ -175,6 +183,7 @@
   }
   else if (pid == d->pid.x)
   {
+ printf("INFO: X Server died.\n");
  if (d->display)
  {
 XSync(d->display, False);
===
RCS file: /cvsroot/enlightenment/misc/elogin/src/daemon/spawner.h,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -3 -r1.4 -r1.5
--- spawner.h   24 Jul 2002 02:18:08 -  1.4
+++ spawner.h   11 Jan 2003 20:46:11 -  1.5
@@ -9,11 +9,12 @@
 #include 
 #include 
 #include 
+#include "../config.h"
 
 #define X_SERVER "/usr/X11R6/bin/X -terminate -ac -quiet"
 /* #define X_SERVER "/usr/X11R6/bin/Xnest -terminate -geometry 640x480 -ac -full :1" 
*/
 #define X_DISP ":0"/* only used if DISPLAY variable is NOT set */
-#define ELOGIN "/usr/local/bin/elogin"
+#define ELOGIN PACKAGE_SOURCE_DIR "/elogin"
 #define PIDFILE "/var/run/elogind.pid"
 
 /* display->status possible values */




---
This SF.NET email is sponsored by:
SourceForge Enterprise Edition + IBM + LinuxWorld = Something 2 See!
http://www.vasoftware.com
___
enlightenment-cvs mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs



Re: [E-devel] E17 on Linux ppc

2003-01-11 Thread Mike Frysinger
On Saturday 11 January 2003 09:48, Nathan Ingersoll wrote:
> Don't install esmall, it's not used by anything else. Otherwise, if you
> follow the build directions on the "cvs notes" page, everything should work
> just as well as on x86.

the point wasnt just to get E17 working, but to build it all and play with it.
this was something i noticed ... figured it might be useful so that E17 could 
be built in more environments
-mike


---
This SF.NET email is sponsored by:
SourceForge Enterprise Edition + IBM + LinuxWorld = Something 2 See!
http://www.vasoftware.com
___
enlightenment-devel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel



[E-devel] Re: E CVS: apps/e rbdpngn

2003-01-11 Thread Andrew Elcock
Unforutnealy the focusing still seems buggy.

If I open PAN and Evolution and try to autoraise them alternately they
stopp focussing properly 
:(

Andy

On Tue, 2003-01-07 at 22:16, [EMAIL PROTECTED]
wrote:
> Enlightenment CVS committal
> 
> Author  : rbdpngn
> Project : e17
> Module  : apps/e
> 
> Dir : e17/apps/e/src
> 
> 
> Modified Files:
>   Tag: SPLIT
>   Makefile.am actions.c border.c border.h desktops.c desktops.h 
> 
> 
> Log Message:
> This will hopefully fix the focus bug that has been annoying everyone, as well
> as enabling Alt-Tab on desktops other than just the first 1.
> 
> ===
> RCS file: /cvsroot/enlightenment/e17/apps/e/src/Makefile.am,v
> retrieving revision 1.50.2.5
> retrieving revision 1.50.2.6
> diff -u -3 -r1.50.2.5 -r1.50.2.6
> --- Makefile.am   1 Oct 2002 18:08:11 -   1.50.2.5
> +++ Makefile.am   7 Jan 2003 22:14:57 -   1.50.2.6
> @@ -7,7 +7,7 @@
>  
>  INCLUDES = \
>   -I$(top_srcdir)/intl \
> - @evas_cflags@ @edb_cflags@ @ebits_cflags@ @ecore_cflags@ @efsd_cflags@ 
>@ebg_cflags@ $(DEBUGFLAGS)
> + @evas_cflags@ @edb_cflags@ @ebits_cflags@ @ecore_cflags@ @efsd_cflags@ 
>@ebg_cflags@ $(DEBUGFLAGS) -static
>  
>  bin_PROGRAMS = enlightenment
>  
> ===
> RCS file: /cvsroot/enlightenment/e17/apps/e/src/actions.c,v
> retrieving revision 1.49.2.9
> retrieving revision 1.49.2.10
> diff -u -3 -r1.49.2.9 -r1.49.2.10
> --- actions.c 30 Oct 2002 22:24:28 -  1.49.2.9
> +++ actions.c 7 Jan 2003 22:15:05 -   1.49.2.10
> @@ -1850,9 +1850,13 @@
>  e_act_raise_next_start(E_Object * object, E_Action * a, void *data, int x,
>  int y, int rx, int ry)
>  {
> +   E_Border   *current = NULL;
> +
> D_ENTER;
>  
> -   e_border_raise_next();
> +   current = e_desktop_raise_next_border();
> +   if (current)
> +  e_border_send_pointer(current);
>  
> D_RETURN;
> UN(object);
> ===
> RCS file: /cvsroot/enlightenment/e17/apps/e/src/border.c,v
> retrieving revision 1.72.2.17
> retrieving revision 1.72.2.18
> diff -u -3 -r1.72.2.17 -r1.72.2.18
> --- border.c  30 Oct 2002 22:24:28 -  1.72.2.17
> +++ border.c  7 Jan 2003 22:15:22 -   1.72.2.18
> @@ -365,8 +365,8 @@
> {
>E_Border   *b;
>  
> -   if (!(e_border_current_focused()))
> -  e_icccm_send_focus_to(e_desktop_window(), 1);
> +  if (!(e_border_current_focused()))
> + e_icccm_send_focus_to(e_desktop_window(), 1);
>  
>b = e_border_find_by_window(e->win);
>if (b)
> @@ -1368,6 +1368,7 @@
> ecore_window_reparent(b->win.client, 0, b->current.x + pl,
>b->current.y + pt);
> e_icccm_release(b->win.client);
> +   e_desktop_raise_next_border();
>  
> D_RETURN;
>  }
> @@ -2684,7 +2685,7 @@
>  {
> D_ENTER;
>  
> -   if (b->desk != e_desktops_get(0))
> +   if (b->desk != e_desktops_get(e_desktops_get_current()))
>D_RETURN_(0);
>  
> if (b->current.x + b->current.w <= 0)
> @@ -2712,47 +2713,6 @@
>  
> ecore_pointer_warp_to(b->current.x + b->current.w / 2,
>b->current.y + b->current.h / 2);
> -
> -   D_RETURN;
> -}
> -
> -void
> -e_border_raise_next(void)
> -{
> -   Evas_List *   next;
> -   E_Border   *start;
> -   E_Border   *current;
> -
> -   D_ENTER;
> -
> -   if (!borders)
> -  D_RETURN;
> -
> -   start = current = e_border_current_focused();
> -
> -   /* Find the current border on the list of borders */
> -   for (next = borders; next && next->data != current; next = next->next);
> -
> -   /* Step to the next border, wrap around the queue if the end is reached */
> -   if (next && next->next)
> -  next = next->next;
> -   else
> -  next = borders;
> -
> -   /* Now find the next viewable border on the same desktop */
> -   current = (E_Border *) next->data;
> -   while (next && (current != start) &&
> -(!e_border_viewable(current) || current->client.is_desktop))
> - {
> - next = next->next;
> - if (!next)
> -next = borders;
> -
> - current = (E_Border *) next->data;
> - }
> -
> -   e_border_raise(current);
> -   e_border_send_pointer(current);
>  
> D_RETURN;
>  }
> ===
> RCS file: /cvsroot/enlightenment/e17/apps/e/src/border.h,v
> retrieving revision 1.19.2.8
> retrieving revision 1.19.2.9
> diff -u -3 -r1.19.2.8 -r1.19.2.9
> --- border.h  30 Oct 2002 22:24:28 -  1.19.2.8
> +++ border.h  7 Jan 2003 22:15:46 -   1.19.2.9
> @@ -250,7 +250,6 @@
>  voide_border_lower_below(E_Border * b, E_Border * below);
>  E_Border   *e_border_current_focused(void);
>  voide_border_focus_grab_ended(void);
> -voide_border_raise_nex