Split window event handling functions

They deal with entirely different things.
This commit is contained in:
Kim Woelders 2023-12-08 13:24:35 +01:00
parent 2bddb03c4e
commit cbfdd0872b
1 changed files with 31 additions and 14 deletions

45
ipc.c
View File

@ -39,8 +39,6 @@ static Window root_win = None;
static Window comms_win = None;
static Window my_msg_win = None;
static Client *e_client = NULL;
static GdkWindow *gdkwin = NULL;
static GdkWindow *gdkwin2 = NULL;
static void (*msg_receive_callback)(char *msg) = NULL;
static unsigned int Atom_ENL_MSG;
@ -180,17 +178,34 @@ CommsGet(XEvent *ev)
}
static GdkFilterReturn
CommsFilter(GdkXEvent *gdk_xevent, GdkEvent *event __UNUSED__,
void *data __UNUSED__)
FilterCommsWin(GdkXEvent *gdk_xevent, GdkEvent *event __UNUSED__,
void *data __UNUSED__)
{
XEvent *xevent;
char *msg;
XEvent *xevent = gdk_xevent;
xevent = (XEvent *) gdk_xevent;
switch (xevent->type)
{
default:
break;
case DestroyNotify:
exit(1);
}
return GDK_FILTER_REMOVE;
}
static GdkFilterReturn
FilterMyMsgWin(GdkXEvent *gdk_xevent, GdkEvent *event __UNUSED__,
void *data __UNUSED__)
{
XEvent *xevent = gdk_xevent;
char *msg;
switch (xevent->type)
{
default:
break;
case ClientMessage:
if (xevent->xclient.message_type != Atom_ENL_MSG)
@ -204,17 +219,17 @@ CommsFilter(GdkXEvent *gdk_xevent, GdkEvent *event __UNUSED__,
free(msg);
}
break;
default:
break;
}
return GDK_FILTER_REMOVE;
}
int
CommsInit(void (*msg_receive_func)(char *msg))
{
if(CommsSetup())
GdkWindow *gdkwin;
if (CommsSetup())
return 1;
comms_win = CommsFindCommsWindow();
@ -224,10 +239,12 @@ CommsInit(void (*msg_receive_func)(char *msg))
e_client = ClientCreate(comms_win);
gdkwin = gdk_window_foreign_new(comms_win);
gdk_window_add_filter(gdkwin, CommsFilter, NULL);
gdkwin2 = gdk_window_foreign_new(my_msg_win);
gdk_window_add_filter(gdkwin2, CommsFilter, NULL);
gdk_window_set_events(gdkwin, GDK_STRUCTURE_MASK);
gdk_window_add_filter(gdkwin, FilterCommsWin, NULL);
gdkwin = gdk_window_foreign_new(my_msg_win);
gdk_window_add_filter(gdkwin, FilterMyMsgWin, NULL);
msg_receive_callback = msg_receive_func;
return 0;