+/* -*- indent-tabs-mode: nil; tab-width: 4; c-basic-offset: 4; -*-
+
+ frame.h for the Openbox window manager
+ Copyright (c) 2006 Mikael Magnusson
+ Copyright (c) 2003 Ben Jansens
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ See the COPYING file for a copy of the GNU General Public License.
+*/
+
#ifndef __frame_h
#define __frame_h
typedef enum {
OB_FRAME_CONTEXT_NONE,
- OB_FRAME_CONTEXT_ROOT,
+ OB_FRAME_CONTEXT_DESKTOP,
OB_FRAME_CONTEXT_CLIENT,
OB_FRAME_CONTEXT_TITLEBAR,
OB_FRAME_CONTEXT_HANDLE,
OB_FRAME_CONTEXT_FRAME,
OB_FRAME_CONTEXT_BLCORNER,
OB_FRAME_CONTEXT_BRCORNER,
+ OB_FRAME_CONTEXT_TLCORNER,
+ OB_FRAME_CONTEXT_TRCORNER,
OB_FRAME_CONTEXT_MAXIMIZE,
OB_FRAME_CONTEXT_ALLDESKTOPS,
OB_FRAME_CONTEXT_SHADE,
OB_FRAME_CONTEXT_ICONIFY,
OB_FRAME_CONTEXT_ICON,
OB_FRAME_CONTEXT_CLOSE,
+ /*! This is a special context, which occurs while dragging a window in
+ a move/resize */
+ OB_FRAME_CONTEXT_MOVE_RESIZE,
OB_FRAME_NUM_CONTEXTS
} ObFrameContext;
Strut size;
Rect area;
gboolean visible;
+
+ /*! Whether the window is obscured at all or fully visible. */
+ gboolean obscured;
+
guint decorations;
+ gboolean max_horz;
Window title;
Window label;
Window lgrip;
Window rgrip;
+ Window tltresize;
+ Window tllresize;
+ Window trtresize;
+ Window trrresize;
+
+ Colormap colormap;
+
RrAppearance *a_unfocused_title;
RrAppearance *a_focused_title;
RrAppearance *a_unfocused_label;
gint max_x; /* x-position of the window maximize button */
gint close_x; /* x-position of the window close button */
gint bwidth; /* border width */
- gint cbwidth; /* client border width */
+ gint rbwidth; /* title border width */
+ gint cbwidth_x; /* client border width */
+ gint cbwidth_y; /* client border width */
gboolean max_press;
gboolean close_press;
gboolean iconify_hover;
gboolean focused;
+
+ gboolean flashing;
+ gboolean flash_on;
+ GTimeVal flash_end;
};
-ObFrame *frame_new();
+ObFrame *frame_new(struct _ObClient *c);
void frame_show(ObFrame *self);
void frame_hide(ObFrame *self);
+void frame_adjust_theme(ObFrame *self);
void frame_adjust_shape(ObFrame *self);
-void frame_adjust_area(ObFrame *self, gboolean moved, gboolean resized);
+void frame_adjust_area(ObFrame *self, gboolean moved,
+ gboolean resized, gboolean fake);
void frame_adjust_state(ObFrame *self);
void frame_adjust_focus(ObFrame *self, gboolean hilite);
void frame_adjust_title(ObFrame *self);
void frame_grab_client(ObFrame *self, struct _ObClient *client);
void frame_release_client(ObFrame *self, struct _ObClient *client);
-ObFrameContext frame_context_from_string(char *name);
+ObFrameContext frame_context_from_string(const gchar *name);
ObFrameContext frame_context(struct _ObClient *self, Window win);
be positioned.
@return The proper coordinates for the frame, based on the client.
*/
-void frame_client_gravity(ObFrame *self, int *x, int *y);
+void frame_client_gravity(ObFrame *self, gint *x, gint *y);
/*! Reversly applies gravity to the frame's position to find where the client
should be positioned.
@return The proper coordinates for the client, based on the frame.
*/
-void frame_frame_gravity(ObFrame *self, int *x, int *y);
+void frame_frame_gravity(ObFrame *self, gint *x, gint *y);
+void frame_flash_start(ObFrame *self);
+void frame_flash_stop(ObFrame *self);
#endif