Преглед изворни кода

Minor fixes

:bug: Fixed some CSS properties not working for controls that extends JavaFX's ones. The cause of this bug was that the cssMetaDataList of new controls must also contain the meta data of the superclass. (Fixes issue #55)

MFXPasswordFieldSkin:
:bug: Fixed exception occurring when a character limit was set. (Fixes issue #50)

MFXRectangleToggleNodeSkin:
:recycle: Add binding for the alignment property

MFXStageDialog:
:sparkles: Added showAndWait method
:recycle: Moved the show method to a new protected method (showCommon) to avoid code duplication

:sparkles: Added new resources
palexdev пре 4 година
родитељ
комит
cf6da52017
19 измењених фајлова са 149 додато и 92 уклоњено
  1. 0 8
      demo/src/main/resources/io/github/palexdev/materialfx/demo/css/ButtonsDemo.css
  2. 5 1
      materialfx/src/main/java/io/github/palexdev/materialfx/controls/MFXButton.java
  3. 5 1
      materialfx/src/main/java/io/github/palexdev/materialfx/controls/MFXCheckbox.java
  4. 1 1
      materialfx/src/main/java/io/github/palexdev/materialfx/controls/MFXFlowlessListView.java
  5. 5 1
      materialfx/src/main/java/io/github/palexdev/materialfx/controls/MFXListView.java
  6. 5 1
      materialfx/src/main/java/io/github/palexdev/materialfx/controls/MFXProgressBar.java
  7. 5 1
      materialfx/src/main/java/io/github/palexdev/materialfx/controls/MFXProgressSpinner.java
  8. 5 5
      materialfx/src/main/java/io/github/palexdev/materialfx/controls/MFXRadioButton.java
  9. 19 1
      materialfx/src/main/java/io/github/palexdev/materialfx/controls/MFXStageDialog.java
  10. 5 6
      materialfx/src/main/java/io/github/palexdev/materialfx/controls/MFXTextField.java
  11. 5 5
      materialfx/src/main/java/io/github/palexdev/materialfx/controls/MFXToggleButton.java
  12. 5 5
      materialfx/src/main/java/io/github/palexdev/materialfx/controls/base/AbstractMFXToggleNode.java
  13. 5 1
      materialfx/src/main/java/io/github/palexdev/materialfx/controls/cell/MFXListCell.java
  14. 5 6
      materialfx/src/main/java/io/github/palexdev/materialfx/controls/legacy/MFXLegacyComboBox.java
  15. 5 1
      materialfx/src/main/java/io/github/palexdev/materialfx/controls/legacy/MFXLegacyTableRow.java
  16. 62 48
      materialfx/src/main/java/io/github/palexdev/materialfx/font/FontResources.java
  17. 6 0
      materialfx/src/main/java/io/github/palexdev/materialfx/skins/MFXPasswordFieldSkin.java
  18. 1 0
      materialfx/src/main/java/io/github/palexdev/materialfx/skins/MFXRectangleToggleNodeSkin.java
  19. BIN
      materialfx/src/main/resources/io/github/palexdev/materialfx/fonts/MFXResources.ttf

+ 0 - 8
demo/src/main/resources/io/github/palexdev/materialfx/demo/css/ButtonsDemo.css

@@ -50,10 +50,6 @@
     -fx-text-fill: white;
 }
 
-#colored-raised .text {
-    -fx-fill: white;
-}
-
 #colored-raised .mfx-ripple-generator {
     -mfx-ripple-color: rgba(255, 255, 255, 0.4);
 }
@@ -63,10 +59,6 @@
     -fx-text-fill: white;
 }
 
-#custom-ripple .text {
-    -fx-fill: white;
-}
-
 #custom-ripple .mfx-ripple-generator {
     -mfx-animation-speed: 1.5;
     -mfx-ripple-color: #1900ff;

+ 5 - 1
materialfx/src/main/java/io/github/palexdev/materialfx/controls/MFXButton.java

@@ -33,6 +33,8 @@ import javafx.scene.control.Skin;
 import javafx.scene.paint.Color;
 import javafx.scene.paint.Paint;
 
+import java.util.ArrayList;
+import java.util.Collections;
 import java.util.List;
 
 /**
@@ -321,7 +323,9 @@ public class MFXButton extends Button {
                         ButtonType.FLAT);
 
         static {
-            cssMetaDataList = List.of(DEPTH_LEVEL, BUTTON_TYPE);
+            List<CssMetaData<? extends Styleable, ?>> btnCssMetaData = new ArrayList<>(Button.getClassCssMetaData());
+            Collections.addAll(btnCssMetaData, DEPTH_LEVEL, BUTTON_TYPE);
+            cssMetaDataList = Collections.unmodifiableList(btnCssMetaData);
         }
 
     }

+ 5 - 1
materialfx/src/main/java/io/github/palexdev/materialfx/controls/MFXCheckbox.java

@@ -26,6 +26,8 @@ import javafx.scene.control.Skin;
 import javafx.scene.paint.Color;
 import javafx.scene.paint.Paint;
 
+import java.util.ArrayList;
+import java.util.Collections;
 import java.util.List;
 
 /**
@@ -195,7 +197,9 @@ public class MFXCheckbox extends CheckBox {
                 );
 
         static {
-            cssMetaDataList = List.of(CHECKED_COLOR, UNCHECKED_COLOR, MARK_TYPE, MARK_SIZE);
+            List<CssMetaData<? extends Styleable, ?>> ckbCssMetaData = new ArrayList<>(CheckBox.getClassCssMetaData());
+            Collections.addAll(ckbCssMetaData, CHECKED_COLOR, UNCHECKED_COLOR, MARK_TYPE, MARK_SIZE);
+            cssMetaDataList = Collections.unmodifiableList(ckbCssMetaData);
         }
     }
 

+ 1 - 1
materialfx/src/main/java/io/github/palexdev/materialfx/controls/MFXFlowlessListView.java

@@ -57,7 +57,7 @@ public class MFXFlowlessListView<T> extends AbstractMFXFlowlessListView<T, MFXFl
     // Constructors
     //================================================================================
     public MFXFlowlessListView() {
-        this(List.of());
+        this(FXCollections.observableArrayList());
     }
 
     public MFXFlowlessListView(List<T> items) {

+ 5 - 1
materialfx/src/main/java/io/github/palexdev/materialfx/controls/MFXListView.java

@@ -33,6 +33,8 @@ import javafx.scene.paint.Color;
 import javafx.scene.paint.Paint;
 import javafx.util.Duration;
 
+import java.util.ArrayList;
+import java.util.Collections;
 import java.util.List;
 
 /**
@@ -247,7 +249,9 @@ public class MFXListView<T> extends ListView<T> {
                 );
 
         static {
-            cssMetaDataList = List.of(HIDE_SCROLLBARS, DEPTH_LEVEL);
+            List<CssMetaData<? extends Styleable, ?>> lsvCssMetaData = new ArrayList<>(ListView.getClassCssMetaData());
+            Collections.addAll(lsvCssMetaData, HIDE_SCROLLBARS, DEPTH_LEVEL);
+            cssMetaDataList = Collections.unmodifiableList(lsvCssMetaData);
         }
 
     }

+ 5 - 1
materialfx/src/main/java/io/github/palexdev/materialfx/controls/MFXProgressBar.java

@@ -24,6 +24,8 @@ import javafx.css.*;
 import javafx.scene.control.ProgressBar;
 import javafx.scene.control.Skin;
 
+import java.util.ArrayList;
+import java.util.Collections;
 import java.util.List;
 
 /**
@@ -98,7 +100,9 @@ public class MFXProgressBar extends ProgressBar {
                 );
 
         static {
-            cssMetaDataList = List.of(ANIMATION_SPEED);
+            List<CssMetaData<? extends Styleable, ?>> prbCssMetaData = new ArrayList<>(ProgressBar.getClassCssMetaData());
+            Collections.addAll(prbCssMetaData, ANIMATION_SPEED);
+            cssMetaDataList = Collections.unmodifiableList(prbCssMetaData);
         }
     }
 

+ 5 - 1
materialfx/src/main/java/io/github/palexdev/materialfx/controls/MFXProgressSpinner.java

@@ -25,6 +25,8 @@ import javafx.scene.control.ProgressIndicator;
 import javafx.scene.control.Skin;
 import javafx.scene.layout.Region;
 
+import java.util.ArrayList;
+import java.util.Collections;
 import java.util.List;
 
 /**
@@ -128,7 +130,9 @@ public class MFXProgressSpinner extends ProgressIndicator {
                 );
 
         static {
-            cssMetaDataList = List.of(RADIUS, STARTING_ANGLE);
+            List<CssMetaData<? extends Styleable, ?>> priCssMetaData = new ArrayList<>(ProgressIndicator.getClassCssMetaData());
+            Collections.addAll(priCssMetaData, RADIUS, STARTING_ANGLE);
+            cssMetaDataList = Collections.unmodifiableList(priCssMetaData);
         }
     }
 

+ 5 - 5
materialfx/src/main/java/io/github/palexdev/materialfx/controls/MFXRadioButton.java

@@ -26,6 +26,8 @@ import javafx.scene.control.Skin;
 import javafx.scene.paint.Color;
 import javafx.scene.paint.Paint;
 
+import java.util.ArrayList;
+import java.util.Collections;
 import java.util.List;
 
 /**
@@ -202,11 +204,9 @@ public class MFXRadioButton extends RadioButton {
                 );
 
         static {
-            cssMetaDataList = List.of(
-                    SELECTED_COLOR, UNSELECTED_COLOR,
-                    SELECTED_TEXT_COLOR, UNSELECTED_TEXT_COLOR,
-                    CHANGE_TEXT_COLOR
-            );
+            List<CssMetaData<? extends Styleable, ?>> rdbCssMetaData = new ArrayList<>(RadioButton.getClassCssMetaData());
+            Collections.addAll(rdbCssMetaData, SELECTED_COLOR, UNSELECTED_COLOR, SELECTED_TEXT_COLOR, UNSELECTED_TEXT_COLOR, CHANGE_TEXT_COLOR);
+            cssMetaDataList = Collections.unmodifiableList(rdbCssMetaData);
         }
 
     }

+ 19 - 1
materialfx/src/main/java/io/github/palexdev/materialfx/controls/MFXStageDialog.java

@@ -123,8 +123,12 @@ public class MFXStageDialog {
 
     /**
      * Shows the dialog by showing the stage, center the stage in its owner and plays animations if requested
+     * Common method to avoid duplicate code for {@link #show()} and {@link #showAndWait()}.
+     * <p>
+     * This is responsible for playing the show animation, add the scrim effect, and setting the stage position
+     * on screen.
      */
-    public void show() {
+    protected void showCommon() {
         if (dialogStage.getScene() == null) {
             throw new NullPointerException("The dialog has not been set!");
         }
@@ -161,10 +165,24 @@ public class MFXStageDialog {
             dialogStage.setX(manualX);
             dialogStage.setY(manualY);
         }
+    }
 
+    /**
+     * Calls {@link #showCommon()} and then {@link Stage#show()}.
+     */
+    public void show() {
+        showCommon();
         this.dialogStage.show();
     }
 
+    /**
+     * Calls {@link #showCommon()} and then {@link Stage#showAndWait()}.
+     */
+    public void showAndWait() {
+        showCommon();
+        this.dialogStage.showAndWait();
+    }
+
     /**
      * Closes the dialog by closing the stage, plays animations if requested.
      */

+ 5 - 6
materialfx/src/main/java/io/github/palexdev/materialfx/controls/MFXTextField.java

@@ -40,6 +40,8 @@ import javafx.scene.paint.Color;
 import javafx.scene.paint.Paint;
 import javafx.scene.shape.StrokeLineCap;
 
+import java.util.ArrayList;
+import java.util.Collections;
 import java.util.List;
 import java.util.function.Supplier;
 
@@ -529,12 +531,9 @@ public class MFXTextField extends TextField implements Validated<MFXDialogValida
                 );
 
         static {
-            cssMetaDataList = List.of(
-                    TEXT_LIMIT,
-                    LINE_COLOR, UNFOCUSED_LINE_COLOR,
-                    LINE_STROKE_WIDTH, LINE_STROKE_CAP,
-                    IS_VALIDATED
-            );
+            List<CssMetaData<? extends Styleable, ?>> tefCssMetaData = new ArrayList<>(TextField.getClassCssMetaData());
+            Collections.addAll(tefCssMetaData, TEXT_LIMIT, LINE_COLOR, UNFOCUSED_LINE_COLOR, LINE_STROKE_WIDTH, LINE_STROKE_CAP, IS_VALIDATED);
+            cssMetaDataList = Collections.unmodifiableList(tefCssMetaData);
         }
 
     }

+ 5 - 5
materialfx/src/main/java/io/github/palexdev/materialfx/controls/MFXToggleButton.java

@@ -29,6 +29,8 @@ import javafx.scene.control.ToggleButton;
 import javafx.scene.paint.Color;
 import javafx.scene.paint.Paint;
 
+import java.util.ArrayList;
+import java.util.Collections;
 import java.util.List;
 
 /**
@@ -263,11 +265,9 @@ public class MFXToggleButton extends ToggleButton {
                 );
 
         static {
-            cssMetaDataList = List.of(
-                    TOGGLE_COLOR, UNTOGGLE_COLOR,
-                    TOGGLE_LINE_COLOR, UNTOGGLE_LINE_COLOR,
-                    SIZE
-            );
+            List<CssMetaData<? extends Styleable, ?>> tobCssMetaData = new ArrayList<>(ToggleButton.getClassCssMetaData());
+            Collections.addAll(tobCssMetaData, TOGGLE_COLOR, UNTOGGLE_COLOR, TOGGLE_LINE_COLOR, UNTOGGLE_LINE_COLOR, SIZE);
+            cssMetaDataList = Collections.unmodifiableList(tobCssMetaData);
         }
     }
 

+ 5 - 5
materialfx/src/main/java/io/github/palexdev/materialfx/controls/base/AbstractMFXToggleNode.java

@@ -26,6 +26,8 @@ import javafx.scene.control.ToggleButton;
 import javafx.scene.paint.Color;
 import javafx.scene.paint.Paint;
 
+import java.util.ArrayList;
+import java.util.Collections;
 import java.util.List;
 
 public abstract class AbstractMFXToggleNode extends ToggleButton {
@@ -249,11 +251,9 @@ public abstract class AbstractMFXToggleNode extends ToggleButton {
                 );
 
         static {
-            cssMetaDataList = List.of(
-                    UNSELECTED_COLOR, SELECTED_COLOR,
-                    UNSELECTED_BORDER_COLOR, SELECTED_BORDER_COLOR,
-                    LABEL_TEXT_GAP
-            );
+            List<CssMetaData<? extends Styleable, ?>> tonCssMetaData = new ArrayList<>(ToggleButton.getClassCssMetaData());
+            Collections.addAll(tonCssMetaData, UNSELECTED_COLOR, SELECTED_COLOR, UNSELECTED_BORDER_COLOR, SELECTED_BORDER_COLOR, LABEL_TEXT_GAP);
+            cssMetaDataList = Collections.unmodifiableList(tonCssMetaData);
         }
 
     }

+ 5 - 1
materialfx/src/main/java/io/github/palexdev/materialfx/controls/cell/MFXListCell.java

@@ -33,6 +33,8 @@ import javafx.scene.layout.CornerRadii;
 import javafx.scene.paint.Color;
 import javafx.scene.paint.Paint;
 
+import java.util.ArrayList;
+import java.util.Collections;
 import java.util.List;
 import java.util.stream.Collectors;
 
@@ -258,7 +260,9 @@ public class MFXListCell<T> extends ListCell<T> {
                 );
 
         static {
-            cssMetaDataList = List.of(SELECTED_COLOR, HOVER_COLOR, CORNER_RADIUS, BACKGROUND_INSETS);
+            List<CssMetaData<? extends Styleable, ?>> licCssMetaData = new ArrayList<>(ListCell.getClassCssMetaData());
+            Collections.addAll(licCssMetaData, SELECTED_COLOR, HOVER_COLOR, CORNER_RADIUS, BACKGROUND_INSETS);
+            cssMetaDataList = Collections.unmodifiableList(licCssMetaData);
         }
 
     }

+ 5 - 6
materialfx/src/main/java/io/github/palexdev/materialfx/controls/legacy/MFXLegacyComboBox.java

@@ -42,6 +42,8 @@ import javafx.scene.paint.Color;
 import javafx.scene.paint.Paint;
 import javafx.scene.shape.StrokeLineCap;
 
+import java.util.ArrayList;
+import java.util.Collections;
 import java.util.List;
 import java.util.function.Supplier;
 
@@ -428,12 +430,9 @@ public class MFXLegacyComboBox<T> extends ComboBox<T> implements Validated<MFXDi
                 );
 
         static {
-            cssMetaDataList = List.of(
-                    ANIMATE_LINES,
-                    LINE_COLOR, UNFOCUSED_LINE_COLOR,
-                    LINE_STROKE_WIDTH, LINE_STROKE_CAP,
-                    IS_VALIDATED
-            );
+            List<CssMetaData<? extends Styleable, ?>> lcbCssMetaData = new ArrayList<>(ComboBox.getClassCssMetaData());
+            Collections.addAll(lcbCssMetaData, ANIMATE_LINES, LINE_COLOR, UNFOCUSED_LINE_COLOR, LINE_STROKE_WIDTH, LINE_STROKE_CAP, IS_VALIDATED);
+            cssMetaDataList = Collections.unmodifiableList(lcbCssMetaData);
         }
 
     }

+ 5 - 1
materialfx/src/main/java/io/github/palexdev/materialfx/controls/legacy/MFXLegacyTableRow.java

@@ -32,6 +32,8 @@ import javafx.scene.layout.CornerRadii;
 import javafx.scene.paint.Color;
 import javafx.scene.paint.Paint;
 
+import java.util.ArrayList;
+import java.util.Collections;
 import java.util.List;
 
 /**
@@ -177,7 +179,9 @@ public class MFXLegacyTableRow<T> extends TableRow<T> {
                 );
 
         static {
-            cssMetaDataList = List.of(SELECTED_COLOR, HOVER_COLOR);
+            List<CssMetaData<? extends Styleable, ?>> tarCssMetaData = new ArrayList<>(TableRow.getClassCssMetaData());
+            Collections.addAll(tarCssMetaData, SELECTED_COLOR, HOVER_COLOR);
+            cssMetaDataList = Collections.unmodifiableList(tarCssMetaData);
         }
 
     }

+ 62 - 48
materialfx/src/main/java/io/github/palexdev/materialfx/font/FontResources.java

@@ -19,7 +19,7 @@
 package io.github.palexdev.materialfx.font;
 
 /**
- * Enumerator class for MaterialFX font resources. (Count: 81)
+ * Enumerator class for MaterialFX font resources. (Count: 95)
  */
 public enum FontResources {
     ANGLE_DOWN("mfx-angle-down", '\uE900'),
@@ -56,53 +56,67 @@ public enum FontResources {
     EXPAND("mfx-expand", '\uE91F'),
     EYE("mfx-eye", '\uE920'),
     EYE_SLASH("mfx-eye-slash", '\uE921'),
-    FILTER("mfx-filter", '\uE922'),
-    FILTER_ALT("mfx-filter-alt", '\uE923'),
-    FILTER_ALT_CLEAR("mfx-filter-alt-clear", '\uE924'),
-    FIRST_PAGE("mfx-first-page", '\uE925'),
-    FIT("mfx-fit", '\uE926'),
-    GEAR("mfx-gear", '\uE927'),
-    GOOGLE("mfx-google", '\uE928'),
-    GOOGLE_DRIVE("mfx-google-drive", '\uE929'),
-    HOME("mfx-home", '\uE92A'),
-    INFO("mfx-info", '\uE92B'),
-    INFO_CIRCLE("mfx-info-circle", '\uE92C'),
-    LAST_PAGE("mfx-last-page", '\uE92D'),
-    LEVEL_UP("mfx-level-up", '\uE92E'),
-    LOCK("mfx-lock", '\uE92F'),
-    LOCK_OPEN("mfx-lock-open", '\uE930'),
-    MINUS("mfx-minus", '\uE931'),
-    MINUS_CIRCLE("mfx-minus-circle", '\uE932'),
-    MODENA_MARK("mfx-modena-mark", '\uE933'),
-    NEXT("mfx-next", '\uE934'),
-    REDO("mfx-redo", '\uE935'),
-    RESTORE("mfx-restore", '\uE936'),
-    SEARCH("mfx-search", '\uE937'),
-    SEARCH_PLUS("mfx-search-plus", '\uE938'),
-    SELECT_ALL("mfx-select-all", '\uE939'),
-    SLIDERS("mfx-sliders", '\uE93A'),
-    STEP_BACKWARD("mfx-step-backward", '\uE93B'),
-    STEP_FORWARD("mfx-step-forward", '\uE93C'),
-    SYNC("mfx-sync", '\uE93D'),
-    SYNC_LIGHT("mfx-sync-light", '\uE93E'),
-    UNDO("mfx-undo", '\uE93F'),
-    USER("mfx-user", '\uE940'),
-    USERS("mfx-users", '\uE941'),
-    VARIANT10_MARK("mfx-variant10-mark", '\uE942'),
-    VARIANT11_MARK("mfx-variant11-mark", '\uE943'),
-    VARIANT12_MARK("mfx-variant12-mark", '\uE944'),
-    VARIANT3_MARK("mfx-variant3-mark", '\uE945'),
-    VARIANT4_MARK("mfx-variant4-mark", '\uE946'),
-    VARIANT5_MARK("mfx-variant5-mark", '\uE947'),
-    VARIANT6_MARK("mfx-variant6-mark", '\uE948'),
-    VARIANT7_MARK("mfx-variant7-mark", '\uE949'),
-    VARIANT8_MARK("mfx-variant8-mark", '\uE94A'),
-    VARIANT9_MARK("mfx-variant9-mark", '\uE94B'),
-    X("mfx-x", '\uE94C'),
-    X_ALT("mfx-x-alt", '\uE94D'),
-    X_CIRCLE("mfx-x-circle", '\uE94E'),
-    X_CIRCLE_LIGHT("mfx-x-circle-light", '\uE94F'),
-    X_LIGHT("mfx-x-light", '\uE950'),
+    FILE("mfx-file", '\uE922'),
+    FILTER("mfx-filter", '\uE923'),
+    FILTER_ALT("mfx-filter-alt", '\uE924'),
+    FILTER_ALT_CLEAR("mfx-filter-alt-clear", '\uE925'),
+    FIRST_PAGE("mfx-first-page", '\uE926'),
+    FIT("mfx-fit", '\uE927'),
+    FOLDER("mfx-folder", '\uE928'),
+    GEAR("mfx-gear", '\uE929'),
+    GOOGLE("mfx-google", '\uE92A'),
+    GOOGLE_DRAWING("mfx-google-drawing", '\uE92B'),
+    GOOGLE_DRIVE("mfx-google-drive", '\uE92C'),
+    GOOGLE_FORMS("mfx-google-forms", '\uE92D'),
+    GOOGLE_FUSION_TABLES("mfx-google-fusion-tables", '\uE92E'),
+    GOOGLE_PRESENTATION("mfx-google-presentation", '\uE92F'),
+    GOOGLE_SCRIPT("mfx-google-script", '\uE930'),
+    GOOGLE_SITES("mfx-google-sites", '\uE931'),
+    HOME("mfx-home", '\uE932'),
+    IMAGE("mfx-image", '\uE933'),
+    INFO("mfx-info", '\uE934'),
+    INFO_CIRCLE("mfx-info-circle", '\uE935'),
+    LAST_PAGE("mfx-last-page", '\uE936'),
+    LEVEL_UP("mfx-level-up", '\uE937'),
+    LOCK("mfx-lock", '\uE938'),
+    LOCK_OPEN("mfx-lock-open", '\uE939'),
+    MAP("mfx-map", '\uE93A'),
+    MINUS("mfx-minus", '\uE93B'),
+    MINUS_CIRCLE("mfx-minus-circle", '\uE93C'),
+    MODENA_MARK("mfx-modena-mark", '\uE93D'),
+    MUSIC("mfx-music", '\uE93E'),
+    NEXT("mfx-next", '\uE93F'),
+    REDO("mfx-redo", '\uE940'),
+    RESTORE("mfx-restore", '\uE941'),
+    SEARCH("mfx-search", '\uE942'),
+    SEARCH_PLUS("mfx-search-plus", '\uE943'),
+    SELECT_ALL("mfx-select-all", '\uE944'),
+    SHORTCUT("mfx-shortcut", '\uE945'),
+    SLIDERS("mfx-sliders", '\uE946'),
+    SPREADSHEET("mfx-spreadsheet", '\uE947'),
+    STEP_BACKWARD("mfx-step-backward", '\uE948'),
+    STEP_FORWARD("mfx-step-forward", '\uE949'),
+    SYNC("mfx-sync", '\uE94A'),
+    SYNC_LIGHT("mfx-sync-light", '\uE94B'),
+    UNDO("mfx-undo", '\uE94C'),
+    USER("mfx-user", '\uE94D'),
+    USERS("mfx-users", '\uE94E'),
+    VARIANT10_MARK("mfx-variant10-mark", '\uE94F'),
+    VARIANT11_MARK("mfx-variant11-mark", '\uE950'),
+    VARIANT12_MARK("mfx-variant12-mark", '\uE951'),
+    VARIANT3_MARK("mfx-variant3-mark", '\uE952'),
+    VARIANT4_MARK("mfx-variant4-mark", '\uE953'),
+    VARIANT5_MARK("mfx-variant5-mark", '\uE954'),
+    VARIANT6_MARK("mfx-variant6-mark", '\uE955'),
+    VARIANT7_MARK("mfx-variant7-mark", '\uE956'),
+    VARIANT8_MARK("mfx-variant8-mark", '\uE957'),
+    VARIANT9_MARK("mfx-variant9-mark", '\uE958'),
+    VIDEO("mfx-video", '\uE959'),
+    X("mfx-x", '\uE95A'),
+    X_ALT("mfx-x-alt", '\uE95B'),
+    X_CIRCLE("mfx-x-circle", '\uE95C'),
+    X_CIRCLE_LIGHT("mfx-x-circle-light", '\uE95D'),
+    X_LIGHT("mfx-x-light", '\uE95E'),
     ;
 
     public static FontResources findByDescription(String description) {

+ 6 - 0
materialfx/src/main/java/io/github/palexdev/materialfx/skins/MFXPasswordFieldSkin.java

@@ -105,10 +105,16 @@ public class MFXPasswordFieldSkin extends MFXTextFieldSkin {
 
         passwordField.addEventFilter(KeyEvent.KEY_TYPED, keyEvent -> {
             if (!isInvalidCharacter(keyEvent.getCharacter().charAt(0))) {
+
                 if (passwordField.getSelection().getLength() > 0) {
                     handleDeletion(passwordField.getText().length());
                 }
 
+                if (passwordField.getText().length() == passwordField.getTextLimit()) {
+                    keyEvent.consume();
+                    return;
+                }
+
                 sb.append(keyEvent.getCharacter());
                 setFakeText(getFakeText().concat(passwordField.getHideCharacter()));
                 setPassword(sb.toString());

+ 1 - 0
materialfx/src/main/java/io/github/palexdev/materialfx/skins/MFXRectangleToggleNodeSkin.java

@@ -64,6 +64,7 @@ public class MFXRectangleToggleNodeSkin extends SkinBase<MFXRectangleToggleNode>
         container.getStyleClass().setAll("container");
         container.setMinSize(Region.USE_PREF_SIZE, Region.USE_PREF_SIZE);
         container.setMaxSize(Region.USE_PREF_SIZE, Region.USE_PREF_SIZE);
+        container.alignmentProperty().bind(toggleNode.alignmentProperty());
         container.prefWidthProperty().bind(toggleNode.widthProperty());
         container.prefHeightProperty().bind(toggleNode.heightProperty());
 

BIN
materialfx/src/main/resources/io/github/palexdev/materialfx/fonts/MFXResources.ttf