if (msgtype == XA_WM_NORMAL_HINTS) {
client_update_normal_hints(client);
/* normal hints can make a window non-resizable */
- client_setup_decor_and_functions(client);
+ client_setup_decor_and_functions(client, TRUE);
} else if (msgtype == XA_WM_HINTS) {
client_update_wmhints(client);
} else if (msgtype == XA_WM_TRANSIENT_FOR) {
client_get_type_and_transientness(client);
/* type may have changed, so update the layer */
client_calc_layer(client);
- client_setup_decor_and_functions(client);
+ client_setup_decor_and_functions(client, TRUE);
} else if (msgtype == prop_atoms.net_wm_name ||
msgtype == prop_atoms.wm_name ||
msgtype == prop_atoms.net_wm_icon_name ||
client_update_title(client);
} else if (msgtype == prop_atoms.wm_protocols) {
client_update_protocols(client);
- client_setup_decor_and_functions(client);
+ client_setup_decor_and_functions(client, TRUE);
}
else if (msgtype == prop_atoms.net_wm_strut) {
client_update_strut(client);
}
+ else if (msgtype == prop_atoms.net_wm_strut_partial) {
+ client_update_strut(client);
+ }
else if (msgtype == prop_atoms.net_wm_icon) {
client_update_icons(client);
}
{
if ((e = menu_entry_frame_under(ev->xbutton.x_root,
ev->xbutton.y_root)))
+ {
+ menu_frame_select(e->frame, e, TRUE);
menu_entry_frame_execute(e, ev->xbutton.state,
ev->xbutton.time);
+ }
else
menu_frame_hide_all();
}
if ((e = g_hash_table_lookup(menu_frame_map, &ev->xcrossing.window))) {
if (e->ignore_enters)
--e->ignore_enters;
- else
+ else if (!(f = find_active_menu()) ||
+ f == e->frame ||
+ f->parent == e->frame ||
+ f->child == e->frame)
menu_frame_select(e->frame, e, FALSE);
}
break;
case MotionNotify:
if ((e = menu_entry_frame_under(ev->xmotion.x_root,
ev->xmotion.y_root)))
- menu_frame_select(e->frame, e, FALSE);
+ if (!(f = find_active_menu()) ||
+ f == e->frame ||
+ f->parent == e->frame ||
+ f->child == e->frame)
+ menu_frame_select(e->frame, e, FALSE);
break;
case KeyPress:
ret = event_handle_menu_keyboard(ev);