Skip to content

Commit

Permalink
Make titlebar use the CWnd title instead of passing the title around
Browse files Browse the repository at this point in the history
  • Loading branch information
EvenAR committed Jan 31, 2025
1 parent 3d26d3c commit f7521fa
Show file tree
Hide file tree
Showing 9 changed files with 23 additions and 22 deletions.
8 changes: 4 additions & 4 deletions ILS_Window_Plugin/IWCdeTitleBar.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@
#include "IWCdeMenuBtn.h"
#include "IWX11ResizeBtn.h"

IWCdeTitleBar::IWCdeTitleBar(std::string title, COLORREF backgroundColor, COLORREF textColor, COLORREF lightColor, COLORREF darkcolor, IWTitleBarEventListener* listener) :
IWTitleBar(title, backgroundColor, 13, listener)
IWCdeTitleBar::IWCdeTitleBar(COLORREF backgroundColor, COLORREF textColor, COLORREF lightColor, COLORREF darkcolor, IWTitleBarEventListener* listener) :
IWTitleBar(backgroundColor, 13, listener)
{
this->lightColor = lightColor;
this->darkColor = darkcolor;
Expand All @@ -32,13 +32,13 @@ void IWCdeTitleBar::PositionButtons(const CRect& rect)
titleArea.right = iconifyButtonRect.left;
}

void IWCdeTitleBar::DrawTitle(CDC* pdc, CRect rect)
void IWCdeTitleBar::DrawTitle(CDC* pdc, CRect rect, CString title)
{
Draw3dRect(pdc, titleArea, 1, lightColor, darkColor);

auto oldFont = pdc->SelectObject(this->font);
pdc->SetTextColor(this->textColor);
pdc->SetBkMode(TRANSPARENT);
pdc->DrawText(_T(this->text.c_str()), -1, titleArea, DT_CENTER | DT_VCENTER | DT_SINGLELINE);
pdc->DrawText(_T(title), -1, titleArea, DT_CENTER | DT_VCENTER | DT_SINGLELINE);
pdc->SelectObject(oldFont);
}
4 changes: 2 additions & 2 deletions ILS_Window_Plugin/IWCdeTitleBar.h
Original file line number Diff line number Diff line change
Expand Up @@ -7,12 +7,12 @@ class IWTitleBarEventListener;

class IWCdeTitleBar : public IWTitleBar {
public:
IWCdeTitleBar(std::string title, COLORREF backgroundColor, COLORREF textColor, COLORREF lightColor, COLORREF darkcolor, IWTitleBarEventListener* listener);
IWCdeTitleBar(COLORREF backgroundColor, COLORREF textColor, COLORREF lightColor, COLORREF darkcolor, IWTitleBarEventListener* listener);
virtual ~IWCdeTitleBar() {}

private:
void PositionButtons(const CRect& rect) override;
void DrawTitle(CDC* pdc, CRect rect) override;
void DrawTitle(CDC* pdc, CRect rect, CString title) override;

COLORREF backgroundColor;
COLORREF textColor;
Expand Down
2 changes: 1 addition & 1 deletion ILS_Window_Plugin/IWCdeWindow.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ IWCdeWindow::IWCdeWindow(IWApproachDefinition selectedApproach, IWStyling stylin
, darkColor(AdjustColorBrightness(styling.windowFrameColor, 0.4))
{
COLORREF textColor = RGB(styling.windowFrameTextColor.r, styling.windowFrameTextColor.g, styling.windowFrameTextColor.b);
this->titleBar = new IWCdeTitleBar(selectedApproach.title, windowBorderColor, textColor, lightColor, darkColor, this);
this->titleBar = new IWCdeTitleBar(windowBorderColor, textColor, lightColor, darkColor, this);
}

int IWCdeWindow::GetEdgeCursorPosition(CPoint point)
Expand Down
9 changes: 6 additions & 3 deletions ILS_Window_Plugin/IWTitleBar.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -13,10 +13,9 @@ BEGIN_MESSAGE_MAP(IWTitleBar, CStatic)
ON_COMMAND(IDC_RESIZE_BUTTON, &IWTitleBar::OnResizeButtonPressed)
END_MESSAGE_MAP()

IWTitleBar::IWTitleBar(std::string title, COLORREF backgroundColor, int fontSize, IWTitleBarEventListener* listener)
IWTitleBar::IWTitleBar(COLORREF backgroundColor, int fontSize, IWTitleBarEventListener* listener)
{
this->backgroundColor = backgroundColor;
this->text = title;

float fontPointsSize = fontSize * 72 / 96;
this->font.CreatePointFont(int(fontPointsSize * 10), _T("EuroScope"));
Expand Down Expand Up @@ -59,7 +58,11 @@ void IWTitleBar::OnPaint()
CPaintDC dc(this);
CRect rect;
GetClientRect(&rect);
DrawTitle(&dc, rect);

// Get parent window
CString title;
GetParent()->GetWindowText(title);
DrawTitle(&dc, rect, title);
}

void IWTitleBar::OnLButtonDown(UINT nFlags, CPoint point)
Expand Down
6 changes: 2 additions & 4 deletions ILS_Window_Plugin/IWTitleBar.h
Original file line number Diff line number Diff line change
Expand Up @@ -21,21 +21,19 @@ class IWTitleBar : public CStatic
DECLARE_MESSAGE_MAP()

public:
IWTitleBar(std::string title, COLORREF backgroundColor, int fontSize, IWTitleBarEventListener* listener);
IWTitleBar(COLORREF backgroundColor, int fontSize, IWTitleBarEventListener* listener);
BOOL CreateTopBar(CWnd* pParentWnd, const CRect& rect, UINT nID);
void SetTitle(const std::string& title) { this->text = title; }

virtual ~IWTitleBar() {}

protected:
virtual void PositionButtons(const CRect& rect) {};
virtual void DrawTitle(CDC* pdc, CRect rect) {};
virtual void DrawTitle(CDC* pdc, CRect rect, CString title) {};

IWTitleBarBtn* menuButton;
IWTitleBarBtn* iconifyButton;
IWTitleBarBtn* resizeButton;

std::string text;
CFont font;

private:
Expand Down
2 changes: 1 addition & 1 deletion ILS_Window_Plugin/IWWindow.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -342,7 +342,7 @@ void IWWindow::SetActiveApproach(const IWApproachDefinition& selectedApproach)
{
std::unique_lock<std::mutex> lock(approachDataMutex);
this->selectedApproach = selectedApproach;
this->titleBar->SetTitle(selectedApproach.title);
this->SetWindowTextA(selectedApproach.title.c_str());

ilsVisualization.SetActiveApproach(this->selectedApproach);
Invalidate();
Expand Down
8 changes: 4 additions & 4 deletions ILS_Window_Plugin/IWX11TitleBar.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@
#include "IWX11MenuBtn.h"
#include "IWX11ResizeBtn.h"

IWX11TitleBar::IWX11TitleBar(std::string title, COLORREF backgroundColor, COLORREF textColor, IWTitleBarEventListener* listener)
: IWTitleBar(title, backgroundColor, 14, listener)
IWX11TitleBar::IWX11TitleBar(COLORREF backgroundColor, COLORREF textColor, IWTitleBarEventListener* listener)
: IWTitleBar(backgroundColor, 14, listener)
{
this->iconifyButton = new IWX11IconifyBtn(backgroundColor);
this->menuButton = new IWX11MenuBtn(backgroundColor);
Expand Down Expand Up @@ -48,13 +48,13 @@ void IWX11TitleBar::PositionButtons(const CRect& rect)
iconifyButton->MoveWindow(iconifyButtonRect);
}

void IWX11TitleBar::DrawTitle(CDC* pdc, CRect rect)
void IWX11TitleBar::DrawTitle(CDC* pdc, CRect rect, CString title)
{
CRect textArea = rect;
textArea.left += 5;
auto oldFont = pdc->SelectObject(this->font);
pdc->SetTextColor(this->textColor);
pdc->SetBkMode(TRANSPARENT);
pdc->DrawText(_T(this->text.c_str()), -1, textArea, DT_LEFT | DT_VCENTER | DT_SINGLELINE);
pdc->DrawText(_T(title), -1, textArea, DT_LEFT | DT_VCENTER | DT_SINGLELINE);
pdc->SelectObject(oldFont);
}
4 changes: 2 additions & 2 deletions ILS_Window_Plugin/IWX11TitleBar.h
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,12 @@
class IWX11TitleBar : public IWTitleBar
{
public:
IWX11TitleBar(std::string title, COLORREF backgroundColor, COLORREF textColor, IWTitleBarEventListener* listener);
IWX11TitleBar(COLORREF backgroundColor, COLORREF textColor, IWTitleBarEventListener* listener);
virtual ~IWX11TitleBar() {}

private:
void PositionButtons(const CRect& rect) override;
void DrawTitle(CDC* pdc, CRect rect) override;
void DrawTitle(CDC* pdc, CRect rect, CString title) override;

COLORREF textColor;
};
Expand Down
2 changes: 1 addition & 1 deletion ILS_Window_Plugin/IWX11Window.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
IWX11Window::IWX11Window(IWApproachDefinition selectedApproach, IWStyling styling)
: IWWindow(selectedApproach, styling, 26, 3, 1)
{
this->titleBar = new IWX11TitleBar(selectedApproach.title, windowBorderColor, textColor, this);
this->titleBar = new IWX11TitleBar(windowBorderColor, textColor, this);
}

void IWX11Window::DrawBorder(CDC* pdc, CRect windowRect)
Expand Down

0 comments on commit f7521fa

Please sign in to comment.