diff options
author | fluxgen <fluxgen> | 2002-04-28 15:54:59 (GMT) |
---|---|---|
committer | fluxgen <fluxgen> | 2002-04-28 15:54:59 (GMT) |
commit | a1c872415ab45340d7346e5e58232d371ca18d52 (patch) | |
tree | cd2f364e2609ba57fd254a01f6195ed984348e96 /src | |
parent | bd878465b9d26368e2f7bd014b1fce59bc5fdcd2 (diff) | |
download | fluxbox_lack-a1c872415ab45340d7346e5e58232d371ca18d52.zip fluxbox_lack-a1c872415ab45340d7346e5e58232d371ca18d52.tar.bz2 |
minor fixes
Diffstat (limited to 'src')
-rw-r--r-- | src/Basemenu.cc | 25 |
1 files changed, 14 insertions, 11 deletions
diff --git a/src/Basemenu.cc b/src/Basemenu.cc index 9ddcb2e..354f4e6 100644 --- a/src/Basemenu.cc +++ b/src/Basemenu.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: Basemenu.cc,v 1.21 2002/04/09 12:22:06 fluxgen Exp $ | 25 | // $Id: Basemenu.cc,v 1.22 2002/04/28 15:54:59 fluxgen Exp $ |
26 | 26 | ||
27 | //use GNU extensions | 27 | //use GNU extensions |
28 | #ifndef _GNU_SOURCE | 28 | #ifndef _GNU_SOURCE |
@@ -58,9 +58,9 @@ static Basemenu *shown = (Basemenu *) 0; | |||
58 | Basemenu::Basemenu(BScreen *screen): | 58 | Basemenu::Basemenu(BScreen *screen): |
59 | m_fluxbox(Fluxbox::instance()), | 59 | m_fluxbox(Fluxbox::instance()), |
60 | m_screen(screen), | 60 | m_screen(screen), |
61 | m_display(m_fluxbox->getXDisplay()), | 61 | m_display(Fluxbox::instance()->getXDisplay()), |
62 | m_parent(0), | 62 | m_parent(0), |
63 | m_image_ctrl(m_screen->getImageControl()), | 63 | m_image_ctrl(screen->getImageControl()), |
64 | m_alignment(ALIGNDONTCARE) { | 64 | m_alignment(ALIGNDONTCARE) { |
65 | 65 | ||
66 | title_vis = | 66 | title_vis = |
@@ -439,7 +439,8 @@ void Basemenu::hide(void) { | |||
439 | if ((! torn) && hide_tree && m_parent && m_parent->isVisible()) { | 439 | if ((! torn) && hide_tree && m_parent && m_parent->isVisible()) { |
440 | Basemenu *p = m_parent; | 440 | Basemenu *p = m_parent; |
441 | 441 | ||
442 | while (p->isVisible() && (! p->torn) && p->m_parent) p = p->m_parent; | 442 | while (p->isVisible() && (! p->torn) && p->m_parent) |
443 | p = p->m_parent; | ||
443 | p->internal_hide(); | 444 | p->internal_hide(); |
444 | } else | 445 | } else |
445 | internal_hide(); | 446 | internal_hide(); |
@@ -459,7 +460,7 @@ void Basemenu::internal_hide(void) { | |||
459 | } else if (shown && shown->menu.window == menu.window) | 460 | } else if (shown && shown->menu.window == menu.window) |
460 | shown = (Basemenu *) 0; | 461 | shown = (Basemenu *) 0; |
461 | 462 | ||
462 | torn = visible = False; | 463 | torn = visible = false; |
463 | which_sub = which_press = which_sub = -1; | 464 | which_sub = which_press = which_sub = -1; |
464 | 465 | ||
465 | XUnmapWindow(m_display, menu.window); | 466 | XUnmapWindow(m_display, menu.window); |
@@ -635,7 +636,8 @@ bool Basemenu::hasSubmenu(unsigned int index) const { | |||
635 | void Basemenu::drawItem(unsigned int index, bool highlight, bool clear, | 636 | void Basemenu::drawItem(unsigned int index, bool highlight, bool clear, |
636 | int x, int y, unsigned int w, unsigned int h) | 637 | int x, int y, unsigned int w, unsigned int h) |
637 | { | 638 | { |
638 | if (index >= menuitems.size()) return; | 639 | if (index >= menuitems.size() || menuitems.size() == 0) |
640 | return; | ||
639 | 641 | ||
640 | BasemenuItem *item = menuitems[index]; | 642 | BasemenuItem *item = menuitems[index]; |
641 | if (! item) return; | 643 | if (! item) return; |
@@ -880,7 +882,7 @@ void Basemenu::buttonPressEvent(XButtonEvent *be) { | |||
880 | void Basemenu::buttonReleaseEvent(XButtonEvent *re) { | 882 | void Basemenu::buttonReleaseEvent(XButtonEvent *re) { |
881 | if (re->window == menu.title) { | 883 | if (re->window == menu.title) { |
882 | if (moving) { | 884 | if (moving) { |
883 | moving = False; | 885 | moving = false; |
884 | 886 | ||
885 | if (which_sub >= 0) | 887 | if (which_sub >= 0) |
886 | drawSubmenu(which_sub); | 888 | drawSubmenu(which_sub); |
@@ -1071,7 +1073,7 @@ void Basemenu::enterNotifyEvent(XCrossingEvent *ce) { | |||
1071 | XMoveWindow(m_display, menu.window, menu.x_shift, menu.y_shift); | 1073 | XMoveWindow(m_display, menu.window, menu.x_shift, menu.y_shift); |
1072 | } | 1074 | } |
1073 | 1075 | ||
1074 | if (which_sub >= 0) { | 1076 | if (which_sub >= 0 && static_cast<size_t>(which_sub) < menuitems.size()) { |
1075 | BasemenuItem *tmp = menuitems[which_sub]; | 1077 | BasemenuItem *tmp = menuitems[which_sub]; |
1076 | if (tmp->submenu()->isVisible()) { | 1078 | if (tmp->submenu()->isVisible()) { |
1077 | int sbl = (ce->x / menu.item_w), i = (ce->y / menu.item_h), | 1079 | int sbl = (ce->x / menu.item_w), i = (ce->y / menu.item_h), |
@@ -1094,16 +1096,17 @@ void Basemenu::leaveNotifyEvent(XCrossingEvent *ce) { | |||
1094 | if (which_press != -1 && which_sbl != -1 && menuitems.size() > 0) { | 1096 | if (which_press != -1 && which_sbl != -1 && menuitems.size() > 0) { |
1095 | int p = (which_sbl * menu.persub) + which_press; | 1097 | int p = (which_sbl * menu.persub) + which_press; |
1096 | 1098 | ||
1097 | drawItem(p, (p == which_sub), True); | 1099 | drawItem(p, (p == which_sub), true); |
1098 | 1100 | ||
1099 | which_sbl = which_press = -1; | 1101 | which_sbl = which_press = -1; |
1100 | } | 1102 | } |
1101 | 1103 | ||
1102 | if (shifted) { | 1104 | if (shifted) { |
1103 | XMoveWindow(m_display, menu.window, menu.x, menu.y); | 1105 | XMoveWindow(m_display, menu.window, menu.x, menu.y); |
1104 | shifted = False; | 1106 | shifted = false; |
1105 | 1107 | ||
1106 | if (which_sub >= 0) drawSubmenu(which_sub); | 1108 | if (which_sub >= 0) |
1109 | drawSubmenu(which_sub); | ||
1107 | } | 1110 | } |
1108 | } | 1111 | } |
1109 | } | 1112 | } |