]> git.decadent.org.uk Git - ion3.git/blob - ioncore/frame.h
Merge commit '20070506' into HEAD
[ion3.git] / ioncore / frame.h
1 /*
2  * ion/ioncore/frame.h
3  *
4  * Copyright (c) Tuomo Valkonen 1999-2007. 
5  *
6  * See the included file LICENSE for details.
7  */
8
9 #ifndef ION_IONCORE_FRAME_H
10 #define ION_IONCORE_FRAME_H
11
12 #include <libtu/stringstore.h>
13 #include <libtu/setparam.h>
14 #include <libextl/extl.h>
15
16 #include "common.h"
17 #include "window.h"
18 #include "attach.h"
19 #include "mplex.h"
20 #include "gr.h"
21 #include "rectangle.h"
22 #include "sizehint.h"
23
24 #define FRAME_SAVED_VERT  0x0008
25 #define FRAME_SAVED_HORIZ 0x0010
26 #define FRAME_SHADED      0x0020
27 #define FRAME_SHADED_TOGGLE 0x0040
28 /*#define FRAME_DEST_EMPTY  0x0100*/
29 #define FRAME_MAXED_VERT  0x0200
30 #define FRAME_MAXED_HORIZ 0x0400
31 #define FRAME_MIN_HORIZ   0x0800
32
33 /*#define FRAME_SZH_USEMINMAX 0x1000 */
34 /*#define FRAME_FWD_CWIN_RQGEOM 0x2000 */
35
36
37 typedef enum{
38     FRAME_MODE_UNKNOWN,
39     FRAME_MODE_TILED,
40     FRAME_MODE_TILED_ALT,
41     FRAME_MODE_FLOATING,
42     FRAME_MODE_TRANSIENT
43 } WFrameMode;
44
45 typedef enum{
46     FRAME_BAR_INSIDE,
47     FRAME_BAR_OUTSIDE,
48     FRAME_BAR_SHAPED,
49     FRAME_BAR_NONE
50 } WFrameBarMode;
51         
52
53
54 DECLCLASS(WFrame){
55     WMPlex mplex;
56     
57     int flags;
58     WFrameMode mode;
59     int saved_w, saved_h;
60     int saved_x, saved_y;
61     
62     int tab_dragged_idx;
63     void *quasiact_source;
64     
65     GrBrush *brush;
66     GrBrush *bar_brush;
67     GrStyleSpec baseattr;
68     GrTransparency tr_mode;
69     GrTextElem *titles;
70     int titles_n;
71     
72     /* Bar stuff */
73     WFrameBarMode barmode;
74     int bar_w, bar_h;
75     double bar_max_width_q;
76     int tab_min_w;
77 };
78
79
80 /* Create/destroy */
81 extern WFrame *create_frame(WWindow *parent, const WFitParams *fp,
82                             WFrameMode mode);
83 extern bool frame_init(WFrame *frame, WWindow *parent, const WFitParams *fp,
84                        WFrameMode mode);
85 extern void frame_deinit(WFrame *frame);
86 extern bool frame_rqclose(WFrame *frame);
87
88 /* Mode */
89
90 extern void frame_set_mode(WFrame *frame, WFrameMode mode);
91 extern WFrameMode frame_mode(WFrame *frame);
92
93 /* Resize and reparent */
94 extern bool frame_fitrep(WFrame *frame, WWindow *par, const WFitParams *fp);
95 extern void frame_size_hints(WFrame *frame, WSizeHints *hints_ret);
96
97 /* Focus */
98 extern void frame_activated(WFrame *frame);
99 extern void frame_inactivated(WFrame *frame);
100
101 /* Tabs */
102 extern int frame_nth_tab_w(WFrame *frame, int n);
103 extern int frame_nth_tab_iw(WFrame *frame, int n);
104 extern int frame_nth_tab_x(WFrame *frame, int n);
105 extern int frame_tab_at_x(WFrame *frame, int x);
106 extern void frame_update_attr_nth(WFrame *frame, int i);
107
108 extern bool frame_set_shaded(WFrame *frame, int sp);
109 extern bool frame_is_shaded(WFrame *frame);
110 extern bool frame_set_numbers(WFrame *frame, int sp);
111 extern bool frame_is_numbers(WFrame *frame);
112
113 extern int frame_default_index(WFrame *frame);
114
115 /* Misc */
116 extern void frame_managed_notify(WFrame *frame, WRegion *sub, WRegionNotify how);
117 extern bool frame_managed_rqdispose(WFrame *frame, WRegion *reg);
118
119 extern void ioncore_frame_quasiactivation_notify(WRegion *reg, WRegionNotify how);
120
121 extern WPHolder *frame_prepare_manage_transient(WFrame *frame,
122                                                 const WClientWin *transient,
123                                                 const WManageParams *param,
124                                                 int unused);
125
126 extern bool frame_rescue_clientwins(WFrame *frame, WRescueInfo *info);
127
128 /* Save/load */
129 extern ExtlTab frame_get_configuration(WFrame *frame);
130 extern WRegion *frame_load(WWindow *par, const WFitParams *fp, ExtlTab tab);
131 extern void frame_do_load(WFrame *frame, ExtlTab tab);
132
133 extern WHook *frame_managed_changed_hook;
134
135 #endif /* ION_IONCORE_FRAME_H */