1 /**************************************************************************
2 * Copyright (C) 2008 Pål Staurland (staura@gmail.com)
3 * Modified (C) 2008/2009 thierry lorthiois (lorthiois@bbsoft.fr)
6 * - draw panel and all objects according to panel_layout
9 **************************************************************************/
14 #include <pango/pangocairo.h>
21 #include "systraybar.h"
23 #include "freespace.h"
30 extern int signal_pending
;
31 // --------------------------------------------------
33 extern int mouse_middle
;
34 extern int mouse_right
;
35 extern int mouse_scroll_up
;
36 extern int mouse_scroll_down
;
37 extern int mouse_tilt_left
;
38 extern int mouse_tilt_right
;
41 enum { SINGLE_DESKTOP
=0, MULTI_DESKTOP
};
42 enum { BOTTOM_LAYER
, NORMAL_LAYER
, TOP_LAYER
};
43 extern int panel_mode
;
45 extern int panel_dock
;
46 extern int panel_layer
;
49 enum { LEFT
=0x01, RIGHT
=0x02, CENTER
=0X04, TOP
=0X08, BOTTOM
=0x10 };
50 extern int panel_position
;
51 extern int panel_horizontal
;
53 extern int panel_refresh
;
54 extern int task_dragged
;
57 enum { STRUT_MINIMUM
, STRUT_FOLLOW_SIZE
, STRUT_NONE
};
58 extern int panel_autohide
;
59 extern int panel_autohide_show_timeout
;
60 extern int panel_autohide_hide_timeout
;
61 extern int panel_autohide_height
; // for vertical panels this is of course the width
62 extern int panel_strut_policy
;
63 extern char *panel_items_order
;
66 enum { ALIGN_LEFT
, ALIGN_CENTER
, ALIGN_RIGHT
};
68 extern int max_tick_urgent
;
70 extern GArray
* backgrounds
;
72 extern Imlib_Image default_icon
;
75 // tint2 use one panel per monitor and one taskbar per desktop.
77 // always start with area
78 // area.list own all objects of the panel according to config file
81 // --------------------------------------------------
86 // position relative to root window
89 int pourcentx
, pourcenty
;
90 // location of the panel (monitor number)
93 // --------------------------------------------------
94 // task and taskbar parameter per panel
95 Global_taskbar g_taskbar
;
98 // --------------------------------------------------
99 // taskbar point to the first taskbar in panel.area.list.
100 // number of tasbar == nb_desktop. taskbar[i] is for desktop(i).
101 // taskbar[i] is used to loop over taskbar,
102 // while panel->area.list is used to loop over all panel's objects
106 // --------------------------------------------------
110 // --------------------------------------------------
112 #ifdef ENABLE_BATTERY
122 int hidden_width
, hidden_height
;
123 Pixmap hidden_pixmap
;
124 timeout
* autohide_timeout
;
128 extern Panel panel_config
;
129 extern Panel
*panel1
;
133 // default global data
134 void default_panel();
137 void cleanup_panel();
139 // realloc panels according to number of monitor
140 // use panel_config as default value
143 void init_panel_size_and_position(Panel
*panel
);
144 int resize_panel(void *obj
);
146 void set_panel_items_order(Panel
*p
);
147 void set_panel_properties(Panel
*p
);
149 // draw background panel
150 void set_panel_background(Panel
*p
);
152 // detect witch panel
153 Panel
*get_panel(Window win
);
155 Taskbar
*click_taskbar (Panel
*panel
, int x
, int y
);
156 Task
*click_task (Panel
*panel
, int x
, int y
);
157 Launcher
*click_launcher (Panel
*panel
, int x
, int y
);
158 LauncherIcon
*click_launcher_icon (Panel
*panel
, int x
, int y
);
159 int click_padding(Panel
*panel
, int x
, int y
);
160 int click_clock(Panel
*panel
, int x
, int y
);
161 Area
* click_area(Panel
*panel
, int x
, int y
);
163 void autohide_show(void* p
);
164 void autohide_hide(void* p
);
165 void autohide_trigger_show(Panel
* p
);
166 void autohide_trigger_hide(Panel
* p
);