anchor.diff:      end);
   end; { TDLUIXVCLFloatingFrame.EaseLeft }
   
  +procedure TDLUIXVCLFloatingFrame.FilterListBox(Sender: TObject);
  +var
  +  filteredList : IDLUIXFilteredListAction;
  +  listBox      : TListBox;
  +  matchesSearch: TPredicate<string>;
  +  searchBox    : TSearchBox;
  +  searchFilter : string;
  +begin
  +  filteredList := FActionMap.Value[Sender] as IDLUIXFilteredListAction;
  +  searchBox := Sender as TSearchBox;
  +  searchFilter := searchBox.Text;
  +  listBox := TObject(searchBox.Tag) as TListBox;
  +
  +  listBox.Items.BeginUpdate;
  +  try
  +    listBox.Items.Clear;
  +
  +    if searchFilter = '' then
  +      listBox.Items.AddStrings(filteredList.List.ToArray)
  +    else begin
  +      matchesSearch :=
  +        function (const s: string): boolean
  +        begin
  +          Result := ContainsText(s, searchFilter);
  +        end;
  +      listBox.Items.AddStrings(filteredList.List.Where(matchesSearch).ToArray);
  +    end;
  +
  +    listBox.ItemIndex := listBox.Items.IndexOf(filteredList.Selected);
  +  finally listBox.Items.EndUpdate; end;
  +end; { TDLUIXVCLFloatingFrame.FilterListBox }
  +
   procedure TDLUIXVCLFloatingFrame.ForwardAction(Sender: TObject);
   begin
     if assigned(OnAction) then
  
positive.code: function TDLUIXVCLFloatingFrame.BuildFilteredList(const filteredList:
    IDLUIXFilteredListAction): TRect;
  var
    listBox  : TListBox;
    searchBox: TSearchBox;
    s        : string;
  begin
    searchBox := TSearchBox.Create(FForm);
    searchBox.Parent := FForm;
  
negative.code: begin
    Result := (FParent as IDLUIXVCLFloatingFrame).GetBounds_Screen(action);
  end; { TDLUIXVCLFloatingFrame.GetParentRect }
  
  procedure TDLUIXVCLFloatingFrame.HandleSearchBoxKeyDown(Sender: TObject;
    var key: word; shift: TShiftState);
  var
    listBox: TListBox;
    timer  : TTimer;
  begin
    if key = VK_UP then begin
      listBox := (TObject((Sender as TSearchBox).Tag) as TListBox);
      if listBox.ItemIndex > 0 then
        listBox.ItemIndex := listBox.ItemIndex - 1;
      key := 0;
    end
    else if key = VK_DOWN then begin
      listBox := (TObject((Sender as TSearchBox).Tag) as TListBox);
      if listBox.ItemIndex < (listBox.Items.Count - 1) then
        listBox.ItemIndex := listBox.ItemIndex + 1;
      key := 0;
    end
    else if key = VK_RETURN then begin
      listBox := (TObject((Sender as TSearchBox).Tag) as TListBox);
      if listBox.ItemIndex >= 0 then
        ; //TODO: Trigger [Default] action (Open)
      key := 0;
    end
    else begin
      timer := (TObject((TObject((Sender as TSearchBox).Tag) as TListBox).Tag) as TTimer);
      timer.Enabled := false;
      timer.Enabled := true;
    end;
  end; { TDLUIXVCLFloatingFrame.HandleSearchBoxKeyDown }
  
  procedure TDLUIXVCLFloatingFrame.HandleSearchBoxTimer(Sender: TObject);
  begin
    (Sender as TTimer).Enabled := false;
    FilterListBox(TObject(TTimer(Sender).Tag) as TSearchBox);
  end; { TDLUIXVCLFloatingFrame.HandleSearchBoxTimer }
  
  function TDLUIXVCLFloatingFrame.IsEmpty: boolean;
  begin
  