]> git.decadent.org.uk Git - ion3.git/blob - ioncore/frame.h
Update cfg_kludge_flash for Flash 10
[ion3.git] / ioncore / frame.h
1 /*
2  * ion/ioncore/frame.h
3  *
4  * Copyright (c) Tuomo Valkonen 1999-2009. 
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     FRAME_MODE_UNKNOWN_ALT,
44     FRAME_MODE_FLOATING_ALT,
45     FRAME_MODE_TRANSIENT_ALT
46 } WFrameMode;
47
48 typedef enum{
49     FRAME_BAR_INSIDE,
50     FRAME_BAR_OUTSIDE,
51     FRAME_BAR_SHAPED,
52     FRAME_BAR_NONE
53 } WFrameBarMode;
54         
55
56
57 DECLCLASS(WFrame){
58     WMPlex mplex;
59     
60     int flags;
61     WFrameMode mode;
62     int saved_w, saved_h;
63     int saved_x, saved_y;
64     
65     int tab_dragged_idx;
66     void *quasiact_source;
67     
68     GrBrush *brush;
69     GrBrush *bar_brush;
70     GrStyleSpec baseattr;
71     GrTransparency tr_mode;
72     GrTextElem *titles;
73     int titles_n;
74     
75     /* Bar stuff */
76     WFrameBarMode barmode;
77     int bar_w, bar_h;
78     double bar_max_width_q;
79     int tab_min_w;
80 };
81
82
83 /* Create/destroy */
84 extern WFrame *create_frame(WWindow *parent, const WFitParams *fp,
85                             WFrameMode mode);
86 extern bool frame_init(WFrame *frame, WWindow *parent, const WFitParams *fp,
87                        WFrameMode mode);
88 extern void frame_deinit(WFrame *frame);
89 extern bool frame_rqclose(WFrame *frame);
90
91 /* Mode */
92
93 extern void frame_set_mode(WFrame *frame, WFrameMode mode);
94 extern WFrameMode frame_mode(WFrame *frame);
95
96 /* Resize and reparent */
97 extern bool frame_fitrep(WFrame *frame, WWindow *par, const WFitParams *fp);
98 extern void frame_size_hints(WFrame *frame, WSizeHints *hints_ret);
99
100 /* Focus */
101 extern void frame_activated(WFrame *frame);
102 extern void frame_inactivated(WFrame *frame);
103
104 /* Tabs */
105 extern int frame_nth_tab_w(WFrame *frame, int n);
106 extern int frame_nth_tab_iw(WFrame *frame, int n);
107 extern int frame_nth_tab_x(WFrame *frame, int n);
108 extern int frame_tab_at_x(WFrame *frame, int x);
109 extern void frame_update_attr_nth(WFrame *frame, int i);
110
111 extern bool frame_set_shaded(WFrame *frame, int sp);
112 extern bool frame_is_shaded(WFrame *frame);
113 extern bool frame_set_numbers(WFrame *frame, int sp);
114 extern bool frame_is_numbers(WFrame *frame);
115
116 extern int frame_default_index(WFrame *frame);
117
118 /* Misc */
119 extern void frame_managed_notify(WFrame *frame, WRegion *sub, WRegionNotify how);
120 extern bool frame_managed_rqdispose(WFrame *frame, WRegion *reg);
121
122 extern WPHolder *frame_prepare_manage_transient(WFrame *frame,
123                                                 const WClientWin *transient,
124                                                 const WManageParams *param,
125                                                 int unused);
126
127 /* Save/load */
128 extern ExtlTab frame_get_configuration(WFrame *frame);
129 extern WRegion *frame_load(WWindow *par, const WFitParams *fp, ExtlTab tab);
130 extern void frame_do_load(WFrame *frame, ExtlTab tab);
131
132 extern WHook *frame_managed_changed_hook;
133
134 extern WFrameMode framemode_unalt(WFrameMode mode);
135
136 #endif /* ION_IONCORE_FRAME_H */