mirror of
https://github.com/qelectrotech/qelectrotech-source-mirror.git
synced 2026-08-03 10:34:14 +02:00
b60e73d93b
updateForm() called on_m_text_from_cb_activated() directly, intending
only to enable the sibling widget matching the combo box's current
index ("For enable the good widget"). But that slot also loops over
every currently selected part and pushes an undo command overwriting
textFrom on any part that doesn't match, since it's normally only
reached via the combo box's own activated(int) signal (real user
interaction, never fired by programmatic setCurrentIndex()).
updateForm() runs on every selection change, so during a rubber-band
drag over dynamic text fields with different sources, each time a new
field enters the selection, the representative part's textFrom gets
force-applied to every other selected part - converting e.g. a
UserText field to ElementInfo mid-drag, before the user has released
the mouse or interacted with the combo box at all.
Split the cosmetic widget-enable logic into updateTextFromWidgetsEnabled(),
called from updateForm(). on_m_text_from_cb_activated() keeps the
part-mutating loop, now only reached from real user activation.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
88 lines
2.6 KiB
C++
88 lines
2.6 KiB
C++
/*
|
|
Copyright 2006-2026 The QElectroTech Team
|
|
This file is part of QElectroTech.
|
|
|
|
QElectroTech is free software: you can redistribute it and/or modify
|
|
it under the terms of the GNU General Public License as published by
|
|
the Free Software Foundation, either version 2 of the License, or
|
|
(at your option) any later version.
|
|
|
|
QElectroTech is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
GNU General Public License for more details.
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
along with QElectroTech. If not, see <http://www.gnu.org/licenses/>.
|
|
*/
|
|
#ifndef DYNAMICTEXTFIELDEDITOR_H
|
|
#define DYNAMICTEXTFIELDEDITOR_H
|
|
|
|
#include "../elementitemeditor.h"
|
|
#include "../graphicspart/partdynamictextfield.h"
|
|
|
|
#ifdef BUILD_WITHOUT_KF5
|
|
#else
|
|
# include <KColorButton>
|
|
#endif
|
|
|
|
namespace Ui {
|
|
class DynamicTextFieldEditor;
|
|
}
|
|
|
|
/**
|
|
@brief The DynamicTextFieldEditor class
|
|
This class provide a widget used to edit the property of a dynamic text field
|
|
*/
|
|
class DynamicTextFieldEditor : public ElementItemEditor {
|
|
Q_OBJECT
|
|
|
|
public:
|
|
explicit DynamicTextFieldEditor(QETElementEditor *editor, PartDynamicTextField *text_field = nullptr, QWidget *parent = nullptr);
|
|
~DynamicTextFieldEditor() override;
|
|
|
|
bool setPart(CustomElementPart *part) override;
|
|
bool setParts(QList <CustomElementPart *>) override;
|
|
CustomElementPart *currentPart() const override;
|
|
QList<CustomElementPart*> currentParts() const override;
|
|
void updateForm() override;
|
|
|
|
private:
|
|
void setupWidget();
|
|
void fillInfoComboBox();
|
|
void setUpConnections();
|
|
void disconnectConnections();
|
|
void updateTextFromWidgetsEnabled(int index);
|
|
|
|
private slots:
|
|
void on_m_x_sb_editingFinished();
|
|
void on_m_y_sb_editingFinished();
|
|
void on_m_rotation_sb_editingFinished();
|
|
void on_m_user_text_le_editingFinished();
|
|
void on_m_size_sb_editingFinished();
|
|
void on_m_frame_cb_clicked();
|
|
void on_m_width_sb_editingFinished();
|
|
void on_m_elmt_info_cb_activated(const QString &arg1);
|
|
void on_m_text_from_cb_activated(int index);
|
|
void on_m_composite_text_pb_clicked();
|
|
void on_m_alignment_pb_clicked();
|
|
void on_m_font_pb_clicked();
|
|
|
|
void m_color_kpb_changed(QColor newColor);
|
|
|
|
void on_m_keep_visual_rotation_cb_clicked();
|
|
|
|
private:
|
|
Ui::DynamicTextFieldEditor *ui;
|
|
QPointer<PartDynamicTextField> m_text_field;
|
|
QList<PartDynamicTextField*> m_parts;
|
|
QList<QMetaObject::Connection> m_connection_list;
|
|
|
|
#ifdef BUILD_WITHOUT_KF5
|
|
#else
|
|
KColorButton* m_color_kpb = nullptr;
|
|
#endif
|
|
};
|
|
|
|
#endif // DYNAMICTEXTFIELDEDITOR_H
|