- XStoreName (server.dsp, win, "tint2");
-
- // TODO: check if the name is really needed for a panel/taskbar ?
- gsize len;
- gchar *name = g_locale_to_utf8("tint2", -1, NULL, &len, NULL);
- if (name != NULL) {
- XChangeProperty(server.dsp, win, server.atom._NET_WM_NAME, server.atom.UTF8_STRING, 8, PropModeReplace, (unsigned char *) name, (int) len);
- g_free(name);
- }
-
- // Dock
- long val = server.atom._NET_WM_WINDOW_TYPE_DOCK;
- XChangeProperty (server.dsp, win, server.atom._NET_WM_WINDOW_TYPE, XA_ATOM, 32, PropModeReplace, (unsigned char *) &val, 1);
-
- // Reserved space
- long struts [12] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
- if (panel.position & TOP) {
- struts[2] = panel.area.height + panel.marginy;
- struts[8] = server.posx;
- // panel.area.width - 1 allowed full screen on monitor 2
- struts[9] = server.posx + panel.area.width - 1;
- }
- else {
- struts[3] = panel.area.height + panel.marginy;
- struts[10] = server.posx;
- // panel.area.width - 1 allowed full screen on monitor 2
- struts[11] = server.posx + panel.area.width - 1;
- }
- // Old specification : fluxbox need _NET_WM_STRUT.
- XChangeProperty (server.dsp, win, server.atom._NET_WM_STRUT, XA_CARDINAL, 32, PropModeReplace, (unsigned char *) &struts, 4);
- XChangeProperty (server.dsp, win, server.atom._NET_WM_STRUT_PARTIAL, XA_CARDINAL, 32, PropModeReplace, (unsigned char *) &struts, 12);
-
- // Sticky and below other window
- val = 0xFFFFFFFF;
- XChangeProperty (server.dsp, win, server.atom._NET_WM_DESKTOP, XA_CARDINAL, 32, PropModeReplace, (unsigned char *) &val, 1);
- Atom state[4];
- state[0] = server.atom._NET_WM_STATE_SKIP_PAGER;
- state[1] = server.atom._NET_WM_STATE_SKIP_TASKBAR;
- state[2] = server.atom._NET_WM_STATE_STICKY;
- state[3] = server.atom._NET_WM_STATE_BELOW;
- XChangeProperty (server.dsp, win, server.atom._NET_WM_STATE, XA_ATOM, 32, PropModeReplace, (unsigned char *) state, 4);
-
- // Fixed position
- XSizeHints size_hints;
- size_hints.flags = PPosition;
- XChangeProperty (server.dsp, win, XA_WM_NORMAL_HINTS, XA_WM_SIZE_HINTS, 32, PropModeReplace, (unsigned char *) &size_hints, sizeof (XSizeHints) / 4);
-
- // Unfocusable
- XWMHints wmhints;
- wmhints.flags = InputHint;
- wmhints.input = False;
- XChangeProperty (server.dsp, win, XA_WM_HINTS, XA_WM_HINTS, 32, PropModeReplace, (unsigned char *) &wmhints, sizeof (XWMHints) / 4);
-
- // Undecorated
- long prop[5] = { 2, 0, 0, 0, 0 };
- XChangeProperty(server.dsp, win, server.atom._MOTIF_WM_HINTS, server.atom._MOTIF_WM_HINTS, 32, PropModeReplace, (unsigned char *) prop, 5);
+ 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);
+ }
+
+ for (i=0 ; i < nb_panel ; i++) {
+ p = &panel1[i];
+
+ p->area.parent = p;
+ p->area.panel = p;
+ p->area.on_screen = 1;
+ p->area.resize = 1;
+ p->area._resize = resize_panel;
+ p->g_taskbar.parent = p;
+ p->g_taskbar.panel = p;
+ p->g_task.area.panel = p;
+
+ // add childs
+ if (p->clock.area.on_screen)
+ p->area.list = g_slist_append(p->area.list, &p->clock);
+#ifdef ENABLE_BATTERY
+ if (p->battery.area.on_screen)
+ p->area.list = g_slist_append(p->area.list, &p->battery);
+#endif
+ // systray only on first panel
+ if (systray.area.on_screen && i == 0)
+ p->area.list = g_slist_append(p->area.list, &systray);
+
+ // full width mode
+ if (!p->initial_width) {
+ p->initial_width = 100;
+ p->pourcentx = 1;
+ }
+
+ init_panel_size_and_position(p);
+
+ // Catch some events
+ long event_mask = ExposureMask|ButtonPressMask|ButtonReleaseMask;
+ if (g_tooltip.enabled)
+ event_mask |= PointerMotionMask|LeaveWindowMask;
+ XSetWindowAttributes att = { ParentRelative, 0L, 0, 0L, 0, 0, Always, 0L, 0L, False, event_mask, NoEventMask, False, 0, 0 };
+ if (p->main_win) XDestroyWindow(server.dsp, p->main_win);
+ p->main_win = XCreateWindow(server.dsp, server.root_win, p->posx, p->posy, p->area.width, p->area.height, 0, server.depth, InputOutput, CopyFromParent, CWEventMask, &att);
+
+ set_panel_properties(p);
+ set_panel_background(p);
+
+ XMapWindow (server.dsp, p->main_win);
+ }
+ panel_refresh = 1;