From f5c2d6d3798fdc70c8bbc5d8205cf20e2b2a7cd3 Mon Sep 17 00:00:00 2001 From: Dana Jansens Date: Wed, 6 Feb 2008 22:49:55 -0500 Subject: Make ObPrompt windows get managed as clients, and make them able to reconfigure as well. --- openbox/client.c | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) (limited to 'openbox/client.c') diff --git a/openbox/client.c b/openbox/client.c index 6534e1b3..3867c39e 100644 --- a/openbox/client.c +++ b/openbox/client.c @@ -29,6 +29,7 @@ #include "session.h" #include "event.h" #include "grab.h" +#include "prompt.h" #include "focus.h" #include "stacking.h" #include "openbox.h" @@ -174,7 +175,7 @@ void client_set_list(void) stacking_set_list(); } -void client_manage(Window window) +void client_manage(Window window, ObPrompt *prompt) { ObClient *self; XSetWindowAttributes attrib_set; @@ -199,6 +200,7 @@ void client_manage(Window window) self = g_new0(ObClient, 1); self->obwin.type = OB_WINDOW_CLASS_CLIENT; self->window = window; + self->prompt = prompt; /* non-zero defaults */ self->wmstate = WithdrawnState; /* make sure it gets updated first time */ @@ -218,7 +220,8 @@ void client_manage(Window window) /* specify that if we exit, the window should not be destroyed and should be reparented back to root automatically */ - XChangeSaveSet(obt_display, window, SetModeInsert); + if (!self->prompt) + XChangeSaveSet(obt_display, window, SetModeInsert); /* create the decoration frame for the client window */ self->frame = frame_new(self); @@ -617,7 +620,8 @@ void client_unmanage(ObClient *self) mouse_grab_for_client(self, FALSE); /* remove the window from our save set */ - XChangeSaveSet(obt_display, self->window, SetModeDelete); + if (!self->prompt) + XChangeSaveSet(obt_display, self->window, SetModeDelete); /* update the focus lists */ focus_order_remove(self); @@ -3250,6 +3254,11 @@ void client_close(ObClient *self) { if (!(self->functions & OB_CLIENT_FUNC_CLOSE)) return; + if (self->prompt) { + prompt_hide(self); + return; + } + /* in the case that the client provides no means to requesting that it close, we just kill it */ if (!self->delete_window) -- cgit v1.2.3