diff options
author | Mathias Gumz <akira at fluxbox dot org> | 2014-09-29 07:24:42 (GMT) |
---|---|---|
committer | Mathias Gumz <akira at fluxbox dot org> | 2014-09-29 07:26:52 (GMT) |
commit | c5fd69cc9de2ed08176d655c1e46e9305c5543df (patch) | |
tree | 38625686b10509f575782ddce3a70667ef3cf924 /src/Screen.cc | |
parent | ed7bcc5dbcbd2d3e4dddb4c57219ef6beda240e6 (diff) | |
download | fluxbox-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.cc | 13 |
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) { | |||
1236 | FluxboxWindow *BScreen::createWindow(Window client) { | 1236 | FluxboxWindow *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 | ||