aboutsummaryrefslogtreecommitdiff
path: root/src/Screen.cc
diff options
context:
space:
mode:
authorMathias Gumz <akira at fluxbox dot org>2014-09-29 07:24:42 (GMT)
committerMathias Gumz <akira at fluxbox dot org>2014-09-29 07:26:52 (GMT)
commitc5fd69cc9de2ed08176d655c1e46e9305c5543df (patch)
tree38625686b10509f575782ddce3a70667ef3cf924 /src/Screen.cc
parented7bcc5dbcbd2d3e4dddb4c57219ef6beda240e6 (diff)
downloadfluxbox-c5fd69cc9de2ed08176d655c1e46e9305c5543df.zip
fluxbox-c5fd69cc9de2ed08176d655c1e46e9305c5543df.tar.bz2
treat windows having WM_CLASS == "DockApp" like DockApps
this commit implements feature-request #317: "Add support for GTK dockapps.": "Back in 2010, WindowMaker implemented a system where windows with WM_CLASS res_class = DockApp would be treated as if they had initial_state = WithdrawnState, since GTK refuses to allow this."
Diffstat (limited to 'src/Screen.cc')
-rw-r--r--src/Screen.cc13
1 files changed, 9 insertions, 4 deletions
diff --git a/src/Screen.cc b/src/Screen.cc
index f1cee02..29ab548 100644
--- a/src/Screen.cc
+++ b/src/Screen.cc
@@ -1236,14 +1236,14 @@ bool BScreen::addKdeDockapp(Window client) {
1236FluxboxWindow *BScreen::createWindow(Window client) { 1236FluxboxWindow *BScreen::createWindow(Window client) {
1237 FbTk::App::instance()->sync(false); 1237 FbTk::App::instance()->sync(false);
1238 1238
1239
1240 if (isKdeDockapp(client) && addKdeDockapp(client)) { 1239 if (isKdeDockapp(client) && addKdeDockapp(client)) {
1241 return 0; // dont create a FluxboxWindow for this one 1240 return 0; // dont create a FluxboxWindow for this one
1242 } 1241 }
1243 1242
1244 WinClient *winclient = new WinClient(client, *this); 1243 WinClient *winclient = new WinClient(client, *this);
1245 1244
1246 if (winclient->initial_state == WithdrawnState) { 1245 if (winclient->initial_state == WithdrawnState ||
1246 winclient->getWMClassClass() == "DockApp") {
1247 delete winclient; 1247 delete winclient;
1248#ifdef USE_SLIT 1248#ifdef USE_SLIT
1249 if (slit() && !isKdeDockapp(client)) 1249 if (slit() && !isKdeDockapp(client))
@@ -1306,8 +1306,13 @@ FluxboxWindow *BScreen::createWindow(WinClient &client) {
1306 FluxboxWindow *win = new FluxboxWindow(client); 1306 FluxboxWindow *win = new FluxboxWindow(client);
1307 1307
1308#ifdef SLIT 1308#ifdef SLIT
1309 if (win->initialState() == WithdrawnState && slit() != 0) { 1309 if (slit() != 0) {
1310 slit()->addClient(client.window()); 1310
1311 if (win->initialState() == WithdrawnState) {
1312 slit()->addClient(client.window());
1313 } else if (client->getWMClassClass() == "DockApp") {
1314 slit()->addClient(client.window());
1315 }
1311 } 1316 }
1312#endif // SLIT 1317#endif // SLIT
1313 1318