changed to std::max/min and fixed some if-statments
This commit is contained in:
parent
2604c09bb0
commit
50e3ef9b4a
1 changed files with 31 additions and 22 deletions
|
@ -22,7 +22,7 @@
|
||||||
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||||
// DEALINGS IN THE SOFTWARE.
|
// DEALINGS IN THE SOFTWARE.
|
||||||
|
|
||||||
// $Id: Basemenu.cc,v 1.10 2002/02/08 13:47:11 fluxgen Exp $
|
// $Id: Basemenu.cc,v 1.11 2002/03/18 15:42:34 fluxgen Exp $
|
||||||
|
|
||||||
// stupid macros needed to access some functions in version 2 of the GNU C
|
// stupid macros needed to access some functions in version 2 of the GNU C
|
||||||
// library
|
// library
|
||||||
|
@ -49,6 +49,7 @@
|
||||||
# include <string.h>
|
# include <string.h>
|
||||||
#endif // STDC_HEADERS
|
#endif // STDC_HEADERS
|
||||||
|
|
||||||
|
#include <iostream>
|
||||||
|
|
||||||
static Basemenu *shown = (Basemenu *) 0;
|
static Basemenu *shown = (Basemenu *) 0;
|
||||||
|
|
||||||
|
@ -236,23 +237,31 @@ int Basemenu::insert(const char **ulabel, int pos, int function) {
|
||||||
|
|
||||||
|
|
||||||
int Basemenu::remove(int index) {
|
int Basemenu::remove(int index) {
|
||||||
if (index < 0 || index > menuitems.size()) return -1;
|
if (index < 0 || index >= menuitems.size()) {
|
||||||
|
#ifdef DEBUG
|
||||||
|
std::cout << "Bad index (" << index << ") given to Basemenu::remove()"
|
||||||
|
<< " -- should be between 0 and " << menuitems.size()-1
|
||||||
|
<< " inclusive."
|
||||||
|
<< std::endl;
|
||||||
|
#endif
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
Menuitems::iterator it = menuitems.begin() + index;
|
Menuitems::iterator it = menuitems.begin() + index;
|
||||||
BasemenuItem *item = (*it);
|
BasemenuItem *item = (*it);
|
||||||
|
|
||||||
if (item) {
|
if (item) {
|
||||||
|
menuitems.erase(it);
|
||||||
if ((! internal_menu) && (item->submenu())) {
|
if ((! internal_menu) && (item->submenu())) {
|
||||||
Basemenu *tmp = (Basemenu *) item->submenu();
|
Basemenu *tmp = (Basemenu *) item->submenu();
|
||||||
|
|
||||||
if (! tmp->internal_menu) {
|
if (! tmp->internal_menu) {
|
||||||
delete tmp;
|
delete tmp;
|
||||||
} else
|
} else
|
||||||
tmp->internal_hide();
|
tmp->internal_hide();
|
||||||
}
|
}
|
||||||
|
|
||||||
delete item;
|
delete item;
|
||||||
menuitems.erase(it);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (which_sub == index)
|
if (which_sub == index)
|
||||||
|
@ -458,7 +467,7 @@ void Basemenu::hide(void) {
|
||||||
|
|
||||||
|
|
||||||
void Basemenu::internal_hide(void) {
|
void Basemenu::internal_hide(void) {
|
||||||
if (which_sub != -1) {
|
if (which_sub >= 0) {
|
||||||
BasemenuItem *tmp = menuitems[which_sub];
|
BasemenuItem *tmp = menuitems[which_sub];
|
||||||
tmp->submenu()->internal_hide();
|
tmp->submenu()->internal_hide();
|
||||||
}
|
}
|
||||||
|
@ -533,7 +542,7 @@ void Basemenu::redrawTitle(void) {
|
||||||
|
|
||||||
|
|
||||||
void Basemenu::drawSubmenu(int index) {
|
void Basemenu::drawSubmenu(int index) {
|
||||||
if (which_sub != -1 && which_sub != index) {
|
if (which_sub >= 0 && which_sub != index) {
|
||||||
BasemenuItem *itmp = menuitems[which_sub];
|
BasemenuItem *itmp = menuitems[which_sub];
|
||||||
|
|
||||||
if (! itmp->submenu()->isTorn())
|
if (! itmp->submenu()->isTorn())
|
||||||
|
@ -682,27 +691,27 @@ void Basemenu::drawItem(int index, Bool highlight, Bool clear,
|
||||||
False);
|
False);
|
||||||
} else if (! (x == y && y == -1 && w == h && h == 0)) {
|
} else if (! (x == y && y == -1 && w == h && h == 0)) {
|
||||||
// calculate the which part of the hilite to redraw
|
// calculate the which part of the hilite to redraw
|
||||||
if (! (max(item_x, x) <= (signed) min(item_x + menu.item_w, x + w) &&
|
if (! (std::max(item_x, x) <= (signed) std::min(item_x + menu.item_w, x + w) &&
|
||||||
max(item_y, y) <= (signed) min(item_y + menu.item_h, y + h))) {
|
std::max(item_y, y) <= (signed) std::min(item_y + menu.item_h, y + h))) {
|
||||||
dohilite = False;
|
dohilite = False;
|
||||||
} else {
|
} else {
|
||||||
hilite_x = max(item_x, x);
|
hilite_x = std::max(item_x, x);
|
||||||
hilite_y = max(item_y, y);
|
hilite_y = std::max(item_y, y);
|
||||||
hilite_w = min(item_x + menu.item_w, x + w) - hilite_x;
|
hilite_w = std::min(item_x + menu.item_w, x + w) - hilite_x;
|
||||||
hilite_h = min(item_y + menu.item_h, y + h) - hilite_y;
|
hilite_h = std::min(item_y + menu.item_h, y + h) - hilite_y;
|
||||||
hoff_x = hilite_x % menu.item_w;
|
hoff_x = hilite_x % menu.item_w;
|
||||||
hoff_y = hilite_y % menu.item_h;
|
hoff_y = hilite_y % menu.item_h;
|
||||||
}
|
}
|
||||||
|
|
||||||
// check if we need to redraw the text
|
// check if we need to redraw the text
|
||||||
int text_ry = item_y + (menu.bevel_w / 2);
|
int text_ry = item_y + (menu.bevel_w / 2);
|
||||||
if (! (max(text_x, x) <= (signed) min(text_x + text_w, x + w) &&
|
if (! (std::max(text_x, x) <= (signed) std::min(text_x + text_w, x + w) &&
|
||||||
max(text_ry, y) <= (signed) min(text_ry + text_h, y + h)))
|
std::max(text_ry, y) <= (signed) std::min(text_ry + text_h, y + h)))
|
||||||
dotext = False;
|
dotext = False;
|
||||||
|
|
||||||
// check if we need to redraw the select pixmap/menu bullet
|
// check if we need to redraw the select pixmap/menu bullet
|
||||||
if (! (max(sel_x, x) <= (signed) min(sel_x + half_w, x + w) &&
|
if (! (std::max(sel_x, x) <= (signed) std::min(sel_x + half_w, x + w) &&
|
||||||
max(sel_y, y) <= (signed) min(sel_y + half_w, y + h)))
|
std::max(sel_y, y) <= (signed) std::min(sel_y + half_w, y + h)))
|
||||||
dosel = False;
|
dosel = False;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -866,7 +875,7 @@ void Basemenu::buttonReleaseEvent(XButtonEvent *re) {
|
||||||
if (moving) {
|
if (moving) {
|
||||||
moving = False;
|
moving = False;
|
||||||
|
|
||||||
if (which_sub != -1)
|
if (which_sub >= 0)
|
||||||
drawSubmenu(which_sub);
|
drawSubmenu(which_sub);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -913,7 +922,7 @@ void Basemenu::motionNotifyEvent(XMotionEvent *me) {
|
||||||
|
|
||||||
moving = torn = True;
|
moving = torn = True;
|
||||||
|
|
||||||
if (which_sub != -1)
|
if (which_sub >= 0)
|
||||||
drawSubmenu(which_sub);
|
drawSubmenu(which_sub);
|
||||||
} else {
|
} else {
|
||||||
menu.x = me->x_root - menu.x_move,
|
menu.x = me->x_root - menu.x_move,
|
||||||
|
@ -921,7 +930,7 @@ void Basemenu::motionNotifyEvent(XMotionEvent *me) {
|
||||||
|
|
||||||
XMoveWindow(display, menu.window, menu.x, menu.y);
|
XMoveWindow(display, menu.window, menu.x, menu.y);
|
||||||
|
|
||||||
if (which_sub != -1)
|
if (which_sub >= 0)
|
||||||
drawSubmenu(which_sub);
|
drawSubmenu(which_sub);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1021,7 +1030,7 @@ void Basemenu::enterNotifyEvent(XCrossingEvent *ce) {
|
||||||
if (shifted)
|
if (shifted)
|
||||||
XMoveWindow(display, menu.window, menu.x_shift, menu.y_shift);
|
XMoveWindow(display, menu.window, menu.x_shift, menu.y_shift);
|
||||||
|
|
||||||
if (which_sub != -1) {
|
if (which_sub >= 0) {
|
||||||
BasemenuItem *tmp = menuitems[which_sub];
|
BasemenuItem *tmp = menuitems[which_sub];
|
||||||
if (tmp->submenu()->isVisible()) {
|
if (tmp->submenu()->isVisible()) {
|
||||||
int sbl = (ce->x / menu.item_w), i = (ce->y / menu.item_h),
|
int sbl = (ce->x / menu.item_w), i = (ce->y / menu.item_h),
|
||||||
|
@ -1053,7 +1062,7 @@ void Basemenu::leaveNotifyEvent(XCrossingEvent *ce) {
|
||||||
XMoveWindow(display, menu.window, menu.x, menu.y);
|
XMoveWindow(display, menu.window, menu.x, menu.y);
|
||||||
shifted = False;
|
shifted = False;
|
||||||
|
|
||||||
if (which_sub != -1) drawSubmenu(which_sub);
|
if (which_sub >= 0) drawSubmenu(which_sub);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue