// Copyright (c) 2007-2017 ppy Pty Ltd . // Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE using osu.Framework.Graphics; using osu.Framework.Graphics.Primitives; using osu.Framework.Input; using OpenTK.Input; namespace osu.Game.Graphics.UserInterface { /// /// A textbox which holds focus eagerly. /// public class SearchTextBox : FocusedTextBox { protected virtual bool AllowCommit => false; public SearchTextBox() { Height = 35; Add(new Drawable[] { new TextAwesome { Icon = FontAwesome.fa_search, Origin = Anchor.CentreRight, Anchor = Anchor.CentreRight, Margin = new MarginPadding { Right = 10 }, TextSize = 20 } }); PlaceholderText = "type to search"; } protected override bool OnKeyDown(InputState state, KeyDownEventArgs args) { if (HandlePendingText(state)) return true; if (!state.Keyboard.ControlPressed && !state.Keyboard.ShiftPressed) { switch (args.Key) { case Key.Left: case Key.Right: case Key.Up: case Key.Down: return false; case Key.Enter: if (!AllowCommit) return false; break; } } if (state.Keyboard.ShiftPressed) { switch (args.Key) { case Key.Delete: return false; } } return base.OnKeyDown(state, args); } } }