diff options
-rw-r--r-- | src/Screen.cc | 3 | ||||
-rw-r--r-- | src/WinClient.cc | 4 | ||||
-rw-r--r-- | src/Window.cc | 20 | ||||
-rw-r--r-- | src/Window.hh | 3 |
4 files changed, 21 insertions, 9 deletions
diff --git a/src/Screen.cc b/src/Screen.cc index 3838528..6242b4a 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.208 2003/07/28 15:06:33 rathnor Exp $ | 25 | // $Id: Screen.cc,v 1.209 2003/07/28 16:29:24 rathnor Exp $ |
26 | 26 | ||
27 | 27 | ||
28 | #include "Screen.hh" | 28 | #include "Screen.hh" |
@@ -1035,6 +1035,7 @@ void BScreen::updateNetizenConfigNotify(XEvent &e) { | |||
1035 | } | 1035 | } |
1036 | 1036 | ||
1037 | FluxboxWindow *BScreen::createWindow(Window client) { | 1037 | FluxboxWindow *BScreen::createWindow(Window client) { |
1038 | XSync(FbTk::App::instance()->display(), false); | ||
1038 | WinClient *winclient = new WinClient(client, *this); | 1039 | WinClient *winclient = new WinClient(client, *this); |
1039 | 1040 | ||
1040 | if (winclient->initial_state == WithdrawnState) { | 1041 | if (winclient->initial_state == WithdrawnState) { |
diff --git a/src/WinClient.cc b/src/WinClient.cc index 6fce6f5..3f817d8 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.21 2003/07/28 15:46:00 rathnor Exp $ | 22 | // $Id: WinClient.cc,v 1.22 2003/07/28 16:29:25 rathnor Exp $ |
23 | 23 | ||
24 | #include "WinClient.hh" | 24 | #include "WinClient.hh" |
25 | 25 | ||
@@ -592,6 +592,8 @@ void WinClient::updateWMProtocols() { | |||
592 | } | 592 | } |
593 | 593 | ||
594 | XFree(proto); | 594 | XFree(proto); |
595 | if (m_win) | ||
596 | m_win->updateFunctions(); | ||
595 | } else { | 597 | } else { |
596 | cerr<<"Warning: Failed to read WM Protocols. "<<endl; | 598 | cerr<<"Warning: Failed to read WM Protocols. "<<endl; |
597 | } | 599 | } |
diff --git a/src/Window.cc b/src/Window.cc index 6f82f90..d84a06d 100644 --- a/src/Window.cc +++ b/src/Window.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: Window.cc,v 1.214 2003/07/28 15:46:00 rathnor Exp $ | 25 | // $Id: Window.cc,v 1.215 2003/07/28 16:29:25 rathnor Exp $ |
26 | 26 | ||
27 | #include "Window.hh" | 27 | #include "Window.hh" |
28 | 28 | ||
@@ -425,8 +425,6 @@ void FluxboxWindow::init() { | |||
425 | else | 425 | else |
426 | getMWMHints(); | 426 | getMWMHints(); |
427 | 427 | ||
428 | functions.close = m_client->isClosable(); | ||
429 | |||
430 | //!! | 428 | //!! |
431 | // fetch client size and placement | 429 | // fetch client size and placement |
432 | XWindowAttributes wattrib; | 430 | XWindowAttributes wattrib; |
@@ -1035,10 +1033,20 @@ void FluxboxWindow::getMWMHints() { | |||
1035 | functions.close = true; | 1033 | functions.close = true; |
1036 | } | 1034 | } |
1037 | } | 1035 | } |
1038 | |||
1039 | |||
1040 | } | 1036 | } |
1041 | 1037 | ||
1038 | void FluxboxWindow::updateFunctions() { | ||
1039 | if (!m_client) | ||
1040 | return; | ||
1041 | bool changed = false; | ||
1042 | if (m_client->isClosable() != functions.close) { | ||
1043 | functions.close = m_client->isClosable(); | ||
1044 | changed = true; | ||
1045 | } | ||
1046 | |||
1047 | if (changed) | ||
1048 | setupWindow(); | ||
1049 | } | ||
1042 | 1050 | ||
1043 | void FluxboxWindow::getBlackboxHints() { | 1051 | void FluxboxWindow::getBlackboxHints() { |
1044 | const FluxboxWindow::BlackboxHints *hint = m_client->getBlackboxHint(); | 1052 | const FluxboxWindow::BlackboxHints *hint = m_client->getBlackboxHint(); |
@@ -3461,7 +3469,7 @@ void FluxboxWindow::setupWindow() { | |||
3461 | newbutton->setOnClick(maximize_horiz_cmd, 3); | 3469 | newbutton->setOnClick(maximize_horiz_cmd, 3); |
3462 | newbutton->setOnClick(maximize_vert_cmd, 2); | 3470 | newbutton->setOnClick(maximize_vert_cmd, 2); |
3463 | 3471 | ||
3464 | } else if (isClosable() && (*dir)[i] == Fluxbox::CLOSE) { | 3472 | } else if (m_client->isClosable() && (*dir)[i] == Fluxbox::CLOSE) { |
3465 | newbutton = new WinButton(*this, winbutton_theme, | 3473 | newbutton = new WinButton(*this, winbutton_theme, |
3466 | WinButton::CLOSE, | 3474 | WinButton::CLOSE, |
3467 | frame.titlebar(), | 3475 | frame.titlebar(), |
diff --git a/src/Window.hh b/src/Window.hh index 4bcef1f..135c172 100644 --- a/src/Window.hh +++ b/src/Window.hh | |||
@@ -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: Window.hh,v 1.89 2003/07/28 15:06:35 rathnor Exp $ | 25 | // $Id: Window.hh,v 1.90 2003/07/28 16:29:25 rathnor Exp $ |
26 | 26 | ||
27 | #ifndef WINDOW_HH | 27 | #ifndef WINDOW_HH |
28 | #define WINDOW_HH | 28 | #define WINDOW_HH |
@@ -214,6 +214,7 @@ public: | |||
214 | 214 | ||
215 | void setWorkspace(int n); | 215 | void setWorkspace(int n); |
216 | void changeBlackboxHints(const BlackboxHints &bh); | 216 | void changeBlackboxHints(const BlackboxHints &bh); |
217 | void updateFunctions(); | ||
217 | void restoreAttributes(); | 218 | void restoreAttributes(); |
218 | void showMenu(int mx, int my); | 219 | void showMenu(int mx, int my); |
219 | // popup menu on last button press position | 220 | // popup menu on last button press position |