diff options
author | fluxgen <fluxgen> | 2002-04-04 22:39:52 (GMT) |
---|---|---|
committer | fluxgen <fluxgen> | 2002-04-04 22:39:52 (GMT) |
commit | 675f28ad9e6fa12c9470694983c9178422ee98a9 (patch) | |
tree | 2b8fec45acdaf56b0e323b1b4db2be2da027d384 | |
parent | d78a4ac9a983e6ef20e3ddc97af50a963e35c54d (diff) | |
download | fluxbox_pavel-675f28ad9e6fa12c9470694983c9178422ee98a9.zip fluxbox_pavel-675f28ad9e6fa12c9470694983c9178422ee98a9.tar.bz2 |
fixed iconbar update bug
-rw-r--r-- | src/Window.cc | 40 | ||||
-rw-r--r-- | src/Window.hh | 4 |
2 files changed, 23 insertions, 21 deletions
diff --git a/src/Window.cc b/src/Window.cc index 8ed85ff..3b0afd8 100644 --- a/src/Window.cc +++ b/src/Window.cc | |||
@@ -22,7 +22,9 @@ | |||
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.39 2002/04/04 14:23:30 fluxgen Exp $ | 25 | // $Id: Window.cc,v 1.40 2002/04/04 22:39:52 fluxgen Exp $ |
26 | |||
27 | #include "Window.hh" | ||
26 | 28 | ||
27 | //use GNU extensions | 29 | //use GNU extensions |
28 | #ifndef _GNU_SOURCE | 30 | #ifndef _GNU_SOURCE |
@@ -38,7 +40,6 @@ | |||
38 | #include "Icon.hh" | 40 | #include "Icon.hh" |
39 | #include "Screen.hh" | 41 | #include "Screen.hh" |
40 | #include "Toolbar.hh" | 42 | #include "Toolbar.hh" |
41 | #include "Window.hh" | ||
42 | #include "Windowmenu.hh" | 43 | #include "Windowmenu.hh" |
43 | #include "StringUtil.hh" | 44 | #include "StringUtil.hh" |
44 | 45 | ||
@@ -1430,7 +1431,7 @@ void FluxboxWindow::getWMName(void) { | |||
1430 | char **list; | 1431 | char **list; |
1431 | int num; | 1432 | int num; |
1432 | I18n *i18n = I18n::instance(); | 1433 | I18n *i18n = I18n::instance(); |
1433 | 1434 | ||
1434 | if (XGetWMName(display, client.window, &text_prop)) { | 1435 | if (XGetWMName(display, client.window, &text_prop)) { |
1435 | if (text_prop.value && text_prop.nitems > 0) { | 1436 | if (text_prop.value && text_prop.nitems > 0) { |
1436 | if (text_prop.encoding != XA_STRING) { | 1437 | if (text_prop.encoding != XA_STRING) { |
@@ -1469,6 +1470,7 @@ void FluxboxWindow::getWMName(void) { | |||
1469 | } | 1470 | } |
1470 | 1471 | ||
1471 | client.title_text_w += (frame.bevel_w * 4); | 1472 | client.title_text_w += (frame.bevel_w * 4); |
1473 | |||
1472 | } | 1474 | } |
1473 | 1475 | ||
1474 | 1476 | ||
@@ -1498,6 +1500,7 @@ void FluxboxWindow::getWMIconName(void) { | |||
1498 | client.icon_title = getTitle(); | 1500 | client.icon_title = getTitle(); |
1499 | } else | 1501 | } else |
1500 | client.icon_title = getTitle(); | 1502 | client.icon_title = getTitle(); |
1503 | |||
1501 | } | 1504 | } |
1502 | 1505 | ||
1503 | 1506 | ||
@@ -2971,6 +2974,7 @@ void FluxboxWindow::propertyNotifyEvent(Atom atom) { | |||
2971 | case XA_WM_ICON_NAME: | 2974 | case XA_WM_ICON_NAME: |
2972 | getWMIconName(); | 2975 | getWMIconName(); |
2973 | if (iconic) screen->iconUpdate(); | 2976 | if (iconic) screen->iconUpdate(); |
2977 | updateIcon(); | ||
2974 | break; | 2978 | break; |
2975 | 2979 | ||
2976 | case XA_WM_NAME: | 2980 | case XA_WM_NAME: |
@@ -2984,22 +2988,9 @@ void FluxboxWindow::propertyNotifyEvent(Atom atom) { | |||
2984 | 2988 | ||
2985 | if (! iconic) | 2989 | if (! iconic) |
2986 | screen->getWorkspace(workspace_number)->update(); | 2990 | screen->getWorkspace(workspace_number)->update(); |
2987 | else if (Fluxbox::instance()->useIconBar()) { | 2991 | else |
2988 | IconBar *iconbar = 0; | 2992 | updateIcon(); |
2989 | IconBarObj *icon = 0; | 2993 | |
2990 | if ((iconbar = screen->getToolbar()->getIconBar()) != 0) { | ||
2991 | if ((icon = iconbar->findIcon(this)) != 0) | ||
2992 | iconbar->draw(icon, icon->getWidth()); | ||
2993 | #ifdef DEBUG | ||
2994 | else | ||
2995 | cerr<<__FILE__<<"("<<__LINE__<<"): can't find icon!"<<endl; | ||
2996 | #endif //DEBUG | ||
2997 | } | ||
2998 | #ifdef DEBUG | ||
2999 | else | ||
3000 | cerr<<__FILE__<<"("<<__LINE__<<"): can't find iconbar!"<<endl; | ||
3001 | #endif //DEBUG | ||
3002 | } | ||
3003 | 2994 | ||
3004 | break; | 2995 | break; |
3005 | 2996 | ||
@@ -3607,6 +3598,17 @@ void FluxboxWindow::stopResizing(Window win) { | |||
3607 | XUngrabPointer(display, CurrentTime); | 3598 | XUngrabPointer(display, CurrentTime); |
3608 | } | 3599 | } |
3609 | 3600 | ||
3601 | //finds and redraw the icon label | ||
3602 | void FluxboxWindow::updateIcon() { | ||
3603 | if (Fluxbox::instance()->useIconBar()) { | ||
3604 | IconBar *iconbar = 0; | ||
3605 | IconBarObj *icon = 0; | ||
3606 | if ((iconbar = screen->getToolbar()->getIconBar()) != 0) { | ||
3607 | if ((icon = iconbar->findIcon(this)) != 0) | ||
3608 | iconbar->draw(icon, icon->getWidth()); | ||
3609 | } | ||
3610 | } | ||
3611 | } | ||
3610 | 3612 | ||
3611 | void FluxboxWindow::restore(void) { | 3613 | void FluxboxWindow::restore(void) { |
3612 | XChangeSaveSet(display, client.window, SetModeDelete); | 3614 | XChangeSaveSet(display, client.window, SetModeDelete); |
diff --git a/src/Window.hh b/src/Window.hh index 4611385..0dc1e91 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.17 2002/04/04 14:23:30 fluxgen Exp $ | 25 | // $Id: Window.hh,v 1.18 2002/04/04 22:39:52 fluxgen Exp $ |
26 | 26 | ||
27 | #ifndef WINDOW_HH | 27 | #ifndef WINDOW_HH |
28 | #define WINDOW_HH | 28 | #define WINDOW_HH |
@@ -317,7 +317,7 @@ private: | |||
317 | void stopMoving(); | 317 | void stopMoving(); |
318 | void startResizing(XMotionEvent *me, bool left); | 318 | void startResizing(XMotionEvent *me, bool left); |
319 | void stopResizing(Window win=0); | 319 | void stopResizing(Window win=0); |
320 | 320 | void updateIcon(); | |
321 | 321 | ||
322 | #ifdef GNOME | 322 | #ifdef GNOME |
323 | 323 | ||