summaryrefslogtreecommitdiff
path: root/openbox
diff options
context:
space:
mode:
authorMikael Magnusson <mikachu@comhem.se>2008-04-23 16:41:35 +0200
committerMikael Magnusson <mikachu@comhem.se>2008-04-23 17:07:10 +0200
commit6799c67c07e99c440f549802f60d9f16995ab711 (patch)
tree096d1066947d6e8bc1278166b94b2de8b6cd684f /openbox
parent661a53cb6843d02f3373feab91052c47397bb6ed (diff)
parenta7bbdf7d6199d1289f5ecc1b4e25632d88d75387 (diff)
Merge branch 'backport' into work
Conflicts: openbox/config.c openbox/keyboard.c openbox/moveresize.c
Diffstat (limited to 'openbox')
-rw-r--r--openbox/config.c30
-rw-r--r--openbox/keyboard.c6
-rw-r--r--openbox/moveresize.c95
3 files changed, 63 insertions, 68 deletions
diff --git a/openbox/config.c b/openbox/config.c
index 6282bf85..790b03ba 100644
--- a/openbox/config.c
+++ b/openbox/config.c
@@ -823,25 +823,25 @@ static void parse_dock(xmlNodePtr node, gpointer d)
static void parse_menu(xmlNodePtr node, gpointer d)
{
xmlNodePtr n;
- for (node = node->children; node; node = node->next) {
- if (!xmlStrcasecmp(node->name, (const xmlChar*) "file")) {
- gchar *c;
+ node = node->children;
- c = obt_parse_node_string(node);
+ if ((n = obt_parse_find_node(node, "hideDelay")))
+ config_menu_hide_delay = obt_parse_node_int(n);
+ if ((n = obt_parse_find_node(node, "middle")))
+ config_menu_middle = obt_parse_node_bool(n);
+ if ((n = obt_parse_find_node(node, "submenuShowDelay")))
+ config_submenu_show_delay = obt_parse_node_int(n);
+ if ((n = obt_parse_find_node(node, "applicationIcons")))
+ config_menu_client_list_icons = obt_parse_node_bool(n);
+ if ((n = obt_parse_find_node(node, "manageDesktops")))
+ config_menu_manage_desktops = obt_parse_node_bool(n);
+
+ while ((node = obt_parse_find_node(node, "file"))) {
+ gchar *c = obt_parse_node_string(node);
config_menu_files = g_slist_append(config_menu_files,
obt_paths_expand_tilde(c));
g_free(c);
- }
- if ((n = obt_parse_find_node(node, "hideDelay")))
- config_menu_hide_delay = obt_parse_node_int(n);
- if ((n = obt_parse_find_node(node, "middle")))
- config_menu_middle = obt_parse_node_bool(n);
- if ((n = obt_parse_find_node(node, "submenuShowDelay")))
- config_submenu_show_delay = obt_parse_node_int(n);
- if ((n = obt_parse_find_node(node, "applicationIcons")))
- config_menu_client_list_icons = obt_parse_node_bool(n);
- if ((n = obt_parse_find_node(node, "manageDesktops")))
- config_menu_manage_desktops = obt_parse_node_bool(n);
+ node = node->next;
}
}
diff --git a/openbox/keyboard.c b/openbox/keyboard.c
index a693a71c..410eb6e0 100644
--- a/openbox/keyboard.c
+++ b/openbox/keyboard.c
@@ -51,13 +51,13 @@ static void grab_keys(gboolean grab)
while (p) {
if (p->key)
grab_key(p->key, p->state, obt_root(ob_screen),
- GrabModeSync);
+ GrabModeAsync);
p = p->next_sibling;
}
if (curpos)
grab_key(config_keyboard_reset_keycode,
config_keyboard_reset_state,
- obt_root(ob_screen), GrabModeSync);
+ obt_root(ob_screen), GrabModeAsync);
}
}
@@ -261,8 +261,6 @@ void keyboard_event(ObClient *client, const XEvent *e)
}
p = p->next_sibling;
}
-
- XAllowEvents(obt_display, AsyncKeyboard, event_curtime);
}
static void node_rebind(KeyBindingTree *node)
diff --git a/openbox/moveresize.c b/openbox/moveresize.c
index f501996b..e748cd3d 100644
--- a/openbox/moveresize.c
+++ b/openbox/moveresize.c
@@ -62,6 +62,8 @@ static gboolean waiting_for_sync;
static ObPopup *popup = NULL;
+static void do_move(gboolean keyboard, gint keydist);
+static void do_resize(void);
static void do_edge_warp(gint x, gint y);
static void cancel_edge_warp();
#ifdef SYNC
@@ -107,10 +109,8 @@ static void popup_coords(ObClient *c, const gchar *format, gint a, gint b)
c->frame->area.y - ob_rr_theme->fbwidth);
else if (config_resize_popup_pos == OB_RESIZE_POS_CENTER)
popup_position(popup, CenterGravity,
- c->frame->area.x + c->frame->size.left +
- c->area.width / 2,
- c->frame->area.y + c->frame->size.top +
- c->area.height / 2);
+ c->frame->area.x + c->frame->area.width / 2,
+ c->frame->area.y + c->frame->area.height / 2);
else /* Fixed */ {
Rect *area = screen_physical_area_active();
gint gravity, x, y;
@@ -363,53 +363,52 @@ static void do_resize(void)
h = cur_h;
client_try_configure(moveresize_client, &x, &y, &w, &h,
&lw, &lh, TRUE);
- if (w == moveresize_client->area.width &&
- h == moveresize_client->area.height)
+ if (!(w == moveresize_client->area.width &&
+ h == moveresize_client->area.height))
{
- return;
- }
#ifdef SYNC
- if (config_resize_redraw && obt_display_extension_sync &&
- moveresize_client->sync_request && moveresize_client->sync_counter &&
- !moveresize_client->not_responding)
- {
- XEvent ce;
- XSyncValue val;
-
- /* are we already waiting for the sync counter to catch up? */
- if (waiting_for_sync)
- return;
-
- /* increment the value we're waiting for */
- ++moveresize_client->sync_counter_value;
- XSyncIntToValue(&val, moveresize_client->sync_counter_value);
-
- /* tell the client what we're waiting for */
- ce.xclient.type = ClientMessage;
- ce.xclient.message_type = OBT_PROP_ATOM(WM_PROTOCOLS);
- ce.xclient.display = obt_display;
- ce.xclient.window = moveresize_client->window;
- ce.xclient.format = 32;
- ce.xclient.data.l[0] = OBT_PROP_ATOM(NET_WM_SYNC_REQUEST);
- ce.xclient.data.l[1] = event_curtime;
- ce.xclient.data.l[2] = XSyncValueLow32(val);
- ce.xclient.data.l[3] = XSyncValueHigh32(val);
- ce.xclient.data.l[4] = 0l;
- XSendEvent(obt_display, moveresize_client->window, FALSE,
- NoEventMask, &ce);
-
- waiting_for_sync = TRUE;
-
- obt_main_loop_timeout_remove(ob_main_loop, sync_timeout_func);
- obt_main_loop_timeout_add(ob_main_loop, G_USEC_PER_SEC * 2,
- sync_timeout_func,
- NULL, NULL, NULL);
- }
+ if (config_resize_redraw && obt_display_extension_sync &&
+ moveresize_client->sync_request && moveresize_client->sync_counter &&
+ !moveresize_client->not_responding)
+ {
+ XEvent ce;
+ XSyncValue val;
+
+ /* are we already waiting for the sync counter to catch up? */
+ if (waiting_for_sync)
+ return;
+
+ /* increment the value we're waiting for */
+ ++moveresize_client->sync_counter_value;
+ XSyncIntToValue(&val, moveresize_client->sync_counter_value);
+
+ /* tell the client what we're waiting for */
+ ce.xclient.type = ClientMessage;
+ ce.xclient.message_type = OBT_PROP_ATOM(WM_PROTOCOLS);
+ ce.xclient.display = obt_display;
+ ce.xclient.window = moveresize_client->window;
+ ce.xclient.format = 32;
+ ce.xclient.data.l[0] = OBT_PROP_ATOM(NET_WM_SYNC_REQUEST);
+ ce.xclient.data.l[1] = event_curtime;
+ ce.xclient.data.l[2] = XSyncValueLow32(val);
+ ce.xclient.data.l[3] = XSyncValueHigh32(val);
+ ce.xclient.data.l[4] = 0l;
+ XSendEvent(obt_display, moveresize_client->window, FALSE,
+ NoEventMask, &ce);
+
+ waiting_for_sync = TRUE;
+
+ obt_main_loop_timeout_remove(ob_main_loop, sync_timeout_func);
+ obt_main_loop_timeout_add(ob_main_loop, G_USEC_PER_SEC * 2,
+ sync_timeout_func,
+ NULL, NULL, NULL);
+ }
#endif
- client_configure(moveresize_client, cur_x, cur_y, cur_w, cur_h,
- TRUE, FALSE, FALSE);
+ client_configure(moveresize_client, cur_x, cur_y, cur_w, cur_h,
+ TRUE, FALSE, FALSE);
+ }
/* this would be better with a fixed width font ... XXX can do it better
if there are 2 text boxes */
@@ -417,9 +416,7 @@ static void do_resize(void)
(config_resize_popup_show == 1 && /* == "Nonpixel" */
moveresize_client->size_inc.width > 1 &&
moveresize_client->size_inc.height > 1))
- popup_coords(moveresize_client, "%d x %d",
- moveresize_client->logical_size.width,
- moveresize_client->logical_size.height);
+ popup_coords(moveresize_client, "%d x %d", lw, lh);
}
#ifdef SYNC