office-gobmx/basctl/source/basicide/linenumberwindow.hxx
Rafael Lima bf410be450 tdf#158750 Highlight the line where the cursor is positioned (Basic IDE)
This patch implements support for highlighting the selected line in the code editor, similar to what Kate, VSCode, etc do.

If the cursor is positioned in a single line and nothing is selected, then a highlight color is applied to the line. The line number window also highlights the selected line.

Change-Id: I2047d79500cd783b122b6752bb00996de0a7c702
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/161861
Tested-by: Jenkins
Reviewed-by: Andreas Heinisch <andreas.heinisch@yahoo.de>
2024-01-11 19:56:08 +01:00

47 lines
1.2 KiB
C++

/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/*
* This file is part of the LibreOffice project.
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*/
#pragma once
#include <vcl/window.hxx>
namespace basctl
{
class ModulWindow;
class LineNumberWindow : public vcl::Window
{
private:
VclPtr<ModulWindow> m_pModulWindow;
int m_nWidth;
tools::Long m_nCurYOffset;
int m_nBaseWidth;
Color m_FontColor;
Color m_HighlightColor;
virtual void DataChanged(DataChangedEvent const& rDCEvt) override;
protected:
virtual void Paint(vcl::RenderContext& rRenderContext, const tools::Rectangle& rRect) override;
public:
LineNumberWindow(vcl::Window* pParent, ModulWindow* pModulWin);
virtual ~LineNumberWindow() override;
virtual void dispose() override;
void DoScroll(tools::Long nVertScroll);
bool SyncYOffset();
tools::Long& GetCurYOffset() { return m_nCurYOffset; }
int GetWidth() const { return m_nWidth; }
};
} // namespace basctl
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */