| 176 | } |
| 177 | |
| 178 | QSize minimumSizeHint() const override |
| 179 | { |
| 180 | if(cachedMinimumSizeHint.isEmpty()) |
| 181 | { |
| 182 | ensurePolished(); |
| 183 | |
| 184 | const QFontMetrics fm(fontMetrics()); |
| 185 | int h = lineEdit()->minimumSizeHint().height(); |
| 186 | int w = GUIUtil::TextWidth(fm, BitcoinUnits::format(BitcoinUnits::BTC, BitcoinUnits::maxMoney(), false, BitcoinUnits::SeparatorStyle::ALWAYS)); |
| 187 | w += 2; // cursor blinking space |
| 188 | |
| 189 | QStyleOptionSpinBox opt; |
| 190 | initStyleOption(&opt); |
| 191 | QSize hint(w, h); |
| 192 | QSize extra(35, 6); |
| 193 | opt.rect.setSize(hint + extra); |
| 194 | extra += hint - style()->subControlRect(QStyle::CC_SpinBox, &opt, |
| 195 | QStyle::SC_SpinBoxEditField, this).size(); |
| 196 | // get closer to final result by repeating the calculation |
| 197 | opt.rect.setSize(hint + extra); |
| 198 | extra += hint - style()->subControlRect(QStyle::CC_SpinBox, &opt, |
| 199 | QStyle::SC_SpinBoxEditField, this).size(); |
| 200 | hint += extra; |
| 201 | hint.setHeight(h); |
| 202 | |
| 203 | opt.rect = rect(); |
| 204 | |
| 205 | cachedMinimumSizeHint = style()->sizeFromContents(QStyle::CT_SpinBox, &opt, hint, this) |
| 206 | .expandedTo(QApplication::globalStrut()); |
| 207 | } |
| 208 | return cachedMinimumSizeHint; |
| 209 | } |
| 210 | |
| 211 | private: |
| 212 | CAsset current_asset; |