QskAbstractTextInputSkinlet removed as it does not work well in
combination with subcontrol substitution
This commit is contained in:
parent
8dffb14aeb
commit
4462815617
|
@ -299,9 +299,6 @@ namespace
|
||||||
void setupTabViewMetrics();
|
void setupTabViewMetrics();
|
||||||
void setupTabViewColors( QskAspect::Section, const QskFluent2Theme& );
|
void setupTabViewColors( QskAspect::Section, const QskFluent2Theme& );
|
||||||
|
|
||||||
void setupTextInputMetrics();
|
|
||||||
void setupTextInputColors( QskAspect::Section, const QskFluent2Theme& );
|
|
||||||
|
|
||||||
void setupTextAreaMetrics();
|
void setupTextAreaMetrics();
|
||||||
void setupTextAreaColors( QskAspect::Section, const QskFluent2Theme& );
|
void setupTextAreaColors( QskAspect::Section, const QskFluent2Theme& );
|
||||||
|
|
||||||
|
@ -364,7 +361,6 @@ void Editor::setupMetrics()
|
||||||
setupTabButtonMetrics();
|
setupTabButtonMetrics();
|
||||||
setupTabBarMetrics();
|
setupTabBarMetrics();
|
||||||
setupTabViewMetrics();
|
setupTabViewMetrics();
|
||||||
setupTextInputMetrics();
|
|
||||||
setupTextAreaMetrics();
|
setupTextAreaMetrics();
|
||||||
setupTextFieldMetrics();
|
setupTextFieldMetrics();
|
||||||
setupTextLabelMetrics();
|
setupTextLabelMetrics();
|
||||||
|
@ -405,7 +401,6 @@ void Editor::setupColors( QskAspect::Section section, const QskFluent2Theme& the
|
||||||
setupTabButtonColors( section, theme );
|
setupTabButtonColors( section, theme );
|
||||||
setupTabBarColors( section, theme );
|
setupTabBarColors( section, theme );
|
||||||
setupTabViewColors( section, theme );
|
setupTabViewColors( section, theme );
|
||||||
setupTextInputColors( section, theme );
|
|
||||||
setupTextAreaColors( section, theme );
|
setupTextAreaColors( section, theme );
|
||||||
setupTextFieldColors( section, theme );
|
setupTextFieldColors( section, theme );
|
||||||
setupTextLabelColors( section, theme );
|
setupTextLabelColors( section, theme );
|
||||||
|
@ -1787,33 +1782,11 @@ void Editor::setupTextLabelColors(
|
||||||
setColor( Q::Text | section, pal.fillColor.text.primary );
|
setColor( Q::Text | section, pal.fillColor.text.primary );
|
||||||
}
|
}
|
||||||
|
|
||||||
void Editor::setupTextInputMetrics()
|
|
||||||
{
|
|
||||||
using Q = QskAbstractTextInput;
|
|
||||||
setFontRole( Q::Text, Fluent2::Body );
|
|
||||||
}
|
|
||||||
|
|
||||||
void Editor::setupTextInputColors(
|
|
||||||
QskAspect::Section section, const QskFluent2Theme& theme )
|
|
||||||
{
|
|
||||||
using Q = QskAbstractTextInput;
|
|
||||||
|
|
||||||
const auto& pal = theme.palette;
|
|
||||||
|
|
||||||
const auto text = Q::Text | section;
|
|
||||||
|
|
||||||
#if 1
|
|
||||||
setColor( text, pal.fillColor.text.primary );
|
|
||||||
setColor( text | Q::Selected, pal.fillColor.textOnAccent.selectedText );
|
|
||||||
setColor( text | Q::Disabled, pal.fillColor.text.disabled );
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
void Editor::setupTextAreaMetrics()
|
void Editor::setupTextAreaMetrics()
|
||||||
{
|
{
|
||||||
using Q = QskTextArea;
|
using Q = QskTextArea;
|
||||||
|
|
||||||
// ===
|
setFontRole( Q::Text, Fluent2::Body );
|
||||||
|
|
||||||
setStrutSize( Q::TextPanel, { -1, 30_px } );
|
setStrutSize( Q::TextPanel, { -1, 30_px } );
|
||||||
setPadding( Q::TextPanel, { 11_px, 0, 11_px, 0 } );
|
setPadding( Q::TextPanel, { 11_px, 0, 11_px, 0 } );
|
||||||
|
@ -1836,6 +1809,14 @@ void Editor::setupTextAreaColors(
|
||||||
|
|
||||||
const auto& pal = theme.palette;
|
const auto& pal = theme.palette;
|
||||||
|
|
||||||
|
const auto text = Q::Text | section;
|
||||||
|
|
||||||
|
#if 1
|
||||||
|
setColor( text, pal.fillColor.text.primary );
|
||||||
|
setColor( text | Q::Selected, pal.fillColor.textOnAccent.selectedText );
|
||||||
|
setColor( text | Q::Disabled, pal.fillColor.text.disabled );
|
||||||
|
#endif
|
||||||
|
|
||||||
setColor( Q::TextPanel | Q::Selected, pal.fillColor.accent.selectedTextBackground );
|
setColor( Q::TextPanel | Q::Selected, pal.fillColor.accent.selectedTextBackground );
|
||||||
setColor( Q::Placeholder, pal.fillColor.text.secondary );
|
setColor( Q::Placeholder, pal.fillColor.text.secondary );
|
||||||
|
|
||||||
|
@ -1879,6 +1860,8 @@ void Editor::setupTextFieldMetrics()
|
||||||
{
|
{
|
||||||
using Q = QskTextField;
|
using Q = QskTextField;
|
||||||
|
|
||||||
|
setFontRole( Q::Text, Fluent2::Body );
|
||||||
|
|
||||||
setStrutSize( Q::TextPanel, { -1, 30_px } );
|
setStrutSize( Q::TextPanel, { -1, 30_px } );
|
||||||
setPadding( Q::TextPanel, { 11_px, 0, 11_px, 0 } );
|
setPadding( Q::TextPanel, { 11_px, 0, 11_px, 0 } );
|
||||||
|
|
||||||
|
@ -1895,11 +1878,20 @@ void Editor::setupTextFieldMetrics()
|
||||||
void Editor::setupTextFieldColors(
|
void Editor::setupTextFieldColors(
|
||||||
QskAspect::Section section, const QskFluent2Theme& theme )
|
QskAspect::Section section, const QskFluent2Theme& theme )
|
||||||
{
|
{
|
||||||
using A = QskAspect;
|
|
||||||
using Q = QskTextField;
|
using Q = QskTextField;
|
||||||
|
using A = QskAspect;
|
||||||
|
using W = QskFluent2Skin;
|
||||||
|
|
||||||
const auto& pal = theme.palette;
|
const auto& pal = theme.palette;
|
||||||
|
|
||||||
|
const auto text = Q::Text | section;
|
||||||
|
|
||||||
|
#if 1
|
||||||
|
setColor( text, pal.fillColor.text.primary );
|
||||||
|
setColor( text | Q::Selected, pal.fillColor.textOnAccent.selectedText );
|
||||||
|
setColor( text | Q::Disabled, pal.fillColor.text.disabled );
|
||||||
|
#endif
|
||||||
|
|
||||||
setColor( Q::TextPanel | Q::Selected, pal.fillColor.accent.selectedTextBackground );
|
setColor( Q::TextPanel | Q::Selected, pal.fillColor.accent.selectedTextBackground );
|
||||||
setColor( Q::Placeholder, pal.fillColor.text.secondary );
|
setColor( Q::Placeholder, pal.fillColor.text.secondary );
|
||||||
|
|
||||||
|
|
|
@ -143,7 +143,6 @@ namespace
|
||||||
Q_INVOKABLE void setupTabBar();
|
Q_INVOKABLE void setupTabBar();
|
||||||
Q_INVOKABLE void setupTabView();
|
Q_INVOKABLE void setupTabView();
|
||||||
|
|
||||||
Q_INVOKABLE void setupTextInput();
|
|
||||||
Q_INVOKABLE void setupTextArea();
|
Q_INVOKABLE void setupTextArea();
|
||||||
Q_INVOKABLE void setupTextField();
|
Q_INVOKABLE void setupTextField();
|
||||||
Q_INVOKABLE void setupTextLabel();
|
Q_INVOKABLE void setupTextLabel();
|
||||||
|
@ -386,9 +385,9 @@ void Editor::setupTextLabel()
|
||||||
setBoxBorderColors( Q::Panel, QskRgb::lighter( m_pal.outline, 108 ) );
|
setBoxBorderColors( Q::Panel, QskRgb::lighter( m_pal.outline, 108 ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
void Editor::setupTextInput()
|
void Editor::setupTextField()
|
||||||
{
|
{
|
||||||
using Q = QskAbstractTextInput;
|
using Q = QskTextField;
|
||||||
using A = QskAspect;
|
using A = QskAspect;
|
||||||
using P = QPalette;
|
using P = QPalette;
|
||||||
|
|
||||||
|
@ -399,19 +398,10 @@ void Editor::setupTextInput()
|
||||||
setColor( Q::Text | state, m_pal.color( colorGroup, P::Text ) );
|
setColor( Q::Text | state, m_pal.color( colorGroup, P::Text ) );
|
||||||
setColor( Q::Text | Q::Selected | state, m_pal.color( colorGroup, P::HighlightedText ) );
|
setColor( Q::Text | Q::Selected | state, m_pal.color( colorGroup, P::HighlightedText ) );
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
void Editor::setupTextField()
|
|
||||||
{
|
|
||||||
using Q = QskTextField;
|
|
||||||
|
|
||||||
|
setAlignment( Q::Text, Qt::AlignLeft | Qt::AlignVCenter );
|
||||||
setAlignment( Q::Placeholder, Qt::AlignLeft | Qt::AlignVCenter );
|
setAlignment( Q::Placeholder, Qt::AlignLeft | Qt::AlignVCenter );
|
||||||
|
|
||||||
// ===
|
|
||||||
|
|
||||||
using A = QskAspect;
|
|
||||||
using P = QPalette;
|
|
||||||
|
|
||||||
for ( auto state : { A::NoState, Q::Disabled } )
|
for ( auto state : { A::NoState, Q::Disabled } )
|
||||||
{
|
{
|
||||||
const auto colorGroup = ( state == A::NoState ) ? P::Active : P::Disabled;
|
const auto colorGroup = ( state == A::NoState ) ? P::Active : P::Disabled;
|
||||||
|
@ -419,6 +409,8 @@ void Editor::setupTextField()
|
||||||
setColor( Q::TextPanel | state, m_pal.color( colorGroup, P::Base ) );
|
setColor( Q::TextPanel | state, m_pal.color( colorGroup, P::Base ) );
|
||||||
setColor( Q::TextPanel | Q::Selected | state, m_pal.color( colorGroup, P::Highlight ) );
|
setColor( Q::TextPanel | Q::Selected | state, m_pal.color( colorGroup, P::Highlight ) );
|
||||||
|
|
||||||
|
setColor( Q::Text | state, m_pal.color( colorGroup, P::Text ) );
|
||||||
|
setColor( Q::Text | Q::Selected | state, m_pal.color( colorGroup, P::HighlightedText ) );
|
||||||
setColor( Q::Placeholder, m_pal.color( colorGroup, P::PlaceholderText ) );
|
setColor( Q::Placeholder, m_pal.color( colorGroup, P::PlaceholderText ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -438,14 +430,19 @@ void Editor::setupTextField()
|
||||||
void Editor::setupTextArea()
|
void Editor::setupTextArea()
|
||||||
{
|
{
|
||||||
using Q = QskTextArea;
|
using Q = QskTextArea;
|
||||||
|
|
||||||
setAlignment( Q::Placeholder, Qt::AlignLeft | Qt::AlignTop );
|
|
||||||
|
|
||||||
// ========
|
|
||||||
|
|
||||||
using A = QskAspect;
|
using A = QskAspect;
|
||||||
using P = QPalette;
|
using P = QPalette;
|
||||||
|
|
||||||
|
for ( auto state : { A::NoState, Q::Disabled } )
|
||||||
|
{
|
||||||
|
const auto colorGroup = ( state == A::NoState ) ? P::Active : P::Disabled;
|
||||||
|
|
||||||
|
setColor( Q::Text | state, m_pal.color( colorGroup, P::Text ) );
|
||||||
|
setColor( Q::Text | Q::Selected | state, m_pal.color( colorGroup, P::HighlightedText ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
setAlignment( Q::Placeholder, Qt::AlignLeft | Qt::AlignTop );
|
||||||
|
|
||||||
for ( auto state : { A::NoState, Q::Disabled } )
|
for ( auto state : { A::NoState, Q::Disabled } )
|
||||||
{
|
{
|
||||||
const auto colorGroup = ( state == A::NoState ) ? P::Active : P::Disabled;
|
const auto colorGroup = ( state == A::NoState ) ? P::Active : P::Disabled;
|
||||||
|
|
|
@ -187,7 +187,6 @@ namespace
|
||||||
Q_INVOKABLE void setupTabBar();
|
Q_INVOKABLE void setupTabBar();
|
||||||
Q_INVOKABLE void setupTabView();
|
Q_INVOKABLE void setupTabView();
|
||||||
|
|
||||||
Q_INVOKABLE void setupTextInput();
|
|
||||||
Q_INVOKABLE void setupTextArea();
|
Q_INVOKABLE void setupTextArea();
|
||||||
Q_INVOKABLE void setupTextField();
|
Q_INVOKABLE void setupTextField();
|
||||||
Q_INVOKABLE void setupTextLabel();
|
Q_INVOKABLE void setupTextLabel();
|
||||||
|
@ -435,20 +434,13 @@ void Editor::setupTextLabel()
|
||||||
setPadding( Q::Panel, 5_px );
|
setPadding( Q::Panel, 5_px );
|
||||||
}
|
}
|
||||||
|
|
||||||
void Editor::setupTextInput()
|
|
||||||
{
|
|
||||||
using Q = QskAbstractTextInput;
|
|
||||||
|
|
||||||
setColor( Q::Text, m_pal.onSurface );
|
|
||||||
setFontRole( Q::Text, BodyLarge );
|
|
||||||
setColor( Q::Text | Q::Disabled, m_pal.onSurface38 );
|
|
||||||
}
|
|
||||||
|
|
||||||
void Editor::setupTextArea()
|
void Editor::setupTextArea()
|
||||||
{
|
{
|
||||||
using Q = QskTextArea;
|
using Q = QskTextArea;
|
||||||
|
|
||||||
// ==========
|
setColor( Q::Text, m_pal.onSurface );
|
||||||
|
setFontRole( Q::Text, BodyLarge );
|
||||||
|
setColor( Q::Text | Q::Disabled, m_pal.onSurface38 );
|
||||||
|
|
||||||
setStrutSize( Q::Panel, -1.0, 56_px );
|
setStrutSize( Q::Panel, -1.0, 56_px );
|
||||||
setPadding( Q::Panel, { 12_px, 8_px, 12_px, 8_px } );
|
setPadding( Q::Panel, { 12_px, 8_px, 12_px, 8_px } );
|
||||||
|
@ -487,6 +479,10 @@ void Editor::setupTextField()
|
||||||
{
|
{
|
||||||
using Q = QskTextField;
|
using Q = QskTextField;
|
||||||
|
|
||||||
|
setColor( Q::Text, m_pal.onSurface );
|
||||||
|
setFontRole( Q::Text, BodyLarge );
|
||||||
|
setColor( Q::Text | Q::Disabled, m_pal.onSurface38 );
|
||||||
|
|
||||||
setStrutSize( Q::Panel, -1.0, 56_px );
|
setStrutSize( Q::Panel, -1.0, 56_px );
|
||||||
setPadding( Q::Panel, { 12_px, 8_px, 12_px, 8_px } );
|
setPadding( Q::Panel, { 12_px, 8_px, 12_px, 8_px } );
|
||||||
setGradient( Q::Panel, m_pal.surfaceVariant );
|
setGradient( Q::Panel, m_pal.surfaceVariant );
|
||||||
|
|
|
@ -198,7 +198,6 @@ endif()
|
||||||
list(APPEND HEADERS
|
list(APPEND HEADERS
|
||||||
controls/QskAbstractButton.h
|
controls/QskAbstractButton.h
|
||||||
controls/QskAbstractTextInput.h
|
controls/QskAbstractTextInput.h
|
||||||
controls/QskAbstractTextInputSkinlet.h
|
|
||||||
controls/QskAnimationHint.h
|
controls/QskAnimationHint.h
|
||||||
controls/QskAnimator.h
|
controls/QskAnimator.h
|
||||||
controls/QskMainView.h
|
controls/QskMainView.h
|
||||||
|
@ -307,7 +306,6 @@ list(APPEND PRIVATE_HEADERS
|
||||||
list(APPEND SOURCES
|
list(APPEND SOURCES
|
||||||
controls/QskAbstractButton.cpp
|
controls/QskAbstractButton.cpp
|
||||||
controls/QskAbstractTextInput.cpp
|
controls/QskAbstractTextInput.cpp
|
||||||
controls/QskAbstractTextInputSkinlet.cpp
|
|
||||||
controls/QskAnimator.cpp
|
controls/QskAnimator.cpp
|
||||||
controls/QskAnimationHint.cpp
|
controls/QskAnimationHint.cpp
|
||||||
controls/QskMainView.cpp
|
controls/QskMainView.cpp
|
||||||
|
|
|
@ -705,7 +705,9 @@ Qt::Alignment QskAbstractTextInput::alignment() const
|
||||||
void QskAbstractTextInput::updateLayout()
|
void QskAbstractTextInput::updateLayout()
|
||||||
{
|
{
|
||||||
QMetaObject::invokeMethod( m_data->input, "updateMetrics" );
|
QMetaObject::invokeMethod( m_data->input, "updateMetrics" );
|
||||||
qskSetItemGeometry( m_data->input, subControlRect( Text ) );
|
|
||||||
|
const auto subControl = effectiveSubcontrol( Text );
|
||||||
|
qskSetItemGeometry( m_data->input, subControlRect( subControl ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
void QskAbstractTextInput::updateNode( QSGNode* node )
|
void QskAbstractTextInput::updateNode( QSGNode* node )
|
||||||
|
|
|
@ -1,67 +0,0 @@
|
||||||
/******************************************************************************
|
|
||||||
* QSkinny - Copyright (C) The authors
|
|
||||||
* SPDX-License-Identifier: BSD-3-Clause
|
|
||||||
*****************************************************************************/
|
|
||||||
|
|
||||||
#include "QskAbstractTextInputSkinlet.h"
|
|
||||||
#include "QskAbstractTextInput.h"
|
|
||||||
|
|
||||||
using Q = QskAbstractTextInput;
|
|
||||||
|
|
||||||
QskAbstractTextInputSkinlet::QskAbstractTextInputSkinlet( QskSkin* skin )
|
|
||||||
: Inherited( skin )
|
|
||||||
{
|
|
||||||
setNodeRoles( { TextPanelRole } );
|
|
||||||
}
|
|
||||||
|
|
||||||
QskAbstractTextInputSkinlet::~QskAbstractTextInputSkinlet()
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
QRectF QskAbstractTextInputSkinlet::subControlRect( const QskSkinnable* skinnable,
|
|
||||||
const QRectF& contentsRect, QskAspect::Subcontrol subControl ) const
|
|
||||||
{
|
|
||||||
if ( subControl == Q::TextPanel )
|
|
||||||
return contentsRect;
|
|
||||||
|
|
||||||
if ( subControl == Q::Text )
|
|
||||||
{
|
|
||||||
auto rect = skinnable->subControlContentsRect( contentsRect, Q::TextPanel );
|
|
||||||
rect = rect.marginsAdded( skinnable->marginHint( Q::Text ) );
|
|
||||||
|
|
||||||
return rect;
|
|
||||||
}
|
|
||||||
|
|
||||||
return Inherited::subControlRect( skinnable, contentsRect, subControl );
|
|
||||||
}
|
|
||||||
|
|
||||||
QSGNode* QskAbstractTextInputSkinlet::updateSubNode(
|
|
||||||
const QskSkinnable* skinnable, quint8 nodeRole, QSGNode* node ) const
|
|
||||||
{
|
|
||||||
switch ( nodeRole )
|
|
||||||
{
|
|
||||||
case TextPanelRole:
|
|
||||||
return updateBoxNode( skinnable, node, Q::TextPanel );
|
|
||||||
}
|
|
||||||
|
|
||||||
return Inherited::updateSubNode( skinnable, nodeRole, node );
|
|
||||||
}
|
|
||||||
|
|
||||||
QSizeF QskAbstractTextInputSkinlet::sizeHint( const QskSkinnable* skinnable,
|
|
||||||
Qt::SizeHint which, const QSizeF& constraint ) const
|
|
||||||
{
|
|
||||||
if ( which != Qt::PreferredSize )
|
|
||||||
return QSizeF();
|
|
||||||
|
|
||||||
Q_UNUSED( constraint ); // TODO ...
|
|
||||||
|
|
||||||
const auto input = static_cast< const QskAbstractTextInput* >( skinnable );
|
|
||||||
|
|
||||||
auto hint = input->unwrappedTextSize();
|
|
||||||
hint = input->outerBoxSize( Q::TextPanel, hint );
|
|
||||||
hint = hint.expandedTo( input->strutSizeHint( Q::TextPanel ) );
|
|
||||||
|
|
||||||
return hint;
|
|
||||||
}
|
|
||||||
|
|
||||||
#include "moc_QskAbstractTextInputSkinlet.cpp"
|
|
|
@ -1,38 +0,0 @@
|
||||||
/******************************************************************************
|
|
||||||
* QSkinny - Copyright (C) The authors
|
|
||||||
* SPDX-License-Identifier: BSD-3-Clause
|
|
||||||
*****************************************************************************/
|
|
||||||
|
|
||||||
#ifndef QSK_ABSTRACT_TEXT_INPUT_SKINLET_H
|
|
||||||
#define QSK_ABSTRACT_TEXT_INPUT_SKINLET_H
|
|
||||||
|
|
||||||
#include "QskSkinlet.h"
|
|
||||||
|
|
||||||
class QSK_EXPORT QskAbstractTextInputSkinlet : public QskSkinlet
|
|
||||||
{
|
|
||||||
Q_GADGET
|
|
||||||
|
|
||||||
using Inherited = QskSkinlet;
|
|
||||||
|
|
||||||
public:
|
|
||||||
enum NodeRole : quint8
|
|
||||||
{
|
|
||||||
TextPanelRole,
|
|
||||||
RoleCount
|
|
||||||
};
|
|
||||||
|
|
||||||
Q_INVOKABLE QskAbstractTextInputSkinlet( QskSkin* = nullptr );
|
|
||||||
~QskAbstractTextInputSkinlet() override;
|
|
||||||
|
|
||||||
QRectF subControlRect( const QskSkinnable*,
|
|
||||||
const QRectF& rect, QskAspect::Subcontrol ) const override;
|
|
||||||
|
|
||||||
QSizeF sizeHint( const QskSkinnable*,
|
|
||||||
Qt::SizeHint, const QSizeF& ) const override;
|
|
||||||
|
|
||||||
protected:
|
|
||||||
QSGNode* updateSubNode( const QskSkinnable*,
|
|
||||||
quint8 nodeRole, QSGNode* ) const override;
|
|
||||||
};
|
|
||||||
|
|
||||||
#endif
|
|
|
@ -25,9 +25,6 @@
|
||||||
|
|
||||||
#include <cmath>
|
#include <cmath>
|
||||||
|
|
||||||
#include "QskAbstractTextInput.h"
|
|
||||||
#include "QskAbstractTextInputSkinlet.h"
|
|
||||||
|
|
||||||
#include "QskBox.h"
|
#include "QskBox.h"
|
||||||
#include "QskBoxSkinlet.h"
|
#include "QskBoxSkinlet.h"
|
||||||
|
|
||||||
|
@ -194,7 +191,6 @@ QskSkin::QskSkin( QObject* parent )
|
||||||
{
|
{
|
||||||
declareSkinlet< QskControl, QskSkinlet >();
|
declareSkinlet< QskControl, QskSkinlet >();
|
||||||
|
|
||||||
declareSkinlet< QskAbstractTextInput, QskAbstractTextInputSkinlet >();
|
|
||||||
declareSkinlet< QskBox, QskBoxSkinlet >();
|
declareSkinlet< QskBox, QskBoxSkinlet >();
|
||||||
declareSkinlet< QskCheckBox, QskCheckBoxSkinlet >();
|
declareSkinlet< QskCheckBox, QskCheckBoxSkinlet >();
|
||||||
declareSkinlet< QskComboBox, QskComboBoxSkinlet >();
|
declareSkinlet< QskComboBox, QskComboBoxSkinlet >();
|
||||||
|
|
|
@ -11,7 +11,7 @@ using Q = QskTextArea;
|
||||||
QskTextAreaSkinlet::QskTextAreaSkinlet( QskSkin* skin )
|
QskTextAreaSkinlet::QskTextAreaSkinlet( QskSkin* skin )
|
||||||
: Inherited( skin )
|
: Inherited( skin )
|
||||||
{
|
{
|
||||||
setNodeRoles( { PanelRole, TextPanelRole, PlaceholderTextRole } );
|
setNodeRoles( { PanelRole, TextPanelRole, PlaceholderRole } );
|
||||||
}
|
}
|
||||||
|
|
||||||
QskTextAreaSkinlet::~QskTextAreaSkinlet()
|
QskTextAreaSkinlet::~QskTextAreaSkinlet()
|
||||||
|
@ -27,6 +27,9 @@ QRectF QskTextAreaSkinlet::subControlRect( const QskSkinnable* skinnable,
|
||||||
if ( subControl == Q::TextPanel )
|
if ( subControl == Q::TextPanel )
|
||||||
return skinnable->subControlContentsRect( contentsRect, Q::Panel );
|
return skinnable->subControlContentsRect( contentsRect, Q::Panel );
|
||||||
|
|
||||||
|
if ( subControl == Q::Text )
|
||||||
|
return skinnable->subControlContentsRect( contentsRect, Q::TextPanel );
|
||||||
|
|
||||||
if ( subControl == Q::Placeholder )
|
if ( subControl == Q::Placeholder )
|
||||||
{
|
{
|
||||||
const auto textArea = static_cast< const QskTextArea* >( skinnable );
|
const auto textArea = static_cast< const QskTextArea* >( skinnable );
|
||||||
|
@ -50,8 +53,11 @@ QSGNode* QskTextAreaSkinlet::updateSubNode(
|
||||||
{
|
{
|
||||||
return updateBoxNode( skinnable, node, Q::Panel );
|
return updateBoxNode( skinnable, node, Q::Panel );
|
||||||
}
|
}
|
||||||
|
case TextPanelRole:
|
||||||
case PlaceholderTextRole:
|
{
|
||||||
|
return updateBoxNode( skinnable, node, Q::TextPanel );
|
||||||
|
}
|
||||||
|
case PlaceholderRole:
|
||||||
{
|
{
|
||||||
const auto text = effectivePlaceholderText( textArea );
|
const auto text = effectivePlaceholderText( textArea );
|
||||||
if ( text.isEmpty() )
|
if ( text.isEmpty() )
|
||||||
|
@ -78,10 +84,19 @@ QSGNode* QskTextAreaSkinlet::updateSubNode(
|
||||||
QSizeF QskTextAreaSkinlet::sizeHint( const QskSkinnable* skinnable,
|
QSizeF QskTextAreaSkinlet::sizeHint( const QskSkinnable* skinnable,
|
||||||
Qt::SizeHint which, const QSizeF& constraint ) const
|
Qt::SizeHint which, const QSizeF& constraint ) const
|
||||||
{
|
{
|
||||||
|
Q_UNUSED( constraint ); // TODO ...
|
||||||
|
|
||||||
if ( which != Qt::PreferredSize )
|
if ( which != Qt::PreferredSize )
|
||||||
return QSizeF();
|
return QSizeF();
|
||||||
|
|
||||||
auto hint = Inherited::sizeHint( skinnable, which, constraint );
|
const auto input = static_cast< const QskAbstractTextInput* >( skinnable );
|
||||||
|
|
||||||
|
auto hint = input->unwrappedTextSize();
|
||||||
|
hint = hint.grownBy( skinnable->marginHint( Q::Text ) );
|
||||||
|
|
||||||
|
hint = input->outerBoxSize( Q::TextPanel, hint );
|
||||||
|
hint = hint.expandedTo( input->strutSizeHint( Q::TextPanel ) );
|
||||||
|
|
||||||
hint = skinnable->outerBoxSize( Q::Panel, hint );
|
hint = skinnable->outerBoxSize( Q::Panel, hint );
|
||||||
hint = hint.expandedTo( skinnable->strutSizeHint( Q::Panel ) );
|
hint = hint.expandedTo( skinnable->strutSizeHint( Q::Panel ) );
|
||||||
|
|
||||||
|
|
|
@ -6,22 +6,23 @@
|
||||||
#ifndef QSK_TEXT_AREA_SKINLET_H
|
#ifndef QSK_TEXT_AREA_SKINLET_H
|
||||||
#define QSK_TEXT_AREA_SKINLET_H
|
#define QSK_TEXT_AREA_SKINLET_H
|
||||||
|
|
||||||
#include "QskAbstractTextInputSkinlet.h"
|
#include "QskSkinlet.h"
|
||||||
|
|
||||||
class QskTextArea;
|
class QskTextArea;
|
||||||
|
|
||||||
class QSK_EXPORT QskTextAreaSkinlet : public QskAbstractTextInputSkinlet
|
class QSK_EXPORT QskTextAreaSkinlet : public QskSkinlet
|
||||||
{
|
{
|
||||||
Q_GADGET
|
Q_GADGET
|
||||||
|
|
||||||
using Inherited = QskAbstractTextInputSkinlet;
|
using Inherited = QskSkinlet;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
enum NodeRole : quint8
|
enum NodeRole : quint8
|
||||||
{
|
{
|
||||||
PanelRole = Inherited::RoleCount,
|
PanelRole,
|
||||||
|
TextPanelRole,
|
||||||
|
PlaceholderRole,
|
||||||
|
|
||||||
PlaceholderTextRole,
|
|
||||||
RoleCount
|
RoleCount
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -27,6 +27,9 @@ QRectF QskTextFieldSkinlet::subControlRect( const QskSkinnable* skinnable,
|
||||||
if ( subControl == Q::TextPanel )
|
if ( subControl == Q::TextPanel )
|
||||||
return skinnable->subControlContentsRect( contentsRect, Q::Panel );
|
return skinnable->subControlContentsRect( contentsRect, Q::Panel );
|
||||||
|
|
||||||
|
if ( subControl == Q::Text )
|
||||||
|
return skinnable->subControlContentsRect( contentsRect, Q::TextPanel );
|
||||||
|
|
||||||
if ( subControl == Q::Placeholder )
|
if ( subControl == Q::Placeholder )
|
||||||
{
|
{
|
||||||
const auto textField = static_cast< const QskTextField* >( skinnable );
|
const auto textField = static_cast< const QskTextField* >( skinnable );
|
||||||
|
@ -50,7 +53,10 @@ QSGNode* QskTextFieldSkinlet::updateSubNode(
|
||||||
{
|
{
|
||||||
return updateBoxNode( skinnable, node, Q::Panel );
|
return updateBoxNode( skinnable, node, Q::Panel );
|
||||||
}
|
}
|
||||||
|
case TextPanelRole:
|
||||||
|
{
|
||||||
|
return updateBoxNode( skinnable, node, Q::TextPanel );
|
||||||
|
}
|
||||||
case PlaceholderRole:
|
case PlaceholderRole:
|
||||||
{
|
{
|
||||||
const auto text = effectivePlaceholderText( textField );
|
const auto text = effectivePlaceholderText( textField );
|
||||||
|
@ -78,10 +84,19 @@ QSGNode* QskTextFieldSkinlet::updateSubNode(
|
||||||
QSizeF QskTextFieldSkinlet::sizeHint( const QskSkinnable* skinnable,
|
QSizeF QskTextFieldSkinlet::sizeHint( const QskSkinnable* skinnable,
|
||||||
Qt::SizeHint which, const QSizeF& constraint ) const
|
Qt::SizeHint which, const QSizeF& constraint ) const
|
||||||
{
|
{
|
||||||
|
Q_UNUSED( constraint ); // TODO ...
|
||||||
|
|
||||||
if ( which != Qt::PreferredSize )
|
if ( which != Qt::PreferredSize )
|
||||||
return QSizeF();
|
return QSizeF();
|
||||||
|
|
||||||
auto hint = Inherited::sizeHint( skinnable, which, constraint );
|
const auto input = static_cast< const QskAbstractTextInput* >( skinnable );
|
||||||
|
|
||||||
|
auto hint = input->unwrappedTextSize();
|
||||||
|
hint = hint.grownBy( skinnable->marginHint( Q::Text ) );
|
||||||
|
|
||||||
|
hint = input->outerBoxSize( Q::TextPanel, hint );
|
||||||
|
hint = hint.expandedTo( input->strutSizeHint( Q::TextPanel ) );
|
||||||
|
|
||||||
hint = skinnable->outerBoxSize( Q::Panel, hint );
|
hint = skinnable->outerBoxSize( Q::Panel, hint );
|
||||||
hint = hint.expandedTo( skinnable->strutSizeHint( Q::Panel ) );
|
hint = hint.expandedTo( skinnable->strutSizeHint( Q::Panel ) );
|
||||||
|
|
||||||
|
|
|
@ -6,21 +6,21 @@
|
||||||
#ifndef QSK_TEXT_FIELD_SKINLET_H
|
#ifndef QSK_TEXT_FIELD_SKINLET_H
|
||||||
#define QSK_TEXT_FIELD_SKINLET_H
|
#define QSK_TEXT_FIELD_SKINLET_H
|
||||||
|
|
||||||
#include "QskAbstractTextInputSkinlet.h"
|
#include "QskSkinlet.h"
|
||||||
|
|
||||||
class QskTextField;
|
class QskTextField;
|
||||||
|
|
||||||
class QSK_EXPORT QskTextFieldSkinlet : public QskAbstractTextInputSkinlet
|
class QSK_EXPORT QskTextFieldSkinlet : public QskSkinlet
|
||||||
{
|
{
|
||||||
Q_GADGET
|
Q_GADGET
|
||||||
|
|
||||||
using Inherited = QskAbstractTextInputSkinlet;
|
using Inherited = QskSkinlet;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
enum NodeRole : quint8
|
enum NodeRole : quint8
|
||||||
{
|
{
|
||||||
PanelRole = QskAbstractTextInputSkinlet::RoleCount,
|
PanelRole,
|
||||||
|
TextPanelRole,
|
||||||
PlaceholderRole,
|
PlaceholderRole,
|
||||||
RoleCount
|
RoleCount
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in New Issue