X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=openbox%2Fevent.c;h=cb8babf078d2a059de071a728e0d53c8ccfd654b;hb=eea43e64883fc0c988b916db99bc5b45ccffc432;hp=2a47ef091c7ed264df5162bdea98bb9156fe9fe9;hpb=0423b057ed754abca28033cc5f0621e8266c34db;p=chaz%2Fopenbox diff --git a/openbox/event.c b/openbox/event.c index 2a47ef09..cb8babf0 100644 --- a/openbox/event.c +++ b/openbox/event.c @@ -38,10 +38,10 @@ 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_dock(ObDock *s, XEvent *e); +static void event_handle_dockapp(ObDockApp *app, 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, @@ -149,28 +149,7 @@ void event_loop() struct timeval *wait; gboolean had_event = FALSE; - while (TRUE) { - /* - There are slightly different event retrieval semantics here for - local (or high bandwidth) versus remote (or low bandwidth) - connections to the display/Xserver. - */ - if (ob_remote) { - if (!XPending(ob_display)) - break; - } else { - /* - This XSync allows for far more compression of events, which - makes things like Motion events perform far far better. Since - it also means network traffic for every event instead of every - X events (where X is the number retrieved at a time), it - probably should not be used for setups where Openbox is - running on a remote/low bandwidth display/Xserver. - */ - XSync(ob_display, FALSE); - if (!XEventsQueued(ob_display, QueuedAlready)) - break; - } + while (XPending(ob_display)) { XNextEvent(ob_display, &e); #ifdef USE_LIBSN @@ -320,7 +299,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: @@ -432,7 +411,7 @@ static gboolean event_ignore(XEvent *e, Client *client) g_message("no valid FocusIn and no FocusOut events found, " "falling back"); #endif - focus_fallback(Fallback_NoFocus); + focus_fallback(OB_FOCUS_FALLBACK_NOFOCUS); } } break; @@ -467,9 +446,9 @@ static gboolean event_ignore(XEvent *e, Client *client) static void event_process(XEvent *e) { Window window; - Client *client = NULL; - Dock *dock = NULL; - DockApp *dockapp = NULL; + ObClient *client = NULL; + ObDock *dock = NULL; + ObDockApp *dockapp = NULL; Menu *menu = NULL; ObWindow *obwin = NULL; @@ -595,9 +574,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 +586,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; @@ -622,23 +599,23 @@ static void event_handle_client(Client *client, XEvent *e) is a waste of resources to go drawing it. */ if (!(e->xbutton.button == 4 || e->xbutton.button == 5)) { switch (frame_context(client, e->xbutton.window)) { - case Context_Maximize: + case OB_FRAME_CONTEXT_MAXIMIZE: client->frame->max_press = (e->type == ButtonPress); framerender_frame(client->frame); break; - case Context_Close: + case OB_FRAME_CONTEXT_CLOSE: client->frame->close_press = (e->type == ButtonPress); framerender_frame(client->frame); break; - case Context_Iconify: + case OB_FRAME_CONTEXT_ICONIFY: client->frame->iconify_press = (e->type == ButtonPress); framerender_frame(client->frame); break; - case Context_AllDesktops: + case OB_FRAME_CONTEXT_ALLDESKTOPS: client->frame->desk_press = (e->type == ButtonPress); framerender_frame(client->frame); break; - case Context_Shade: + case OB_FRAME_CONTEXT_SHADE: client->frame->shade_press = (e->type == ButtonPress); framerender_frame(client->frame); break; @@ -664,7 +641,7 @@ static void event_handle_client(Client *client, XEvent *e) /* are we a fullscreen window or a transient of one? (checks layer) if we are then we need to be iconified since we are losing focus */ - if (client->layer == Layer_Fullscreen && !client->iconic && + if (client->layer == OB_STACKING_LAYER_FULLSCREEN && !client->iconic && !client_search_focus_tree_full(client)) /* iconify fullscreen windows when they and their transients aren't focused */ @@ -673,7 +650,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 +701,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 +715,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 +899,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 +961,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; @@ -1040,9 +1018,9 @@ static void event_handle_menu(Client *client, XEvent *e) menu_control_mouseover(over, FALSE); menu_entry_render(over); over = NULL; + /* this hides the menu */ + menu_entry_fire(entry); } - /* this hides the menu */ - menu_entry_fire(entry); } break; } @@ -1104,31 +1082,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) @@ -1145,7 +1124,7 @@ static void fd_event_handle() g_datalist_foreach(&fd_handler_list, fd_event_handle_foreach, NULL); } -static void event_handle_dock(Dock *s, XEvent *e) +static void event_handle_dock(ObDock *s, XEvent *e) { switch (e->type) { case ButtonPress: @@ -1160,7 +1139,7 @@ static void event_handle_dock(Dock *s, XEvent *e) } } -static void event_handle_dockapp(DockApp *app, XEvent *e) +static void event_handle_dockapp(ObDockApp *app, XEvent *e) { switch (e->type) { case MotionNotify: