X-Git-Url: https://git.brokenzipper.com/gitweb?a=blobdiff_plain;f=openbox%2Fclient.c;h=3867c39e34a9a66ec0be8c804d01ae421a009a7f;hb=f5c2d6d3798fdc70c8bbc5d8205cf20e2b2a7cd3;hp=6534e1b35dded385f9d5041dccd336fa8345b0eb;hpb=0dc7eca4cdfff6425e19a0bace0f9ae8834d04e8;p=chaz%2Fopenbox 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)