diff options
author | Sergey Udaltsov <svu@gnome.org> | 2006-02-28 23:35:52 +0000 |
---|---|---|
committer | Sergey Udaltsov <svu@gnome.org> | 2006-02-28 23:35:52 +0000 |
commit | 9e2bd71c02ff891eaba5e719adfdc95d517714fc (patch) | |
tree | 6fce7e60f9d1540dc17695312973a57521043579 | |
parent | 518b5b5fbee268bbf8a8b7d310aebb45a79b9ee3 (diff) | |
download | libxklavier-9e2bd71c02ff891eaba5e719adfdc95d517714fc.tar.gz |
a couple more files gobjectified
-rw-r--r-- | libxklavier/xklavier.h | 7 | ||||
-rw-r--r-- | libxklavier/xklavier_evt.c | 4 | ||||
-rw-r--r-- | libxklavier/xklavier_private.h | 6 | ||||
-rw-r--r-- | libxklavier/xklavier_toplevel.c | 12 | ||||
-rw-r--r-- | libxklavier/xklavier_util.c | 117 |
5 files changed, 83 insertions, 63 deletions
diff --git a/libxklavier/xklavier.h b/libxklavier/xklavier.h index 6cd465c..0b10e79 100644 --- a/libxklavier/xklavier.h +++ b/libxklavier/xklavier.h @@ -335,8 +335,11 @@ extern "C" { * @param win2 is second window * @return True is windows are in the same application */ - extern gboolean xkl_windows_from_same_toplevel_window(Window win1, - Window win2); + extern gboolean + xkl_engine_is_window_from_same_toplevel_window(XklEngine * + engine, + Window win1, + Window win2); /** @} */ diff --git a/libxklavier/xklavier_evt.c b/libxklavier/xklavier_evt.c index 50344a8..d7280b4 100644 --- a/libxklavier/xklavier_evt.c +++ b/libxklavier/xklavier_evt.c @@ -238,7 +238,7 @@ xkl_engine_process_focus_in_evt(XklEngine * engine, "Same app window - just do nothing\n"); } else { xkl_debug(150, "But it does not have xklavier_state\n"); - if (xkl_window_has_wm_state(win)) { + if (xkl_engine_if_window_has_wm_state(engine, win)) { xkl_debug(150, "But it does have wm_state so we'll add it\n"); engine->priv->curr_toplvl_win = toplevel_win; @@ -397,7 +397,7 @@ xkl_engine_process_create_window_evt(XklEngine * engine, PropertyChangeMask | FocusChangeMask); - if (xkl_window_has_wm_state(cev->window)) { + if (xkl_engine_if_window_has_wm_state(engine, cev->window)) { xkl_debug(200, "Just created window already has WM_STATE - so I'll add it"); xkl_engine_add_toplevel_window(engine, cev->window, diff --git a/libxklavier/xklavier_private.h b/libxklavier/xklavier_private.h index bdf974b..eda75f5 100644 --- a/libxklavier/xklavier_private.h +++ b/libxklavier/xklavier_private.h @@ -243,7 +243,8 @@ extern gboolean xkl_engine_load_window_tree(XklEngine * engine); extern gboolean xkl_engine_load_subtree(XklEngine * engine, Window window, gint level, XklState * init_state); -extern gboolean xkl_window_has_wm_state(Window win); +extern gboolean xkl_engine_if_window_has_wm_state(XklEngine * engine, + Window win); /** @@ -289,7 +290,8 @@ extern void xkl_engine_select_input_merging(XklEngine * engine, Window win, extern gchar *xkl_get_debug_window_title(Window win); -extern Status xkl_status_query_tree(Window w, +extern Status xkl_engine_query_tree(XklEngine * engine, + Window w, Window * root_out, Window * parent_out, Window ** children_out, diff --git a/libxklavier/xklavier_toplevel.c b/libxklavier/xklavier_toplevel.c index 69b9959..e6c6f16 100644 --- a/libxklavier/xklavier_toplevel.c +++ b/libxklavier/xklavier_toplevel.c @@ -129,13 +129,14 @@ xkl_engine_find_toplevel_window_bottom_to_top(XklEngine * engine, return FALSE; } - if (xkl_window_has_wm_state(win)) { + if (xkl_engine_if_window_has_wm_state(engine, win)) { *toplevel_win_out = win; return TRUE; } engine->priv->last_error_code = - xkl_status_query_tree(win, &rwin, &parent, &children, &num); + xkl_engine_query_tree(engine, win, &rwin, &parent, &children, + &num); if (engine->priv->last_error_code != Success) { *toplevel_win_out = (Window) NULL; @@ -177,13 +178,14 @@ xkl_engine_find_toplevel_window(XklEngine * engine, Window win, return FALSE; } - if (xkl_window_has_wm_state(win)) { + if (xkl_engine_if_window_has_wm_state(engine, win)) { *toplevel_win_out = win; return TRUE; } engine->priv->last_error_code = - xkl_status_query_tree(win, &rwin, &parent, &children, &num); + xkl_engine_query_tree(engine, win, &rwin, &parent, &children, + &num); if (engine->priv->last_error_code != Success) { *toplevel_win_out = (Window) NULL; @@ -200,7 +202,7 @@ xkl_engine_find_toplevel_window(XklEngine * engine, Window win, */ child = children; while (num) { - if (xkl_window_has_wm_state(*child)) { + if (xkl_engine_if_window_has_wm_state(engine, *child)) { *toplevel_win_out = *child; if (children != NULL) XFree(children); diff --git a/libxklavier/xklavier_util.c b/libxklavier/xklavier_util.c index ed19658..0ec0eee 100644 --- a/libxklavier/xklavier_util.c +++ b/libxklavier/xklavier_util.c @@ -8,19 +8,19 @@ #include "xklavier_private.h" XklState * -xkl_state_get_current() +xkl_engine_get_current_state(XklEngine * engine) { - return &xkl_current_state; + return &engine->priv->curr_state; } const gchar * -xkl_get_last_error() +xkl_engine_get_last_error(XklEngine * engine) { - return xkl_last_error_message; + return engine->priv->last_error_message; } gchar * -xkl_window_get_title(Window w) +xkl_engine_get_window_title(XklEngine * engine, Window w) { Atom type_ret; int format_ret; @@ -28,7 +28,8 @@ xkl_window_get_title(Window w) unsigned char *prop; if (Success == - XGetWindowProperty(xkl_display, w, xkl_atoms[WM_NAME], 0L, -1L, + XGetWindowProperty(xkl_engine_get_display(engine), w, + engine->priv->atoms[WM_NAME], 0L, -1L, False, XA_STRING, &type_ret, &format_ret, &nitems, &rest, &prop)) return (gchar *) prop; @@ -37,59 +38,63 @@ xkl_window_get_title(Window w) } gboolean -xkl_windows_is_same_application(Window win1, Window win2) +xkl_engine_is_window_from_same_toplevel_window(XklEngine * engine, + Window win1, Window win2) { Window app1, app2; - return xkl_toplevel_window_find(win1, &app1) && - xkl_toplevel_window_find(win2, &app2) && app1 == app2; + return xkl_engine_find_toplevel_window(engine, win1, &app1) && + xkl_engine_find_toplevel_window(engine, win2, &app2) + && app1 == app2; } gboolean -xkl_state_get(Window win, XklState * state_out) +xkl_engine_get_state(XklEngine * engine, Window win, XklState * state_out) { Window app_win; - if (!xkl_toplevel_window_find(win, &app_win)) { + if (!xkl_engine_find_toplevel_window(engine, win, &app_win)) { if (state_out != NULL) state_out->group = -1; return FALSE; } - return xkl_toplevel_window_get_state(app_win, state_out); + return xkl_engine_get_toplevel_window_state(engine, app_win, + state_out); } void -xkl_state_delete(Window win) +xkl_engine_delete_state(XklEngine * engine, Window win) { Window app_win; - if (xkl_toplevel_window_find(win, &app_win)) - xkl_toplevel_window_remove_state(app_win); + if (xkl_engine_find_toplevel_window(engine, win, &app_win)) + xkl_engine_remove_toplevel_window_state(engine, app_win); } void -xkl_state_save(Window win, XklState * state) +xkl_engine_save_state(XklEngine * engine, Window win, XklState * state) { Window app_win; - if (!(xkl_listener_type & XKLL_MANAGE_WINDOW_STATES)) + if (!(engine->priv->listener_type & XKLL_MANAGE_WINDOW_STATES)) return; - if (xkl_toplevel_window_find(win, &app_win)) - xkl_toplevel_window_save_state(app_win, state); + if (xkl_engine_find_toplevel_window(engine, win, &app_win)) + xkl_engine_save_toplevel_window_state(engine, app_win, + state); } /** * Prepares the name of window suitable for debugging (32characters long). */ gchar * -xkl_window_get_debug_title(Window win) +xkl_get_debug_window_title(Window win) { static gchar sname[33]; gchar *name; strcpy(sname, "NULL"); if (win != (Window) NULL) { - name = xkl_window_get_title(win); + name = xkl_get_window_title(win); if (name != NULL) { snprintf(sname, sizeof(sname), "%.32s", name); g_free(name); @@ -99,9 +104,9 @@ xkl_window_get_debug_title(Window win) } Window -xkl_window_get_current() +xkl_engine_get_current_window(XklEngine * engine) { - return xkl_current_client; + return engine->priv->curr_toplvl_win; } /** @@ -110,51 +115,56 @@ xkl_window_get_current() * All the windows within level 0 are listened for focus and property */ gboolean -xkl_load_subtree(Window window, gint level, XklState * init_state) +xkl_engine_load_subtree(XklEngine * engine, Window window, gint level, + XklState * init_state) { Window rwin = (Window) NULL, parent = (Window) NULL, *children = NULL, *child; guint num = 0; gboolean retval = True; - xkl_last_error_code = - xkl_status_query_tree(window, &rwin, &parent, &children, &num); + engine->priv->last_error_code = + xkl_engine_query_tree(engine, window, &rwin, &parent, + &children, &num); - if (xkl_last_error_code != Success) { + if (engine->priv->last_error_code != Success) { return FALSE; } child = children; while (num) { - if (xkl_window_has_wm_state(*child)) { + if (xkl_engine_if_window_has_wm_state(engine, *child)) { xkl_debug(160, "Window " WINID_FORMAT " '%s' has WM_STATE so we'll add it\n", *child, - xkl_window_get_debug_title(*child)); - xkl_toplevel_window_add(*child, window, TRUE, - init_state); + xkl_get_debug_window_title(*child)); + xkl_engine_add_toplevel_window(engine, *child, + window, TRUE, + init_state); } else { xkl_debug(200, "Window " WINID_FORMAT " '%s' does not have have WM_STATE so we'll not add it\n", *child, - xkl_window_get_debug_title(*child)); + xkl_get_debug_window_title(*child)); if (level == 0) { xkl_debug(200, "But we are at level 0 so we'll spy on it\n"); - xkl_select_input_merging(*child, - FocusChangeMask | - PropertyChangeMask); + xkl_engine_select_input_merging(engine, + *child, + FocusChangeMask + | + PropertyChangeMask); } else xkl_debug(200, "And we are at level %d so we'll not spy on it\n", level); retval = - xkl_load_subtree(*child, level + 1, - init_state); + xkl_engine_load_subtree(engine, *child, + level + 1, init_state); } child++; @@ -171,7 +181,7 @@ xkl_load_subtree(Window window, gint level, XklState * init_state) * Checks whether given window has WM_STATE property (i.e. "App window"). */ gboolean -xkl_window_has_wm_state(Window win) +xkl_engine_if_window_has_wm_state(XklEngine * engine, Window win) { /* ICCCM 4.1.3.1 */ Atom type = None; int format; @@ -179,8 +189,9 @@ xkl_window_has_wm_state(Window win) unsigned long after; unsigned char *data = NULL; /* Helps in the case of BadWindow error */ - XGetWindowProperty(xkl_display, win, xkl_atoms[WM_STATE], 0, 0, - False, xkl_atoms[WM_STATE], &type, &format, + XGetWindowProperty(xkl_engine_get_display(engine), win, + engine->priv->atoms[WM_STATE], 0, 0, False, + engine->priv->atoms[WM_STATE], &type, &format, &nitems, &after, &data); if (data != NULL) XFree(data); /* To avoid an one-byte memory leak because after successfull return @@ -192,27 +203,28 @@ xkl_window_has_wm_state(Window win) * Finds out the official parent window (accortind to XQueryTree) */ Window -xkl_get_registered_parent(Window win) +xkl_engine_get_registered_parent(XklEngine * engine, Window win) { Window parent = (Window) NULL, rw = (Window) NULL, *children = NULL; guint nchildren = 0; - xkl_last_error_code = - xkl_status_query_tree(win, &rw, &parent, &children, + engine->priv->last_error_code = + xkl_engine_query_tree(engine, win, &rw, &parent, &children, &nchildren); if (children != NULL) XFree(children); - return xkl_last_error_code == Success ? parent : (Window) NULL; + return engine->priv->last_error_code == + Success ? parent : (Window) NULL; } /** * Make sure about the result. Origial XQueryTree is pretty stupid beast:) */ Status -xkl_status_query_tree(Window w, +xkl_engine_query_tree(XklEngine * engine, Window w, Window * root_out, Window * parent_out, Window ** children_out, guint * nchildren_out) @@ -220,7 +232,7 @@ xkl_status_query_tree(Window w, gboolean result; unsigned int nc; - result = (gboolean) XQueryTree(xkl_display, + result = (gboolean) XQueryTree(xkl_engine_get_display(engine), w, root_out, parent_out, children_out, &nc); @@ -230,7 +242,8 @@ xkl_status_query_tree(Window w, xkl_debug(160, "Could not get tree info for window " WINID_FORMAT ": %d\n", w, result); - xkl_last_error_message = "Could not get the tree info"; + engine->priv->last_error_message = + "Could not get the tree info"; } return result ? Success : FirstExtensionError; @@ -273,7 +286,7 @@ xkl_event_get_name(gint type) "SelectionRequest", "SelectionNotify", "ColormapNotify", "ClientMessage", "MappingNotify", - "LASTEvent" + "LASTEvent" }; type -= KeyPress; if (type < 0 || type >= (sizeof(evt_names) / sizeof(evt_names[0]))) @@ -282,12 +295,12 @@ xkl_event_get_name(gint type) } void -xkl_current_state_update(int group, unsigned indicators, - const char reason[]) +xkl_engine_update_current_state(XklEngine * engine, int group, + unsigned indicators, const char reason[]) { xkl_debug(150, "Updating the current state with [g:%d/i:%u], reason: %s\n", group, indicators, reason); - xkl_current_state.group = group; - xkl_current_state.indicators = indicators; + engine->priv->curr_state.group = group; + engine->priv->curr_state.indicators = indicators; } |