Shuffled some things around a bit.

SVN revision: 7022
This commit is contained in:
Kim Woelders 2003-06-14 12:03:09 +00:00
parent 32eea9ab37
commit a3832d7e8f
5 changed files with 74 additions and 55 deletions

View File

@ -2064,6 +2064,8 @@ void BeginNewDeskFocus(void);
void NewDeskFocus(void); void NewDeskFocus(void);
/* icccm.c functions */ /* icccm.c functions */
void ICCCM_Init(void);
void ICCCM_ProcessClientMessage(XClientMessageEvent * event);
void ICCCM_GetTitle(EWin * ewin, Atom atom_change); void ICCCM_GetTitle(EWin * ewin, Atom atom_change);
void ICCCM_GetColormap(EWin * ewin); void ICCCM_GetColormap(EWin * ewin);
void ICCCM_Delete(EWin * ewin); void ICCCM_Delete(EWin * ewin);

View File

@ -40,6 +40,8 @@ static Time last_time = 0;
static int last_button = 0; static int last_button = 0;
static int pgd_x = 0, pgd_y = 0; static int pgd_x = 0, pgd_y = 0;
static Atom xa_ENL_MSG = 0;
static void static void
ToolTipTimeout(int val, void *data) ToolTipTimeout(int val, void *data)
{ {
@ -97,11 +99,7 @@ ToolTipTimeout(int val, void *data)
void void
HandleClientMessage(XEvent * ev) HandleClientMessage(XEvent * ev)
{ {
EWin *ewin; #if DEBUG_HINTS
static Atom a1 = 0, a6 = 0;
#if DEBUG_EWMH
char *name = XGetAtomName(disp, ev->xclient.message_type); char *name = XGetAtomName(disp, ev->xclient.message_type);
printf printf
@ -111,38 +109,15 @@ HandleClientMessage(XEvent * ev)
ev->xclient.data.l[3]); ev->xclient.data.l[3]);
XFree(name); XFree(name);
#endif #endif
EDBUG(5, "HandleClientMessage"); EDBUG(5, "HandleClientMessage");
if (!a1)
a1 = XInternAtom(disp, "ENL_MSG", False); if (!xa_ENL_MSG)
if (!a6) xa_ENL_MSG = XInternAtom(disp, "ENL_MSG", False);
a6 = XInternAtom(disp, "WM_CHANGE_STATE", False); if (ev->xclient.message_type == xa_ENL_MSG)
if (ev->xclient.message_type == a1)
{ {
HandleComms(ev); HandleComms(ev);
EDBUG_RETURN_; EDBUG_RETURN_;
} }
if (ev->xclient.message_type == a6)
{
ewin =
FindItem(NULL, ev->xclient.window, LIST_FINDBY_ID, LIST_TYPE_EWIN);
if (ewin == NULL)
EDBUG_RETURN_;
if (ev->xclient.data.l[0] == IconicState)
{
if (!(ewin->iconified))
IconifyEwin(ewin);
}
#if 0
else if (ev->xclient.data.l[0] == NormalState)
{
if (ewin->iconified)
DeIconifyEwin(ewin);
}
HintsSetWindowState(ewin);
#endif
EDBUG_RETURN_;
}
HintsProcessClientMessage(&(ev->xclient)); HintsProcessClientMessage(&(ev->xclient));
@ -1145,7 +1120,16 @@ HandleProperty(XEvent * ev)
char title[10240]; char title[10240];
int desktop; int desktop;
#if DEBUG_HINTS
char *name = XGetAtomName(disp, ev->xproperty.atom);
printf("HandleProperty: Atom=%s(%d) id=%#x\n",
name, (unsigned)ev->xproperty.atom, (unsigned)ev->xproperty.window);
XFree(name);
#endif
EDBUG(5, "HandleProperty"); EDBUG(5, "HandleProperty");
win = ev->xproperty.window; win = ev->xproperty.window;
ewin = FindItem(NULL, win, LIST_FINDBY_ID, LIST_TYPE_EWIN); ewin = FindItem(NULL, win, LIST_FINDBY_ID, LIST_TYPE_EWIN);
if (ewin) if (ewin)

View File

@ -675,15 +675,6 @@ EWMH_ProcessClientMessage(XClientMessageEvent * event)
{ {
EWin *ewin; EWin *ewin;
#if DEBUG_EWMH
char *name = XGetAtomName(disp, event->message_type);
printf
("EWMH_ProcessClientMessage: ev_type=%s(%d) ev_win=%#x data[0-3]= %08lx %08lx %08lx %08lx\n",
name, (unsigned)event->message_type, (unsigned)event->window,
event->data.l[0], event->data.l[1], event->data.l[2], event->data.l[3]);
XFree(name);
#endif
EDBUG(6, "EWMH_ProcessClientMessage"); EDBUG(6, "EWMH_ProcessClientMessage");
/* /*
@ -692,10 +683,12 @@ EWMH_ProcessClientMessage(XClientMessageEvent * event)
if (event->message_type == _NET_CURRENT_DESKTOP) if (event->message_type == _NET_CURRENT_DESKTOP)
{ {
GotoDesktop(event->data.l[0]); GotoDesktop(event->data.l[0]);
goto exit;
} }
else if (event->message_type == _NET_DESKTOP_VIEWPORT) else if (event->message_type == _NET_DESKTOP_VIEWPORT)
{ {
SetCurrentArea(event->data.l[0] / root.w, event->data.l[1] / root.h); SetCurrentArea(event->data.l[0] / root.w, event->data.l[1] / root.h);
goto exit;
} }
/* /*
@ -864,13 +857,6 @@ EWMH_ProcessClientMessage(XClientMessageEvent * event)
void void
EWMH_ProcessPropertyChange(EWin * ewin, Atom atom_change) EWMH_ProcessPropertyChange(EWin * ewin, Atom atom_change)
{ {
#if DEBUG_EWMH
char *name = XGetAtomName(disp, atom_change);
printf("EWMH_ProcessPropertyChange: Atom=%s(%d) id=%#x\n",
name, atom_change, (ewin) ? ewin->client.win : 0);
XFree(name);
#endif
EDBUG(6, "EWMH_ProcessPropertyChange"); EDBUG(6, "EWMH_ProcessPropertyChange");
if (atom_change == _NET_WM_DESKTOP) if (atom_change == _NET_WM_DESKTOP)

View File

@ -33,6 +33,7 @@ void
HintsInit(void) HintsInit(void)
{ {
EDBUG(6, "HintsInit"); EDBUG(6, "HintsInit");
ICCCM_Init();
#if ENABLE_KDE #if ENABLE_KDE
/* ??? */ /* ??? */
#endif #endif
@ -187,7 +188,6 @@ HintsSetWindowHints(EWin * ewin)
#if ENABLE_KDE #if ENABLE_KDE
int kde_support = 0; int kde_support = 0;
#endif #endif
EDBUG(6, "HintsSetWindowHints"); EDBUG(6, "HintsSetWindowHints");
#if ENABLE_KDE #if ENABLE_KDE
kde_support = mode.kde_support; kde_support = mode.kde_support;
@ -265,16 +265,26 @@ HintsProcessPropertyChange(EWin * ewin, Atom atom_change)
void void
HintsProcessClientMessage(XClientMessageEvent * event) HintsProcessClientMessage(XClientMessageEvent * event)
{ {
char *name = XGetAtomName(disp, event->message_type);
EDBUG(6, "HintsHandleClientMessage"); EDBUG(6, "HintsHandleClientMessage");
#if ENABLE_KDE
if (mode.kde_support) if (!memcmp(name, "WM_", 3))
KDE_ProcessClientMessage(event); ICCCM_ProcessClientMessage(event);
#if ENABLE_EWMH
else if (!memcmp(name, "_NET_", 5))
EWMH_ProcessClientMessage(event);
#endif #endif
#if ENABLE_GNOME #if ENABLE_GNOME
GNOME_ProcessClientMessage(event); else if (!memcmp(name, "_WIN_", 5))
GNOME_ProcessClientMessage(event);
#endif #endif
#if ENABLE_EWMH #if ENABLE_KDE
EWMH_ProcessClientMessage(event); else if (!memcmp(name, "KWM_", 4))
{
if (mode.kde_support)
KDE_ProcessClientMessage(event);
}
#endif #endif
EDBUG_RETURN_; EDBUG_RETURN_;
} }

View File

@ -23,6 +23,43 @@
*/ */
#include "E.h" #include "E.h"
static Atom xa_WM_CHANGE_STATE = 0;
void
ICCCM_Init(void)
{
xa_WM_CHANGE_STATE = XInternAtom(disp, "WM_CHANGE_STATE", False);
}
void
ICCCM_ProcessClientMessage(XClientMessageEvent * event)
{
EWin *ewin;
if (event->message_type == xa_WM_CHANGE_STATE)
{
ewin = FindItem(NULL, event->window, LIST_FINDBY_ID, LIST_TYPE_EWIN);
if (ewin == NULL)
goto exit;
if (event->data.l[0] == IconicState)
{
if (!(ewin->iconified))
IconifyEwin(ewin);
}
#if 0
else if (event->data.l[0] == NormalState)
{
if (ewin->iconified)
DeIconifyEwin(ewin);
}
HintsSetWindowState(ewin);
#endif
}
exit:
EDBUG_RETURN_;
}
void void
ICCCM_GetTitle(EWin * ewin, Atom atom_change) ICCCM_GetTitle(EWin * ewin, Atom atom_change)
{ {