diff options
author | fluxgen <fluxgen> | 2003-09-12 22:49:14 (GMT) |
---|---|---|
committer | fluxgen <fluxgen> | 2003-09-12 22:49:14 (GMT) |
commit | a6b3e25679d80c7d703682a85692f75a8f6a8f75 (patch) | |
tree | eae33d9a82323eb0bb2168a756679fb8af4dcc97 | |
parent | 48ea10e22f74e2718578dbf4634f059cbe59fa9f (diff) | |
download | fluxbox-a6b3e25679d80c7d703682a85692f75a8f6a8f75.zip fluxbox-a6b3e25679d80c7d703682a85692f75a8f6a8f75.tar.bz2 |
optimized rendering
-rw-r--r-- | src/FbWinFrame.cc | 62 | ||||
-rw-r--r-- | src/FbWinFrame.hh | 6 | ||||
-rw-r--r-- | src/Window.cc | 47 |
3 files changed, 70 insertions, 45 deletions
diff --git a/src/FbWinFrame.cc b/src/FbWinFrame.cc index 31dfae0..387b159 100644 --- a/src/FbWinFrame.cc +++ b/src/FbWinFrame.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: FbWinFrame.cc,v 1.48 2003/09/11 19:55:27 rathnor Exp $ | 22 | // $Id: FbWinFrame.cc,v 1.49 2003/09/12 22:49:14 fluxgen Exp $ |
23 | 23 | ||
24 | #include "FbWinFrame.hh" | 24 | #include "FbWinFrame.hh" |
25 | 25 | ||
@@ -109,6 +109,7 @@ FbWinFrame::FbWinFrame(FbWinFrameTheme &theme, FbTk::ImageControl &imgctrl, | |||
109 | */ | 109 | */ |
110 | 110 | ||
111 | FbWinFrame::~FbWinFrame() { | 111 | FbWinFrame::~FbWinFrame() { |
112 | m_update_timer.stop(); | ||
112 | removeEventHandler(); | 113 | removeEventHandler(); |
113 | removeAllButtons(); | 114 | removeAllButtons(); |
114 | } | 115 | } |
@@ -137,7 +138,6 @@ void FbWinFrame::hide() { | |||
137 | 138 | ||
138 | void FbWinFrame::show() { | 139 | void FbWinFrame::show() { |
139 | m_visible = true; | 140 | m_visible = true; |
140 | reconfigure(); | ||
141 | m_window.showSubwindows(); | 141 | m_window.showSubwindows(); |
142 | m_window.show(); | 142 | m_window.show(); |
143 | } | 143 | } |
@@ -221,8 +221,17 @@ void FbWinFrame::setFocus(bool newvalue) { | |||
221 | if (m_focused == newvalue) // no need to change focus | 221 | if (m_focused == newvalue) // no need to change focus |
222 | return; | 222 | return; |
223 | 223 | ||
224 | |||
225 | |||
226 | if (m_focused && !newvalue && currentLabel()) { | ||
227 | renderButtonUnfocus(*m_current_label); | ||
228 | } else if (!m_focused && newvalue && currentLabel()) { | ||
229 | renderButtonFocus(*m_current_label); | ||
230 | } | ||
231 | |||
224 | m_focused = newvalue; | 232 | m_focused = newvalue; |
225 | reconfigure(); // reconfigure rendering for new focus value | 233 | renderButtons(); |
234 | renderHandles(); | ||
226 | } | 235 | } |
227 | 236 | ||
228 | void FbWinFrame::setDoubleClickTime(unsigned int time) { | 237 | void FbWinFrame::setDoubleClickTime(unsigned int time) { |
@@ -231,7 +240,6 @@ void FbWinFrame::setDoubleClickTime(unsigned int time) { | |||
231 | 240 | ||
232 | void FbWinFrame::setBevel(int bevel) { | 241 | void FbWinFrame::setBevel(int bevel) { |
233 | m_bevel = bevel; | 242 | m_bevel = bevel; |
234 | reconfigure(); | ||
235 | } | 243 | } |
236 | 244 | ||
237 | void FbWinFrame::addLeftButton(FbTk::Button *btn) { | 245 | void FbWinFrame::addLeftButton(FbTk::Button *btn) { |
@@ -284,13 +292,16 @@ void FbWinFrame::removeLabelButton(FbTk::TextButton &btn) { | |||
284 | return; | 292 | return; |
285 | 293 | ||
286 | m_labelbuttons.erase(erase_it); | 294 | m_labelbuttons.erase(erase_it); |
295 | |||
296 | if (*erase_it == m_current_label) | ||
297 | m_current_label = 0; | ||
287 | } | 298 | } |
288 | 299 | ||
289 | 300 | ||
290 | void FbWinFrame::moveLabelButtonLeft(const FbTk::TextButton &btn) { | 301 | void FbWinFrame::moveLabelButtonLeft(const FbTk::TextButton &btn) { |
291 | LabelList::iterator it = find(m_labelbuttons.begin(), | 302 | LabelList::iterator it = find(m_labelbuttons.begin(), |
292 | m_labelbuttons.end(), | 303 | m_labelbuttons.end(), |
293 | &btn); | 304 | &btn); |
294 | // make sure we found it and we're not at the begining | 305 | // make sure we found it and we're not at the begining |
295 | if (it == m_labelbuttons.end() || it == m_labelbuttons.begin()) | 306 | if (it == m_labelbuttons.end() || it == m_labelbuttons.begin()) |
296 | return; | 307 | return; |
@@ -333,9 +344,7 @@ void FbWinFrame::setLabelButtonFocus(FbTk::TextButton &btn) { | |||
333 | 344 | ||
334 | 345 | ||
335 | // render label buttons | 346 | // render label buttons |
336 | 347 | if (currentLabel() != 0) | |
337 | |||
338 | if (m_current_label != 0) | ||
339 | renderButtonUnfocus(*m_current_label); | 348 | renderButtonUnfocus(*m_current_label); |
340 | 349 | ||
341 | m_current_label = *it; // current focused button | 350 | m_current_label = *it; // current focused button |
@@ -528,9 +537,10 @@ void FbWinFrame::buttonReleaseEvent(XButtonEvent &event) { | |||
528 | } | 537 | } |
529 | 538 | ||
530 | void FbWinFrame::exposeEvent(XExposeEvent &event) { | 539 | void FbWinFrame::exposeEvent(XExposeEvent &event) { |
531 | if (m_label == event.window) | 540 | if (m_label == event.window) { |
532 | redrawTitle(); | 541 | m_label.clearArea(event.x, event.y, event.width, event.height); |
533 | else if (m_handle == event.window) { | 542 | m_label.updateTransparent(event.x, event.y, event.width, event.height); |
543 | } else if (m_handle == event.window) { | ||
534 | m_handle.clearArea(event.x, event.y, event.width, event.height); | 544 | m_handle.clearArea(event.x, event.y, event.width, event.height); |
535 | m_handle.updateTransparent(); | 545 | m_handle.updateTransparent(); |
536 | } else if (m_grip_left == event.window) { | 546 | } else if (m_grip_left == event.window) { |
@@ -570,6 +580,7 @@ void FbWinFrame::exposeEvent(XExposeEvent &event) { | |||
570 | if (it != m_buttons_right.end()) | 580 | if (it != m_buttons_right.end()) |
571 | (*it)->exposeEvent(event); | 581 | (*it)->exposeEvent(event); |
572 | } | 582 | } |
583 | |||
573 | } | 584 | } |
574 | 585 | ||
575 | void FbWinFrame::handleEvent(XEvent &event) { | 586 | void FbWinFrame::handleEvent(XEvent &event) { |
@@ -582,6 +593,8 @@ void FbWinFrame::configureNotifyEvent(XConfigureEvent &event) { | |||
582 | } | 593 | } |
583 | 594 | ||
584 | void FbWinFrame::reconfigure() { | 595 | void FbWinFrame::reconfigure() { |
596 | if (m_labelbuttons.size() == 0) | ||
597 | return; | ||
585 | 598 | ||
586 | // align titlebar and render it | 599 | // align titlebar and render it |
587 | if (m_use_titlebar) | 600 | if (m_use_titlebar) |
@@ -660,14 +673,13 @@ unsigned int FbWinFrame::buttonHeight() const { | |||
660 | return m_titlebar.height() - m_bevel*2; | 673 | return m_titlebar.height() - m_bevel*2; |
661 | } | 674 | } |
662 | 675 | ||
663 | |||
664 | //--------------------- private area | 676 | //--------------------- private area |
665 | 677 | ||
666 | /** | 678 | /** |
667 | aligns and redraws title | 679 | aligns and redraws title |
668 | */ | 680 | */ |
669 | void FbWinFrame::redrawTitle() { | 681 | void FbWinFrame::redrawTitle() { |
670 | if (m_labelbuttons.size() == 0 || !m_visible) | 682 | if (m_labelbuttons.size() == 0) |
671 | return; | 683 | return; |
672 | 684 | ||
673 | int button_width = label().width()/m_labelbuttons.size(); | 685 | int button_width = label().width()/m_labelbuttons.size(); |
@@ -687,7 +699,7 @@ void FbWinFrame::redrawTitle() { | |||
687 | button_width, | 699 | button_width, |
688 | label().height() + border_width); | 700 | label().height() + border_width); |
689 | (*btn_it)->clear(); | 701 | (*btn_it)->clear(); |
690 | (*btn_it)->updateTransparent(); | 702 | (*btn_it)->updateTransparent(); |
691 | } | 703 | } |
692 | m_titlebar.clear(); | 704 | m_titlebar.clear(); |
693 | m_titlebar.updateTransparent(); | 705 | m_titlebar.updateTransparent(); |
@@ -696,7 +708,7 @@ void FbWinFrame::redrawTitle() { | |||
696 | } | 708 | } |
697 | 709 | ||
698 | void FbWinFrame::redrawTitlebar() { | 710 | void FbWinFrame::redrawTitlebar() { |
699 | if (!m_use_titlebar || !m_visible) | 711 | if (!m_use_titlebar) |
700 | return; | 712 | return; |
701 | 713 | ||
702 | redrawTitle(); | 714 | redrawTitle(); |
@@ -754,7 +766,7 @@ void FbWinFrame::reconfigureTitlebar() { | |||
754 | } | 766 | } |
755 | 767 | ||
756 | void FbWinFrame::renderTitlebar() { | 768 | void FbWinFrame::renderTitlebar() { |
757 | if (!m_use_titlebar || !m_visible) | 769 | if (!m_use_titlebar) |
758 | return; | 770 | return; |
759 | 771 | ||
760 | // render pixmaps | 772 | // render pixmaps |
@@ -918,7 +930,7 @@ void FbWinFrame::init() { | |||
918 | // Note: we don't show clientarea yet | 930 | // Note: we don't show clientarea yet |
919 | 931 | ||
920 | setEventHandler(*this); | 932 | setEventHandler(*this); |
921 | reconfigure(); | 933 | // reconfigure(); |
922 | } | 934 | } |
923 | 935 | ||
924 | /** | 936 | /** |
@@ -1063,9 +1075,12 @@ void FbWinFrame::renderButtonFocus(FbTk::TextButton &button) { | |||
1063 | button.setBorderWidth(1); | 1075 | button.setBorderWidth(1); |
1064 | button.setAlpha(theme().alpha()); | 1076 | button.setAlpha(theme().alpha()); |
1065 | 1077 | ||
1066 | if (m_label_focused_pm != 0) | 1078 | if (m_label_focused_pm != 0) { |
1079 | // already set | ||
1080 | if (button.backgroundPixmap() == m_label_focused_pm) | ||
1081 | return; | ||
1067 | button.setBackgroundPixmap(m_label_focused_pm); | 1082 | button.setBackgroundPixmap(m_label_focused_pm); |
1068 | else | 1083 | } else |
1069 | button.setBackgroundColor(m_label_focused_color); | 1084 | button.setBackgroundColor(m_label_focused_color); |
1070 | 1085 | ||
1071 | button.clear(); | 1086 | button.clear(); |
@@ -1078,9 +1093,12 @@ void FbWinFrame::renderButtonUnfocus(FbTk::TextButton &button) { | |||
1078 | button.setBorderWidth(1); | 1093 | button.setBorderWidth(1); |
1079 | button.setAlpha(theme().alpha()); | 1094 | button.setAlpha(theme().alpha()); |
1080 | 1095 | ||
1081 | if (m_label_unfocused_pm != 0) | 1096 | if (m_label_unfocused_pm != 0) { |
1097 | // already set | ||
1098 | if (button.backgroundPixmap() == m_label_unfocused_pm) | ||
1099 | return; | ||
1082 | button.setBackgroundPixmap(m_label_unfocused_pm); | 1100 | button.setBackgroundPixmap(m_label_unfocused_pm); |
1083 | else | 1101 | } else |
1084 | button.setBackgroundColor(m_label_unfocused_color); | 1102 | button.setBackgroundColor(m_label_unfocused_color); |
1085 | 1103 | ||
1086 | button.clear(); | 1104 | button.clear(); |
diff --git a/src/FbWinFrame.hh b/src/FbWinFrame.hh index 6906f2a..3040b68 100644 --- a/src/FbWinFrame.hh +++ b/src/FbWinFrame.hh | |||
@@ -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: FbWinFrame.hh,v 1.17 2003/09/11 13:17:14 rathnor Exp $ | 22 | // $Id: FbWinFrame.hh,v 1.18 2003/09/12 22:49:14 fluxgen Exp $ |
23 | 23 | ||
24 | #ifndef FBWINFRAME_HH | 24 | #ifndef FBWINFRAME_HH |
25 | #define FBWINFRAME_HH | 25 | #define FBWINFRAME_HH |
@@ -168,6 +168,7 @@ public: | |||
168 | inline FbTk::FbWindow &gripLeft() { return m_grip_left; } | 168 | inline FbTk::FbWindow &gripLeft() { return m_grip_left; } |
169 | inline const FbTk::FbWindow &gripRight() const { return m_grip_right; } | 169 | inline const FbTk::FbWindow &gripRight() const { return m_grip_right; } |
170 | inline FbTk::FbWindow &gripRight() { return m_grip_right; } | 170 | inline FbTk::FbWindow &gripRight() { return m_grip_right; } |
171 | inline const FbTk::TextButton *currentLabel() const { return m_current_label; } | ||
171 | inline bool focused() const { return m_focused; } | 172 | inline bool focused() const { return m_focused; } |
172 | inline bool isShaded() const { return m_shaded; } | 173 | inline bool isShaded() const { return m_shaded; } |
173 | inline const FbWinFrameTheme &theme() const { return m_theme; } | 174 | inline const FbWinFrameTheme &theme() const { return m_theme; } |
@@ -179,8 +180,9 @@ public: | |||
179 | //@} | 180 | //@} |
180 | 181 | ||
181 | private: | 182 | private: |
182 | void redrawTitle(); | ||
183 | void redrawTitlebar(); | 183 | void redrawTitlebar(); |
184 | void redrawTitle(); | ||
185 | |||
184 | /// reposition titlebar items | 186 | /// reposition titlebar items |
185 | void reconfigureTitlebar(); | 187 | void reconfigureTitlebar(); |
186 | /** | 188 | /** |
diff --git a/src/Window.cc b/src/Window.cc index cd97f16..1781dbf 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.225 2003/09/11 21:30:20 rathnor Exp $ | 25 | // $Id: Window.cc,v 1.226 2003/09/12 22:48:49 fluxgen Exp $ |
26 | 26 | ||
27 | #include "Window.hh" | 27 | #include "Window.hh" |
28 | 28 | ||
@@ -362,7 +362,7 @@ void FluxboxWindow::init() { | |||
362 | frame().gripLeft().setCursor(frame().theme().lowerLeftAngleCursor()); | 362 | frame().gripLeft().setCursor(frame().theme().lowerLeftAngleCursor()); |
363 | frame().gripRight().setCursor(frame().theme().lowerRightAngleCursor()); | 363 | frame().gripRight().setCursor(frame().theme().lowerRightAngleCursor()); |
364 | 364 | ||
365 | frame().resize(m_client->width(), m_client->height()); | 365 | |
366 | FbTk::TextButton *btn = new FbTk::TextButton(frame().label(), | 366 | FbTk::TextButton *btn = new FbTk::TextButton(frame().label(), |
367 | frame().theme().font(), | 367 | frame().theme().font(), |
368 | m_client->title()); | 368 | m_client->title()); |
@@ -385,6 +385,8 @@ void FluxboxWindow::init() { | |||
385 | 385 | ||
386 | frame().setEventHandler(*this); | 386 | frame().setEventHandler(*this); |
387 | 387 | ||
388 | frame().resize(m_client->width(), m_client->height()); | ||
389 | |||
388 | m_last_focus_time.tv_sec = m_last_focus_time.tv_usec = 0; | 390 | m_last_focus_time.tv_sec = m_last_focus_time.tv_usec = 0; |
389 | 391 | ||
390 | // display connection | 392 | // display connection |
@@ -510,6 +512,7 @@ void FluxboxWindow::init() { | |||
510 | if (!place_window) | 512 | if (!place_window) |
511 | moveResize(frame().x(), frame().y(), frame().width(), frame().height()); | 513 | moveResize(frame().x(), frame().y(), frame().width(), frame().height()); |
512 | 514 | ||
515 | |||
513 | screen().getWorkspace(m_workspace_number)->addWindow(*this, place_window); | 516 | screen().getWorkspace(m_workspace_number)->addWindow(*this, place_window); |
514 | 517 | ||
515 | if (shaded) { // start shaded | 518 | if (shaded) { // start shaded |
@@ -549,6 +552,8 @@ void FluxboxWindow::init() { | |||
549 | 552 | ||
550 | if (m_shaped) | 553 | if (m_shaped) |
551 | shape(); | 554 | shape(); |
555 | |||
556 | |||
552 | } | 557 | } |
553 | 558 | ||
554 | /// apply shape to this window | 559 | /// apply shape to this window |
@@ -777,6 +782,8 @@ bool FluxboxWindow::removeClient(WinClient &client) { | |||
777 | 782 | ||
778 | m_labelbuttons.erase(&client); | 783 | m_labelbuttons.erase(&client); |
779 | 784 | ||
785 | frame().reconfigure(); | ||
786 | |||
780 | #ifdef DEBUG | 787 | #ifdef DEBUG |
781 | cerr<<__FILE__<<"("<<__FUNCTION__<<")["<<this<<"] numClients = "<<numClients()<<endl; | 788 | cerr<<__FILE__<<"("<<__FUNCTION__<<")["<<this<<"] numClients = "<<numClients()<<endl; |
782 | #endif // DEBUG | 789 | #endif // DEBUG |
@@ -811,7 +818,7 @@ void FluxboxWindow::nextClient() { | |||
811 | m_client = *it; | 818 | m_client = *it; |
812 | m_client->raise(); | 819 | m_client->raise(); |
813 | frame().setLabelButtonFocus(*m_labelbuttons[m_client]); | 820 | frame().setLabelButtonFocus(*m_labelbuttons[m_client]); |
814 | setInputFocus(); | 821 | frame().setFocus(setInputFocus()); |
815 | } | 822 | } |
816 | 823 | ||
817 | void FluxboxWindow::prevClient() { | 824 | void FluxboxWindow::prevClient() { |
@@ -830,7 +837,7 @@ void FluxboxWindow::prevClient() { | |||
830 | 837 | ||
831 | m_client->raise(); | 838 | m_client->raise(); |
832 | frame().setLabelButtonFocus(*m_labelbuttons[m_client]); | 839 | frame().setLabelButtonFocus(*m_labelbuttons[m_client]); |
833 | setInputFocus(); | 840 | frame().setFocus(setInputFocus()); |
834 | } | 841 | } |
835 | 842 | ||
836 | 843 | ||
@@ -908,8 +915,6 @@ void FluxboxWindow::associateClientWindow() { | |||
908 | 915 | ||
909 | frame().setClientWindow(*m_client); | 916 | frame().setClientWindow(*m_client); |
910 | frame().resizeForClient(m_client->width(), m_client->height()); | 917 | frame().resizeForClient(m_client->width(), m_client->height()); |
911 | // make sure the frame reconfigures | ||
912 | frame().reconfigure(); | ||
913 | } | 918 | } |
914 | 919 | ||
915 | 920 | ||
@@ -955,6 +960,8 @@ void FluxboxWindow::reconfigure() { | |||
955 | frame().setDoubleClickTime(Fluxbox::instance()->getDoubleClickInterval()); | 960 | frame().setDoubleClickTime(Fluxbox::instance()->getDoubleClickInterval()); |
956 | frame().setUpdateDelayTime(Fluxbox::instance()->getUpdateDelayTime()); | 961 | frame().setUpdateDelayTime(Fluxbox::instance()->getUpdateDelayTime()); |
957 | 962 | ||
963 | frame().reconfigure(); | ||
964 | |||
958 | m_windowmenu.reconfigure(); | 965 | m_windowmenu.reconfigure(); |
959 | 966 | ||
960 | } | 967 | } |
@@ -1100,9 +1107,10 @@ void FluxboxWindow::moveResize(int new_x, int new_y, | |||
1100 | new_width = width(); | 1107 | new_width = width(); |
1101 | new_height = height(); | 1108 | new_height = height(); |
1102 | } | 1109 | } |
1103 | frame().moveResize(new_x, new_y, new_width, new_height); | ||
1104 | 1110 | ||
1105 | setFocusFlag(focused); | 1111 | setFocusFlag(focused); |
1112 | frame().moveResize(new_x, new_y, new_width, new_height); | ||
1113 | |||
1106 | shaded = false; | 1114 | shaded = false; |
1107 | send_event = true; | 1115 | send_event = true; |
1108 | } else { | 1116 | } else { |
@@ -1258,13 +1266,8 @@ void FluxboxWindow::deiconify(bool reassoc, bool do_raise) { | |||
1258 | 1266 | ||
1259 | frame().show(); | 1267 | frame().show(); |
1260 | 1268 | ||
1261 | if (was_iconic && screen().doFocusNew()) { | 1269 | if (was_iconic && screen().doFocusNew()) |
1262 | setInputFocus(); | 1270 | setInputFocus(); |
1263 | } | ||
1264 | |||
1265 | if (focused != frame().focused()) | ||
1266 | frame().setFocus(focused); | ||
1267 | |||
1268 | 1271 | ||
1269 | if (reassoc && !m_client->transients.empty()) { | 1272 | if (reassoc && !m_client->transients.empty()) { |
1270 | // deiconify all transients | 1273 | // deiconify all transients |
@@ -1281,7 +1284,9 @@ void FluxboxWindow::deiconify(bool reassoc, bool do_raise) { | |||
1281 | } | 1284 | } |
1282 | } | 1285 | } |
1283 | } | 1286 | } |
1287 | |||
1284 | oplock = false; | 1288 | oplock = false; |
1289 | |||
1285 | if (do_raise) | 1290 | if (do_raise) |
1286 | raise(); | 1291 | raise(); |
1287 | } | 1292 | } |
@@ -1646,7 +1651,10 @@ void FluxboxWindow::setFocusFlag(bool focus) { | |||
1646 | } | 1651 | } |
1647 | 1652 | ||
1648 | installColormap(focus); | 1653 | installColormap(focus); |
1649 | frame().setFocus(focus); | 1654 | |
1655 | if (focus != frame().focused()) { | ||
1656 | frame().setFocus(focus); | ||
1657 | } | ||
1650 | 1658 | ||
1651 | if ((screen().isSloppyFocus() || screen().isSemiSloppyFocus()) | 1659 | if ((screen().isSloppyFocus() || screen().isSemiSloppyFocus()) |
1652 | && screen().doAutoRaise()) { | 1660 | && screen().doAutoRaise()) { |
@@ -1712,8 +1720,7 @@ void FluxboxWindow::saveBlackboxAttribs() { | |||
1712 | PropModeReplace, | 1720 | PropModeReplace, |
1713 | (unsigned char *)&m_blackbox_attrib, | 1721 | (unsigned char *)&m_blackbox_attrib, |
1714 | PropBlackboxAttributesElements | 1722 | PropBlackboxAttributesElements |
1715 | ) | 1723 | )); |
1716 | ); | ||
1717 | } | 1724 | } |
1718 | 1725 | ||
1719 | /** | 1726 | /** |
@@ -2013,11 +2020,10 @@ void FluxboxWindow::mapNotifyEvent(XMapEvent &ne) { | |||
2013 | 2020 | ||
2014 | setState(NormalState); | 2021 | setState(NormalState); |
2015 | 2022 | ||
2016 | if (client->isTransient() || screen().doFocusNew()) { | 2023 | if (client->isTransient() || screen().doFocusNew()) |
2017 | setCurrentClient(*client, true); | 2024 | setCurrentClient(*client, true); |
2018 | } | ||
2019 | else | 2025 | else |
2020 | setFocusFlag(false); | 2026 | setFocusFlag(false); |
2021 | 2027 | ||
2022 | iconic = false; | 2028 | iconic = false; |
2023 | 2029 | ||
@@ -2169,7 +2175,6 @@ void FluxboxWindow::exposeEvent(XExposeEvent &ee) { | |||
2169 | frame().exposeEvent(ee); | 2175 | frame().exposeEvent(ee); |
2170 | } | 2176 | } |
2171 | 2177 | ||
2172 | |||
2173 | void FluxboxWindow::configureRequestEvent(XConfigureRequestEvent &cr) { | 2178 | void FluxboxWindow::configureRequestEvent(XConfigureRequestEvent &cr) { |
2174 | WinClient *client = findClient(cr.window); | 2179 | WinClient *client = findClient(cr.window); |
2175 | if (client == 0) | 2180 | if (client == 0) |
@@ -2609,10 +2614,10 @@ void FluxboxWindow::applyDecorations(bool initial) { | |||
2609 | 2614 | ||
2610 | if (decorations.handle) { | 2615 | if (decorations.handle) { |
2611 | frame().showHandle(); | 2616 | frame().showHandle(); |
2612 | frame().reconfigure(); // show handle requires reconfigure | ||
2613 | } else | 2617 | } else |
2614 | frame().hideHandle(); | 2618 | frame().hideHandle(); |
2615 | 2619 | ||
2620 | frame().reconfigure(); | ||
2616 | } | 2621 | } |
2617 | 2622 | ||
2618 | void FluxboxWindow::toggleDecoration() { | 2623 | void FluxboxWindow::toggleDecoration() { |