diff options
author | rathnor <rathnor> | 2004-09-11 12:33:14 (GMT) |
---|---|---|
committer | rathnor <rathnor> | 2004-09-11 12:33:14 (GMT) |
commit | 7d793fc6a8d7aa07a7636df2e96054c4a8e2c6a8 (patch) | |
tree | ad753983b54d61f8a01fb32794d67bf50585789e /src | |
parent | c8f9cf1177b6de1cc210f0706dae302b9aa4f7b5 (diff) | |
download | fluxbox_pavel-7d793fc6a8d7aa07a7636df2e96054c4a8e2c6a8.zip fluxbox_pavel-7d793fc6a8d7aa07a7636df2e96054c4a8e2c6a8.tar.bz2 |
fix issues that resulted in unnecessary X errors
Diffstat (limited to 'src')
-rw-r--r-- | src/FbTk/FbPixmap.cc | 22 | ||||
-rw-r--r-- | src/FbTk/FbWindow.cc | 7 | ||||
-rw-r--r-- | src/FbTk/FbWindow.hh | 4 | ||||
-rw-r--r-- | src/FbTk/Menu.cc | 14 | ||||
-rw-r--r-- | src/Window.cc | 4 | ||||
-rw-r--r-- | src/fluxbox.cc | 28 |
6 files changed, 43 insertions, 36 deletions
diff --git a/src/FbTk/FbPixmap.cc b/src/FbTk/FbPixmap.cc index 43e74d8..66eee21 100644 --- a/src/FbTk/FbPixmap.cc +++ b/src/FbTk/FbPixmap.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: FbPixmap.cc,v 1.14 2004/09/10 15:46:08 akir Exp $ | 22 | // $Id: FbPixmap.cc,v 1.15 2004/09/11 12:33:14 rathnor Exp $ |
23 | 23 | ||
24 | #include "FbPixmap.hh" | 24 | #include "FbPixmap.hh" |
25 | #include "App.hh" | 25 | #include "App.hh" |
@@ -305,28 +305,26 @@ Pixmap FbPixmap::getRootPixmap(int screen_num) { | |||
305 | }; | 305 | }; |
306 | 306 | ||
307 | Pixmap root_pm = None; | 307 | Pixmap root_pm = None; |
308 | |||
309 | for (prop = 0; prop_ids[prop]; prop++) { | 308 | for (prop = 0; prop_ids[prop]; prop++) { |
310 | if (XGetWindowProperty(s_display, | 309 | if (XGetWindowProperty(s_display, |
311 | RootWindow(s_display, screen_num), | 310 | RootWindow(s_display, screen_num), |
312 | XInternAtom(s_display, prop_ids[prop], False), | 311 | XInternAtom(s_display, prop_ids[prop], False), |
313 | 0L, 4, | 312 | 0l, 4l, |
314 | False, XA_PIXMAP, | 313 | False, XA_PIXMAP, |
315 | &real_type, &real_format, | 314 | &real_type, &real_format, |
316 | &items_read, &items_left, | 315 | &items_read, &items_left, |
317 | (unsigned char **) &data) == Success && | 316 | (unsigned char **) &data) == Success) { |
318 | real_format == 32 && items_read == 1) { | 317 | if (real_format == 32 && items_read == 1) { |
319 | 318 | ||
320 | if (strcmp(prop_ids[prop], "_XSETROOT_ID") == 0) { | 319 | if (print_error && strcmp(prop_ids[prop], "_XSETROOT_ID") == 0) { |
321 | if (print_error) { | ||
322 | fprintf(stderr, "%s", error_message); | 320 | fprintf(stderr, "%s", error_message); |
323 | print_error = false; | 321 | print_error = false; |
324 | } | 322 | } else |
325 | } else | 323 | root_pm = (Pixmap) (*data); |
326 | root_pm = (Pixmap) (*data); | 324 | } |
327 | |||
328 | XFree(data); | 325 | XFree(data); |
329 | break; | 326 | if (root_pm != None) |
327 | break; | ||
330 | } | 328 | } |
331 | } | 329 | } |
332 | 330 | ||
diff --git a/src/FbTk/FbWindow.cc b/src/FbTk/FbWindow.cc index ea84701..2a4aafa 100644 --- a/src/FbTk/FbWindow.cc +++ b/src/FbTk/FbWindow.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: FbWindow.cc,v 1.39 2004/09/10 15:46:08 akir Exp $ | 22 | // $Id: FbWindow.cc,v 1.40 2004/09/11 12:33:14 rathnor Exp $ |
23 | 23 | ||
24 | #include "FbWindow.hh" | 24 | #include "FbWindow.hh" |
25 | #include "FbPixmap.hh" | 25 | #include "FbPixmap.hh" |
@@ -315,10 +315,11 @@ void FbWindow::unsetCursor() { | |||
315 | XUndefineCursor(s_display, window()); | 315 | XUndefineCursor(s_display, window()); |
316 | } | 316 | } |
317 | 317 | ||
318 | void FbWindow::reparent(const FbWindow &parent, int x, int y) { | 318 | void FbWindow::reparent(const FbWindow &parent, int x, int y, bool continuing) { |
319 | XReparentWindow(s_display, window(), parent.window(), x, y); | 319 | XReparentWindow(s_display, window(), parent.window(), x, y); |
320 | m_parent = &parent; | 320 | m_parent = &parent; |
321 | updateGeometry(); | 321 | if (continuing) // we will continue managing this window after reparent |
322 | updateGeometry(); | ||
322 | } | 323 | } |
323 | 324 | ||
324 | std::string FbWindow::textProperty(Atom property) const { | 325 | std::string FbWindow::textProperty(Atom property) const { |
diff --git a/src/FbTk/FbWindow.hh b/src/FbTk/FbWindow.hh index 36b39be..c39b8c1 100644 --- a/src/FbTk/FbWindow.hh +++ b/src/FbTk/FbWindow.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: FbWindow.hh,v 1.33 2004/09/10 15:46:08 akir Exp $ | 22 | // $Id: FbWindow.hh,v 1.34 2004/09/11 12:33:14 rathnor Exp $ |
23 | 23 | ||
24 | #ifndef FBTK_FBWINDOW_HH | 24 | #ifndef FBTK_FBWINDOW_HH |
25 | #define FBTK_FBWINDOW_HH | 25 | #define FBTK_FBWINDOW_HH |
@@ -119,7 +119,7 @@ public: | |||
119 | void setCursor(Cursor cur); | 119 | void setCursor(Cursor cur); |
120 | /// uses the parents cursor instead | 120 | /// uses the parents cursor instead |
121 | void unsetCursor(); | 121 | void unsetCursor(); |
122 | void reparent(const FbWindow &parent, int x, int y); | 122 | void reparent(const FbWindow &parent, int x, int y, bool continuing = true); |
123 | 123 | ||
124 | bool property(Atom property, | 124 | bool property(Atom property, |
125 | long long_offset, long long_length, | 125 | long long_offset, long long_length, |
diff --git a/src/FbTk/Menu.cc b/src/FbTk/Menu.cc index a1fdf8c..c784498 100644 --- a/src/FbTk/Menu.cc +++ b/src/FbTk/Menu.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: Menu.cc,v 1.80 2004/09/09 14:29:10 akir Exp $ | 25 | // $Id: Menu.cc,v 1.81 2004/09/11 12:33:14 rathnor Exp $ |
26 | 26 | ||
27 | //use GNU extensions | 27 | //use GNU extensions |
28 | #ifndef _GNU_SOURCE | 28 | #ifndef _GNU_SOURCE |
@@ -433,7 +433,7 @@ void Menu::update(int active_index) { | |||
433 | } | 433 | } |
434 | 434 | ||
435 | int itmp = (theme().itemHeight() * menu.persub); | 435 | int itmp = (theme().itemHeight() * menu.persub); |
436 | menu.frame_h = itmp < 0 ? 0 : itmp; | 436 | menu.frame_h = itmp < 1 ? 1 : itmp; |
437 | 437 | ||
438 | int new_width = (menu.sublevels * menu.item_w); | 438 | int new_width = (menu.sublevels * menu.item_w); |
439 | int new_height = menu.frame_h; | 439 | int new_height = menu.frame_h; |
@@ -442,8 +442,12 @@ void Menu::update(int active_index) { | |||
442 | new_height += theme().titleHeight() + ((menu.frame_h > 0)?menu.title.borderWidth():0); | 442 | new_height += theme().titleHeight() + ((menu.frame_h > 0)?menu.title.borderWidth():0); |
443 | 443 | ||
444 | 444 | ||
445 | if (new_width < 1) | 445 | if (new_width < 1) { |
446 | new_width = menu.item_w; | 446 | if (menu.item_w > 0) |
447 | new_width = menu.item_w; | ||
448 | else | ||
449 | new_width = 1; | ||
450 | } | ||
447 | 451 | ||
448 | if (new_height < 1) | 452 | if (new_height < 1) |
449 | new_height = 1; | 453 | new_height = 1; |
@@ -548,7 +552,7 @@ void Menu::update(int active_index) { | |||
548 | } | 552 | } |
549 | 553 | ||
550 | menu.frame.moveResize(0, ((title_vis) ? menu.title.y() + menu.title.height() + | 554 | menu.frame.moveResize(0, ((title_vis) ? menu.title.y() + menu.title.height() + |
551 | menu.title.borderWidth()*2 : 0), | 555 | menu.title.borderWidth()*2 : 1), |
552 | width(), menu.frame_h); | 556 | width(), menu.frame_h); |
553 | 557 | ||
554 | 558 | ||
diff --git a/src/Window.cc b/src/Window.cc index 8187c15..a110686 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.298 2004/08/31 15:26:38 rathnor Exp $ | 25 | // $Id: Window.cc,v 1.299 2004/09/11 12:33:14 rathnor Exp $ |
26 | 26 | ||
27 | #include "Window.hh" | 27 | #include "Window.hh" |
28 | 28 | ||
@@ -3232,7 +3232,7 @@ void FluxboxWindow::restore(WinClient *client, bool remap) { | |||
3232 | 3232 | ||
3233 | #endif // DEBUG | 3233 | #endif // DEBUG |
3234 | // reparent to root window | 3234 | // reparent to root window |
3235 | client->reparent(screen().rootWindow(), frame().x(), frame().y()); | 3235 | client->reparent(screen().rootWindow(), frame().x(), frame().y(), false); |
3236 | 3236 | ||
3237 | if (!remap) | 3237 | if (!remap) |
3238 | client->hide(); | 3238 | client->hide(); |
diff --git a/src/fluxbox.cc b/src/fluxbox.cc index f242f8c..324fb05 100644 --- a/src/fluxbox.cc +++ b/src/fluxbox.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: fluxbox.cc,v 1.252 2004/09/08 16:50:42 akir Exp $ | 25 | // $Id: fluxbox.cc,v 1.253 2004/09/11 12:33:14 rathnor Exp $ |
26 | 26 | ||
27 | #include "fluxbox.hh" | 27 | #include "fluxbox.hh" |
28 | 28 | ||
@@ -386,18 +386,20 @@ void copyFile(const std::string &from, const std::string &to) { | |||
386 | } // end anonymous | 386 | } // end anonymous |
387 | 387 | ||
388 | static int handleXErrors(Display *d, XErrorEvent *e) { | 388 | static int handleXErrors(Display *d, XErrorEvent *e) { |
389 | if (e->error_code == BadWindow) | ||
390 | last_bad_window = e->resourceid; | ||
389 | #ifdef DEBUG | 391 | #ifdef DEBUG |
390 | /* | 392 | else { |
391 | char errtxt[128]; | 393 | // ignore bad window ones, they happen a lot |
392 | 394 | // when windows close themselves | |
393 | XGetErrorText(d, e->error_code, errtxt, 128); | 395 | char errtxt[128]; |
394 | cerr<<"Fluxbox: X Error: "<<errtxt<<"("<<(int)e->error_code<<") opcodes "<< | 396 | |
395 | (int)e->request_code<<"/"<<(int)e->minor_code<<" resource 0x"<<hex<<(int)e->resourceid<<dec<<endl; | 397 | XGetErrorText(d, e->error_code, errtxt, 128); |
396 | */ | 398 | cerr<<"Fluxbox: X Error: "<<errtxt<<"("<<(int)e->error_code<<") opcodes "<< |
399 | (int)e->request_code<<"/"<<(int)e->minor_code<<" resource 0x"<<hex<<(int)e->resourceid<<dec<<endl; | ||
400 | } | ||
397 | #endif // !DEBUG | 401 | #endif // !DEBUG |
398 | 402 | ||
399 | if (e->error_code == BadWindow) | ||
400 | last_bad_window = e->resourceid; | ||
401 | 403 | ||
402 | return False; | 404 | return False; |
403 | } | 405 | } |
@@ -501,6 +503,7 @@ Fluxbox::Fluxbox(int argc, char **argv, const char *dpy_name, const char *rcfile | |||
501 | m_reconfig_timer.setTimeout(to); | 503 | m_reconfig_timer.setTimeout(to); |
502 | m_reconfig_timer.setCommand(reconfig_cmd); | 504 | m_reconfig_timer.setCommand(reconfig_cmd); |
503 | m_reconfig_timer.fireOnce(true); | 505 | m_reconfig_timer.fireOnce(true); |
506 | //XSynchronize(disp, True); | ||
504 | 507 | ||
505 | s_singleton = this; | 508 | s_singleton = this; |
506 | m_have_shape = false; | 509 | m_have_shape = false; |
@@ -633,10 +636,11 @@ Fluxbox::Fluxbox(int argc, char **argv, const char *dpy_name, const char *rcfile | |||
633 | FbTk::ThemeManager::instance().load(FbTk::StringUtil::expandFilename(getStyleFilename())); | 636 | FbTk::ThemeManager::instance().load(FbTk::StringUtil::expandFilename(getStyleFilename())); |
634 | 637 | ||
635 | XSynchronize(disp, False); | 638 | XSynchronize(disp, False); |
639 | //XSynchronize(disp, True); | ||
636 | sync(false); | 640 | sync(false); |
637 | 641 | ||
638 | m_reconfigure_wait = m_reread_menu_wait = false; | 642 | m_reconfigure_wait = m_reread_menu_wait = false; |
639 | 643 | ||
640 | // Create keybindings handler and load keys file | 644 | // Create keybindings handler and load keys file |
641 | m_key.reset(new Keys(StringUtil::expandFilename(*m_rc_keyfile).c_str())); | 645 | m_key.reset(new Keys(StringUtil::expandFilename(*m_rc_keyfile).c_str())); |
642 | 646 | ||
@@ -1813,7 +1817,7 @@ void Fluxbox::load_rc(BScreen &screen) { | |||
1813 | for (unsigned int i=0; i<paths.size(); ++i) | 1817 | for (unsigned int i=0; i<paths.size(); ++i) |
1814 | FbTk::Image::addSearchPath(paths[i]); | 1818 | FbTk::Image::addSearchPath(paths[i]); |
1815 | } | 1819 | } |
1816 | 1820 | ||
1817 | if (!dbfile.empty()) { | 1821 | if (!dbfile.empty()) { |
1818 | if (!m_screen_rm.load(dbfile.c_str())) { | 1822 | if (!m_screen_rm.load(dbfile.c_str())) { |
1819 | cerr<<_FBTEXT(Fluxbox, CantLoadRCFile, "Failed to load database", "Failed trying to read rc file")<<":"<<dbfile<<endl; | 1823 | cerr<<_FBTEXT(Fluxbox, CantLoadRCFile, "Failed to load database", "Failed trying to read rc file")<<":"<<dbfile<<endl; |