X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=openbox%2Fevent.c;h=df9cddb2ebb44b76410bfe36a27e58e9f32248d4;hb=5be23ec5a4dcacb8b1adf1d352ad5600f426f3ed;hp=e9e85f0be2c3ef7efbc576f9955573aba888aa57;hpb=7af1c6a9c3a57f3ded34fad3f9f4a30fe377a65e;p=chaz%2Fopenbox diff --git a/openbox/event.c b/openbox/event.c index e9e85f0b..df9cddb2 100644 --- a/openbox/event.c +++ b/openbox/event.c @@ -40,8 +40,8 @@ static void event_process(XEvent *e); static void event_handle_root(XEvent *e); static void event_handle_dock(Dock *s, XEvent *e); static void event_handle_dockapp(DockApp *app, XEvent *e); -static void event_handle_client(Client *c, XEvent *e); -static void event_handle_menu(Client *c, XEvent *e); +static void event_handle_client(ObClient *c, XEvent *e); +static void event_handle_menu(ObClient *c, XEvent *e); static void fd_event_handle(); #ifdef USE_SM static void ice_watch(IceConn conn, IcePointer data, Bool opening, @@ -320,7 +320,7 @@ static void event_hack_mods(XEvent *e) } } -static gboolean event_ignore(XEvent *e, Client *client) +static gboolean event_ignore(XEvent *e, ObClient *client) { switch(e->type) { case FocusIn: @@ -467,7 +467,7 @@ static gboolean event_ignore(XEvent *e, Client *client) static void event_process(XEvent *e) { Window window; - Client *client = NULL; + ObClient *client = NULL; Dock *dock = NULL; DockApp *dockapp = NULL; Menu *menu = NULL; @@ -595,9 +595,7 @@ static void event_handle_root(XEvent *e) #ifdef XRANDR XRRUpdateConfiguration(e); #endif - if (e->xconfigure.width != screen_physical_size.width || - e->xconfigure.height != screen_physical_size.height) - screen_resize(e->xconfigure.width, e->xconfigure.height); + screen_resize(); break; default: ; @@ -609,7 +607,7 @@ static void event_handle_root(XEvent *e) } } -static void event_handle_client(Client *client, XEvent *e) +static void event_handle_client(ObClient *client, XEvent *e) { XEvent ce; Atom msgtype; @@ -673,7 +671,7 @@ static void event_handle_client(Client *client, XEvent *e) break; case EnterNotify: if (client_normal(client)) { - if (ob_state == State_Starting) { + if (ob_state == OB_STATE_STARTING) { /* move it to the top of the focus order */ guint desktop = client->desktop; if (desktop == DESKTOP_ALL) desktop = screen_desktop; @@ -724,7 +722,7 @@ static void event_handle_client(Client *client, XEvent *e) if (e->xconfigurerequest.value_mask & (CWWidth | CWHeight | CWX | CWY)) { int x, y, w, h; - Corner corner; + ObCorner corner; x = (e->xconfigurerequest.value_mask & CWX) ? e->xconfigurerequest.x : client->area.x; @@ -738,17 +736,17 @@ static void event_handle_client(Client *client, XEvent *e) switch (client->gravity) { case NorthEastGravity: case EastGravity: - corner = Corner_TopRight; + corner = OB_CORNER_TOPRIGHT; break; case SouthWestGravity: case SouthGravity: - corner = Corner_BottomLeft; + corner = OB_CORNER_BOTTOMLEFT; break; case SouthEastGravity: - corner = Corner_BottomRight; + corner = OB_CORNER_BOTTOMRIGHT; break; default: /* NorthWest, Static, etc */ - corner = Corner_TopLeft; + corner = OB_CORNER_TOPLEFT; } client_configure(client, corner, x, y, w, h, FALSE, TRUE); @@ -922,7 +920,8 @@ static void event_handle_client(Client *client, XEvent *e) else h = client->area.y; client->gravity = tmpg; - client_configure(client, Corner_TopLeft, x, y, w, h, FALSE, TRUE); + client_configure(client, OB_CORNER_TOPLEFT, + x, y, w, h, FALSE, TRUE); client->gravity = oldg; } break; @@ -983,7 +982,7 @@ static void event_handle_client(Client *client, XEvent *e) } } -static void event_handle_menu(Client *client, XEvent *e) +static void event_handle_menu(ObClient *client, XEvent *e) { static MenuEntry *over = NULL; MenuEntry *entry; @@ -1001,6 +1000,7 @@ static void event_handle_menu(Client *client, XEvent *e) else menu_control_mouseover(over, FALSE); menu_entry_render(over); + over = NULL; } /* if (top->hide) @@ -1032,7 +1032,16 @@ static void event_handle_menu(Client *client, XEvent *e) m->location.x, e->xbutton.y_root - m->location.y))) { - menu_entry_fire(entry); + if (over) { + if (over->parent->mouseover) + over->parent->mouseover(over, FALSE); + else + menu_control_mouseover(over, FALSE); + menu_entry_render(over); + over = NULL; + /* this hides the menu */ + menu_entry_fire(entry); + } } break; } @@ -1042,9 +1051,10 @@ static void event_handle_menu(Client *client, XEvent *e) if (over->parent->mouseover) over->parent->mouseover(over, FALSE); else - menu_control_mouseover(over, FALSE); + menu_control_mouseover(over, FALSE); + menu_entry_render(over); + over = NULL; } - menu_entry_render(over); /* if (top->hide) top->hide(top); @@ -1093,31 +1103,32 @@ static void event_handle_menu(Client *client, XEvent *e) } void event_add_fd_handler(event_fd_handler *h) { - g_datalist_id_set_data(&fd_handler_list, h->fd, h); - FD_SET(h->fd, &allset); - max_fd = MAX(max_fd, h->fd); + g_datalist_id_set_data(&fd_handler_list, h->fd, h); + FD_SET(h->fd, &allset); + max_fd = MAX(max_fd, h->fd); } static void find_max_fd_foreach(GQuark n, gpointer data, gpointer max) { - *((unsigned int *)max) = MAX(*((unsigned int *)max), n); + *((unsigned int *)max) = MAX(*((unsigned int *)max), n); } static void find_max_fd() { - int tmpmax = -1; - g_datalist_foreach(&fd_handler_list, find_max_fd_foreach, (gpointer)&tmpmax); - max_fd = MAX(x_fd, tmpmax); + int tmpmax = -1; + g_datalist_foreach(&fd_handler_list, find_max_fd_foreach, + (gpointer)&tmpmax); + max_fd = MAX(x_fd, tmpmax); #ifdef USE_SM - max_fd = MAX(ice_fd, tmpmax); + max_fd = MAX(ice_fd, tmpmax); #endif } void event_remove_fd(int n) { - FD_CLR(n, &allset); - g_datalist_id_remove_data(&fd_handler_list, (GQuark)n); - find_max_fd(); + FD_CLR(n, &allset); + g_datalist_id_remove_data(&fd_handler_list, (GQuark)n); + find_max_fd(); } static void fd_event_handle_foreach(GQuark n, gpointer data, gpointer user_data)