/*
* ion/ioncore/clientwin.c
*
- * Copyright (c) Tuomo Valkonen 1999-2007.
+ * Copyright (c) Tuomo Valkonen 1999-2009.
*
* See the included file LICENSE for details.
*/
xwindow_unmanaged_selectinput(win, 0);
xwindow_unmanaged_selectinput(icon_win, StructureNotifyMask);
-
- win=icon_win;
- attr=icon_attr;
-
+
/* Copy WM_CLASS as _ION_DOCKAPP_HACK */
p=xwindow_get_text_property(win, XA_WM_CLASS, &n);
xwindow_set_text_property(icon_win, ioncore_g.atom_dockapp_hack,
pdummy, 2);
}
+
+ win=icon_win;
+ attr=icon_attr;
}
}
param.geom=REGION_GEOM(cwin);
param.maprq=maprq;
- param.switchto=(init_state!=IconicState && clientwin_get_switchto(cwin));
param.jumpto=extl_table_is_bool_set(cwin->proptab, "jumpto");
+ param.switchto=(init_state!=IconicState &&
+ (param.jumpto || clientwin_get_switchto(cwin)));
param.gravity=(cwin->size_hints.flags&PWinGravity
? cwin->size_hints.win_gravity
: ForgetGravity);
}
if(postmanage_check(cwin, &attr)){
- if(param.jumpto && ioncore_g.focus_next==NULL)
+ /* Check for focus_next==NULL does not play nicely with
+ * pointer_focus_hack.
+ */
+ /*if(param.jumpto && ioncore_g.focus_next==NULL)*/
+ if(param.jumpto && !region_manager_is_focusnext((WRegion*)cwin))
region_goto((WRegion*)cwin);
hook_call_o(clientwin_mapped_hook, (Obj*)cwin);
return cwin;
}
+static void do_sm(ExtlTab tab)
+{
+ SMAddCallback *add_cb;
+ SMCfgCallback *cfg_cb;
+ WPHolder *ph;
+
+ ioncore_get_sm_callbacks(&add_cb, &cfg_cb);
+
+ if(add_cb!=NULL){
+ ph=ioncore_get_load_pholder();
+
+ if(ph!=NULL){
+ if(!add_cb(ph, tab))
+ destroy_obj((Obj*)ph);
+ }
+ }
+}
+
+
WRegion *clientwin_load(WWindow *par, const WFitParams *fp, ExtlTab tab)
{
double wind=0;
&real_chkc);
if(!got_chkc || real_chkc!=chkc){
- ioncore_clientwin_load_missing();
+ do_sm(tab);
return NULL;
}
return NULL;
}
+ if(attr.root!=region_root_of((WRegion*)par))
+ return NULL;
+
if(attr.override_redirect ||
(ioncore_g.opmode==IONCORE_OPMODE_INIT && attr.map_state!=IsViewable)){
warn(TR("Saved client window does not want to be managed."));