cleanup : global setting outside panel.c
git-svn-id: http://tint2.googlecode.com/svn/trunk@219 121b4492-b84c-0410-8b4c-0d4edfb3f3cc
This commit is contained in:
parent
4592fc25df
commit
c83bdf1848
4 changed files with 41 additions and 39 deletions
|
@ -74,8 +74,6 @@ static GSList *list_back;
|
|||
|
||||
void init_config()
|
||||
{
|
||||
cleanup_panel();
|
||||
|
||||
// get monitor and desktop config
|
||||
get_monitors();
|
||||
get_desktops();
|
||||
|
|
34
src/panel.c
34
src/panel.c
|
@ -18,6 +18,7 @@
|
|||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <X11/Xlib.h>
|
||||
#include <X11/Xutil.h>
|
||||
#include <X11/Xatom.h>
|
||||
|
@ -61,7 +62,8 @@ Panel panel_config;
|
|||
Panel *panel1 = 0;
|
||||
int nb_panel;
|
||||
|
||||
Imlib_Image default_icon;
|
||||
Imlib_Image default_icon = NULL;
|
||||
|
||||
|
||||
|
||||
void init_panel()
|
||||
|
@ -69,19 +71,6 @@ void init_panel()
|
|||
int i;
|
||||
Panel *p;
|
||||
|
||||
// load default icon
|
||||
char *path;
|
||||
const gchar * const *data_dirs;
|
||||
data_dirs = g_get_system_data_dirs ();
|
||||
for (i = 0; data_dirs[i] != NULL; i++) {
|
||||
path = g_build_filename(data_dirs[i], "tint2", "default_icon.png", NULL);
|
||||
if (g_file_test (path, G_FILE_TEST_EXISTS))
|
||||
default_icon = imlib_load_image(path);
|
||||
g_free(path);
|
||||
}
|
||||
|
||||
//if (panel1)
|
||||
// free(panel1);
|
||||
// alloc panels (one monitor or all monitors)
|
||||
if (panel_config.monitor >= 0)
|
||||
nb_panel = 1;
|
||||
|
@ -204,14 +193,8 @@ void cleanup_panel()
|
|||
task_active = 0;
|
||||
task_drag = 0;
|
||||
task_urgent = 0;
|
||||
cleanup_systray();
|
||||
cleanup_taskbar();
|
||||
|
||||
if (default_icon) {
|
||||
imlib_context_set_image(default_icon);
|
||||
imlib_free_image();
|
||||
}
|
||||
|
||||
// font allocated once
|
||||
if (panel1[0].g_task.font_desc) {
|
||||
pango_font_description_free(panel1[0].g_task.font_desc);
|
||||
|
@ -224,8 +207,6 @@ void cleanup_panel()
|
|||
p = &panel1[i];
|
||||
|
||||
free_area(&p->area);
|
||||
free_area(&p->g_task.area);
|
||||
free_area(&p->g_taskbar);
|
||||
|
||||
if (p->temp_pmap) {
|
||||
XFreePixmap(server.dsp, p->temp_pmap);
|
||||
|
@ -239,15 +220,6 @@ void cleanup_panel()
|
|||
|
||||
if (panel1) free(panel1);
|
||||
panel1 = 0;
|
||||
|
||||
if (g_tooltip.window) {
|
||||
XDestroyWindow(server.dsp, g_tooltip.window);
|
||||
g_tooltip.window = 0;
|
||||
}
|
||||
if (g_tooltip.font_desc) {
|
||||
pango_font_description_free(g_tooltip.font_desc);
|
||||
g_tooltip.font_desc = 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -105,7 +105,6 @@ extern Panel panel_config;
|
|||
extern Panel *panel1;
|
||||
extern int nb_panel;
|
||||
|
||||
|
||||
void init_panel();
|
||||
void init_panel_size_and_position(Panel *panel);
|
||||
void cleanup_panel();
|
||||
|
|
43
src/tint.c
43
src/tint.c
|
@ -103,13 +103,38 @@ void init (int argc, char *argv[])
|
|||
XSelectInput (server.dsp, server.root_win, PropertyChangeMask|StructureNotifyMask);
|
||||
|
||||
setlocale (LC_ALL, "");
|
||||
|
||||
// load default icon
|
||||
int i;
|
||||
char *path;
|
||||
const gchar * const *data_dirs;
|
||||
data_dirs = g_get_system_data_dirs ();
|
||||
for (i = 0; data_dirs[i] != NULL; i++) {
|
||||
path = g_build_filename(data_dirs[i], "tint2", "default_icon.png", NULL);
|
||||
if (g_file_test (path, G_FILE_TEST_EXISTS))
|
||||
default_icon = imlib_load_image(path);
|
||||
g_free(path);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void cleanup()
|
||||
{
|
||||
cleanup_systray();
|
||||
cleanup_panel();
|
||||
|
||||
if (default_icon) {
|
||||
imlib_context_set_image(default_icon);
|
||||
imlib_free_image();
|
||||
}
|
||||
if (g_tooltip.window) {
|
||||
XDestroyWindow(server.dsp, g_tooltip.window);
|
||||
g_tooltip.window = 0;
|
||||
}
|
||||
if (g_tooltip.font_desc) {
|
||||
pango_font_description_free(g_tooltip.font_desc);
|
||||
g_tooltip.font_desc = 0;
|
||||
}
|
||||
if (time1_font_desc) pango_font_description_free(time1_font_desc);
|
||||
if (time2_font_desc) pango_font_description_free(time2_font_desc);
|
||||
if (time1_format) g_free(time1_format);
|
||||
|
@ -611,12 +636,20 @@ void event_configure_notify (Window win)
|
|||
{
|
||||
// change in root window (xrandr)
|
||||
if (win == server.root_win) {
|
||||
int i, old_monitor = server.nb_monitor;
|
||||
int i, old_nb_panel = nb_panel;
|
||||
|
||||
get_monitors();
|
||||
if (old_monitor != server.nb_monitor) {
|
||||
if (panel_config.monitor >= 0)
|
||||
nb_panel = 1;
|
||||
else
|
||||
nb_panel = server.nb_monitor;
|
||||
|
||||
if (old_nb_panel != nb_panel) {
|
||||
// changed number of panel
|
||||
printf("changed number of panel\n");
|
||||
//realloc(panel1, nb_panel * sizeof(Panel));
|
||||
}
|
||||
for (i=0 ; i < nb_panel ; i++) {
|
||||
for (i=0 ; i < nb_panel && i < old_nb_panel ; i++) {
|
||||
Panel *panel = &panel1[i];
|
||||
|
||||
init_panel_size_and_position(panel);
|
||||
|
@ -743,7 +776,7 @@ int main (int argc, char *argv[])
|
|||
GSList *it;
|
||||
|
||||
init (argc, argv);
|
||||
load_config:
|
||||
|
||||
i = 0;
|
||||
init_config();
|
||||
if (config_path)
|
||||
|
@ -853,7 +886,7 @@ load_config:
|
|||
switch (signal_pending) {
|
||||
case SIGUSR1:
|
||||
signal_pending = 0;
|
||||
goto load_config;
|
||||
return 0;
|
||||
case SIGINT:
|
||||
case SIGTERM:
|
||||
case SIGHUP:
|
||||
|
|
Loading…
Reference in a new issue