Implement native wxAuiTabArt for MSW
This wxAuiTabArt implementation uses Windows uxtheme API to draw AUI tabs. A fallback to generic tab art is implemented for the bottom tabs or if uxtheme is not available (disabled by user or no manifest file). Closes https://github.com/wxWidgets/wxWidgets/pull/105
This commit is contained in:
90
include/wx/aui/tabartmsw.h
Normal file
90
include/wx/aui/tabartmsw.h
Normal file
@@ -0,0 +1,90 @@
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// Name: wx/aui/tabartmsw.h
|
||||
// Purpose: wxAuiMSWTabArt declaration
|
||||
// Author: Tobias Taschner
|
||||
// Created: 2015-09-26
|
||||
// Copyright: (c) 2015 wxWidgets development team
|
||||
// Licence: wxWindows licence
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#ifndef _WX_AUI_TABARTMSW_H_
|
||||
#define _WX_AUI_TABARTMSW_H_
|
||||
|
||||
class WXDLLIMPEXP_AUI wxAuiMSWTabArt : public wxAuiGenericTabArt
|
||||
{
|
||||
|
||||
public:
|
||||
|
||||
wxAuiMSWTabArt();
|
||||
virtual ~wxAuiMSWTabArt();
|
||||
|
||||
wxAuiTabArt* Clone() wxOVERRIDE;
|
||||
void SetSizingInfo(const wxSize& tabCtrlSize,
|
||||
size_t tabCount) wxOVERRIDE;
|
||||
|
||||
void DrawBorder(
|
||||
wxDC& dc,
|
||||
wxWindow* wnd,
|
||||
const wxRect& rect) wxOVERRIDE;
|
||||
|
||||
void DrawBackground(
|
||||
wxDC& dc,
|
||||
wxWindow* wnd,
|
||||
const wxRect& rect) wxOVERRIDE;
|
||||
|
||||
void DrawTab(wxDC& dc,
|
||||
wxWindow* wnd,
|
||||
const wxAuiNotebookPage& pane,
|
||||
const wxRect& inRect,
|
||||
int closeButtonState,
|
||||
wxRect* outTabRect,
|
||||
wxRect* outButtonRect,
|
||||
int* xExtent) wxOVERRIDE;
|
||||
|
||||
void DrawButton(
|
||||
wxDC& dc,
|
||||
wxWindow* wnd,
|
||||
const wxRect& inRect,
|
||||
int bitmapId,
|
||||
int buttonState,
|
||||
int orientation,
|
||||
wxRect* outRect) wxOVERRIDE;
|
||||
|
||||
int GetIndentSize() wxOVERRIDE;
|
||||
|
||||
int GetBorderWidth(
|
||||
wxWindow* wnd) wxOVERRIDE;
|
||||
|
||||
int GetAdditionalBorderSpace(
|
||||
wxWindow* wnd) wxOVERRIDE;
|
||||
|
||||
wxSize GetTabSize(
|
||||
wxDC& dc,
|
||||
wxWindow* wnd,
|
||||
const wxString& caption,
|
||||
const wxBitmap& bitmap,
|
||||
bool active,
|
||||
int closeButtonState,
|
||||
int* xExtent) wxOVERRIDE;
|
||||
|
||||
int ShowDropDown(
|
||||
wxWindow* wnd,
|
||||
const wxAuiNotebookPageArray& items,
|
||||
int activeIdx) wxOVERRIDE;
|
||||
|
||||
int GetBestTabCtrlSize(wxWindow* wnd,
|
||||
const wxAuiNotebookPageArray& pages,
|
||||
const wxSize& requiredBmpSize) wxOVERRIDE;
|
||||
|
||||
private:
|
||||
bool m_themed;
|
||||
wxSize m_closeBtnSize;
|
||||
wxSize m_tabSize;
|
||||
int m_maxTabHeight;
|
||||
|
||||
void InitSizes(wxWindow* wnd, wxDC& dc);
|
||||
|
||||
bool IsThemed() const;
|
||||
};
|
||||
|
||||
#endif // _WX_AUI_TABARTMSW_H_
|
Reference in New Issue
Block a user