/**************************************************************************** ** ** Copyright (C) 2021 The Qt Company Ltd. ** Contact: https://www.qt.io/licensing/ ** ** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:COMM$ ** ** Commercial License Usage ** Licensees holding valid commercial Qt licenses may use this file in ** accordance with the commercial license agreement provided with the ** Software or, alternatively, in accordance with the terms contained in ** a written agreement between you and The Qt Company. For licensing terms ** and conditions see https://www.qt.io/terms-conditions. For further ** information use the contact form at https://www.qt.io/contact-us. ** ** $QT_END_LICENSE$ ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ****************************************************************************/ import QtQuick 2.12 import QtQuick.Controls.Material 2.12 Rectangle { id: cursor color: parent.Material.accentColor width: 2 visible: parent.activeFocus && !parent.readOnly && parent.selectionStart === parent.selectionEnd Connections { target: cursor.parent function onCursorPositionChanged() { // keep a moving cursor visible cursor.opacity = 1 timer.restart() } } Timer { id: timer running: cursor.parent.activeFocus && !cursor.parent.readOnly && interval != 0 repeat: true interval: Qt.styleHints.cursorFlashTime / 2 onTriggered: cursor.opacity = !cursor.opacity ? 1 : 0 // force the cursor visible when gaining focus onRunningChanged: cursor.opacity = 1 } }