36
36
import javax .swing .event .ChangeEvent ;
37
37
import javax .swing .event .ChangeListener ;
38
38
import javax .swing .plaf .ComponentUI ;
39
+ import javax .swing .plaf .UIResource ;
39
40
import javax .swing .text .*;
40
41
41
42
import com .github .weisj .darklaf .components .text .IconListener ;
@@ -190,7 +191,7 @@ protected void drawNumbering(final Graphics g, final int startLine, final int en
190
191
GraphicsContext config = GraphicsUtil .setupAntialiasing (g );
191
192
g .setColor (numberingPane .getForeground ());
192
193
193
- Font font = getNumberingFont (numberingPane .getTextComponent (), g );
194
+ Font font = getNumberingFont (numberingPane .getTextComponent (), g , numberingPane . getFont () );
194
195
g .setFont (font );
195
196
FontMetrics fm = numberingPane .getFontMetrics (font );
196
197
@@ -201,20 +202,23 @@ protected void drawNumbering(final Graphics g, final int startLine, final int en
201
202
String numberStr = String .valueOf (i );
202
203
Rectangle lineRect = textComponent .modelToView (off );
203
204
g .setColor (lineRect .y == yCur ? foregroundHighlight : numberingPane .getForeground ());
204
- g .drawString (numberStr , width - OUTER_PAD - fm .stringWidth (numberStr ),
205
+ g .drawString (numberStr , width - OUTER_PAD - fm .stringWidth (numberStr ) - maxIconWidth ,
205
206
lineRect .y + lineRect .height - descent );
206
207
} catch (final BadLocationException ignored ) {
207
208
}
208
209
}
209
210
config .restore ();
210
211
}
211
212
212
- private Font getNumberingFont (final JComponent c , final Graphics g ) {
213
- Font font = c .getFont ();
214
- if (font != null ) {
215
- float newSize = (float ) font .getSize () - 1 ;
213
+ private Font getNumberingFont (final JComponent c , final Graphics g , final Font f ) {
214
+ Font baseFont = c .getFont ();
215
+ Font font = f ;
216
+ if (font instanceof UIResource ) {
217
+ int newSize = baseFont .getSize () - 1 ;
216
218
if (newSize > 0 ) {
217
- font = font .deriveFont (newSize );
219
+ font = font .deriveFont ((float ) newSize );
220
+ } else {
221
+ font = font .deriveFont (baseFont .getSize2D ());
218
222
}
219
223
} else {
220
224
font = g .getFont ();
@@ -355,9 +359,6 @@ public void propertyChange(final PropertyChangeEvent evt) {
355
359
((Caret ) newCaret ).addChangeListener (currentLinePainter );
356
360
}
357
361
}
358
- } else if (PropertyKey .FONT .equals (key )) {
359
- Font font = textComponent .getFont ();
360
- numberingPane .setFont (font .deriveFont (Math .max (font .getSize () - 1 , 1.0f )));
361
362
} else if (NumberingPane .KEY_EDITOR .equals (key )) {
362
363
Object newPane = evt .getNewValue ();
363
364
if (textComponent != null ) {
@@ -378,8 +379,6 @@ public void propertyChange(final PropertyChangeEvent evt) {
378
379
}
379
380
textComponent .addPropertyChangeListener (getPropertyChangeListener ());
380
381
textComponent .getCaret ().addChangeListener (getChangeListener ());
381
- Font font = textComponent .getFont ();
382
- numberingPane .setFont (font .deriveFont (Math .max (font .getSize () - 1 , 1.0f )));
383
382
oldBackground = textComponent .getBackground ();
384
383
textComponent .setBackground (UIManager .getColor ("NumberingPane.textBackground" ));
385
384
}
0 commit comments