X-Git-Url: https://git.brokenzipper.com/gitweb?a=blobdiff_plain;f=openbox%2Fclient.c;h=a8a15673f8e372bfe97ff15084c8719efa985d60;hb=90cecafa3de2f118e550622932d1d30266c71226;hp=b6ca93a32d69e376d27ccadbd75d1759f58af6b4;hpb=6799c67c07e99c440f549802f60d9f16995ab711;p=chaz%2Fopenbox diff --git a/openbox/client.c b/openbox/client.c index b6ca93a3..a8a15673 100644 --- a/openbox/client.c +++ b/openbox/client.c @@ -202,6 +202,7 @@ void client_manage(Window window, ObPrompt *prompt) gboolean transient = FALSE; Rect place, *monitor; Time launch_time, map_time; + guint32 user_time; ob_debug("Managing window: 0x%lx", window); @@ -232,6 +233,7 @@ void client_manage(Window window, ObPrompt *prompt) ob_debug("Window type: %d", self->type); ob_debug("Window group: 0x%x", self->group?self->group->leader:0); + ob_debug("Window name: %s class: %s", self->name, self->class); /* now we have all of the window's information so we can set this up. do this before creating the frame, so it can tell that we are still @@ -263,6 +265,9 @@ void client_manage(Window window, ObPrompt *prompt) /* tell startup notification that this app started */ launch_time = sn_app_started(self->startup_id, self->class, self->name); + if (!OBT_PROP_GET32(self->window, NET_WM_USER_TIME, CARDINAL, &user_time)) + user_time = map_time; + /* do this after we have a frame.. it uses the frame to help determine the WM_STATE to apply. */ client_change_state(self); @@ -279,6 +284,8 @@ void client_manage(Window window, ObPrompt *prompt) /* this means focus=true for window is same as config_focus_new=true */ ((config_focus_new || (settings && settings->focus == 1)) || client_search_focus_tree_full(self)) && + /* NET_WM_USER_TIME 0 when mapping means don't focus */ + (user_time != 0) && /* this checks for focus=false for the window */ (!settings || settings->focus != 0) && focus_valid_target(self, FALSE, FALSE, TRUE, FALSE, FALSE)) @@ -933,19 +940,6 @@ static gboolean client_restore_session_stacking(ObClient *self) return FALSE; } -void client_reconfigure(ObClient *self, gboolean force) -{ - int x, y, w, h, lw, lh; - - x = self->area.x; - y = self->area.y; - w = self->area.width; - h = self->area.height; - client_try_configure(self, &x, &y, &w, &h, &lw, &lh, FALSE); - client_find_onscreen(self, &x, &y, w, h, FALSE); - client_configure(self, x, y, w, h, FALSE, TRUE, force); -} - void client_move_onscreen(ObClient *self, gboolean rude) { gint x = self->area.x; @@ -3822,12 +3816,15 @@ static void client_present(ObClient *self, gboolean here, gboolean raise, client_focus(self); } -/* this function exists to map to the client_activate message in the ewmh, - the user arg is unused because nobody uses it correctly anyway. */ +/* this function exists to map to the net_active_window message in the ewmh */ void client_activate(ObClient *self, gboolean here, gboolean raise, gboolean unshade, gboolean user) { - client_present(self, here, raise, unshade); + if (user || (self->desktop == DESKTOP_ALL || + self->desktop == screen_desktop)) + client_present(self, here, raise, unshade); + else + client_hilite(self, TRUE); } static void client_bring_windows_recursive(ObClient *self,