aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorrathnor <rathnor>2003-06-27 15:05:19 (GMT)
committerrathnor <rathnor>2003-06-27 15:05:19 (GMT)
commita69b117fe4a2abb4eaeb70b41a98b0561912472c (patch)
tree1d5a794c39891cd39fdf47d539eda8eac78e811f
parentdce147f3c471ed65a1c473758293a83d655c1a8b (diff)
downloadfluxbox_pavel-a69b117fe4a2abb4eaeb70b41a98b0561912472c.zip
fluxbox_pavel-a69b117fe4a2abb4eaeb70b41a98b0561912472c.tar.bz2
fix slit netizen issues
-rw-r--r--ChangeLog3
-rw-r--r--src/Screen.cc8
-rw-r--r--src/Slit.cc30
-rw-r--r--src/WinClient.cc4
4 files changed, 33 insertions, 12 deletions
diff --git a/ChangeLog b/ChangeLog
index badc7a2..da7a447 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,8 @@
1(Format: Year/Month/Day) 1(Format: Year/Month/Day)
2Changes for 0.9.4: 2Changes for 0.9.4:
3*03/06/28:
4 * Fix slit netizens (e.g. withdrawn pager) (Simon)
5 Slit.cc WinClient.cc Screen.cc
3*03/06/26: 6*03/06/26:
4 * Speedups for having many (particularly stuck) windows (Simon) 7 * Speedups for having many (particularly stuck) windows (Simon)
5 Toolbar.hh/cc IconBar.hh/cc ToolbarHandler.cc Gnome.cc Window.cc 8 Toolbar.hh/cc IconBar.hh/cc ToolbarHandler.cc Gnome.cc Window.cc
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) {
1034FluxboxWindow *BScreen::createWindow(Window client) { 1034FluxboxWindow *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;