X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;ds=sidebyside;f=openbox%2Fevent.c;h=096e0d568e3b358869339ffda0f9f4b9c2a471dc;hb=2a84418ee441d77d0d07760cbfc8359d0db624f4;hp=f3ed676e79a68f422fea8cf06f2b77b455fece8f;hpb=30912d467a36b13c0d04c98a0bf8ec1b8c1cc593;p=chaz%2Fopenbox diff --git a/openbox/event.c b/openbox/event.c index f3ed676e..096e0d56 100644 --- a/openbox/event.c +++ b/openbox/event.c @@ -1430,7 +1430,7 @@ static void event_handle_client(ObClient *client, XEvent *e) 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) { @@ -1438,7 +1438,7 @@ static void event_handle_client(ObClient *client, XEvent *e) 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 || @@ -1446,11 +1446,14 @@ static void event_handle_client(ObClient *client, XEvent *e) 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); } @@ -1679,8 +1682,11 @@ static gboolean event_handle_menu(XEvent *ev) { 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(); } @@ -1689,7 +1695,10 @@ static gboolean event_handle_menu(XEvent *ev) 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; @@ -1708,7 +1717,11 @@ static gboolean event_handle_menu(XEvent *ev) 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);