diff options
author | rathnor <rathnor> | 2003-06-27 15:05:19 (GMT) |
---|---|---|
committer | rathnor <rathnor> | 2003-06-27 15:05:19 (GMT) |
commit | a69b117fe4a2abb4eaeb70b41a98b0561912472c (patch) | |
tree | 1d5a794c39891cd39fdf47d539eda8eac78e811f /src | |
parent | dce147f3c471ed65a1c473758293a83d655c1a8b (diff) | |
download | fluxbox-a69b117fe4a2abb4eaeb70b41a98b0561912472c.zip fluxbox-a69b117fe4a2abb4eaeb70b41a98b0561912472c.tar.bz2 |
fix slit netizen issues
Diffstat (limited to 'src')
-rw-r--r-- | src/Screen.cc | 8 | ||||
-rw-r--r-- | src/Slit.cc | 30 | ||||
-rw-r--r-- | src/WinClient.cc | 4 |
3 files changed, 30 insertions, 12 deletions
diff --git a/src/Screen.cc b/src/Screen.cc index b2d0190..eee6f2d 100644 --- a/src/Screen.cc +++ b/src/Screen.cc | |||
@@ -22,7 +22,7 @@ | |||
22 | // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER | 22 | // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER |
23 | // DEALINGS IN THE SOFTWARE. | 23 | // DEALINGS IN THE SOFTWARE. |
24 | 24 | ||
25 | // $Id: Screen.cc,v 1.195 2003/06/25 05:47:23 fluxgen Exp $ | 25 | // $Id: Screen.cc,v 1.196 2003/06/27 15:05:19 rathnor Exp $ |
26 | 26 | ||
27 | 27 | ||
28 | #include "Screen.hh" | 28 | #include "Screen.hh" |
@@ -1034,13 +1034,11 @@ void BScreen::updateNetizenConfigNotify(XEvent &e) { | |||
1034 | FluxboxWindow *BScreen::createWindow(Window client) { | 1034 | FluxboxWindow *BScreen::createWindow(Window client) { |
1035 | WinClient *winclient = new WinClient(client, *this); | 1035 | WinClient *winclient = new WinClient(client, *this); |
1036 | 1036 | ||
1037 | if (winclient->initial_state == WithdrawnState) { | ||
1038 | delete winclient; | ||
1037 | #ifdef SLIT | 1039 | #ifdef SLIT |
1038 | if (winclient->initial_state == WithdrawnState) | ||
1039 | slit()->addClient(client); | 1040 | slit()->addClient(client); |
1040 | |||
1041 | #endif // SLIT | 1041 | #endif // SLIT |
1042 | if (winclient->initial_state == WithdrawnState) { | ||
1043 | delete winclient; | ||
1044 | return 0; | 1042 | return 0; |
1045 | } | 1043 | } |
1046 | 1044 | ||
diff --git a/src/Slit.cc b/src/Slit.cc index b135303..cef7448 100644 --- a/src/Slit.cc +++ b/src/Slit.cc | |||
@@ -22,7 +22,7 @@ | |||
22 | // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER | 22 | // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER |
23 | // DEALINGS IN THE SOFTWARE. | 23 | // DEALINGS IN THE SOFTWARE. |
24 | 24 | ||
25 | // $Id: Slit.cc,v 1.68 2003/06/24 20:19:36 fluxgen Exp $ | 25 | // $Id: Slit.cc,v 1.69 2003/06/27 15:05:19 rathnor Exp $ |
26 | 26 | ||
27 | #include "Slit.hh" | 27 | #include "Slit.hh" |
28 | 28 | ||
@@ -56,6 +56,7 @@ | |||
56 | #include "SlitTheme.hh" | 56 | #include "SlitTheme.hh" |
57 | #include "SlitClient.hh" | 57 | #include "SlitClient.hh" |
58 | #include "Xutil.hh" | 58 | #include "Xutil.hh" |
59 | #include "FbAtoms.hh" | ||
59 | 60 | ||
60 | #include <algorithm> | 61 | #include <algorithm> |
61 | #include <iostream> | 62 | #include <iostream> |
@@ -67,6 +68,7 @@ | |||
67 | #endif // HAVE_SYS_STAT_H | 68 | #endif // HAVE_SYS_STAT_H |
68 | 69 | ||
69 | #include <X11/Xatom.h> | 70 | #include <X11/Xatom.h> |
71 | #include <X11/Xlib.h> | ||
70 | 72 | ||
71 | #include <iostream> | 73 | #include <iostream> |
72 | #include <algorithm> | 74 | #include <algorithm> |
@@ -452,12 +454,28 @@ void Slit::addClient(Window w) { | |||
452 | client->setWindow(client->clientWindow()); | 454 | client->setWindow(client->clientWindow()); |
453 | } | 455 | } |
454 | 456 | ||
455 | XFree(wmhints); | 457 | XFree((void *) wmhints); |
456 | } else { | 458 | } else { |
457 | client->setIconWindow(None); | 459 | client->setIconWindow(None); |
458 | client->setWindow(client->clientWindow()); | 460 | client->setWindow(client->clientWindow()); |
459 | } | 461 | } |
460 | 462 | ||
463 | Atom *proto = 0; | ||
464 | int num_return = 0; | ||
465 | FbAtoms *fbatoms = FbAtoms::instance(); | ||
466 | |||
467 | if (XGetWMProtocols(disp, w, &proto, &num_return)) { | ||
468 | |||
469 | for (int i = 0; i < num_return; ++i) { | ||
470 | if (proto[i] == fbatoms->getFluxboxStructureMessagesAtom()) | ||
471 | screen().addNetizen(w); | ||
472 | } | ||
473 | |||
474 | XFree((void *) proto); | ||
475 | } else { | ||
476 | cerr<<"Warning: Failed to read WM Protocols. "<<endl; | ||
477 | } | ||
478 | |||
461 | XWindowAttributes attrib; | 479 | XWindowAttributes attrib; |
462 | 480 | ||
463 | #ifdef KDE | 481 | #ifdef KDE |
@@ -476,7 +494,7 @@ void Slit::addClient(Window w) { | |||
476 | &ajunk, &ijunk, &uljunk, &uljunk, | 494 | &ajunk, &ijunk, &uljunk, &uljunk, |
477 | (unsigned char **) &data) == Success && data) { | 495 | (unsigned char **) &data) == Success && data) { |
478 | iskdedockapp = (data && data[0] != 0); | 496 | iskdedockapp = (data && data[0] != 0); |
479 | XFree((char *) data); | 497 | XFree((void *) data); |
480 | data = 0; | 498 | data = 0; |
481 | } | 499 | } |
482 | 500 | ||
@@ -488,7 +506,7 @@ void Slit::addClient(Window w) { | |||
488 | &ajunk, &ijunk, &uljunk, &uljunk, | 506 | &ajunk, &ijunk, &uljunk, &uljunk, |
489 | (unsigned char **) &data) == Success && data) { | 507 | (unsigned char **) &data) == Success && data) { |
490 | iskdedockapp = (data && data[0] != 0); | 508 | iskdedockapp = (data && data[0] != 0); |
491 | XFree((char *) data); | 509 | XFree((void *) data); |
492 | data = 0; | 510 | data = 0; |
493 | } | 511 | } |
494 | } | 512 | } |
@@ -964,7 +982,7 @@ void Slit::handleEvent(XEvent &event) { | |||
964 | 982 | ||
965 | if (data) | 983 | if (data) |
966 | iskdedockapp = True; | 984 | iskdedockapp = True; |
967 | XFree((char *) data); | 985 | XFree((void *) data); |
968 | data = 0; | 986 | data = 0; |
969 | } | 987 | } |
970 | 988 | ||
@@ -975,7 +993,7 @@ void Slit::handleEvent(XEvent &event) { | |||
975 | m_kwm1_dockwindow, &ajunk, &ijunk, &uljunk, | 993 | m_kwm1_dockwindow, &ajunk, &ijunk, &uljunk, |
976 | &uljunk, (unsigned char **) &data) == Success && data) { | 994 | &uljunk, (unsigned char **) &data) == Success && data) { |
977 | iskdedockapp = (data && data[0] != 0); | 995 | iskdedockapp = (data && data[0] != 0); |
978 | XFree((char *) data); | 996 | XFree((void *) data); |
979 | data = 0; | 997 | data = 0; |
980 | } | 998 | } |
981 | } | 999 | } |
diff --git a/src/WinClient.cc b/src/WinClient.cc index ddc0c57..4b13487 100644 --- a/src/WinClient.cc +++ b/src/WinClient.cc | |||
@@ -19,7 +19,7 @@ | |||
19 | // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER | 19 | // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER |
20 | // DEALINGS IN THE SOFTWARE. | 20 | // DEALINGS IN THE SOFTWARE. |
21 | 21 | ||
22 | // $Id: WinClient.cc,v 1.15 2003/06/24 12:58:57 rathnor Exp $ | 22 | // $Id: WinClient.cc,v 1.16 2003/06/27 15:05:19 rathnor Exp $ |
23 | 23 | ||
24 | #include "WinClient.hh" | 24 | #include "WinClient.hh" |
25 | 25 | ||
@@ -96,6 +96,8 @@ WinClient::~WinClient() { | |||
96 | transients.pop_back(); | 96 | transients.pop_back(); |
97 | } | 97 | } |
98 | 98 | ||
99 | screen().removeNetizen(window()); | ||
100 | |||
99 | if (window_group != 0) { | 101 | if (window_group != 0) { |
100 | fluxbox->removeGroupSearch(window_group); | 102 | fluxbox->removeGroupSearch(window_group); |
101 | window_group = 0; | 103 | window_group = 0; |