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
This commit is contained in:
google@craigoakes.com 2015-01-31 05:17:54 +00:00
parent 0fa10d83b9
commit 5a789c2d7f
6 changed files with 36 additions and 11 deletions

View file

@ -280,6 +280,8 @@ void add_entry (char *key, char *value)
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;
}

View file

@ -510,18 +510,36 @@ void set_panel_properties(Panel *p)
}
// 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

View file

@ -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;

View file

@ -985,6 +985,7 @@ void create_panel(GtkWidget *parent)
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);

View file

@ -138,10 +138,12 @@ void config_write_panel(FILE *fp)
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 @@ void add_entry(char *key, char *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);
else if (strcmp(value, "top") == 0)
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), 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);
}

View file

@ -502,7 +502,7 @@ class TintWizardGUI(gtk.Window):
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)