summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMikael Magnusson <mikachu@comhem.se>2007-06-01 23:39:52 +0000
committerMikael Magnusson <mikachu@comhem.se>2007-06-01 23:39:52 +0000
commit47529e777f5d0ac222b6ed06c9644c3909bd6479 (patch)
treeeff36065a2cfb9dec749fc1b3cfc1d6d1bc8668c
parent3547fe26edf0671dbc0ec5b3a081f8629d13e4b9 (diff)
revert 7246 and simplify action_raiselower a bit, turns out 7246 wasn't needed for that after all
-rw-r--r--openbox/action.c27
-rw-r--r--openbox/stacking.c10
-rw-r--r--openbox/stacking.h8
3 files changed, 9 insertions, 36 deletions
diff --git a/openbox/action.c b/openbox/action.c
index a01f4d06..39c1169b 100644
--- a/openbox/action.c
+++ b/openbox/action.c
@@ -1329,31 +1329,10 @@ void action_focus_order_to_bottom(union ActionData *data)
void action_raiselower(union ActionData *data)
{
ObClient *c = data->client.any.c;
- GList *it;
- gboolean raise = FALSE;
-
- for (it = stacking_list; it; it = g_list_next(it)) {
- if (WINDOW_IS_CLIENT(it->data)) {
- ObClient *cit = it->data;
-
- if (cit == c) break;
- if (client_normal(cit) == client_normal(c) &&
- cit->layer == c->layer &&
- cit->frame->visible &&
- !client_search_transient(c, cit))
- {
- if (RECT_INTERSECTS_RECT(cit->frame->area, c->frame->area)) {
- raise = TRUE;
- break;
- }
- }
- }
- }
- if (raise)
- action_raise(data);
- else
- action_lower(data);
+ client_action_start(data);
+ stacking_restack_request(c, NULL, Opposite, FALSE);
+ client_action_end(data);
}
void action_raise(union ActionData *data)
diff --git a/openbox/stacking.c b/openbox/stacking.c
index 481c14bd..e323b569 100644
--- a/openbox/stacking.c
+++ b/openbox/stacking.c
@@ -545,8 +545,8 @@ static gboolean stacking_occludes(ObClient *client, ObClient *sibling)
return occludes;
}
-gboolean stacking_restack_request(ObClient *client, ObClient *sibling,
- gint detail, gboolean activate)
+void stacking_restack_request(ObClient *client, ObClient *sibling,
+ gint detail, gboolean activate)
{
switch (detail) {
case Below:
@@ -563,8 +563,6 @@ gboolean stacking_restack_request(ObClient *client, ObClient *sibling,
lower it to the bottom */
if (stacking_occludes(client, sibling))
stacking_lower(CLIENT_AS_WINDOW(client));
- else
- return FALSE;
break;
case Above:
ob_debug("Restack request Above for client %s sibling %s\n",
@@ -586,8 +584,7 @@ gboolean stacking_restack_request(ObClient *client, ObClient *sibling,
client_activate(client, FALSE, TRUE);
else
stacking_raise(CLIENT_AS_WINDOW(client));
- } else
- return FALSE;
+ }
break;
case Opposite:
ob_debug("Restack request Opposite for client %s sibling "
@@ -605,5 +602,4 @@ gboolean stacking_restack_request(ObClient *client, ObClient *sibling,
stacking_lower(CLIENT_AS_WINDOW(client));
break;
}
- return TRUE;
}
diff --git a/openbox/stacking.h b/openbox/stacking.h
index 4a81617d..eb638734 100644
--- a/openbox/stacking.h
+++ b/openbox/stacking.h
@@ -67,13 +67,11 @@ void stacking_below(ObWindow *window, ObWindow *below);
@param detail One of Above, Below, TopIf, BottomIf, Opposite
@param activate If TRUE, and if the window is going to be raised, it will
be activated instead
- @return false if given TopIf or BottomIf and no action was taken,
- true otherwise
See http://tronche.com/gui/x/xlib/window/configure.html for details on
how each detail works with and without a sibling.
*/
-gboolean stacking_restack_request(struct _ObClient *client,
- struct _ObClient *sibling,
- gint detail, gboolean activate);
+void stacking_restack_request(struct _ObClient *client,
+ struct _ObClient *sibling,
+ gint detail, gboolean activate);
#endif