static Rect *pick_pointer_head(ObClient *c)
{
- guint i;
- gint px, py;
-
- if (screen_pointer_pos(&px, &py)) {
- for (i = 0; i < screen_num_monitors; ++i) {
- Rect *monitor = screen_physical_area_monitor(i);
- gboolean contain = RECT_CONTAINS(*monitor, px, py);
- g_free(monitor);
- if (contain)
- return screen_area(c->desktop, i, NULL);
- }
- g_assert_not_reached();
- } else
- return NULL;
+ return screen_area(c->desktop, screen_monitor_pointer(), NULL);
}
/*! Pick a monitor to place a window on. */
return FALSE;
}
-/* Return TRUE if we want client.c to enforce on-screen-keeping */
+/*! Return TRUE if openbox chose the position for the window, and FALSE if
+ the application chose it */
gboolean place_client(ObClient *client, gint *x, gint *y,
ObAppSettings *settings)
{
gboolean ret;
- gboolean userplaced = FALSE;
/* per-app settings override program specified position
* but not user specified, unless pos_force is enabled */
return FALSE;
/* try a number of methods */
- ret = place_transient_splash(client, x, y) ||
- (userplaced = place_per_app_setting(client, x, y, settings)) ||
+ ret = place_per_app_setting(client, x, y, settings) ||
+ place_transient_splash(client, x, y) ||
(config_place_policy == OB_PLACE_POLICY_MOUSE &&
place_under_mouse(client, x, y)) ||
place_nooverlap(client, x, y) ||
/* get where the client should be */
frame_frame_gravity(client->frame, x, y);
- return !userplaced;
+ return TRUE;
}