mirror of
https://github.com/sparrowwallet/sparrow.git
synced 2024-11-04 21:36:45 +00:00
don't initialise a ContextMenu for each cell update
This commit is contained in:
parent
97b4ed48db
commit
b9a553abf2
1 changed files with 17 additions and 2 deletions
|
@ -22,6 +22,7 @@ import java.text.DecimalFormat;
|
|||
|
||||
class CoinCell extends TreeTableCell<Entry, Number> implements ConfirmationsListener {
|
||||
private final CoinTooltip tooltip;
|
||||
private final CoinContextMenu contextMenu;
|
||||
|
||||
private IntegerProperty confirmationsProperty;
|
||||
|
||||
|
@ -29,6 +30,8 @@ class CoinCell extends TreeTableCell<Entry, Number> implements ConfirmationsList
|
|||
super();
|
||||
tooltip = new CoinTooltip();
|
||||
tooltip.setShowDelay(Duration.millis(500));
|
||||
contextMenu = new CoinContextMenu();
|
||||
setContextMenu(contextMenu);
|
||||
getStyleClass().add("coin-cell");
|
||||
if(Platform.getCurrent() == Platform.OSX) {
|
||||
getStyleClass().add("number-field");
|
||||
|
@ -43,6 +46,7 @@ class CoinCell extends TreeTableCell<Entry, Number> implements ConfirmationsList
|
|||
setText(null);
|
||||
setGraphic(null);
|
||||
setTooltip(null);
|
||||
setContextMenu(null);
|
||||
} else {
|
||||
Entry entry = getTreeTableView().getTreeItem(getIndex()).getValue();
|
||||
EntryCell.applyRowStyles(this, entry);
|
||||
|
@ -63,7 +67,8 @@ class CoinCell extends TreeTableCell<Entry, Number> implements ConfirmationsList
|
|||
setText(satsValue);
|
||||
}
|
||||
setTooltip(tooltip);
|
||||
setContextMenu(new CoinContextMenu(amount));
|
||||
contextMenu.updateAmount(amount);
|
||||
setContextMenu(contextMenu);
|
||||
|
||||
if(entry instanceof TransactionEntry transactionEntry) {
|
||||
tooltip.showConfirmations(transactionEntry.confirmationsProperty());
|
||||
|
@ -159,7 +164,17 @@ class CoinCell extends TreeTableCell<Entry, Number> implements ConfirmationsList
|
|||
}
|
||||
|
||||
private static class CoinContextMenu extends ContextMenu {
|
||||
public CoinContextMenu(Number amount) {
|
||||
private Number amount;
|
||||
public CoinContextMenu() {
|
||||
}
|
||||
|
||||
public void updateAmount(Number amount) {
|
||||
if (amount.equals(this.amount)) {
|
||||
return;
|
||||
}
|
||||
this.amount = amount;
|
||||
getItems().clear();
|
||||
|
||||
MenuItem copySatsValue = new MenuItem("Copy Value in sats");
|
||||
copySatsValue.setOnAction(AE -> {
|
||||
hide();
|
||||
|
|
Loading…
Reference in a new issue