else if (e->type == MappingNotify) {
/* keyboard layout changes for modifier mapping changes. reload the
modifier map, and rebind all the key bindings as appropriate */
- ob_debug("Kepboard map changed. Reloading keyboard bindings.\n");
+ ob_debug("Keyboard map changed. Reloading keyboard bindings.\n");
ob_set_state(OB_STATE_RECONFIGURING);
modkeys_shutdown(TRUE);
modkeys_startup(TRUE);
(e->xclient.data.l[0] == 2 ? "user" : "INVALID"))));
/* XXX make use of data.l[2] !? */
if (e->xclient.data.l[0] == 1 || e->xclient.data.l[0] == 2) {
- /* don't use the user's timestamp for client_focus, cuz if it's
- an old broken timestamp (happens all the time) then focus
- won't move even though we're trying to move it
- event_curtime = e->xclient.data.l[1];*/
+ event_curtime = e->xclient.data.l[1];
if (e->xclient.data.l[1] == 0)
ob_debug_type(OB_DEBUG_APP_BUGS,
"_NET_ACTIVE_WINDOW message for window %s is"
} else
ob_debug_type(OB_DEBUG_APP_BUGS,
"_NET_ACTIVE_WINDOW message for window %s is "
- "missing source indication\n");
- client_activate(client, TRUE, TRUE, TRUE,
+ "missing source indication\n", client->title);
+ client_activate(client, FALSE, TRUE, TRUE,
(e->xclient.data.l[0] == 0 ||
e->xclient.data.l[0] == 2));
} else if (msgtype == prop_atoms.net_wm_moveresize) {
reconfigure the window if it needs to. emacs will update its
normal hints every time it receives a conigurenotify */
client_reconfigure(client, FALSE);
+ } else if (msgtype == prop_atoms.motif_wm_hints) {
+ client_get_mwm_hints(client);
+ /* This can override some mwm hints */
+ client_get_type_and_transientness(client);
+
+ /* Apply the changes to the window */
+ client_setup_decor_and_functions(client, TRUE);
} else if (msgtype == XA_WM_HINTS) {
client_update_wmhints(client);
} else if (msgtype == XA_WM_TRANSIENT_FOR) {
default:
;
#ifdef SHAPE
- if (extensions_shape && e->type == extensions_shape_event_basep) {
- client->shaped = ((XShapeEvent*)e)->shaped;
- frame_adjust_shape(client->frame);
+ {
+ int kind;
+ if (extensions_shape && e->type == extensions_shape_event_basep) {
+ switch (((XShapeEvent*)e)->kind) {
+ case ShapeBounding:
+ case ShapeClip:
+ client->shaped = ((XShapeEvent*)e)->shaped;
+ kind = ShapeBounding;
+ break;
+ case ShapeInput:
+ client->shaped_input = ((XShapeEvent*)e)->shaped;
+ kind = ShapeInput;
+ break;
+ }
+ frame_adjust_shape_kind(client->frame, kind);
+ }
}
#endif
}