frame_set_is_max_vert, /* */
frame_set_is_max_horz, /* */
frame_set_is_shaded, /* */
- 0, //frame_flash_start, /* */
- 0, //frame_flash_stop, /* */
frame_set_decorations, /* */
frame_update_title, /* */
/* This give the window area */
client_try_configure(c, &x, &y, &w, &h, &lw, &lh, TRUE);
Strut c_size;
- frame_engine->frame_get_size(c->frame, &c_size);
+ frame_engine.frame_get_size(c->frame, &c_size);
Rect c_area;
- frame_engine->frame_get_window_area(c->frame, &c_area);
+ frame_engine.frame_get_window_area(c->frame, &c_area);
/* get the frame's size */
w += c_size.left + c_size.right;
h += c_size.top + c_size.bottom;
guint32 corner;
Strut c_size;
- frame_engine->frame_get_size(c->frame, &c_size);
+ frame_engine.frame_get_size(c->frame, &c_size);
Rect c_area;
- frame_engine->frame_get_window_area(c->frame, &c_area);
+ frame_engine.frame_get_window_area(c->frame, &c_area);
if (!data->button)
corner = OBT_PROP_ATOM(NET_WM_MOVERESIZE_SIZE_KEYBOARD);
else if (o->corner_specified)
}
self->w_frame = createWindow(RootWindow(obt_display, ob_screen), visual,
mask, &attrib);
- self->frame = frame_engine->frame_new(self, self->w_client, self->w_frame);
+ self->frame = frame_engine.frame_new(self, self->w_client, self->w_frame);
/* reparent the client to the frame */
XReparentWindow(obt_display, self->w_client, self->w_frame, 0, 0);
req's) the ButtonPress is to catch clicks on the client border */
XSelectInput(obt_display, self->w_frame, FRAME_EVENTMASK);
- frame_engine->frame_grab(self->frame, window_map);
+ frame_engine.frame_grab(self->frame, window_map);
/* we've grabbed everything and set everything that we need to at mapping
time now */
/* adjust the frame to the client's size before showing or placing
the window */
- frame_engine->frame_set_hover_flag (self->frame, OB_BUTTON_NONE);
- frame_engine->frame_set_press_flag (self->frame, OB_BUTTON_NONE);
- frame_engine->frame_set_is_focus (self->frame, FALSE);
- frame_engine->frame_set_decorations (self->frame, self->decorations);
- frame_engine->frame_update_title (self->frame, self->title);
- frame_engine->frame_update_layout (self->frame, self->area, FALSE, TRUE);
- frame_engine->frame_update_skin (self->frame);
+ frame_engine.frame_set_hover_flag (self->frame, OB_BUTTON_NONE);
+ frame_engine.frame_set_press_flag (self->frame, OB_BUTTON_NONE);
+ frame_engine.frame_set_is_focus (self->frame, FALSE);
+ frame_engine.frame_set_decorations (self->frame, self->decorations);
+ frame_engine.frame_update_title (self->frame, self->title);
+ frame_engine.frame_update_layout (self->frame, self->area, FALSE, TRUE);
+ //frame_engine->frame_update_skin (self->frame);
/* where the frame was placed is where the window was originally */
place = self->area;
Rect *a = screen_area(self->desktop, SCREEN_AREA_ONE_MONITOR, &place);
Strut size;
- frame_engine->frame_get_size(self->frame, &size);
+ frame_engine.frame_get_size(self->frame, &size);
/* get the size of the frame */
place.width += size.left + size.right;
place.height += size.top + size.bottom;
self->w_client, map_time, launch_time,
event_last_user_time);
- if (menu_frame_visible || frame_engine->moveresize_in_progress) {
+ if (menu_frame_visible || frame_engine.moveresize_in_progress) {
activate = FALSE;
raise = TRUE;
ob_debug_type(OB_DEBUG_FOCUS,
}
self->w_frame = createWindow(RootWindow(obt_display, ob_screen), visual,
mask, &attrib);
- self->frame = frame_engine->frame_new(self, self->w_client, self->w_frame);
- frame_engine->frame_set_decorations (self->frame, self->decorations);
- frame_engine->frame_update_title (self->frame, self->title);
- frame_engine->frame_update_layout (self->frame, self->area, FALSE, FALSE);
+ self->frame = frame_engine.frame_new(self, self->w_client, self->w_frame);
+ frame_engine.frame_set_decorations (self->frame, self->decorations);
+ frame_engine.frame_update_title (self->frame, self->title);
+ frame_engine.frame_update_layout (self->frame, self->area, FALSE, FALSE);
/* if this occurs while we are focus cycling, the indicator needs to
match the changes */
if (focus_cycle_target == self)
focus_cycle_draw_indicator(self);
- frame_engine->frame_update_skin (self->frame);
+ frame_engine.frame_update_skin (self->frame);
Strut size;
- frame_engine->frame_get_size(self->frame, &size);
+ frame_engine.frame_get_size(self->frame, &size);
ob_debug("gave extents left %d right %d top %d bottom %d",
size.left, size.right,
size.top, size.bottom);
}
self->fullscreen = self->max_horz = self->max_vert = FALSE;
- frame_engine->frame_trigger(self, OB_TRIGGER_UNMAX_VERT);
- frame_engine->frame_trigger(self, OB_TRIGGER_UNMAX_HORZ);
+ frame_engine.frame_trigger(self, OB_TRIGGER_UNMAX_VERT);
+ frame_engine.frame_trigger(self, OB_TRIGGER_UNMAX_HORZ);
/* let it be moved and resized no matter what */
self->functions = OB_CLIENT_FUNC_MOVE | OB_CLIENT_FUNC_RESIZE;
self->decorations = 0; /* unmanaged windows have no decor */
obt_display, ob_screen), self->area.x,
self->area.y);
}
- frame_engine->frame_ungrab(self->frame, window_map);
+ frame_engine.frame_ungrab(self->frame, window_map);
obt_main_loop_timeout_remove_data(ob_main_loop, client_flash_timeout, self, TRUE);
- frame_engine->frame_free(self->frame);
+ frame_engine.frame_free(self->frame);
self->frame = NULL;
if (ob_state() != OB_STATE_EXITING) {
{
/* this is all that got allocated to get the decorations */
- frame_engine->frame_free(self->frame);
+ frame_engine.frame_free(self->frame);
g_free(self);
}
self->undecorated = self->session->undecorated;
if (self->session->max_horz) {
- frame_engine->frame_trigger(self->frame, OB_TRIGGER_MAX_HORZ);
+ frame_engine.frame_trigger(self->frame, OB_TRIGGER_MAX_HORZ);
}
else {
- frame_engine->frame_trigger(self->frame, OB_TRIGGER_UNMAX_HORZ);
+ frame_engine.frame_trigger(self->frame, OB_TRIGGER_UNMAX_HORZ);
}
if (self->session->max_vert) {
- frame_engine->frame_trigger(self->frame, OB_TRIGGER_MAX_VERT);
+ frame_engine.frame_trigger(self->frame, OB_TRIGGER_MAX_VERT);
}
else {
- frame_engine->frame_trigger(self->frame, OB_TRIGGER_UNMAX_VERT);
+ frame_engine.frame_trigger(self->frame, OB_TRIGGER_UNMAX_VERT);
}
}
frame_client_gravity(self, x, y);
Strut size;
- frame_engine->frame_get_size(self->frame, &size);
+ frame_engine.frame_get_size(self->frame, &size);
/* get the requested size of the window with decorations */
fw = size.left + w + size.right;
gboolean stationary_l, stationary_r, stationary_t, stationary_b;
Rect area;
- frame_engine->frame_get_window_area(self->frame, &area);
+ frame_engine.frame_get_window_area(self->frame, &area);
POINT_SET(oldtl, area.x, area.y);
POINT_SET(oldbr, area.x + area.width - 1,
area.y + area.height - 1);
self->fullscreen = TRUE;
else if (state[i] == OBT_PROP_ATOM(NET_WM_STATE_MAXIMIZED_VERT)) {
self->max_vert = TRUE;
- frame_engine->frame_trigger(self->frame, OB_TRIGGER_MAX_VERT);
+ frame_engine.frame_trigger(self->frame, OB_TRIGGER_MAX_VERT);
}
else if (state[i] == OBT_PROP_ATOM(NET_WM_STATE_MAXIMIZED_HORZ)) {
self->max_horz = TRUE;
- frame_engine->frame_trigger(self->frame, OB_TRIGGER_MAX_HORZ);
+ frame_engine.frame_trigger(self->frame, OB_TRIGGER_MAX_HORZ);
}
else if (state[i] == OBT_PROP_ATOM(NET_WM_STATE_ABOVE))
self->above = TRUE;
if (self->frame) client_maximize(self, FALSE, 0);
else {
self->max_vert = self->max_horz = FALSE;
- frame_engine->frame_trigger (self->frame, OB_TRIGGER_UNMAX_VERT);
- frame_engine->frame_trigger (self->frame, OB_TRIGGER_UNMAX_HORZ);
+ frame_engine.frame_trigger (self->frame, OB_TRIGGER_UNMAX_VERT);
+ frame_engine.frame_trigger (self->frame, OB_TRIGGER_UNMAX_HORZ);
}
}
if (self->frame) {
/* update title render */
- frame_engine->frame_update_title (self->frame, self->title);
- frame_engine->frame_update_skin (self->frame);
+ frame_engine.frame_update_title (self->frame, self->title);
+ frame_engine.frame_update_skin (self->frame);
}
/* update the icon title */
OBT_PROP_SETA32(self->w_client, NET_WM_ICON, CARDINAL, data, 48*48+2);
g_free(data);
} else if (self->frame)
- frame_engine->frame_update_skin (self->frame);
+ frame_engine.frame_update_skin (self->frame);
/* don't draw the icon empty if we're just setting one now anyways,
we'll get the property change any second */
//frame_adjust_icon(self->frame);
if (self->frame)
{
- frame_engine->frame_update_layout (self->frame, self->area, FALSE, FALSE);
+ frame_engine.frame_update_layout (self->frame, self->area, FALSE, FALSE);
/* if this occurs while we are focus cycling, the indicator needs to
match the changes */
if (focus_cycle_target == self)
/* save the area, and make it where it should be for the premax stuff */
oldarea = self->area;
RECT_SET(self->area, x, y, w, h);
- frame_engine->frame_set_client_area (self->frame, self->area);
+ frame_engine.frame_set_client_area (self->frame, self->area);
/* apply the states. these are in a carefully crafted order.. */
not, so this needs to be called even if we have fullscreened/maxed
*/
self->area = oldarea;
- frame_engine->frame_set_decorations (self->frame, self->decorations);
- frame_engine->frame_update_layout (self->frame, self->area, FALSE, FALSE);
+ frame_engine.frame_set_decorations (self->frame, self->decorations);
+ frame_engine.frame_update_layout (self->frame, self->area, FALSE, FALSE);
/* when the client has StaticGravity, it likes to move around.
also this correctly positions the client when it maps.
this also needs to be run when the frame's decorations sizes change!
*/
Strut size;
- frame_engine->frame_get_size (self->frame, &size);
+ frame_engine.frame_get_size (self->frame, &size);
XMoveResizeWindow(obt_display, self->w_client,
size.left, size.top, self->area.width,
self->area.height);
/* make the frame recalculate its dimentions n shit without changing
anything visible for real, this way the constraints below can work with
the updated frame dimensions. */
- frame_engine->frame_set_decorations (self->frame, self->decorations);
- frame_engine->frame_update_layout (self->frame, self->area, FALSE, TRUE);
+ frame_engine.frame_set_decorations (self->frame, self->decorations);
+ frame_engine.frame_update_layout (self->frame, self->area, FALSE, TRUE);
/* gets the frame's position */
frame_client_gravity(self, x, y);
(self->max_horz && self->max_vert ? NULL : &desired));
Strut size;
- frame_engine->frame_get_size(self->frame, &size);
+ frame_engine.frame_get_size(self->frame, &size);
/* set the size and position if maximized */
if (self->max_horz) {
*x = a->x;
gboolean send_resize_client;
gboolean moved = FALSE, resized = FALSE, rootmoved = FALSE;
gboolean fmoved, fresized;
- guint fdecor = frame_engine->frame_get_decorations(self->frame);
- gboolean fhorz = frame_engine->frame_is_max_horz(self->frame);
- gboolean fvert = frame_engine->frame_is_max_vert(self->frame);
+ guint fdecor = frame_engine.frame_get_decorations(self->frame);
+ gboolean fhorz = frame_engine.frame_is_max_horz(self->frame);
+ gboolean fvert = frame_engine.frame_is_max_vert(self->frame);
gint logicalw, logicalh;
Strut size;
- frame_engine->frame_get_size(self->frame, &size);
+ frame_engine.frame_get_size(self->frame, &size);
Rect area;
- frame_engine->frame_get_window_area(self->frame, &area);
+ frame_engine.frame_get_window_area(self->frame, &area);
/* find the new x, y, width, and height (and logical size) */
client_try_configure(self, &x, &y, &w, &h, &logicalw, &logicalh, user);
oldw = self->area.width;
oldh = self->area.height;
- frame_engine->frame_get_window_area(self->frame, &oldframe);
+ frame_engine.frame_get_window_area(self->frame, &oldframe);
RECT_SET(self->area, x, y, w, h);
- frame_engine->frame_set_client_area (self->frame, self->area);
+ frame_engine.frame_set_client_area (self->frame, self->area);
/* for app-requested resizes, always resize if 'resized' is true.
for user-requested ones, only resize if final is true, or when
/* if the client is enlarging, then resize the client before the frame */
if (send_resize_client && (w > oldw || h > oldh)) {
- frame_engine->frame_set_decorations (self->frame, self->decorations);
- frame_engine->frame_update_layout (self->frame, self->area, FALSE, FALSE);
+ frame_engine.frame_set_decorations (self->frame, self->decorations);
+ frame_engine.frame_update_layout (self->frame, self->area, FALSE, FALSE);
/* if this occurs while we are focus cycling, the indicator needs to
match the changes */
if (focus_cycle_target == self)
would change what window gets the event */
mouse_replay_pointer();
- frame_engine->frame_set_decorations (self->frame, self->decorations);
- frame_engine->frame_update_layout (self->frame, self->area, TRUE, FALSE);
+ frame_engine.frame_set_decorations (self->frame, self->decorations);
+ frame_engine.frame_update_layout (self->frame, self->area, TRUE, FALSE);
/* if this occurs while we are focus cycling, the indicator needs to
match the changes */
in the direction that is growing
*/
if (send_resize_client && (w <= oldw || h <= oldh)) {
- frame_engine->frame_set_decorations (self->frame, self->decorations);
- frame_engine->frame_update_layout (self->frame, self->area, FALSE, FALSE);
+ frame_engine.frame_set_decorations (self->frame, self->decorations);
+ frame_engine.frame_update_layout (self->frame, self->area, FALSE, FALSE);
/* if this occurs while we are focus cycling, the indicator needs to
match the changes */
if (focus_cycle_target == self)
this also needs to be run when the frame's decorations sizes change!
*/
Strut size;
- frame_engine->frame_get_size(self->frame, &size);
+ frame_engine.frame_get_size(self->frame, &size);
XMoveResizeWindow(obt_display, self->w_client, size.left, size.top,
self->area.width, self->area.height);
+ frame_engine.frame_update_skin (self->frame);
}
XFlush(obt_display);
/* if it moved between monitors, then this can affect the stacking
layer of this window or others - for fullscreen windows */
Rect current_frame;
- frame_engine->frame_get_window_area(self->frame, ¤t_frame);
+ frame_engine.frame_get_window_area(self->frame, ¤t_frame);
if (screen_find_monitor(¤t_frame) !=
screen_find_monitor(&oldframe))
{
if (dir == 0 || dir == 1) {
self->max_horz = max; /* horz */
- frame_engine->frame_trigger(self->frame, max? OB_TRIGGER_MAX_HORZ : OB_TRIGGER_UNMAX_HORZ);
+ frame_engine.frame_trigger(self->frame, max? OB_TRIGGER_MAX_HORZ : OB_TRIGGER_UNMAX_HORZ);
}
if (dir == 0 || dir == 2){
self->max_vert = max; /* vert */
- frame_engine->frame_trigger(self->frame, max? OB_TRIGGER_MAX_VERT : OB_TRIGGER_UNMAX_VERT);
+ frame_engine.frame_trigger(self->frame, max? OB_TRIGGER_MAX_VERT : OB_TRIGGER_UNMAX_VERT);
}
client_change_state(self); /* change the state hints on the client */
client_change_state(self);
client_change_wm_state(self); /* the window is being hidden/shown */
/* resize the frame to just the titlebar */
- frame_engine->frame_set_is_shaded (self->frame, self->shaded);
- frame_engine->frame_update_layout(self->frame, self->area, FALSE, FALSE);
+ frame_engine.frame_set_is_shaded (self->frame, self->shaded);
+ frame_engine.frame_update_layout(self->frame, self->area, FALSE, FALSE);
/* if this occurs while we are focus cycling, the indicator needs to
match the changes */
if (focus_cycle_target == self)
self->desktop = target;
OBT_PROP_SET32(self->w_client, NET_WM_DESKTOP, CARDINAL, target);
/* the frame can display the current desktop state */
- frame_engine->frame_set_decorations (self->frame, self->decorations);
- frame_engine->frame_update_layout(self->frame, self->area, FALSE, FALSE);
+ frame_engine.frame_set_decorations (self->frame, self->decorations);
+ frame_engine.frame_update_layout(self->frame, self->area, FALSE, FALSE);
/* if this occurs while we are focus cycling, the indicator needs to
match the changes */
if (focus_cycle_target == self)
/* choose the correct target */
self = client_focus_target(self);
- if (!frame_engine->frame_is_visible(self->frame))
+ if (!frame_engine.frame_is_visible(self->frame))
return FALSE;
if (!(self->can_focus || self->focus_notify))
client_set_desktop(self, screen_desktop, FALSE, TRUE);
else
screen_set_desktop(self->desktop, FALSE);
- } else if (!frame_engine->frame_is_visible(self->frame))
+ } else if (!frame_engine.frame_is_visible(self->frame))
/* if its not visible for other reasons, then don't mess
with it */
return;
guint client_monitor(ObClient *self)
{
Rect area;
- frame_engine->frame_get_window_area(self->frame, &area);
+ frame_engine.frame_get_window_area(self->frame, &area);
return screen_find_monitor(&area);
}
gint edge;
Strut size;
- frame_engine->frame_get_size(self->frame, &size);
+ frame_engine.frame_get_size(self->frame, &size);
Rect area;
- frame_engine->frame_get_window_area(self->frame, &area);
+ frame_engine.frame_get_window_area(self->frame, &area);
a = screen_area(self->desktop, SCREEN_AREA_ALL_MONITORS,
&area);
ob_debug("trying window %s", cur->title);
Rect area;
- frame_engine->frame_get_window_area(self->frame, &area);
+ frame_engine.frame_get_window_area(self->frame, &area);
detect_edge(area, dir, my_head, my_size, my_edge_start,
my_edge_size, dest, near_edge);
}
Rect area;
- frame_engine->frame_get_window_area(self->frame, &area);
+ frame_engine.frame_get_window_area(self->frame, &area);
switch (dir) {
case OB_DIRECTION_EAST:
ObDirection dir;
Rect area;
- frame_engine->frame_get_window_area(self->frame, &area);
+ frame_engine.frame_get_window_area(self->frame, &area);
Strut size;
- frame_engine->frame_get_size(self->frame, &size);
+ frame_engine.frame_get_size(self->frame, &size);
switch (side) {
case OB_DIRECTION_EAST:
if (WINDOW_IS_CLIENT(it->data)) {
ObClient *c = WINDOW_AS_CLIENT(it->data);
Rect area;
- frame_engine->frame_get_window_area(c->frame, &area);
- if (frame_engine->frame_is_visible(c->frame) &&
+ frame_engine.frame_get_window_area(c->frame, &area);
+ if (frame_engine.frame_is_visible(c->frame) &&
/* check the desktop, this is done during desktop
switching and windows are shown/hidden status is not
reliable */
void client_show_frame(ObClient * self)
{
- frame_engine->frame_set_is_visible(self->frame, TRUE);
- frame_engine->frame_update_layout(self->frame, self->area, FALSE, FALSE);
+ frame_engine.frame_set_is_visible(self->frame, TRUE);
+ frame_engine.frame_update_layout(self->frame, self->area, FALSE, FALSE);
/* if this occurs while we are focus cycling, the indicator needs to
match the changes */
if (focus_cycle_target == self)
focus_cycle_draw_indicator(self);
- frame_engine->frame_update_skin(self->frame);
+ frame_engine.frame_update_skin(self->frame);
/* Grab the server to make sure that the frame window is mapped before
the client gets its MapNotify, i.e. to make sure the client is
_visible_ when it gets MapNotify. */
void client_hide_frame(ObClient * self)
{
- frame_engine->frame_set_is_visible(self->frame, FALSE);
+ frame_engine.frame_set_is_visible(self->frame, FALSE);
XUnmapWindow(obt_display, self->w_frame);
/* we unmap the client itself so that we can get MapRequest
events, and because the ICCCM tells us to! */
self->flash_on = !self->flash_on;
if (!self->focused) {
- frame_engine->frame_set_is_focus(self->frame, self->flash_on);
- frame_engine->frame_update_skin (self->frame);
+ frame_engine.frame_set_is_focus(self->frame, self->flash_on);
+ frame_engine.frame_update_skin (self->frame);
self->focused = FALSE;
}
return TRUE; /* go again */
ObClient * self = (ObClient *) data;
if (self->focused != self->flash_on)
{
- frame_engine->frame_set_is_focus(self->frame, self->focused);
- frame_engine->frame_update_skin (self->frame);
+ frame_engine.frame_set_is_focus(self->frame, self->focused);
+ frame_engine.frame_update_skin (self->frame);
}
}
if (!mouse && frame->client) {
Strut size;
- frame_engine->frame_get_size(frame->client->frame, &size);
+ frame_engine.frame_get_size(frame->client->frame, &size);
Rect area;
- frame_engine->frame_get_window_area(frame->client->frame, &area);
+ frame_engine.frame_get_window_area(frame->client->frame, &area);
*x = area.x;
#include "obt/paths.h"
#define SHARED_SUFFIX ".la"
-#define PLUGIN_PATH "/.config/openbox/engines/"
gchar *create_class_name(const gchar *rname);
/* Read string in XrmDatabase */
gboolean read_string(XrmDatabase db, const gchar *rname, gchar **value);
-ObFrameEngine * init_frame_engine(const gchar *name, gboolean allow_fallback,
+void init_frame_engine(ObFrameEngine * p_engine, const gchar *name, gboolean allow_fallback,
RrFont *active_window_font, RrFont *inactive_window_font,
RrFont *menu_title_font, RrFont *menu_item_font, RrFont *osd_font)
{
db = loaddb(name, &path);
if (db == NULL) {
g_message("Unable to load the theme '%s'", name);
- if (allow_fallback)
- //g_message("Falling back to the default theme '%s'", DEFAULT_THEME);
- /* fallback to the default theme */
- name = NULL;
}
}
- if (name == NULL) {
- if (allow_fallback) {
- //db = loaddb(DEFAULT_THEME, &path);
- db = NULL;
- if (db == NULL) {
- //g_message("Unable to load the theme '%s'", DEFAULT_THEME);
- return 0;
- }
- }
- else
- return 0;
- }
gchar * engine_filename;
if (!read_string(db, "frame.theme.engine", &engine_filename)) {
ObFrameEngine * p = load_frame_engine(absolute_engine_filename);
g_free(absolute_engine_filename);
- update_frame_engine(p);
+ memcpy(p_engine, p, sizeof(ObFrameEngine));
+ update_frame_engine();
(p->load_theme_config)(ob_rr_inst, name, path, db, active_window_font,
inactive_window_font, menu_title_font, menu_item_font, osd_font);
g_free(path);
XrmDestroyDatabase(db);
-
- return p;
}
-void update_frame_engine(ObFrameEngine * self)
+void update_frame_engine()
{
- self->init (obt_display, ob_screen);
- //self->ob_display = obt_display;
- //self->ob_screen = ob_screen;
- //self->ob_rr_inst = ob_rr_inst;
- //self->config_theme_keepborder = config_theme_keepborder;
- //self->config_title_layout = config_title_layout;
- //self->ob_main_loop = ob_main_loop;
+ frame_engine.init (obt_display, ob_screen);
}
ObFrameEngine * load_frame_engine(const gchar * filename)
ObFrameContext engine_frame_context(ObClient *client, Window win, gint x, gint y)
{
/* this part is commun to all engine */
- if (frame_engine->moveresize_in_progress)
+ if (frame_engine.moveresize_in_progress)
return OB_FRAME_CONTEXT_MOVE_RESIZE;
if (win == obt_root(ob_screen))
return OB_FRAME_CONTEXT_ROOT;
return OB_FRAME_CONTEXT_CLIENT;
}
/* this part is specific to the plugin */
- return frame_engine->frame_context(client->frame, win, x, y);
+ return frame_engine.frame_context(client->frame, win, x, y);
}
void frame_client_gravity(ObClient *self, gint *x, gint *y)
{
Strut size;
- frame_engine->frame_get_size(self->frame, &size);
+ frame_engine.frame_get_size(self->frame, &size);
/* horizontal */
switch (self->gravity) {
default:
void frame_frame_gravity(ObClient *self, gint *x, gint *y)
{
Strut size;
- frame_engine->frame_get_size(self->frame, &size);
+ frame_engine.frame_get_size(self->frame, &size);
/* horizontal */
switch (self->gravity) {
default:
void frame_rect_to_frame(ObClient * self, Rect *r)
{
Strut size;
- frame_engine->frame_get_size(self->frame, &size);
+ frame_engine.frame_get_size(self->frame, &size);
r->width += size.left + size.right;
r->height += size.top + size.bottom;
frame_client_gravity(self, &r->x, &r->y);
void frame_rect_to_client(ObClient * self, Rect *r)
{
Strut size;
- frame_engine->frame_get_size(self, &size);
+ frame_engine.frame_get_size(self, &size);
r->width -= size.left + size.right;
r->height -= size.top + size.bottom;
frame_frame_gravity(self, &r->x, &r->y);
void (*frame_set_is_max_horz)(gpointer, gboolean);
void (*frame_set_is_shaded)(gpointer, gboolean);
- void (*frame_flash_start)(gpointer self);
- void (*frame_flash_stop)(gpointer self);
-
/* Set the layout wanted by client */
void (*frame_set_decorations)(gpointer, ObFrameDecorations);
/* Filled by openbox-core */
struct _ObClient *focus_cycle_target;
gboolean moveresize_in_progress;
- //struct _ObtMainLoop *ob_main_loop;
};
/* Define how to draw the current windows */
enum _ObStyle
/* initialize theme plugin, it read themerc and load
* the plugin needed */
-ObFrameEngine * init_frame_engine(const gchar *name, gboolean allow_fallback,
+void init_frame_engine(ObFrameEngine * engine_ptr, const gchar * name, gboolean allow_fallback,
RrFont *active_window_font, RrFont *inactive_window_font,
RrFont *menu_title_font, RrFont *menu_item_font, RrFont *osd_font);
/* Update plugin data */
-void update_frame_engine(ObFrameEngine *);
+void update_frame_engine();
/* Load modules specified in filename */
ObFrameEngine * load_frame_engine(const gchar * filename);
/* We don't get a FocusOut for this case, because it's just moving
from our Inferior up to us. This happens when iconifying a
window with RevertToParent focus */
- frame_engine->frame_set_is_focus(client->frame, FALSE);
- frame_engine->frame_update_layout (client->frame, client->area, FALSE, FALSE);
+ frame_engine.frame_set_is_focus(client->frame, FALSE);
+ frame_engine.frame_update_layout (client->frame, client->area, FALSE, FALSE);
/* if this occurs while we are focus cycling, the indicator needs to
match the changes */
if (focus_cycle_target == client)
focus_cycle_draw_indicator(client);
- frame_engine->frame_update_skin(client->frame);
+ frame_engine.frame_update_skin(client->frame);
/* focus_set_client(NULL) has already been called */
}
else if (e->xfocus.detail == NotifyPointerRoot ||
}
else if (client != focus_client) {
focus_left_screen = FALSE;
- frame_engine->frame_set_is_focus(client->frame, TRUE);
- frame_engine->frame_update_layout (client->frame, client->area, FALSE, FALSE);
+ frame_engine.frame_set_is_focus(client->frame, TRUE);
+ frame_engine.frame_update_layout (client->frame, client->area, FALSE, FALSE);
/* if this occurs while we are focus cycling, the indicator needs to
match the changes */
if (focus_cycle_target == client)
focus_cycle_draw_indicator(client);
- frame_engine->frame_update_skin (client->frame);
+ frame_engine.frame_update_skin (client->frame);
focus_set_client(client);
client_calc_layer(client);
client_bring_helper_windows(client);
}
if (client && client != focus_client) {
- frame_engine->frame_set_is_focus(client->frame, FALSE);
- frame_engine->frame_update_layout (client->frame, client->area, FALSE, FALSE);
+ frame_engine.frame_set_is_focus(client->frame, FALSE);
+ frame_engine.frame_update_layout (client->frame, client->area, FALSE, FALSE);
/* if this occurs while we are focus cycling, the indicator needs to
match the changes */
if (focus_cycle_target == client)
focus_cycle_draw_indicator(client);
- frame_engine->frame_update_skin(client->frame);
+ frame_engine.frame_update_skin(client->frame);
/* focus_set_client(NULL) has already been called in this
section or by focus_fallback */
}
/* set the frame extents on the window */
Strut size;
- frame_engine->frame_get_size(c->frame, &size);
+ frame_engine.frame_get_size(c->frame, &size);
vals[0] = size.left;
vals[1] = size.right;
vals[2] = size.top;
e->type == obt_display_extension_sync_basep + XSyncAlarmNotify)
{
XSyncAlarmNotifyEvent *se = (XSyncAlarmNotifyEvent*)e;
- if (se->alarm == moveresize_alarm && frame_engine->moveresize_in_progress)
+ if (se->alarm == moveresize_alarm && frame_engine.moveresize_in_progress)
moveresize_event(e);
}
#endif
}
if (current_button)
- frame_engine->frame_set_hover_flag (client->frame, current_button);
+ frame_engine.frame_set_hover_flag (client->frame, current_button);
}
break;
case MotionNotify:
case OB_FRAME_CONTEXT_TLCORNER:
case OB_FRAME_CONTEXT_TRCORNER:
/* we've left the button area inside the titlebar */
- frame_engine->frame_set_hover_flag(client->frame, OB_BUTTON_NONE);
+ frame_engine.frame_set_hover_flag(client->frame, OB_BUTTON_NONE);
break;
case OB_FRAME_CONTEXT_MAXIMIZE:
- frame_engine->frame_set_hover_flag(client->frame, OB_BUTTON_MAX);
+ frame_engine.frame_set_hover_flag(client->frame, OB_BUTTON_MAX);
break;
case OB_FRAME_CONTEXT_ALLDESKTOPS:
- frame_engine->frame_set_hover_flag(client->frame, OB_BUTTON_DESK);
+ frame_engine.frame_set_hover_flag(client->frame, OB_BUTTON_DESK);
break;
case OB_FRAME_CONTEXT_SHADE:
- frame_engine->frame_set_hover_flag(client->frame, OB_BUTTON_SHADE);
+ frame_engine.frame_set_hover_flag(client->frame, OB_BUTTON_SHADE);
break;
case OB_FRAME_CONTEXT_ICONIFY:
- frame_engine->frame_set_hover_flag(client->frame, OB_BUTTON_ICONIFY);
+ frame_engine.frame_set_hover_flag(client->frame, OB_BUTTON_ICONIFY);
break;
case OB_FRAME_CONTEXT_CLOSE:
- frame_engine->frame_set_hover_flag(client->frame, OB_BUTTON_CLOSE);
+ frame_engine.frame_set_hover_flag(client->frame, OB_BUTTON_CLOSE);
break;
default:
break;
case OB_FRAME_CONTEXT_TLCORNER:
case OB_FRAME_CONTEXT_TRCORNER:
/* we've left the button area inside the titlebar */
- frame_engine->frame_set_hover_flag(client->frame, OB_BUTTON_NONE);
+ frame_engine.frame_set_hover_flag(client->frame, OB_BUTTON_NONE);
break;
case OB_FRAME_CONTEXT_MAXIMIZE:
- frame_engine->frame_set_hover_flag(client->frame, OB_BUTTON_NONE);
+ frame_engine.frame_set_hover_flag(client->frame, OB_BUTTON_NONE);
break;
case OB_FRAME_CONTEXT_ALLDESKTOPS:
- frame_engine->frame_set_hover_flag(client->frame, OB_BUTTON_NONE);
+ frame_engine.frame_set_hover_flag(client->frame, OB_BUTTON_NONE);
break;
case OB_FRAME_CONTEXT_SHADE:
- frame_engine->frame_set_hover_flag(client->frame, OB_BUTTON_NONE);
+ frame_engine.frame_set_hover_flag(client->frame, OB_BUTTON_NONE);
break;
case OB_FRAME_CONTEXT_ICONIFY:
- frame_engine->frame_set_hover_flag(client->frame, OB_BUTTON_NONE);
+ frame_engine.frame_set_hover_flag(client->frame, OB_BUTTON_NONE);
break;
case OB_FRAME_CONTEXT_CLOSE:
- frame_engine->frame_set_hover_flag(client->frame, OB_BUTTON_NONE);
+ frame_engine.frame_set_hover_flag(client->frame, OB_BUTTON_NONE);
break;
case OB_FRAME_CONTEXT_FRAME:
e->xcrossing.x, e->xcrossing.y);
switch (con) {
case OB_FRAME_CONTEXT_MAXIMIZE:
- frame_engine->frame_set_hover_flag(client->frame, OB_BUTTON_MAX);
+ frame_engine.frame_set_hover_flag(client->frame, OB_BUTTON_MAX);
break;
case OB_FRAME_CONTEXT_ALLDESKTOPS:
- frame_engine->frame_set_hover_flag(client->frame, OB_BUTTON_DESK);
+ frame_engine.frame_set_hover_flag(client->frame, OB_BUTTON_DESK);
break;
case OB_FRAME_CONTEXT_SHADE:
- frame_engine->frame_set_hover_flag(client->frame, OB_BUTTON_SHADE);
+ frame_engine.frame_set_hover_flag(client->frame, OB_BUTTON_SHADE);
break;
case OB_FRAME_CONTEXT_ICONIFY:
- frame_engine->frame_set_hover_flag(client->frame, OB_BUTTON_ICONIFY);
+ frame_engine.frame_set_hover_flag(client->frame, OB_BUTTON_ICONIFY);
break;
case OB_FRAME_CONTEXT_CLOSE:
- frame_engine->frame_set_hover_flag(client->frame, OB_BUTTON_CLOSE);
+ frame_engine.frame_set_hover_flag(client->frame, OB_BUTTON_CLOSE);
break;
case OB_FRAME_CONTEXT_FRAME:
if (grab_on_keyboard())
ob_debug("ConfigureRequest for \"%s\" desktop %d wmstate %d "
"visibile %d",
client->title,
- screen_desktop, client->wmstate, frame_engine->frame_is_visible(client->frame),
+ screen_desktop, client->wmstate, frame_engine.frame_is_visible(client->frame),
x, y, w, h, client->border_width);
if (e->xconfigurerequest.value_mask & CWBorderWidth)
2, click amarok tray icon. it will move by its decoration size.
*/
Strut size;
- frame_engine->frame_get_size(client->frame, &size);
+ frame_engine.frame_get_size(client->frame, &size);
Rect area;
- frame_engine->frame_get_window_area(client->frame, &area);
+ frame_engine.frame_get_window_area(client->frame, &area);
if (x != client->area.x &&
x == (area.x + size.left -
(gint)client->border_width) &&
e->type == obt_display_extension_shape_basep)
{
client->shaped = ((XShapeEvent*)e)->shaped;
- frame_engine->frame_adjust_shape(client->frame);
+ frame_engine.frame_adjust_shape(client->frame);
}
#endif
}
/* if the keyboard interactive action uses the event then dont
use it for bindings. likewise is moveresize uses the event. */
if (!actions_interactive_input_event(e) && !moveresize_event(e)) {
- if (frame_engine->moveresize_in_progress)
+ if (frame_engine.moveresize_in_progress)
/* make further actions work on the client being
moved/resized */
client = moveresize_client;
in the case where it is animating before disappearing */
mouse_event(client, e);
} else
- keyboard_event((frame_engine->focus_cycle_target ? frame_engine->focus_cycle_target :
+ keyboard_event((frame_engine.focus_cycle_target ? frame_engine.focus_cycle_target :
(client ? client : focus_client)), e);
}
}
Time old = event_curtime;
/* don't move focus and kill the menu or the move/resize */
- if (menu_frame_visible || frame_engine->moveresize_in_progress) return FALSE;
+ if (menu_frame_visible || frame_engine.moveresize_in_progress) return FALSE;
event_curtime = d->time;
event_curserial = d->serial;
menu_frame_hide_all();
ob_debug("KILLED open menus");
}
- else if (frame_engine->moveresize_in_progress) {
+ else if (frame_engine.moveresize_in_progress) {
moveresize_end(TRUE);
ob_debug("KILLED interactive moveresize");
}
{
/* stop focus cycling if the given client is a valid focus target,
and so the cycling is being disrupted */
- if (frame_engine->focus_cycle_target && ifclient &&
+ if (frame_engine.focus_cycle_target && ifclient &&
focus_valid_target(ifclient, TRUE,
focus_cycle_iconic_windows,
focus_cycle_all_desktops,
if (interactive) {
if (cancel) {
- frame_engine->focus_cycle_target = NULL;
+ frame_engine.focus_cycle_target = NULL;
goto done_cycle;
} else if (done)
goto done_cycle;
}
- if (frame_engine->focus_cycle_target == NULL) {
+ if (frame_engine.focus_cycle_target == NULL) {
focus_cycle_iconic_windows = TRUE;
focus_cycle_all_desktops = all_desktops;
focus_cycle_dock_windows = dock_windows;
focus_cycle_desktop_windows = desktop_windows;
start = it = g_list_find(list, focus_client);
} else
- start = it = g_list_find(list, frame_engine->focus_cycle_target);
+ start = it = g_list_find(list, frame_engine.focus_cycle_target);
if (!start) /* switched desktops or something? */
start = it = forward ? g_list_last(list) : g_list_first(list);
focus_cycle_desktop_windows))
{
if (interactive) {
- if (ft != frame_engine->focus_cycle_target) { /* prevents flicker */
- frame_engine->focus_cycle_target = ft;
+ if (ft != frame_engine.focus_cycle_target) { /* prevents flicker */
+ frame_engine.focus_cycle_target = ft;
focus_cycle_draw_indicator(showbar ? ft : NULL);
}
/* same arguments as focus_target_valid */
focus_cycle_dock_windows,
focus_cycle_desktop_windows,
mode);
- return frame_engine->focus_cycle_target;
- } else if (ft != frame_engine->focus_cycle_target) {
- frame_engine->focus_cycle_target = ft;
+ return frame_engine.focus_cycle_target;
+ } else if (ft != frame_engine.focus_cycle_target) {
+ frame_engine.focus_cycle_target = ft;
done = TRUE;
break;
}
} while (it != start);
done_cycle:
- if (done && !cancel) ret = frame_engine->focus_cycle_target;
+ if (done && !cancel) ret = frame_engine.focus_cycle_target;
t = NULL;
- frame_engine->focus_cycle_target = NULL;
+ frame_engine.focus_cycle_target = NULL;
g_list_free(order);
order = NULL;
return NULL;
Rect area;
- frame_engine->frame_get_window_area(c->frame, &area);
+ frame_engine.frame_get_window_area(c->frame, &area);
/* first, find the centre coords of the currently focused window */
my_cx = area.x + area.width / 2;
my_cy = area.y + area.height / 2;
continue;
Rect cur_area;
- frame_engine->frame_get_window_area(cur->frame, &cur_area);
+ frame_engine.frame_get_window_area(cur->frame, &cur_area);
/* find the centre coords of this window, from the
* currently focused window's point of view */
his_cx = (cur_area.x - my_cx)
ObClient *ret = NULL;
if (cancel) {
- frame_engine->focus_cycle_target = NULL;
+ frame_engine.focus_cycle_target = NULL;
goto done_cycle;
} else if (done && interactive)
goto done_cycle;
if (!focus_order)
goto done_cycle;
- if (frame_engine->focus_cycle_target == NULL) {
+ if (frame_engine.focus_cycle_target == NULL) {
focus_cycle_iconic_windows = FALSE;
focus_cycle_all_desktops = FALSE;
focus_cycle_dock_windows = dock_windows;
if (!first) first = focus_client;
- if (frame_engine->focus_cycle_target)
- ft = focus_find_directional(frame_engine->focus_cycle_target, dir, dock_windows,
+ if (frame_engine.focus_cycle_target)
+ ft = focus_find_directional(frame_engine.focus_cycle_target, dir, dock_windows,
desktop_windows);
else if (first)
ft = focus_find_directional(first, dir, dock_windows, desktop_windows);
ft = it->data;
}
- if (ft && ft != frame_engine->focus_cycle_target) {/* prevents flicker */
- frame_engine->focus_cycle_target = ft;
+ if (ft && ft != frame_engine.focus_cycle_target) {/* prevents flicker */
+ frame_engine.focus_cycle_target = ft;
if (!interactive)
goto done_cycle;
focus_cycle_draw_indicator(showbar ? ft : NULL);
}
- if (frame_engine->focus_cycle_target && dialog)
+ if (frame_engine.focus_cycle_target && dialog)
/* same arguments as focus_target_valid */
- focus_cycle_popup_single_show(frame_engine->focus_cycle_target,
+ focus_cycle_popup_single_show(frame_engine.focus_cycle_target,
focus_cycle_iconic_windows,
focus_cycle_all_desktops,
focus_cycle_dock_windows,
focus_cycle_desktop_windows);
- return frame_engine->focus_cycle_target;
+ return frame_engine.focus_cycle_target;
done_cycle:
- if (done && !cancel) ret = frame_engine->focus_cycle_target;
+ if (done && !cancel) ret = frame_engine.focus_cycle_target;
first = NULL;
- frame_engine->focus_cycle_target = NULL;
+ frame_engine.focus_cycle_target = NULL;
focus_cycle_draw_indicator(NULL);
focus_cycle_popup_single_hide();
}
else if (c) {
Rect area;
- frame_engine->frame_get_window_area(c->frame, &area);
+ frame_engine.frame_get_window_area(c->frame, &area);
/*
if (c)
frame_adjust_focus(c->frame, FALSE);
void moveresize_shutdown(gboolean reconfig)
{
if (!reconfig) {
- if (frame_engine->moveresize_in_progress)
+ if (frame_engine.moveresize_in_progress)
moveresize_end(FALSE);
client_remove_destroy_notify(client_dest);
}
gchar *text;
Strut size;
- frame_engine->frame_get_size(c->frame, &size);
+ frame_engine.frame_get_size(c->frame, &size);
Rect area;
- frame_engine->frame_get_window_area(c->frame, &area);
+ frame_engine.frame_get_window_area(c->frame, &area);
text = g_strdup_printf(format, a, b);
if (config_resize_popup_pos == OB_RESIZE_POS_TOP)
popup_position(popup, SouthGravity,
gint up = 1;
gint left = 1;
- if (frame_engine->moveresize_in_progress || !frame_engine->frame_is_visible(c->frame) ||
+ if (frame_engine.moveresize_in_progress || !frame_engine.frame_is_visible(c->frame) ||
!(mv ?
(c->functions & OB_CLIENT_FUNC_MOVE) :
(c->functions & OB_CLIENT_FUNC_RESIZE)))
cur_w = start_cw;
cur_h = start_ch;
- frame_engine->moveresize_in_progress = TRUE;
+ frame_engine.moveresize_in_progress = TRUE;
#ifdef SYNC
if (config_resize_redraw && !moving && obt_display_extension_sync &&
/* dont edge warp after its ended */
cancel_edge_warp();
- frame_engine->moveresize_in_progress = FALSE;
+ frame_engine.moveresize_in_progress = FALSE;
moveresize_client = NULL;
}
if (config_resize_popup_show == 2) /* == "Always" */
{
Rect area;
- frame_engine->frame_get_window_area(moveresize_client->frame, &area);
+ frame_engine.frame_get_window_area(moveresize_client->frame, &area);
popup_coords(moveresize_client, "%d x %d",
area.x,
area.y);
Strut size;
- frame_engine->frame_get_size(moveresize_client->frame, &size);
+ frame_engine.frame_get_size(moveresize_client->frame, &size);
/* resist_size_* needs the frame size */
nw += size.left +
size.right;
{
gboolean used = FALSE;
- if (!frame_engine->moveresize_in_progress) return FALSE;
+ if (!frame_engine.moveresize_in_progress) return FALSE;
if (e->type == ButtonPress) {
if (!button) {
gchar *ob_sm_save_file = NULL;
gboolean ob_sm_restore = TRUE;
gboolean ob_debug_xinerama = FALSE;
-ObFrameEngine * frame_engine = NULL;
+ObFrameEngine frame_engine;
static ObState state;
static gboolean xsync = FALSE;
/* load the theme specified in the rc file */
{
ob_debug("Entering LoadThemeConfig");
- frame_engine = init_frame_engine (
+ init_frame_engine (&frame_engine,
config_theme, TRUE, config_font_activewindow,
config_font_inactivewindow, config_font_menutitle,
config_font_menuitem, config_font_osd);
/* update all existing windows for the new theme */
for (it = client_list; it; it = g_list_next(it)) {
ObClient *c = it->data;
- frame_engine->frame_adjust_theme(c->frame);
+ frame_engine.frame_adjust_theme(c->frame);
}
}
event_startup(reconfigure);
/* the new config can change the window's decorations */
client_setup_decor_and_functions(c, FALSE);
/* redraw the frames */
- frame_engine->frame_update_layout (c->frame, c->area, FALSE, FALSE);
+ frame_engine.frame_update_layout (c->frame, c->area, FALSE, FALSE);
/* if this occurs while we are focus cycling, the indicator needs to
match the changes */
if (focus_cycle_target == c)
XSync(obt_display, FALSE);
- if (frame_engine)
- {
- //RrThemeFree(render_plugin->ob_rr_theme);
- //RrInstanceFree(render_plugin->ob_rr_inst);
- }
session_shutdown(being_replaced);
obt_display_close(obt_display);
extern gboolean ob_debug_xinerama;
/* render function */
-extern ObFrameEngine * frame_engine;
+extern ObFrameEngine frame_engine;
/* The state of execution of the window manager */
ObState ob_state();
guint i;
Rect area;
- frame_engine->frame_get_window_area(client->frame, &area);
+ frame_engine.frame_get_window_area(client->frame, &area);
areas = pick_head(client);
i = (config_place_monitor != OB_PLACE_MONITOR_ANY) ?
/* don't ignore this window, so remove it from the available
area */
Rect test_area;
- frame_engine->frame_get_window_area(test->frame, &test_area);
+ frame_engine.frame_get_window_area(test->frame, &test_area);
spaces = area_remove(spaces, &test_area);
}
}
Rect c_area;
- frame_engine->frame_get_window_area(c->frame, &c_area);
+ frame_engine.frame_get_window_area(c->frame, &c_area);
for (sit = spaces; sit; sit = g_slist_next(sit)) {
Rect *r = sit->data;
Rect *area;
Strut fsize;
- frame_engine->frame_get_size(client->frame, &fsize);
+ frame_engine.frame_get_size(client->frame, &fsize);
Rect farea;
- frame_engine->frame_get_window_area(client->frame, &farea);
+ frame_engine.frame_get_window_area(client->frame, &farea);
if (!screen_pointer_pos(&px, &py))
return FALSE;
}
Rect farea;
- frame_engine->frame_get_window_area(client->frame, &farea);
+ frame_engine.frame_get_window_area(client->frame, &farea);
if (settings->position.x.center)
*x = screen->x + screen->width / 2 - client->area.width / 2;
else if (settings->position.x.opposite)
for (it = client->parents; it; it = g_slist_next(it)) {
ObClient *m = it->data;
Rect area;
- frame_engine->frame_get_window_area(m->frame, &area);
+ frame_engine.frame_get_window_area(m->frame, &area);
if (!m->iconic) {
if (first) {
l = RECT_LEFT(area);
{
Rect **areas;
Rect area;
- frame_engine->frame_get_window_area(client->frame, &area);
+ frame_engine.frame_get_window_area(client->frame, &area);
guint i;
areas = pick_head(client);
Rect dock_area;
Rect c_area;
- frame_engine->frame_get_window_area(c->frame, &c_area);
+ frame_engine.frame_get_window_area(c->frame, &c_area);
if (!resist) return;
target = it->data;
/* don't snap to self or non-visibles */
- if (!frame_engine->frame_is_visible(target->frame) || target == c)
+ if (!frame_engine.frame_is_visible(target->frame) || target == c)
continue;
/* don't snap to windows set to below and skip_taskbar (desklets) */
if (target->below && !c->below && target->skip_taskbar)
continue;
Rect target_area;
- frame_engine->frame_get_window_area(target->frame, &target_area);
+ frame_engine.frame_get_window_area(target->frame, &target_area);
if (resist_move_window(c_area, target_area,
resist, x, y))
break;
Rect desired_area;
Rect c_area;
- frame_engine->frame_get_window_area(c->frame, &c_area);
+ frame_engine.frame_get_window_area(c->frame, &c_area);
if (!resist) return;
Rect dock_area;
Rect c_area;
- frame_engine->frame_get_window_area(c->frame, &c_area);
+ frame_engine.frame_get_window_area(c->frame, &c_area);
if (!resist) return;
for (it = stacking_list; it; it = g_list_next(it)) {
target = it->data;
/* don't snap to invisibles or ourself */
- if (!frame_engine->frame_is_visible(target->frame) || target == c)
+ if (!frame_engine.frame_is_visible(target->frame) || target == c)
continue;
/* don't snap to windows set to below and skip_taskbar (desklets) */
if (target->below && !c->below && target->skip_taskbar)
continue;
Rect target_area;
- frame_engine->frame_get_window_area(target->frame, &target_area);
+ frame_engine.frame_get_window_area(target->frame, &target_area);
if (resist_size_window(c_area, target_area,
resist, w, h, dir))
break;
Rect desired_area;
Rect c_area;
- frame_engine->frame_get_window_area(c->frame, &c_area);
+ frame_engine.frame_get_window_area(c->frame, &c_area);
if (!resist) return;
if (c->can_focus) {
/* reduce flicker by hiliting now rather than waiting for the
server FocusIn event */
- frame_engine->frame_set_is_focus (c->frame, TRUE);
- frame_engine->frame_update_layout (c->frame, c->area, FALSE, FALSE);
+ frame_engine.frame_set_is_focus (c->frame, TRUE);
+ frame_engine.frame_update_layout (c->frame, c->area, FALSE, FALSE);
/* if this occurs while we are focus cycling, the indicator needs to
match the changes */
if (focus_cycle_target == c)
focus_cycle_draw_indicator(c);
- frame_engine->frame_update_skin (c->frame);
+ frame_engine.frame_update_skin (c->frame);
/* do this here so that if you switch desktops to a window with
helper windows then the helper windows won't flash */
client_bring_helper_windows(c);
if (c->can_focus) {
/* reduce flicker by hiliting now rather than waiting for the
server FocusIn event */
- frame_engine->frame_set_is_focus(c->frame, TRUE);
- frame_engine->frame_update_layout (c->frame, c->area, FALSE, FALSE);
+ frame_engine.frame_set_is_focus(c->frame, TRUE);
+ frame_engine.frame_update_layout (c->frame, c->area, FALSE, FALSE);
/* if this occurs while we are focus cycling, the indicator needs to
match the changes */
if (focus_cycle_target == c)
focus_cycle_draw_indicator(c);
- frame_engine->frame_update_skin (c->frame);
+ frame_engine.frame_update_skin (c->frame);
}
}
}
gboolean found = FALSE;
Rect client_area;
- frame_engine->frame_get_window_area(client->frame, &client_area);
+ frame_engine.frame_get_window_area(client->frame, &client_area);
/* no need for any looping in this case */
if (sibling && client->layer != sibling->layer)
return occluded;
!client_search_transient(client, c))
{
Rect c_area;
- frame_engine->frame_get_window_area(c->frame, &c_area);
+ frame_engine.frame_get_window_area(c->frame, &c_area);
if (RECT_INTERSECTS_RECT(c_area, client_area))
{
if (sibling != NULL) {
gboolean found = FALSE;
Rect client_area;
- frame_engine->frame_get_window_area(client->frame, &client_area);
+ frame_engine.frame_get_window_area(client->frame, &client_area);
/* no need for any looping in this case */
if (sibling && client->layer != sibling->layer)
!client_search_transient(c, client))
{
Rect c_area;
- frame_engine->frame_get_window_area(c->frame, &c_area);
+ frame_engine.frame_get_window_area(c->frame, &c_area);
if (RECT_INTERSECTS_RECT(c_area, client_area))
{
if (sibling != NULL) {