Revert panel to _NET_WM_WINDOW_TYPE_DOCK, implement panel_layer=float (Issue 461). git-svn-id: http://tint2.googlecode.com/svn/trunk@677 121b4492-b84c-0410-8b4c-0d4edfb3f3cc
google@craigoakes.com google@craigoakes.com@121b4492-b84c-0410-8b4c-0d4edfb3f3cc
6 files changed,
36 insertions(+),
11 deletions(-)
M
src/config.c
→
src/config.c
@@ -280,6 +280,8 @@ if (strcmp(value, "bottom") == 0)
panel_layer = BOTTOM_LAYER; else if (strcmp(value, "top") == 0) panel_layer = TOP_LAYER; + else if (strcmp(value, "float") == 0) + panel_layer = FLOAT_LAYER; else panel_layer = NORMAL_LAYER; }
M
src/panel.c
→
src/panel.c
@@ -510,18 +510,36 @@ g_free(name);
} // Dock - long val = panel_dock ? server.atom._NET_WM_WINDOW_TYPE_DOCK : server.atom._NET_WM_WINDOW_TYPE_NORMAL; + long val = server.atom._NET_WM_WINDOW_TYPE_DOCK; XChangeProperty (server.dsp, p->main_win, server.atom._NET_WM_WINDOW_TYPE, XA_ATOM, 32, PropModeReplace, (unsigned char *) &val, 1); - // Sticky and below other window val = ALLDESKTOP; XChangeProperty (server.dsp, p->main_win, server.atom._NET_WM_DESKTOP, XA_CARDINAL, 32, PropModeReplace, (unsigned char *) &val, 1); - Atom state[4]; + + Atom state[5]; + int nb_atoms; 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] = panel_layer == BOTTOM_LAYER ? server.atom._NET_WM_STATE_BELOW : server.atom._NET_WM_STATE_ABOVE; - int nb_atoms = panel_layer == NORMAL_LAYER ? 3 : 4; + switch ( panel_layer ) { + case BOTTOM_LAYER: + state[3] = server.atom._NET_WM_STATE_BELOW; + nb_atoms = 4; + break; + case NORMAL_LAYER: + nb_atoms = 3; + break; + case TOP_LAYER: + state[3] = server.atom._NET_WM_STATE_ABOVE; + nb_atoms = 4; + break; + case FLOAT_LAYER: + // Float above or below (allowed by some WM for some layers) + state[3] = server.atom._NET_WM_STATE_BELOW; + state[4] = server.atom._NET_WM_STATE_ABOVE; + nb_atoms = 5; + break; + } XChangeProperty (server.dsp, p->main_win, server.atom._NET_WM_STATE, XA_ATOM, 32, PropModeReplace, (unsigned char *) state, nb_atoms); // Unfocusable
M
src/panel.h
→
src/panel.h
@@ -39,7 +39,7 @@ extern int mouse_tilt_right;
//panel mode enum { SINGLE_DESKTOP=0, MULTI_DESKTOP }; -enum { BOTTOM_LAYER, NORMAL_LAYER, TOP_LAYER }; +enum { BOTTOM_LAYER, NORMAL_LAYER, TOP_LAYER, FLOAT_LAYER }; extern int panel_mode; extern int wm_menu; extern int panel_dock;
M
src/tint2conf/properties.c
→
src/tint2conf/properties.c
@@ -985,6 +985,7 @@ gtk_table_attach(GTK_TABLE(table), panel_combo_layer, 7, 8, 0, 1, GTK_FILL, 0, 0, 0);
gtk_combo_box_append_text(GTK_COMBO_BOX(panel_combo_layer), _("Top")); gtk_combo_box_append_text(GTK_COMBO_BOX(panel_combo_layer), _("Normal")); gtk_combo_box_append_text(GTK_COMBO_BOX(panel_combo_layer), _("Bottom")); + gtk_combo_box_append_text(GTK_COMBO_BOX(panel_combo_layer), _("Float")); label = gtk_label_new(_("Maximized window")); gtk_misc_set_alignment(GTK_MISC(label), 0, 0);
M
src/tint2conf/properties_rw.c
→
src/tint2conf/properties_rw.c
@@ -138,10 +138,12 @@ }
fprintf(fp, "\n"); fprintf(fp, "panel_layer = "); - if (gtk_combo_box_get_active(GTK_COMBO_BOX(panel_combo_layer)) == 0) { + if (gtk_combo_box_get_active(GTK_COMBO_BOX(panel_combo_layer)) == 2) { fprintf(fp, "top"); } else if (gtk_combo_box_get_active(GTK_COMBO_BOX(panel_combo_layer)) == 1) { - fprintf(fp, "center"); + fprintf(fp, "normal"); + } else if (gtk_combo_box_get_active(GTK_COMBO_BOX(panel_combo_layer)) == 3) { + fprintf(fp, "float"); } else { fprintf(fp, "bottom"); }@@ -687,9 +689,11 @@ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(panel_dock), atoi(value));
} else if (strcmp(key, "panel_layer") == 0) { if (strcmp(value, "bottom") == 0) - gtk_combo_box_set_active(GTK_COMBO_BOX(panel_combo_layer), 2); + gtk_combo_box_set_active(GTK_COMBO_BOX(panel_combo_layer), 0); else if (strcmp(value, "top") == 0) - gtk_combo_box_set_active(GTK_COMBO_BOX(panel_combo_layer), 0); + gtk_combo_box_set_active(GTK_COMBO_BOX(panel_combo_layer), 2); + else if (strcmp(value, "float") == 0) + gtk_combo_box_set_active(GTK_COMBO_BOX(panel_combo_layer), 3); else gtk_combo_box_set_active(GTK_COMBO_BOX(panel_combo_layer), 1); }
M
src/tint2conf/tintwizard.py
→
src/tint2conf/tintwizard.py
@@ -502,7 +502,7 @@ self.panelDock = createCheckButton(self.tablePanelSettings, active=False, gridX=1, gridY=1, xExpand=True, yExpand=False, handler=self.changeOccurred)
self.registerComponent("panel_dock", self.panelDock) createLabel(self.tablePanelSettings, text="Panel Layer", gridX=0, gridY=2, xPadding=10) - self.panelLayer = createComboBox(self.tablePanelSettings, ["bottom", "top", "normal"], gridX=1, gridY=2, handler=self.changeOccurred) + self.panelLayer = createComboBox(self.tablePanelSettings, ["bottom", "top", "normal", "float"], gridX=1, gridY=2, handler=self.changeOccurred) self.registerComponent("panel_layer", self.panelLayer) createLabel(self.tablePanelSettings, text="Strut Policy", gridX=0, gridY=3, xPadding=10)