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:
@@ -74,8 +74,6 @@ static GSList *list_back;
|
|||||||
|
|
||||||
void init_config()
|
void init_config()
|
||||||
{
|
{
|
||||||
cleanup_panel();
|
|
||||||
|
|
||||||
// get monitor and desktop config
|
// get monitor and desktop config
|
||||||
get_monitors();
|
get_monitors();
|
||||||
get_desktops();
|
get_desktops();
|
||||||
|
|||||||
34
src/panel.c
34
src/panel.c
@@ -18,6 +18,7 @@
|
|||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
#include <string.h>
|
||||||
#include <X11/Xlib.h>
|
#include <X11/Xlib.h>
|
||||||
#include <X11/Xutil.h>
|
#include <X11/Xutil.h>
|
||||||
#include <X11/Xatom.h>
|
#include <X11/Xatom.h>
|
||||||
@@ -61,7 +62,8 @@ Panel panel_config;
|
|||||||
Panel *panel1 = 0;
|
Panel *panel1 = 0;
|
||||||
int nb_panel;
|
int nb_panel;
|
||||||
|
|
||||||
Imlib_Image default_icon;
|
Imlib_Image default_icon = NULL;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void init_panel()
|
void init_panel()
|
||||||
@@ -69,19 +71,6 @@ void init_panel()
|
|||||||
int i;
|
int i;
|
||||||
Panel *p;
|
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)
|
// alloc panels (one monitor or all monitors)
|
||||||
if (panel_config.monitor >= 0)
|
if (panel_config.monitor >= 0)
|
||||||
nb_panel = 1;
|
nb_panel = 1;
|
||||||
@@ -204,14 +193,8 @@ void cleanup_panel()
|
|||||||
task_active = 0;
|
task_active = 0;
|
||||||
task_drag = 0;
|
task_drag = 0;
|
||||||
task_urgent = 0;
|
task_urgent = 0;
|
||||||
cleanup_systray();
|
|
||||||
cleanup_taskbar();
|
cleanup_taskbar();
|
||||||
|
|
||||||
if (default_icon) {
|
|
||||||
imlib_context_set_image(default_icon);
|
|
||||||
imlib_free_image();
|
|
||||||
}
|
|
||||||
|
|
||||||
// font allocated once
|
// font allocated once
|
||||||
if (panel1[0].g_task.font_desc) {
|
if (panel1[0].g_task.font_desc) {
|
||||||
pango_font_description_free(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];
|
p = &panel1[i];
|
||||||
|
|
||||||
free_area(&p->area);
|
free_area(&p->area);
|
||||||
free_area(&p->g_task.area);
|
|
||||||
free_area(&p->g_taskbar);
|
|
||||||
|
|
||||||
if (p->temp_pmap) {
|
if (p->temp_pmap) {
|
||||||
XFreePixmap(server.dsp, p->temp_pmap);
|
XFreePixmap(server.dsp, p->temp_pmap);
|
||||||
@@ -239,15 +220,6 @@ void cleanup_panel()
|
|||||||
|
|
||||||
if (panel1) free(panel1);
|
if (panel1) free(panel1);
|
||||||
panel1 = 0;
|
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 Panel *panel1;
|
||||||
extern int nb_panel;
|
extern int nb_panel;
|
||||||
|
|
||||||
|
|
||||||
void init_panel();
|
void init_panel();
|
||||||
void init_panel_size_and_position(Panel *panel);
|
void init_panel_size_and_position(Panel *panel);
|
||||||
void cleanup_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);
|
XSelectInput (server.dsp, server.root_win, PropertyChangeMask|StructureNotifyMask);
|
||||||
|
|
||||||
setlocale (LC_ALL, "");
|
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()
|
void cleanup()
|
||||||
{
|
{
|
||||||
|
cleanup_systray();
|
||||||
cleanup_panel();
|
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 (time1_font_desc) pango_font_description_free(time1_font_desc);
|
||||||
if (time2_font_desc) pango_font_description_free(time2_font_desc);
|
if (time2_font_desc) pango_font_description_free(time2_font_desc);
|
||||||
if (time1_format) g_free(time1_format);
|
if (time1_format) g_free(time1_format);
|
||||||
@@ -611,12 +636,20 @@ void event_configure_notify (Window win)
|
|||||||
{
|
{
|
||||||
// change in root window (xrandr)
|
// change in root window (xrandr)
|
||||||
if (win == server.root_win) {
|
if (win == server.root_win) {
|
||||||
int i, old_monitor = server.nb_monitor;
|
int i, old_nb_panel = nb_panel;
|
||||||
|
|
||||||
get_monitors();
|
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];
|
Panel *panel = &panel1[i];
|
||||||
|
|
||||||
init_panel_size_and_position(panel);
|
init_panel_size_and_position(panel);
|
||||||
@@ -743,7 +776,7 @@ int main (int argc, char *argv[])
|
|||||||
GSList *it;
|
GSList *it;
|
||||||
|
|
||||||
init (argc, argv);
|
init (argc, argv);
|
||||||
load_config:
|
|
||||||
i = 0;
|
i = 0;
|
||||||
init_config();
|
init_config();
|
||||||
if (config_path)
|
if (config_path)
|
||||||
@@ -853,7 +886,7 @@ load_config:
|
|||||||
switch (signal_pending) {
|
switch (signal_pending) {
|
||||||
case SIGUSR1:
|
case SIGUSR1:
|
||||||
signal_pending = 0;
|
signal_pending = 0;
|
||||||
goto load_config;
|
return 0;
|
||||||
case SIGINT:
|
case SIGINT:
|
||||||
case SIGTERM:
|
case SIGTERM:
|
||||||
case SIGHUP:
|
case SIGHUP:
|
||||||
|
|||||||
Reference in New Issue
Block a user