()
| 200 | } |
| 201 | |
| 202 | func (menu *Menu) Update() { |
| 203 | |
| 204 | if menu.AutoOpen != nil { |
| 205 | |
| 206 | if menu.AutoOpen() && !menu.Opened { |
| 207 | menu.Open() |
| 208 | } else if !menu.AutoOpen() && menu.Opened { |
| 209 | menu.Close() |
| 210 | } |
| 211 | } |
| 212 | |
| 213 | if menu.CurrentPage == "" { |
| 214 | return |
| 215 | } |
| 216 | |
| 217 | if menu.Opened { |
| 218 | |
| 219 | if menu.Dragging { |
| 220 | diff := globals.Mouse.Position().Sub(menu.DragStart) |
| 221 | menu.Rect.X = menu.DragStart.X + diff.X - menu.DragOffset.X |
| 222 | menu.Rect.Y = menu.DragStart.Y + diff.Y - menu.DragOffset.Y |
| 223 | } |
| 224 | |
| 225 | if menu.Rect.X < 0 { |
| 226 | menu.Rect.X = 0 |
| 227 | } |
| 228 | |
| 229 | if menu.Rect.Y < 0 { |
| 230 | menu.Rect.Y = 0 |
| 231 | } |
| 232 | |
| 233 | sizeChanged := false |
| 234 | |
| 235 | if menu.Draggable { |
| 236 | |
| 237 | switch menu.AnchorMode { |
| 238 | case MenuAnchorTopLeft: |
| 239 | menu.Rect.X = 0 |
| 240 | menu.Rect.Y = 0 |
| 241 | case MenuAnchorTop: |
| 242 | menu.Rect.Y = 0 |
| 243 | if globals.ScreenSizeChanged { |
| 244 | menu.Rect.X *= globals.ScreenSize.X / globals.ScreenSizePrev.X |
| 245 | } |
| 246 | case MenuAnchorTopRight: |
| 247 | menu.Rect.X = globals.ScreenSize.X - menu.Rect.W |
| 248 | menu.Rect.Y = 0 |
| 249 | case MenuAnchorRight: |
| 250 | menu.Rect.X = globals.ScreenSize.X - menu.Rect.W |
| 251 | if globals.ScreenSizeChanged { |
| 252 | menu.Rect.Y *= globals.ScreenSize.Y / globals.ScreenSizePrev.Y |
| 253 | } |
| 254 | case MenuAnchorBottomRight: |
| 255 | menu.Rect.X = globals.ScreenSize.X - menu.Rect.W |
| 256 | menu.Rect.Y = globals.ScreenSize.Y - menu.Rect.H |
| 257 | case MenuAnchorBottom: |
| 258 | menu.Rect.Y = globals.ScreenSize.Y - menu.Rect.H |
| 259 | if globals.ScreenSizeChanged { |
nothing calls this directly
no test coverage detected