summaryrefslogtreecommitdiff
path: root/src/Fl_Menu.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'src/Fl_Menu.cxx')
-rw-r--r--src/Fl_Menu.cxx23
1 files changed, 15 insertions, 8 deletions
diff --git a/src/Fl_Menu.cxx b/src/Fl_Menu.cxx
index 77b48499e..39f3cba34 100644
--- a/src/Fl_Menu.cxx
+++ b/src/Fl_Menu.cxx
@@ -107,16 +107,22 @@ static const Fl_Menu_* button=0;
////////////////////////////////////////////////////////////////
+class window_with_items : public Fl_Menu_Window {
+public:
+ const Fl_Menu_Item* menu;
+ window_with_items(int X, int Y, int W, int H, const Fl_Menu_Item *m) :
+ Fl_Menu_Window(X, Y, W, H, 0) { menu = m; }
+};
+
// tiny window for title of menu:
-class menutitle : public Fl_Menu_Window {
+class menutitle : public window_with_items {
void draw();
public:
- const Fl_Menu_Item* menu;
menutitle(int X, int Y, int W, int H, const Fl_Menu_Item*);
};
// each vertical menu has one of these:
-class menuwindow : public Fl_Menu_Window {
+class menuwindow : public window_with_items {
friend class Fl_Window_Driver;
friend struct Fl_Menu_Item;
void draw();
@@ -132,7 +138,6 @@ public:
int selected;
int drawn_selected; // last redraw has this selected
int shortcutWidth;
- const Fl_Menu_Item* menu;
menuwindow(const Fl_Menu_Item* m, int X, int Y, int W, int H,
const Fl_Menu_Item* picked, const Fl_Menu_Item* title,
int menubar = 0, int menubar_title = 0, int right_edge = 0);
@@ -157,6 +162,10 @@ Fl_Window *Fl_Window_Driver::menu_parent() {
return menuwindow::parent_;
}
+const Fl_Menu_Item *Fl_Window_Driver::current_menu() {
+ if (!pWindow->menu_window()) return NULL;
+ return ((window_with_items*)pWindow)->menu;
+}
/**
\}
\endcond
@@ -298,18 +307,17 @@ void Fl_Menu_Item::draw(int x, int y, int w, int h, const Fl_Menu_* m,
}
menutitle::menutitle(int X, int Y, int W, int H, const Fl_Menu_Item* L) :
- Fl_Menu_Window(X, Y, W, H, 0) {
+ window_with_items(X, Y, W, H, L) {
end();
set_modal();
clear_border();
set_menu_window();
- menu = L;
}
menuwindow::menuwindow(const Fl_Menu_Item* m, int X, int Y, int Wp, int Hp,
const Fl_Menu_Item* picked, const Fl_Menu_Item* t,
int menubar, int menubar_title, int right_edge)
- : Fl_Menu_Window(X, Y, Wp, Hp, 0)
+ : window_with_items(X, Y, Wp, Hp, m)
{
int scr_x, scr_y, scr_w, scr_h;
int tx = X, ty = Y;
@@ -321,7 +329,6 @@ menuwindow::menuwindow(const Fl_Menu_Item* m, int X, int Y, int Wp, int Hp,
set_modal();
clear_border();
set_menu_window();
- menu = m;
if (m) m = m->first(); // find the first item that needs to be rendered
drawn_selected = -1;
if (button) {