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:
parent
0fa10d83b9
commit
5a789c2d7f
6 changed files with 36 additions and 11 deletions
|
@ -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;
|
||||
}
|
||||
|
|
28
src/panel.c
28
src/panel.c
|
@ -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
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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)
|
||||
|
|
Loading…
Reference in a new issue