openbox: add 3.4.11.2

This version inclues O.S. Systems' internal tree fixes and a sync
against 3.4-working branch.

Signed-off-by: Otavio Salvador <otavio@ossystems.com.br>
This commit is contained in:
Otavio Salvador
2012-02-14 22:25:51 +00:00
committed by Koen Kooi
parent 5fdcce5941
commit a8f2001c7c
4 changed files with 2890 additions and 0 deletions
@@ -0,0 +1,73 @@
Fix client decorations
Upstream-Status: Pending
diff --git a/openbox/client.c b/openbox/client.c
index c65e350..1c82763 100644
--- a/openbox/client.c
+++ b/openbox/client.c
@@ -1733,8 +1733,20 @@ void client_setup_decor_and_functions(ObClient *self, gboolean reconfig)
switch (self->type) {
case OB_CLIENT_TYPE_NORMAL:
/* normal windows retain all of the possible decorations and
- functionality, and can be fullscreen */
- self->functions |= OB_CLIENT_FUNC_FULLSCREEN;
+ functionality, and can be fullscreen, unless if it can't be resized */
+ if (self->functions & OB_CLIENT_FUNC_RESIZE)
+ self->functions |= OB_CLIENT_FUNC_FULLSCREEN;
+ else {
+ self->decorations &= ~(OB_FRAME_DECOR_HANDLE |
+ OB_FRAME_DECOR_MAXIMIZE);
+
+ self->functions &= ~OB_CLIENT_FUNC_MAXIMIZE;
+
+ self->mwmhints.decorations &= ~(OB_MWM_DECOR_HANDLE |
+ OB_MWM_DECOR_MAXIMIZE);
+
+ self->mwmhints.functions &= ~OB_MWM_FUNC_MAXIMIZE;
+ }
break;
case OB_CLIENT_TYPE_DIALOG:
diff --git a/openbox/frame.c b/openbox/frame.c
index 64dd290..fc84f2f 100644
--- a/openbox/frame.c
+++ b/openbox/frame.c
@@ -1209,6 +1209,7 @@ static void layout_title(ObFrame *self)
firstcon = &self->rightmost;
}
+ self->decorations = self->client->decorations;
/* stop at the end of the string (or the label, which calls break) */
for (; *lc != '\0' && lc >= config_title_layout; lc+=i) {
if (*lc == 'L') {
@@ -1217,23 +1218,23 @@ static void layout_title(ObFrame *self)
self->label_x = x;
}
break; /* break the for loop, do other side of label */
- } else if (*lc == 'N') {
+ } else if (*lc == 'N' && (self->decorations & OB_FRAME_DECOR_ICON)) {
if (firstcon) *firstcon = OB_FRAME_CONTEXT_ICON;
/* icon is bigger than buttons */
place_button(self, lc, bwidth + 2, left, i, &x, &self->icon_on, &self->icon_x);
- } else if (*lc == 'D') {
+ } else if (*lc == 'D' && (self->decorations & OB_FRAME_DECOR_ALLDESKTOPS)) {
if (firstcon) *firstcon = OB_FRAME_CONTEXT_ALLDESKTOPS;
place_button(self, lc, bwidth, left, i, &x, &self->desk_on, &self->desk_x);
- } else if (*lc == 'S') {
+ } else if (*lc == 'S' && (self->decorations & OB_FRAME_DECOR_SHADE)) {
if (firstcon) *firstcon = OB_FRAME_CONTEXT_SHADE;
place_button(self, lc, bwidth, left, i, &x, &self->shade_on, &self->shade_x);
- } else if (*lc == 'I') {
+ } else if (*lc == 'I' && (self->decorations & OB_FRAME_DECOR_ICONIFY)) {
if (firstcon) *firstcon = OB_FRAME_CONTEXT_ICONIFY;
place_button(self, lc, bwidth, left, i, &x, &self->iconify_on, &self->iconify_x);
- } else if (*lc == 'M') {
+ } else if (*lc == 'M' && (self->decorations & OB_FRAME_DECOR_MAXIMIZE)) {
if (firstcon) *firstcon = OB_FRAME_CONTEXT_MAXIMIZE;
place_button(self, lc, bwidth, left, i, &x, &self->max_on, &self->max_x);
- } else if (*lc == 'C') {
+ } else if (*lc == 'C' && (self->decorations & OB_FRAME_DECOR_CLOSE)) {
if (firstcon) *firstcon = OB_FRAME_CONTEXT_CLOSE;
place_button(self, lc, bwidth, left, i, &x, &self->close_on, &self->close_x);
} else
@@ -0,0 +1,38 @@
Fix dialog support
Upstream-Status: Pending
diff --git a/openbox/client.c b/openbox/client.c
index 4d54b38..c65e350 100644
--- a/openbox/client.c
+++ b/openbox/client.c
@@ -562,6 +562,14 @@ void client_manage(Window window, ObPrompt *prompt)
/* free the ObAppSettings shallow copy */
g_free(settings);
+ /* force dialogs to skip taskbar */
+ if (self->type == OB_CLIENT_TYPE_DIALOG) {
+ self->skip_taskbar = TRUE;
+
+ gulong state = prop_atoms.net_wm_state_skip_taskbar;
+ PROP_SET32(self->window, net_wm_state, atom, state);
+ }
+
ob_debug("Managed window 0x%lx plate 0x%x (%s)\n",
window, self->frame->window, self->class);
@@ -1733,6 +1741,14 @@ void client_setup_decor_and_functions(ObClient *self, gboolean reconfig)
/* sometimes apps make dialog windows fullscreen for some reason (for
e.g. kpdf does this..) */
self->functions |= OB_CLIENT_FUNC_FULLSCREEN;
+ /* these windows cannot be maximized or minimized*/
+ self->decorations &= ~(OB_FRAME_DECOR_ICONIFY |
+ OB_FRAME_DECOR_MAXIMIZE |
+ OB_FRAME_DECOR_HANDLE);
+
+ self->functions &= ~(OB_CLIENT_FUNC_ICONIFY |
+ OB_CLIENT_FUNC_MAXIMIZE |
+ OB_CLIENT_FUNC_RESIZE);
break;
case OB_CLIENT_TYPE_UTILITY:
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,40 @@
DESCRIPTION = "openbox Window Manager"
SECTION = "x11/wm"
LICENSE = "GPLv2+"
LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f"
SRC_URI = "http://icculus.org/openbox/releases/openbox-${PV}.tar.gz \
file://fix-dialog-buttons.patch;patch=1 \
file://fix-decorations.patch;patch=1"
SRC_URI[md5sum] = "30e669134fa81df810fe7d1dc59cd931"
SRC_URI[sha256sum] = "2e7579389c30e6bb08cc721a2c1af512e049fec2670e71715aa1c4e129ec349d"
inherit autotools gettext update-alternatives
ALTERNATIVE_PATH = "${bindir}/openbox"
ALTERNATIVE_NAME = "x-window-manager"
ALTERNATIVE_LINK = "${bindir}/x-window-manager"
ALTERNATIVE_PRIORITY = "10"
EXTRA_OECONF += "--with-plugins=none"
PACKAGES =+ "${PN}-core ${PN}-lxde ${PN}-gnome"
PACKAGES_DYNAMIC += "${PN}-theme-*"
python populate_packages_prepend() {
theme_dir = bb.data.expand('${datadir}/themes/', d)
theme_name = bb.data.expand('${PN}-theme-%s', d)
do_split_packages(d, theme_dir, '(.*)', theme_name, '${PN} theme for %s', extra_depends='', allow_dirs=True)
}
RDEPENDS_${PN} += "${PN}-core"
FILES_${PN}-core = "${bindir}/openbox ${libdir}/*${SOLIBS}"
FILES_${PN}-lxde += "${datadir}/lxde/ \
${datadir}/lxpanel \
${datadir}/xsessions \
${datadir}/icons"
FILES_${PN}-gnome += "${datadir}/gnome/"