summaryrefslogtreecommitdiff
path: root/src/Fl_Menu.cxx
diff options
context:
space:
mode:
authorManoloFLTK <41016272+ManoloFLTK@users.noreply.github.com>2023-01-12 09:03:53 +0100
committerManoloFLTK <41016272+ManoloFLTK@users.noreply.github.com>2023-01-12 09:03:53 +0100
commit8a8a4c793e3735f41252fc510883f15c784e762d (patch)
treefe57c1dd69726a5ada3d5eb991eb091e640232d8 /src/Fl_Menu.cxx
parent86a6d4e3d3b6990e856b47c92b7d09996fee7d56 (diff)
Simpler implementation of Fl_Window_Driver::scroll_to_selected_item()
Diffstat (limited to 'src/Fl_Menu.cxx')
-rw-r--r--src/Fl_Menu.cxx36
1 files changed, 18 insertions, 18 deletions
diff --git a/src/Fl_Menu.cxx b/src/Fl_Menu.cxx
index e75943374..2391d53e2 100644
--- a/src/Fl_Menu.cxx
+++ b/src/Fl_Menu.cxx
@@ -175,40 +175,40 @@ Fl_Window *Fl_Window_Driver::menu_parent(int *display_height) {
return menuwindow::parent_;
}
+static menuwindow *to_menuwindow(Fl_Window *win) {
+ if (!win->menu_window()) return NULL;
+ return ((window_with_items*)win)->as_menuwindow();
+}
+
/** Accessor to the "origin" member variable of class menuwindow.
Variable origin is not NULL when 2 menuwindow's occur, one being a submenu of the other;
it links the menuwindow at right to the one at left. */
Fl_Window *Fl_Window_Driver::menu_leftorigin(Fl_Window *win) {
- if (!win->menu_window()) return NULL;
- menuwindow *mwin = ((window_with_items*)win)->as_menuwindow();
+ menuwindow *mwin = to_menuwindow(win);
return (mwin ? mwin->origin : NULL);
}
/** Accessor to the "title" member variable of class menuwindow */
Fl_Window *Fl_Window_Driver::menu_title(Fl_Window *win) {
- if (!win->menu_window()) return NULL;
- menuwindow *mwin = ((window_with_items*)win)->as_menuwindow();
+ menuwindow *mwin = to_menuwindow(win);
return (mwin ? mwin->title : NULL);
}
/** Accessor to the "itemheight" member variable of class menuwindow */
int Fl_Window_Driver::menu_itemheight(Fl_Window *win) {
- if (!win->menu_window()) return 0;
- menuwindow *mwin = ((window_with_items*)win)->as_menuwindow();
+ menuwindow *mwin = to_menuwindow(win);
return (mwin ? mwin->itemheight : 0);
}
/** Accessor to the "menubartitle" member variable of class menuwindow */
int Fl_Window_Driver::menu_bartitle(Fl_Window *win) {
- if (!win->menu_window()) return 0;
- menuwindow *mwin = ((window_with_items*)win)->as_menuwindow();
+ menuwindow *mwin = to_menuwindow(win);
return (mwin ? mwin->menubartitle : 0);
}
/** Accessor to the "selected" member variable of class menuwindow */
int Fl_Window_Driver::menu_selected(Fl_Window *win) {
- if (!win->menu_window()) return 0;
- menuwindow *mwin = ((window_with_items*)win)->as_menuwindow();
+ menuwindow *mwin = to_menuwindow(win);
return (mwin ? mwin->selected : -1);
}
@@ -219,6 +219,14 @@ bool Fl_Window_Driver::is_floating_title(Fl_Window *win) {
return !mwin && !((menutitle*)win)->in_menubar;
}
+/** Makes sure that the tall menu's selected item is visible in display */
+void Fl_Window_Driver::scroll_to_selected_item(Fl_Window *win) {
+ menuwindow *mwin = to_menuwindow(win);
+ if (mwin && mwin->selected > 0) {
+ mwin->autoscroll(mwin->selected);
+ }
+}
+
/**
\}
\endcond
@@ -679,14 +687,6 @@ struct menustate {
};
static menustate* p=0;
-void Fl_Window_Driver::scroll_to_selected_item(Fl_Window *win) {
- if (!p || !win->menu_window()) return;
- menuwindow *mwin = ((window_with_items*)win)->as_menuwindow();
- if (mwin && p->item_number > 0) {
- mwin->autoscroll(p->item_number);
- }
-}
-
// return 1 if the coordinates are inside any of the menuwindows
int menustate::is_inside(int mx, int my) {
int i;