Skip to content

Padding for whole text area or line number area #507

@AlexP11223

Description

@AlexP11223

I tried to add border via CSS, based on this https://stackoverflow.com/questions/37808715/how-to-make-look-and-feel-of-richtextfx-similar-to-textarea and issue #394.

It works, but line numbers cover part of the border, which doesn't look very nice.

I tried to add padding for .virtualized-scroll-pane, .styled-text-area, .virtual-flow and .virtualized-scroll-pane .styled-text-area .paragraph-box but it didn't work.

With the last one there is also a strange issue, see #508

CSS:

/* Border for RichTextFX, similar to normal JavaFX text area: focused color, etc.
*/

.virtualized-scroll-pane {
    -fx-background-color: linear-gradient(to bottom, derive(-fx-text-box-border, -10%), -fx-text-box-border),
    linear-gradient(from 0px 0px to 0px 5px, derive(-fx-control-inner-background, -9%), -fx-control-inner-background);
    -fx-background-insets: 0, 1;
    -fx-background-radius: 3, 2;
}

.virtualized-scroll-pane:focused {
    -fx-background-color:
            -fx-focus-color,
            -fx-control-inner-background,
            -fx-faint-focus-color,
            linear-gradient(from 0px 0px to 0px 5px, derive(-fx-control-inner-background, -9%), -fx-control-inner-background);
    -fx-background-insets: -0.2, 1, -1.4, 3;
    -fx-background-radius: 3, 2, 4, 0;
}

.virtualized-scroll-pane .styled-text-area {
    -fx-background-insets: 0px;
}

.virtualized-scroll-pane .styled-text-area .paragraph-box:first-paragraph .paragraph-text {
    -fx-padding: 5px 2px 0 2px;
}

.virtualized-scroll-pane .styled-text-area .paragraph-box:first-paragraph .lineno {
    -fx-padding: 5px 5px 0 5px;
}

.virtualized-scroll-pane .scroll-bar:horizontal {
    -fx-background-radius: 0 0 2 2;

    -fx-padding: 0 0.08333325em 0.08333325em 0.08333325em;
    -fx-border-insets: 0 0.08333325em 0.08333325em 0.08333325em;
    -fx-background-insets: 0 0.08333325em 0.08333325em 0.08333325em;
}

.virtualized-scroll-pane .scroll-bar:vertical {
    -fx-background-radius: 0 2 2 0;

    -fx-padding: 0.08333325em 0.08333325em 0.08333325em 0;
    -fx-border-insets: 0.08333325em 0.08333325em 0.08333325em 0;
    -fx-background-insets: 0.08333325em 0.08333325em 0.08333325em 0;
}
import javafx.scene.Node;
import org.fxmisc.flowless.Virtualized;
import org.fxmisc.flowless.VirtualizedScrollPane;

public class VirtualizedScrollPaneExt<T extends Node & Virtualized> extends VirtualizedScrollPane<T> {
    private PseudoClass FOCUSED = PseudoClass.getPseudoClass("focused");

    public VirtualizedScrollPaneExt(T content) {
        super(content);

        content.focusedProperty().addListener((obs, oldVal, newVal) -> {
            pseudoClassStateChanged(FOCUSED, newVal);
        });
    }
}

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions