Anforderungen  |   Konzepte  |   Entwurf  |   Entwicklung  |   Qualitätssicherung  |   Lebenszyklus  |   Steuerung
 
 
 
 


Quelle  main   Sprache: C

 
diff -ru jedit5.7.0/jEdit/org/gjt/sp/jedit/syntax/Chunk.java jedit5.7.0-patched/jEdit/org/gjt/sp/jedit/syntax/Chunk.java
--- jedit5.7.0/jEdit/org/gjt/sp/jedit/syntax/Chunk.java 2024-08-03 19:53:18.000000000 +0200
+++ jedit5.7.0-patched/jEdit/org/gjt/sp/jedit/syntax/Chunk.java 2024-10-29 11:50:54.066016546 +0100
@@ -332,9 +332,9 @@
  //{{{ Package private members
 
  //{{{ Instance variables
- SyntaxStyle style;
+ public SyntaxStyle style;
  // set up after init()
- float width;
+ public float width;
  //}}}
 
  //{{{ Chunk constructor
@@ -584,8 +584,8 @@
  // this is either style.getBackgroundColor() or
  // styles[defaultID].getBackgroundColor()
  private Color background;
- private char[] chars;
- private String str;
+ public char[] chars;
+ public String str;
  private GlyphData glyphData;
  //}}}
 
@@ -926,6 +926,11 @@
   }
 
   @Override
+  public GlyphData computeIfAbsent(GlyphKey key, java.util.function.Function<? super GlyphKey, ? extends GlyphData> f) {
+   synchronized (this) { return super.computeIfAbsent(key, f); }
+  }
+
+  @Override
   protected boolean removeEldestEntry(Map.Entry<GlyphKey, GlyphData> eldest)
   {
    return size() > capacity;
diff -Nru jedit5.7.0/jEdit/org/gjt/sp/jedit/textarea/TextArea.java jedit5.7.0-patched/jEdit/org/gjt/sp/jedit/textarea/TextArea.java
--- jedit5.7.0/jEdit/org/gjt/sp/jedit/textarea/TextArea.java 2024-08-03 19:53:18.000000000 +0200
+++ jedit5.7.0-patched/jEdit/org/gjt/sp/jedit/textarea/TextArea.java 2025-08-24 16:31:35.254675884 +0200
@@ -87,7 +87,9 @@
   //{{{ Initialize some misc. stuff
   selectionManager = new SelectionManager(this);
   chunkCache = new ChunkCache(this);
-  painter = new TextAreaPainter(this);
+  TextAreaPainterFactory painterFactory =
+   ServiceManager.getService(TextAreaPainterFactory.class, "painter-factory");
+  painter = painterFactory == null ? new TextAreaPainter(this) : painterFactory.create(this);
   elasticTabstopsExpander = new ElasticTabstopsTabExpander(this);
   gutter = new Gutter(this);
   gutter.setMouseActionsProvider(new MouseActions(propertyManager, "gutter"));
@@ -919,6 +921,11 @@
   return chunkCache.getLineInfo(screenLine).physicalLine;
  } //}}}
 
+        public Chunk getChunksOfScreenLine(int screenLine)
+        {
+                return chunkCache.getLineInfo(screenLine).chunks;
+        }
+
  //{{{ getScreenLineOfOffset() method
  /**
   * Returns the screen (wrapped) line containing the specified offset.
@@ -1627,8 +1634,8 @@
   }
 
   // Scan backwards, trying to find a bracket
-  String openBrackets = "([{«‹⟨⌈⌊⦇⟦⦃⟪";
-  String closeBrackets = ")]}»›⟩⌉⌋⦈⟧⦄⟫";
+  String openBrackets = "([{«‹⟨⌈⌊⦇⟦⦃⟪⦉";
+  String closeBrackets = ")]}»›⟩⌉⌋⦈⟧⦄⟫⦊";
   int count = 1;
   char openBracket = '\0';
   char closeBracket = '\0';
@@ -4983,6 +4990,7 @@
  final Point offsetXY;
 
  boolean lastLinePartial;
+ public boolean isLastLinePartial() { return lastLinePartial; }
 
  boolean blink;
  //}}}
@@ -6297,7 +6305,7 @@
   private final BreakIterator charBreaker;
   private final int index0Offset;
 
-  LineCharacterBreaker(TextArea textArea, int offset)
+  public LineCharacterBreaker(TextArea textArea, int offset)
   {
    final int line = textArea.getLineOfOffset(offset);
    charBreaker = BreakIterator.getCharacterInstance();
@@ -6348,12 +6356,12 @@
   // This class adapt CharSequence, which is used to avoid
   // text copy, to CharacterIterator, which is used to pass
   // a text to BreakIterator.
-  private static class CharIterator implements CharacterIterator
+  public static class CharIterator implements CharacterIterator
   {
    private final CharSequence sequence;
    private int index;
 
-   CharIterator(CharSequence sequence)
+   public CharIterator(CharSequence sequence)
    {
     this.sequence = sequence;
     index = 0;
@@ -6455,17 +6463,17 @@
   } //}}}
  } //}}}
 
- private int getPrevCharacterOffset(int offset)
+ public int getPrevCharacterOffset(int offset)
  {
   return new LineCharacterBreaker(this, offset).previousOf(offset);
  }
 
- private int getNextCharacterOffset(int offset)
+ public int getNextCharacterOffset(int offset)
  {
   return new LineCharacterBreaker(this, offset).nextOf(offset);
  }
 
- private int getCharacterBoundaryAt(int offset)
+ public int getCharacterBoundaryAt(int offset)
  {
   final LineCharacterBreaker charBreaker =
    new LineCharacterBreaker(this, offset);
diff -Nru jedit5.7.0/jEdit/org/gjt/sp/jedit/textarea/TextAreaPainterFactory.java jedit5.7.0-patched/jEdit/org/gjt/sp/jedit/textarea/TextAreaPainterFactory.java
--- jedit5.7.0/jEdit/org/gjt/sp/jedit/textarea/TextAreaPainterFactory.java 1970-01-01 01:00:00.000000000 +0100
+++ jedit5.7.0-patched/jEdit/org/gjt/sp/jedit/textarea/TextAreaPainterFactory.java 2025-08-23 12:23:21.088223187 +0200
@@ -0,0 +1,9 @@
+package org.gjt.sp.jedit.textarea;
+
+public class TextAreaPainterFactory
+{
+    public TextAreaPainter create(TextArea textArea)
+    {
+        return new TextAreaPainter(textArea);
+    }
+}
diff -Nru jedit5.7.0/jEdit/org/gjt/sp/jedit/textarea/TextAreaPainter.java jedit5.7.0-patched/jEdit/org/gjt/sp/jedit/textarea/TextAreaPainter.java
--- jedit5.7.0/jEdit/org/gjt/sp/jedit/textarea/TextAreaPainter.java 2024-08-03 19:53:18.000000000 +0200
+++ jedit5.7.0-patched/jEdit/org/gjt/sp/jedit/textarea/TextAreaPainter.java 2025-08-23 12:44:12.625895785 +0200
@@ -994,7 +994,7 @@
   * Creates a new painter. Do not create instances of this class
   * directly.
   */
- TextAreaPainter(TextArea textArea)
+ public TextAreaPainter(TextArea textArea)
  {
   enableEvents(AWTEvent.FOCUS_EVENT_MASK
    | AWTEvent.KEY_EVENT_MASK
diff -ru jedit5.7.0/jEdit/org/gjt/sp/jedit/TextUtilities.java jedit5.7.0-patched/jEdit/org/gjt/sp/jedit/TextUtilities.java
--- jedit5.7.0/jEdit/org/gjt/sp/jedit/TextUtilities.java 2024-08-03 19:53:20.000000000 +0200
+++ jedit5.7.0-patched/jEdit/org/gjt/sp/jedit/TextUtilities.java 2024-10-29 11:50:54.066016546 +0100
@@ -115,6 +115,8 @@
   case '⦄': if (direction != null) direction[0] = false; return '⦃';
   case '⟪': if (direction != null) direction[0] = true;  return '⟫';
   case '⟫': if (direction != null) direction[0] = false; return '⟪';
+  case '⦉': if (direction != null) direction[0] = true;  return '⦊';
+  case '⦊': if (direction != null) direction[0] = false; return '⦉';
   default:  return '\0';
   }
  } //}}}
diff -Nru jedit5.7.0/jEdit/org/gjt/sp/jedit/GUIUtilities.java jedit5.7.0-patched/jEdit/org/gjt/sp/jedit/GUIUtilities.java
--- jedit5.7.0/jEdit/org/gjt/sp/jedit/GUIUtilities.java 2024-08-03 19:53:15.000000000 +0200
+++ jedit5.7.0-patched/jEdit/org/gjt/sp/jedit/GUIUtilities.java 2025-08-23 15:00:39.272121361 +0200
@@ -42,6 +42,8 @@
 import java.net.URL;
 import java.util.*;
 import java.util.List;
+import java.util.regex.Pattern;
+import java.util.regex.Matcher;
 import java.lang.ref.SoftReference;
 
 import javax.annotation.Nonnull;
@@ -72,6 +74,8 @@
 import java.util.concurrent.ScheduledExecutorService;
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.atomic.AtomicLong;
+
+import com.formdev.flatlaf.extras.FlatSVGIcon;
 //}}}
 
 /** Various GUI utility functions related to icons, menus, toolbars, keyboard shortcuts, etc.
@@ -115,14 +119,14 @@
   * @return the icon
   * @since jEdit 2.6pre7
   */
- public static Icon loadIcon(String iconName)
+ public static Icon loadIcon(String iconSpec)
  {
-  if(iconName == null)
+  if(iconSpec == null)
    return null;
 
   // * Enable old icon naming scheme support
-  if(deprecatedIcons.containsKey(iconName))
-   iconName = deprecatedIcons.get(iconName);
+  if(deprecatedIcons.containsKey(iconSpec))
+   iconSpec = deprecatedIcons.get(iconSpec);
 
   // check if there is a cached version first
   Map<String, Icon> cache = null;
@@ -135,12 +139,25 @@
    cache = new HashMap<>();
    iconCache = new SoftReference<>(cache);
   }
-  Icon icon = cache.get(iconName);
+  Icon icon = cache.get(iconSpec);
   if(icon != null)
    return icon;
 
   URL url;
 
+  float iconScale = 1.0f;
+   String iconName = iconSpec;
+       {
+         Matcher matcher = Pattern.compile("^([^?]+)\\?scale=(.+)$").matcher(iconSpec);
+         if (matcher.matches()) {
+          try {
+           iconScale = Float.valueOf(matcher.group(2));
+           iconName = matcher.group(1);
+          }
+          catch (NumberFormatException e) { }
+         }
+        }
+
   try
   {
    // get the icon
@@ -164,9 +181,11 @@
    }
   }
 
-  icon = new ImageIcon(url);
+  icon =
+   url.toString().endsWith(".svg") ?
+    new FlatSVGIcon(url).derive(iconScale) : new ImageIcon(url);
 
-  cache.put(iconName,icon);
+  cache.put(iconSpec,icon);
   return icon;
  } //}}}
 
@@ -1094,9 +1113,7 @@
     return new Font("Monospaced", Font.PLAIN, 12);
    }
    else {
-    Font font2 =
-     new Font(OperatingSystem.isWindows() ? "Lucida Console" : "Monospaced",
-      Font.PLAIN, font1.getSize());
+    Font font2 = new Font("Isabelle DejaVu Sans Mono", Font.PLAIN, font1.getSize());
     FontRenderContext frc = new FontRenderContext(null, true, false);
     float scale =
      font1.getLineMetrics("", frc).getHeight() / font2.getLineMetrics("", frc).getHeight();
@@ -1107,6 +1124,48 @@
 
  //{{{ Colors and styles
 
+ public static Color menuAcceleratorForeground(boolean selection) {
+  Color color =
+   UIManager.getColor(selection ?
+    "MenuItem.acceleratorSelectionForeground" :
+    "MenuItem.acceleratorForeground");
+
+  if (color == null) color = defaultFgColor();
+
+  return color;
+ }
+
+ public static boolean isDarkLaf()
+ {
+  return com.formdev.flatlaf.FlatLaf.isLafDark();
+ }
+
+ public static Color defaultBgColor()
+ {
+  return isDarkLaf() ? Color.BLACK : Color.WHITE;
+ }
+
+ public static Color defaultFgColor()
+ {
+  return isDarkLaf() ? Color.WHITE : Color.BLACK;
+ }
+
+ public static String getTheme()
+ {
+  return isDarkLaf() ? "dark" : "";
+ }
+
+ public static String getThemeSuffix()
+ {
+  return getThemeSuffix(".");
+ }
+
+ public static String getThemeSuffix(String s)
+ {
+  String t = getTheme();
+  return t.isEmpty() ? t : s + t;
+ }
+
  //{{{ getStyleString() method
  /**
   * Converts a style into it's string representation.
@@ -1407,8 +1466,8 @@
  {
   for (Component child: win.getComponents())
   {
-   child.setBackground(jEdit.getColorProperty("view.bgColor", Color.WHITE));
-   child.setForeground(jEdit.getColorProperty("view.fgColor", Color.BLACK));
+   child.setBackground(jEdit.getColorProperty("view.bgColor", defaultBgColor()));
+   child.setForeground(jEdit.getColorProperty("view.fgColor"));
    if (child instanceof JTextPane)
     ((JTextPane)child).setUI(new javax.swing.plaf.basic.BasicEditorPaneUI());
    if (child instanceof Container)
@@ -1471,7 +1530,7 @@
      comp = real;
    }
 
-   if(comp.getClass().equals(clazz))
+   if(clazz.isInstance(comp))
     return comp;
    else if(comp instanceof JPopupMenu)
     comp = ((JPopupMenu)comp).getInvoker();
@@ -1596,7 +1655,7 @@
   deprecatedIcons.put("NextFile.png",    "22x22/go-last.png");
   deprecatedIcons.put("PreviousFile.png","22x22/go-first.png");
 
-  deprecatedIcons.put("closebox.gif",   "10x10/actions/close.png");
+  deprecatedIcons.put("closebox.gif",   "32x32/actions/process-stop.svg?scale=0.33");
   deprecatedIcons.put("normal.gif",   "10x10/status/document-unmodified.png");
   deprecatedIcons.put("readonly.gif",   "10x10/emblem/emblem-readonly.png");
   deprecatedIcons.put("dirty.gif",    "10x10/status/document-modified.png");
@@ -1619,6 +1678,21 @@
  }
  //}}}
 
+ //{{{ isPopupTrigger() method
+ /**
+  * Returns if the specified event is the popup trigger event.
+  * This implements precisely defined behavior, as opposed to
+  * MouseEvent.isPopupTrigger().
+  * @param evt The event
+  * @since jEdit 3.2pre8
+  * @deprecated use {@link GenericGUIUtilities#requestFocus(Window, Component)}
+  */
+ @Deprecated
+ public static boolean isPopupTrigger(MouseEvent evt)
+ {
+  return GenericGUIUtilities.isPopupTrigger(evt);
+ } //}}}
+
  //{{{ init() method
  static void init()
  {
diff -ru jedit5.7.0/jEdit/build.xml jedit5.7.0-patched/jEdit/build.xml
--- jedit5.7.0/jEdit/build.xml 2024-08-03 19:53:28.000000000 +0200
+++ jedit5.7.0-patched/jEdit/build.xml 2025-04-16 17:20:57.401732024 +0200
@@ -488,6 +488,7 @@
     <include name="org/gjt/sp/jedit/icons/**/*.gif"/>
     <include name="org/gjt/sp/jedit/icons/**/*.jpg"/>
     <include name="org/gjt/sp/jedit/icons/**/*.png"/>
+    <include name="org/gjt/sp/jedit/icons/**/*.svg"/>
     <include name="org/jedit/localization/*.props"/>
    </fileset>
   </jar>
@@ -783,6 +784,7 @@
     <include name="*.txt"/>
     <include name="*.html"/>
     <include name="*.png"/>
+    <include name="*.svg"/>
     <include name="tips/**"/>
    </fileset>
   </copy>
diff -ru jedit5.7.0/jEdit/ivy.xml jedit5.7.0-patched/jEdit/ivy.xml
--- jedit5.7.0/jEdit/ivy.xml 2024-08-03 19:53:28.000000000 +0200
+++ jedit5.7.0-patched/jEdit/ivy.xml 2025-04-16 12:22:57.782535840 +0200
@@ -94,5 +94,8 @@
   <dependency org="com.google.code.findbugs" name="jsr305" rev="3.0.2"/>
 
   <dependency org="com.evolvedbinary.appbundler" name="appbundler" rev="1.3.0" conf="appbundler"/>
+
+  <dependency org="com.formdev" name="flatlaf" rev="3.6"/>
+  <dependency org="com.formdev" name="flatlaf-extras" rev="3.6"/>
  </dependencies>
 </ivy-module>
diff -ru jedit5.7.0/jEdit/org/gjt/sp/jedit/gui/MarkerViewer.java jedit5.7.0-patched/jEdit/org/gjt/sp/jedit/gui/MarkerViewer.java
--- jedit5.7.0/jEdit/org/gjt/sp/jedit/gui/MarkerViewer.java 2024-08-03 19:53:18.000000000 +0200
+++ jedit5.7.0-patched/jEdit/org/gjt/sp/jedit/gui/MarkerViewer.java 2025-04-16 21:35:23.519418287 +0200
@@ -50,28 +50,28 @@
   toolBar.add(Box.createGlue());
 
   RolloverButton addMarker = new RolloverButton(
-   GUIUtilities.loadIcon("Plus.png"));
+   GUIUtilities.loadIcon(jEdit.getProperty("add-marker.icon.small")));
   addMarker.setToolTipText(GenericGUIUtilities.prettifyMenuLabel(
    jEdit.getProperty("add-marker.label")));
   addMarker.addActionListener(this);
   addMarker.setActionCommand("add-marker");
   toolBar.add(addMarker);
 
-  previous = new RolloverButton(GUIUtilities.loadIcon("ArrowL.png"));
+  previous = new RolloverButton(GUIUtilities.loadIcon(jEdit.getProperty("prev-marker.icon.small")));
   previous.setToolTipText(GenericGUIUtilities.prettifyMenuLabel(
    jEdit.getProperty("prev-marker.label")));
   previous.addActionListener(this);
   previous.setActionCommand("prev-marker");
   toolBar.add(previous);
 
-  next = new RolloverButton(GUIUtilities.loadIcon("ArrowR.png"));
+  next = new RolloverButton(GUIUtilities.loadIcon(jEdit.getProperty("next-marker.icon.small")));
   next.setToolTipText(GenericGUIUtilities.prettifyMenuLabel(
    jEdit.getProperty("next-marker.label")));
   next.addActionListener(this);
   next.setActionCommand("next-marker");
   toolBar.add(next);
 
-  clear = new RolloverButton(GUIUtilities.loadIcon("Clear.png"));
+  clear = new RolloverButton(GUIUtilities.loadIcon(jEdit.getProperty("remove-all-markers.icon.small")));
   clear.setToolTipText(GenericGUIUtilities.prettifyMenuLabel(
    jEdit.getProperty("remove-all-markers.label")));
   clear.addActionListener(this);
diff -Nru jedit5.7.0/jEdit/org/gjt/sp/jedit/jedit_gui.props jedit5.7.0-patched/jEdit/org/gjt/sp/jedit/jedit_gui.props
--- jedit5.7.0/jEdit/org/gjt/sp/jedit/jedit_gui.props 2024-08-03 19:53:20.000000000 +0200
+++ jedit5.7.0-patched/jEdit/org/gjt/sp/jedit/jedit_gui.props 2025-08-23 18:50:05.907962159 +0200
@@ -8,13 +8,15 @@
 ###
 
 #{{{ Common icons
-common.add.icon=22x22/actions/list-add.png
-common.remove.icon=22x22/actions/list-remove.png
-common.moveUp.icon=22x22/actions/go-up.png
-common.moveDown.icon=22x22/actions/go-down.png
-common.clearAll.icon=22x22/actions/edit-clear.png
+common.add.icon=32x32/actions/list-add.svg?scale=0.7
+common.remove.icon=32x32/actions/list-remove.svg?scale=0.7
+common.moveUp.icon=32x32/actions/go-up.svg?scale=0.7
+common.moveDown.icon=32x32/actions/go-down.svg?scale=0.7
+common.clearAll.icon=32x32/actions/edit-clear.svg?scale=0.7
 logo.icon.small=16x16/apps/jedit.png
 logo.icon.medium=32x32/apps/jedit.png
+navigate-backwards.icon=idea-icons/expui/general/chevronLeft.svg?scale=1.2
+navigate-forwards.icon=idea-icons/expui/general/chevronRight.svg?scale=1.2
 
 #}}}
 
@@ -28,8 +30,8 @@
 defer=false
 startup=true
 
-broken-image.icon=22x22/status/image-missing.png
-dropdown-arrow.icon=ToolbarMenu.gif
+broken-image.icon=32x32/status/image-missing.svg?scale=0.7
+dropdown-arrow.icon=idea-icons/general/buttonDropTriangle.svg
 #}}}
 
 #{{{ Tool bar
@@ -39,68 +41,69 @@
  buffer-options combined-options - \
  plugin-manager - help
 
-new-file.icon=22x22/actions/document-new.png
-open-file.icon=22x22/actions/document-open.png
-save.icon=22x22/actions/document-save.png
-close-buffer.icon=22x22/actions/document-close.png
-global-close-buffer.icon=22x22/actions/document-close.png
-print.icon=22x22/actions/document-print.png
+new-file.icon=32x32/actions/document-new.svg?scale=0.7
+open-file.icon=32x32/actions/document-open.svg?scale=0.7
+save.icon=32x32/actions/document-save.svg?scale=0.7
+close-buffer.icon=32x32/actions/process-stop.svg?scale=0.7
+global-close-buffer.icon=32x32/actions/process-stop.svg?scale=0.7
+print.icon=32x32/actions/document-print.svg?scale=0.7
 page-setup.icon=22x22/actions/printer-setup.png
-undo.icon=22x22/actions/edit-undo.png
-redo.icon=22x22/actions/edit-redo.png
-cut.icon=22x22/actions/edit-cut.png
-copy.icon=22x22/actions/edit-copy.png
-paste.icon=22x22/actions/edit-paste.png
-find.icon=22x22/actions/edit-find.png
-find-next.icon=22x22/actions/edit-find-next.png
-new-view.icon=22x22/actions/window-new.png
+undo.icon=32x32/actions/edit-undo.svg?scale=0.7
+redo.icon=32x32/actions/edit-redo.svg?scale=0.7
+cut.icon=32x32/actions/edit-cut.svg?scale=0.7
+copy.icon=32x32/actions/edit-copy.svg?scale=0.7
+paste.icon=32x32/actions/edit-paste.svg?scale=0.7
+find.icon=32x32/actions/edit-find.svg?scale=0.7
+find-prev.icon=32x32/actions/go-previous.svg?scale=0.7
+find-next.icon=32x32/actions/go-next.svg?scale=0.7
+new-view.icon=32x32/actions/window-new.svg?scale=0.7
 unsplit.icon=22x22/actions/window-unsplit.png
 split-horizontal.icon=22x22/actions/window-split-horizontal.png
 split-vertical.icon=22x22/actions/window-split-vertical.png
-buffer-options.icon=22x22/actions/document-properties.png
-global-options.icon=22x22/categories/preferences-system.png
-combined-options.icon=22x22/categories/preferences-system.png
+buffer-options.icon=32x32/actions/document-properties.svg?scale=0.7
+global-options.icon=32x32/categories/preferences-system.svg?scale=0.7
+combined-options.icon=32x32/categories/preferences-system.svg?scale=0.7
 plugin-manager.icon=22x22/places/plugins.png
-help.icon=22x22/apps/help-browser.png
+help.icon=22x22/apps/help-browser.svg
 
 #{{{ Icon list for tool bar editor
 icons=22x22/actions/resize-horisontal.png \
- 22x22/actions/go-down.png \
- 22x22/actions/go-previous.png \
- 22x22/actions/go-next.png \
- 22x22/actions/go-home.png \
- 22x22/actions/go-up.png \
- 22x22/actions/go-first.png \
- 22x22/actions/go-last.png \
- 22x22/actions/go-parent.png \
- 22x22/actions/document-close.png \
- 22x22/actions/edit-undo.png \
- 22x22/actions/edit-redo.png \
- 22x22/actions/edit-cut.png \
- 22x22/actions/edit-paste.png \
- 22x22/actions/edit-delete.png \
- 22x22/actions/edit-clear.png \
- 22x22/actions/edit-find-next.png \
- 22x22/actions/edit-find-in-folder.png \
- 22x22/actions/edit-find.png \
- 22x22/actions/edit-copy.png \
+ 22x22/actions/go-down.svg \
+ 22x22/actions/go-previous.svg \
+ 22x22/actions/go-next.svg \
+ 32x32/actions/go-home.svg?scale=0.7 \
+ 22x22/actions/go-up.svg \
+ 22x22/actions/go-first.svg \
+ 22x22/actions/go-last.svg \
+ 22x22/actions/go-up.svg \
+ 32x32/actions/process-stop.svg?scale=0.7 \
+ 32x32/actions/edit-undo.svg?scale=0.7 \
+ 32x32/actions/edit-redo.svg?scale=0.7 \
+ 32x32/actions/edit-cut.svg?scale=0.7 \
+ 32x32/actions/edit-paste.svg?scale=0.7 \
+ scalable/actions/edit-delete.svg \
+ 22x22/actions/edit-clear.svg \
+ 22x22/actions/go-next.svg \
+ 32x32/actions/system-search.svg?scale=0.7 \
+ 32x32/actions/edit-find.svg?scale=0.7 \
+ 32x32/actions/edit-copy.svg?scale=0.7 \
  22x22/actions/copy-to-buffer.png \
- 22x22/actions/list-remove.png \
- 22x22/actions/list-add.png \
- 22x22/actions/folder-new.png \
- 22x22/actions/window-new.png \
- 22x22/actions/document-new.png \
- 22x22/actions/document-open.png \
+ 32x32/actions/list-remove.svg?scale=0.7 \
+ 32x32/actions/list-add.svg?scale=0.7 \
+ 32x32/actions/folder-new.svg?scale=0.7 \
+ 32x32/actions/document-new.svg?scale=0.7 \
+ 32x32/actions/document-new.svg?scale=0.7 \
+ 32x32/actions/document-open.svg?scale=0.7 \
  22x22/actions/document-reload2.png \
- 22x22/actions/document-properties.png \
- 22x22/actions/document-save.png \
- 22x22/actions/document-save-all.png \
- 22x22/actions/document-save-as.png \
+ 32x32/actions/document-properties.svg?scale=0.7 \
+ 32x32/actions/document-save.svg?scale=0.7 \
+ 32x32/actions/document-save-all.svg?scale=0.5 \
+ 32x32/actions/document-save-as.svg?scale=0.7 \
  22x22/actions/printer-setup.png \
- 22x22/actions/process-stop.png \
- 22x22/actions/media-playback-pause.png \
- 22x22/actions/media-playback-start.png \
- 22x22/actions/view-refresh.png \
+ 22x22/actions/system-log-out.svg \
+ 22x22/actions/media-playback-pause.svg \
+ 22x22/actions/media-playback-start.svg \
+ 22x22/actions/view-refresh.svg \
  22x22/actions/application-run.png \
  22x22/actions/edit-find-multiple.png \
  22x22/actions/edit-find-single.png \
@@ -109,18 +112,18 @@
  22x22/actions/window-unsplit.png \
  22x22/actions/zoom-in.png \
  22x22/actions/zoom-out.png \
- 22x22/apps/utilities-terminal.png \
- 22x22/apps/system-file-manager.png \
- 22x22/apps/internet-web-browser.png \
- 22x22/apps/help-browser.png \
- 22x22/apps/system-installer.png \
- 22x22/status/image-missing.png \
- 22x22/status/folder-visiting.png \
- 22x22/devices/drive-harddisk.png \
- 22x22/devices/media-floppy.png \
- 22x22/devices/printer.png \
+ 22x22/apps/utilities-terminal.svg \
+ 32x32/apps/system-file-manager.svg?scale=0.7 \
+ 32x32/apps/internet-web-browser.svg?scale=0.7 \
+ 22x22/apps/help-browser.svg \
+ 32x32/apps/system-installer.svg?scale=0.7 \
+ 32x32/status/image-missing.svg?scale=0.7 \
+ 32x32/status/folder-visiting.svg?scale=0.7 \
+ 32x32/devices/drive-harddisk.svg?scale=0.7 \
+ 22x22/devices/media-floppy.svg \
+ 32x32/devices/printer.svg?scale=0.7 \
  22x22/places/plugins.png \
- 22x22/categories/preferences-system.png \
+ 32x32/categories/preferences-system.svg?scale=0.7 \
  Blank24.gif
 #}}}
 
@@ -144,6 +147,7 @@
   new-file-in-mode \
   open-file \
   %recent-files \
+  %recent-directories \
   - \
   reload \
   reload-all \
@@ -163,31 +167,31 @@
   print \
   - \
   exit
-new-file.icon.small=16x16/actions/document-new.png
-new-file-in-mode.icon.small=16x16/actions/document-new.png
-open-file.icon.small=16x16/actions/document-open.png
-reload.icon.small=16x16/actions/view-refresh.png
-reload-all.icon.small=16x16/actions/view-refresh.png
-close-buffer.icon.small=16x16/actions/document-close.png
-closeall-bufferset.icon.small=16x16/actions/document-close.png
-closeall-except-active.icon.small=16x16/actions/document-close.png
-global-close-buffer.icon.small=16x16/actions/document-close.png
-close-all.icon.small=16x16/actions/document-close.png
-save.icon.small=16x16/actions/document-save.png
-save-as.icon.small=16x16/actions/document-save-as.png
-save-a-copy-as.icon.small=16x16/actions/document-save-as.png
-save-all.icon.small=16x16/actions/document-save-all.png
-print.icon.small=16x16/actions/document-print.png
-page-setup.icon.small=16x16/actions/document-properties.png
-exit.icon.small=16x16/actions/process-stop.png
-exit.icon.medium=22x22/actions/process-stop.png
+new-file.icon.small=32x32/actions/document-new.svg?scale=0.5
+new-file-in-mode.icon.small=32x32/actions/document-new.svg?scale=0.5
+open-file.icon.small=32x32/actions/document-open.svg?scale=0.5
+reload.icon.small=16x16/actions/view-refresh.svg
+reload-all.icon.small=16x16/actions/view-refresh.svg
+close-buffer.icon.small=32x32/actions/process-stop.svg?scale=0.5
+closeall-bufferset.icon.small=32x32/actions/process-stop.svg?scale=0.5
+closeall-except-active.icon.small=32x32/actions/process-stop.svg?scale=0.5
+global-close-buffer.icon.small=32x32/actions/process-stop.svg?scale=0.5
+close-all.icon.small=32x32/actions/process-stop.svg?scale=0.5
+save.icon.small=32x32/actions/document-save.svg?scale=0.5
+save-as.icon.small=32x32/actions/document-save-as.svg?scale=0.5
+save-a-copy-as.icon.small=32x32/actions/document-save-as.svg?scale=0.5
+save-all.icon.small=32x32/actions/document-save.svg?scale=0.5
+print.icon.small=32x32/actions/document-print.svg?scale=0.5
+page-setup.icon.small=32x32/actions/document-properties.svg?scale=0.5
+exit.icon.small=16x16/actions/system-log-out.svg
+exit.icon.medium=22x22/actions/system-log-out.svg
 
 #{{{ Recent Files menu
 recent-files.code=new RecentFilesProvider();
 #}}}
 
 reload-encoding.code=new ReloadWithEncodingProvider();
-reload-encoding.icon.small=16x16/actions/view-refresh.png
+reload-encoding.icon.small=16x16/actions/view-refresh.svg
 #}}}
 
 #{{{ Edit menu
@@ -211,12 +215,12 @@
   %text \
   %indent \
   %source
-undo.icon.small=16x16/actions/edit-undo.png
-redo.icon.small=16x16/actions/edit-redo.png
-cut.icon.small=16x16/actions/edit-cut.png
-copy.icon.small=16x16/actions/edit-copy.png
-paste.icon.small=16x16/actions/edit-paste.png
-select-all.icon.small=16x16/actions/edit-select-all.png
+undo.icon.small=32x32/actions/edit-undo.svg?scale=0.5
+redo.icon.small=32x32/actions/edit-redo.svg?scale=0.5
+cut.icon.small=32x32/actions/edit-cut.svg?scale=0.5
+copy.icon.small=32x32/actions/edit-copy.svg?scale=0.5
+paste.icon.small=32x32/actions/edit-paste.svg?scale=0.5
+select-all.icon.small=16x16/actions/edit-select-all.svg
 
 #{{{ More Clipboard menu
 clipboard=cut-append \
@@ -308,16 +312,18 @@
     regexp \
     - \
     hypersearch-results
-find.icon.small=22x22/actions/edit-find.png
-find-next.icon.small=22x22/actions/edit-find-next.png
-search-in-directory.icon.small=22x22/actions/edit-find-in-folder.png
-replace-in-selection.icon.small=22x22/actions/edit-find-replace.png
-replace-and-find-next.icon.small=22x22/actions/edit-find-replace.png
-replace-all.icon.small=22x22/actions/edit-find-replace.png
-quick-search.icon.small=22x22/actions/edit-find.png
-hypersearch.icon.small=22x22/actions/edit-find-multiple.png
-quick-search-word.icon.small=22x22/actions/edit-find.png
-hypersearch-word.icon.small=22x22/actions/edit-find.png
+find.icon.small=32x32/actions/edit-find.svg?scale=0.7
+find-prev.icon.small=32x32/actions/go-previous.svg?scale=0.7
+find-next.icon.small=32x32/actions/go-next.svg?scale=0.7
+search-in-open-buffers.icon.small=32x32/actions/system-search.svg?scale=0.7
+search-in-directory.icon.small=32x32/actions/system-search.svg?scale=0.7
+replace-in-selection.icon.small=32x32/actions/edit-find-replace.svg?scale=0.7
+replace-and-find-next.icon.small=32x32/actions/edit-find-replace.svg?scale=0.7
+replace-all.icon.small=32x32/actions/edit-find-replace.svg?scale=0.7
+quick-search.icon.small=32x32/actions/edit-find.svg?scale=0.7
+hypersearch.icon.small=32x32/actions/edit-find.svg?scale=0.7
+quick-search-word.icon.small=32x32/actions/edit-find.svg?scale=0.7
+hypersearch-word.icon.small=32x32/actions/edit-find.svg?scale=0.7
 #}}}
 
 #{{{ Markers menu
@@ -336,12 +342,12 @@
    view-markers \
    -
 markers.code=new MarkersProvider();
-add-marker.icon.small=22x22/actions/bookmark-new.png
-add-marker-shortcut.icon.small=22x22/actions/bookmark-new.png
-remove-all-markers.icon.small=22x22/actions/edit-clear.png
-goto-marker.icon.small=22x22/actions/go-jump.png
-prev-marker.icon.small=22x22/actions/go-previous.png
-next-marker.icon.small=22x22/actions/go-next.png
+add-marker.icon.small=32x32/actions/bookmark-new.svg?scale=0.7
+add-marker-shortcut.icon.small=32x32/actions/bookmark-new.svg?scale=0.7
+remove-all-markers.icon.small=32x32/actions/edit-clear.svg?scale=0.7
+goto-marker.icon.small=32x32/actions/go-jump.svg?scale=0.7
+prev-marker.icon.small=32x32/actions/go-previous.svg?scale=0.7
+next-marker.icon.small=32x32/actions/go-next.svg?scale=0.7
 #}}}
 
 #{{{ Folding menu
@@ -388,9 +394,12 @@
   - \
   set-view-title \
   toggle-full-screen
-new-view.icon.small=16x16/actions/window-new.png
-new-plain-view.icon.small=16x16/actions/window-new.png
-close-view.icon.small=16x16/actions/document-close.png
+new-view.icon.small=32x32/actions/window-new.svg?scale=0.5
+new-plain-view.icon.small=32x32/actions/window-new.svg?scale=0.5
+close-view.icon.small=32x32/actions/process-stop.svg?scale=0.5
+prev-buffer.icon.small=32x32/actions/go-previous.svg?scale=0.5
+next-buffer.icon.small=32x32/actions/go-next.svg?scale=0.5
+recent-buffer.icon.small=32x32/actions/go-up.svg?scale=0.5
 
 #{{{ Scrolling menu
 scrolling=scroll-to-current-line \
@@ -436,7 +445,6 @@
 
 #{{{ Utilities menu
 utils=vfs.browser \
-   %recent-directories \
    - \
    %favorites \
    %current-directory \
@@ -454,9 +462,9 @@
    - \
    %quick-options
 
-buffer-options.icon.small=16x16/actions/document-properties.png
-global-options.icon.small=16x16/categories/preferences-system.png
-combined-options.icon.small=16x16/categories/preferences-system.png
+buffer-options.icon.small=32x32/actions/document-properties.svg?scale=0.5
+global-options.icon.small=32x32/categories/preferences-system.svg?scale=0.5
+combined-options.icon.small=32x32/categories/preferences-system.svg?scale=0.5
 
 #{{{ Recent Directories menu
 recent-directories.code=new RecentDirectoriesProvider();
@@ -518,9 +526,9 @@
     rescan-macros \
     -
 macros.code=new MacrosProvider();
-new-macro.icon.small=16x16/actions/document-new.png
-record-macro.icon.small=16x16/actions/media-record.png
-stop-recording.icon.small=16x16/actions/media-playback-stop.png
+new-macro.icon.small=32x32/actions/document-new.svg?scale=0.5
+record-macro.icon.small=16x16/actions/media-record.svg
+stop-recording.icon.small=32x32/actions/media-playback-stop.svg?scale=0.5
 #}}}
 
 #{{{ Plugins menu
@@ -771,7 +779,7 @@
 
 #{{{ HyperSearch results dialog
 hypersearch-results.clear.icon=22x22/actions/edit-clear.png
-hypersearch-results.stop.icon=22x22/actions/process-stop.png
+hypersearch-results.stop.icon=22x22/actions/system-log-out.png
 hypersearch-results.multi.multiple.icon=22x22/actions/edit-find-multiple.png
 hypersearch-results.multi.single.icon=22x22/actions/edit-find-single.png
 hypersearch-results.match.highlight.icon=22x22/actions/edit-find-highlight-match.png
@@ -784,8 +792,8 @@
 #}}}
 
 #{{{ Help Viewer
-helpviewer.back.icon=22x22/actions/go-previous.png
-helpviewer.forward.icon=22x22/actions/go-next.png
+helpviewer.back.icon=32x32/actions/go-previous.svg?scale=0.7
+helpviewer.forward.icon=32x32/actions/go-next.svg?scale=0.7
 #}}}
 
 #}}}
@@ -809,9 +817,9 @@
 
 #{{{ Abbreviations pane
 options.abbrevs.code=new AbbrevsOptionPane();
-options.abbrevs.add.icon=22x22/actions/list-add.png
-options.abbrevs.edit.icon=22x22/actions/document-properties.png
-options.abbrevs.remove.icon=22x22/actions/list-remove.png
+options.abbrevs.add.icon=32x32/actions/list-add.svg?scale=0.7
+options.abbrevs.edit.icon=32x32/actions/document-properties.svg?scale=0.7
+options.abbrevs.remove.icon=32x32/actions/list-remove.svg?scale=0.7
 #}}}
 
 #{{{ Appearance pane
@@ -840,11 +848,11 @@
 
 #{{{ Context Menu pane
 options.context.code=new ContextOptionPane();
-options.context.add.icon=22x22/actions/list-add.png
-options.context.remove.icon=22x22/actions/list-remove.png
-options.context.moveUp.icon=22x22/actions/go-up.png
-options.context.moveDown.icon=22x22/actions/go-down.png
-options.context.reset.icon=22x22/actions/edit-clear.png
+options.context.add.icon=32x32/actions/list-add.svg?scale=0.7
+options.context.remove.icon=32x32/actions/list-remove.svg?scale=0.7
+options.context.moveUp.icon=32x32/actions/go-up.svg?scale=0.7
+options.context.moveDown.icon=32x32/actions/go-down.svg?scale=0.7
+options.context.reset.icon=32x32/actions/edit-clear.svg?scale=0.7
 options.context.includeOptionsLink=true
 #}}}
 
@@ -906,12 +914,12 @@
 
 #{{{ Tool Bar pane
 options.toolbar.code=new ToolBarOptionPane();
-options.toolbar.add.icon=22x22/actions/list-add.png
-options.toolbar.remove.icon=22x22/actions/list-remove.png
-options.toolbar.moveUp.icon=22x22/actions/go-up.png
-options.toolbar.moveDown.icon=22x22/actions/go-down.png
-options.toolbar.reset.icon=22x22/actions/edit-clear.png
-options.toolbar.edit.icon=22x22/actions/document-properties.png
+options.toolbar.add.icon=32x32/actions/list-add.svg?scale=0.7
+options.toolbar.remove.icon=32x32/actions/list-remove.svg?scale=0.7
+options.toolbar.moveUp.icon=22x22/actions/go-up.svg
+options.toolbar.moveDown.icon=22x22/actions/go-down.svg
+options.toolbar.reset.icon=22x22/actions/edit-clear.svg
+options.toolbar.edit.icon=32x32/actions/document-properties.svg?scale=0.7
 #}}}
 
 #{{{ View pane
@@ -949,7 +957,8 @@
 vfs.browser.default-filter=*[^~#]
 vfs.browser.filter-enabled=true
 vfs.browser.file.icon=16x16/mimetypes/text-x-generic.png
-vfs.browser.icon.small=16x16/apps/system-file-manager.png
+vfs.browser.icon=32x32/apps/system-file-manager.svg?scale=0.7
+vfs.browser.icon.small=32x32/apps/system-file-manager.svg?scale=0.5
 vfs.browser.open-file.icon=16x16/actions/edit-select-all.png
 vfs.browser.dir.icon=16x16/places/folder.png
 vfs.browser.open-dir.icon=16x16/status/folder-open.png
@@ -1007,13 +1016,13 @@
 plugin-manager.mirror-url=http://plugins.jedit.org/export/mirror_list.php
 
 #{{{ Plugin management
-manage-plugins.restore.icon=22x22/actions/document-open.png
-manage-plugins.save.icon=22x22/actions/document-save.png
+manage-plugins.restore.icon=32x32/actions/document-open.svg?scale=0.7
+manage-plugins.save.icon=32x32/actions/document-save.svg?scale=0.7
 #}}}
 
 #{{{ Plugin installation
-install-plugins.choose-plugin-set.icon=22x22/actions/document-open.png
-install-plugins.clear-plugin-set.icon=22x22/actions/edit-clear.png
+install-plugins.choose-plugin-set.icon=32x32/actions/document-open.svg?scale=0.7
+install-plugins.clear-plugin-set.icon=22x22/actions/edit-clear.svg
 #}}}
 
 #}}}
diff -ru jedit5.7.0/jEdit/org/gjt/sp/jedit/options/BrowserColorsOptionPane.java jedit5.7.0-patched/jEdit/org/gjt/sp/jedit/options/BrowserColorsOptionPane.java
--- jedit5.7.0/jEdit/org/gjt/sp/jedit/options/BrowserColorsOptionPane.java 2024-08-03 19:53:15.000000000 +0200
+++ jedit5.7.0-patched/jEdit/org/gjt/sp/jedit/options/BrowserColorsOptionPane.java 2025-05-14 10:51:38.322378673 +0200
@@ -78,12 +78,12 @@
   buttons.setBorder(new EmptyBorder(3,0,0,0));
   buttons.setLayout(new BoxLayout(buttons,BoxLayout.X_AXIS));
   ActionListener actionHandler = new ActionHandler();
-  JButton add = new RolloverButton(GUIUtilities.loadIcon("Plus.png"));
+  JButton add = new RolloverButton(GUIUtilities.loadIcon(jEdit.getProperty("common.add.icon")));
   add.setToolTipText(jEdit.getProperty("common.add"));
   add.addActionListener(e -> colorsModel.add());
   buttons.add(add);
   buttons.add(Box.createHorizontalStrut(6));
-  remove = new RolloverButton(GUIUtilities.loadIcon("Minus.png"));
+  remove = new RolloverButton(GUIUtilities.loadIcon(jEdit.getProperty("common.remove.icon")));
   remove.setToolTipText(jEdit.getProperty("common.remove"));
   remove.addActionListener(e ->
   {
@@ -93,12 +93,12 @@
   });
   buttons.add(remove);
   buttons.add(Box.createHorizontalStrut(6));
-  moveUp = new RolloverButton(GUIUtilities.loadIcon("ArrowU.png"));
+  moveUp = new RolloverButton(GUIUtilities.loadIcon(jEdit.getProperty("common.moveUp.icon")));
   moveUp.setToolTipText(jEdit.getProperty("common.moveUp"));
   moveUp.addActionListener(actionHandler);
   buttons.add(moveUp);
   buttons.add(Box.createHorizontalStrut(6));
-  moveDown = new RolloverButton(GUIUtilities.loadIcon("ArrowD.png"));
+  moveDown = new RolloverButton(GUIUtilities.loadIcon(jEdit.getProperty("common.moveDown.icon")));
   moveDown.setToolTipText(jEdit.getProperty("common.moveDown"));
   moveDown.addActionListener(actionHandler);
   buttons.add(moveDown);
@@ -209,8 +209,7 @@
    {
     entries.add(new Entry(glob,
      jEdit.getColorProperty(
-      "vfs.browser.colors." + i + ".color",
-      Color.black)));
+      "vfs.browser.colors." + i + ".color")));
     i++;
    }
   } //}}}
diff -ru jedit5.7.0/jEdit/org/gjt/sp/jedit/options/StatusBarOptionPane.java jedit5.7.0-patched/jEdit/org/gjt/sp/jedit/options/StatusBarOptionPane.java
--- jedit5.7.0/jEdit/org/gjt/sp/jedit/options/StatusBarOptionPane.java 2024-08-03 19:53:15.000000000 +0200
+++ jedit5.7.0-patched/jEdit/org/gjt/sp/jedit/options/StatusBarOptionPane.java 2025-04-16 16:12:37.730958557 +0200
@@ -160,12 +160,12 @@
   buttons.setBorder(new EmptyBorder(3,0,0,0));
   buttons.setLayout(new BoxLayout(buttons,BoxLayout.X_AXIS));
   buttons.add(Box.createHorizontalStrut(6));
-  moveUp = new RolloverButton(GUIUtilities.loadIcon("ArrowU.png"));
+  moveUp = new RolloverButton(GUIUtilities.loadIcon(jEdit.getProperty("common.moveUp.icon")));
   moveUp.setToolTipText(jEdit.getProperty("options.status.moveUp"));
   moveUp.addActionListener(e -> moveUp());
   buttons.add(moveUp);
   buttons.add(Box.createHorizontalStrut(6));
-  moveDown = new RolloverButton(GUIUtilities.loadIcon("ArrowD.png"));
+  moveDown = new RolloverButton(GUIUtilities.loadIcon(jEdit.getProperty("common.moveDown.icon")));
   moveDown.setToolTipText(jEdit.getProperty("options.status.moveDown"));
   moveDown.addActionListener(e -> moveDown());
   buttons.add(moveDown);
diff -ru jedit5.7.0/jEdit/org/gjt/sp/jedit/gui/RegisterViewer.java jedit5.7.0-patched/jEdit/org/gjt/sp/jedit/gui/RegisterViewer.java
--- jedit5.7.0/jEdit/org/gjt/sp/jedit/gui/RegisterViewer.java 2024-08-03 19:53:18.000000000 +0200
+++ jedit5.7.0-patched/jEdit/org/gjt/sp/jedit/gui/RegisterViewer.java 2025-04-16 21:45:44.861713409 +0200
@@ -54,7 +54,7 @@
   toolBar.add(Box.createGlue());
 
   RolloverButton pasteRegister = new RolloverButton(
-   GUIUtilities.loadIcon("Paste.png"));
+   GUIUtilities.loadIcon(jEdit.getProperty("paste.icon")));
   pasteRegister.setToolTipText(GenericGUIUtilities.prettifyMenuLabel(
    jEdit.getProperty("paste-string-register.label")));
   pasteRegister.addActionListener(e -> insertRegister());
@@ -62,7 +62,7 @@
   toolBar.add(pasteRegister);
 
   RolloverButton clearRegister = new RolloverButton(
-   GUIUtilities.loadIcon("Clear.png"));
+   GUIUtilities.loadIcon(jEdit.getProperty("common.clearAll.icon")));
   clearRegister.setToolTipText(GenericGUIUtilities.prettifyMenuLabel(
    jEdit.getProperty("clear-string-register.label")));
   clearRegister.addActionListener(e -> clearSelectedIndex());
diff -Nru jedit5.7.0/jEdit/org/gjt/sp/jedit/jEdit.java jedit5.7.0-patched/jEdit/org/gjt/sp/jedit/jEdit.java
--- jedit5.7.0/jEdit/org/gjt/sp/jedit/jEdit.java 2024-08-03 19:53:14.000000000 +0200
+++ jedit5.7.0-patched/jEdit/org/gjt/sp/jedit/jEdit.java 2025-08-23 12:21:08.098088170 +0200
@@ -674,6 +674,12 @@
    return value;
  } //}}}
 
+ public static String getThemeProperty(String name)
+ {
+  String s = GUIUtilities.getThemeSuffix();
+  return s.isEmpty() ? getProperty(name) : getProperty(name + s, getProperty(name));
+ }
+
  //{{{ getProperty() method
  /**
   * Returns the property with the specified name.<p>
@@ -859,7 +865,7 @@
   */
  public static Color getColorProperty(String name)
  {
-  return getColorProperty(name,Color.black);
+  return getColorProperty(name, GUIUtilities.defaultFgColor());
  }
 
  /**
@@ -870,7 +876,7 @@
   */
  public static Color getColorProperty(String name, Color def)
  {
-  String value = getProperty(name);
+  String value = getThemeProperty(name);
   if(value == null)
    return def;
   else
@@ -886,7 +892,7 @@
   */
  public static void setColorProperty(String name, Color value)
  {
-  setProperty(name, SyntaxUtilities.getColorHexString(value));
+  setThemeProperty(name, SyntaxUtilities.getColorHexString(value));
  } //}}}
 
  //{{{ getColorMatrixProperty() method
@@ -936,6 +942,11 @@
  public static void setProperty(String name, String value)
  {
   propMgr.setProperty(name,value);
+ }
+
+ public static void setThemeProperty(String name, String value)
+ {
+  setProperty(name + GUIUtilities.getThemeSuffix(), value);
  } //}}}
 
  //{{{ setTemporaryProperty() method
@@ -2615,7 +2626,9 @@
     view.getEditPane().saveCaretInfo();
    }
 
-   View newView = new View(buffer,config);
+   ViewFactory viewFactory = ServiceManager.getService(ViewFactory.class, "view-factory");
+   View newView =
+    viewFactory == null ? new View(buffer,config) : viewFactory.create(buffer,config);
    viewManager.addViewToList(newView);
 
    EditBus.send(new ViewUpdate(newView,ViewUpdate.CREATED));
@@ -4233,7 +4246,7 @@
  } //}}}
 
  //{{{ gotoMarker() method
- private static void gotoMarker(final View view, final Buffer buffer,
+ public static void gotoMarker(final View view, final Buffer buffer,
   final String marker)
  {
   AwtRunnableQueue.INSTANCE.runAfterIoTasks(new Runnable()
diff -ru jedit5.7.0/jEdit/org/gjt/sp/jedit/gui/LogViewer.java jedit5.7.0-patched/jEdit/org/gjt/sp/jedit/gui/LogViewer.java
--- jedit5.7.0/jEdit/org/gjt/sp/jedit/gui/LogViewer.java 2024-08-03 19:53:16.000000000 +0200
+++ jedit5.7.0-patched/jEdit/org/gjt/sp/jedit/gui/LogViewer.java 2025-05-14 11:05:39.544481221 +0200
@@ -413,7 +413,7 @@
   {
    this.list = list;
    debugColor = jEdit.getColorProperty("log-viewer.message.debug.color", Color.BLUE);
-   messageColor = jEdit.getColorProperty("log-viewer.message.message.color", Color.BLACK);
+   messageColor = jEdit.getColorProperty("log-viewer.message.message.color");
    noticeColor = jEdit.getColorProperty("log-viewer.message.notice.color", Color.GREEN);
    warningColor = jEdit.getColorProperty("log-viewer.message.warning.color", Color.ORANGE);
    errorColor = jEdit.getColorProperty("log-viewer.message.error.color", Color.RED);
diff -ru /home/makarius/.isabelle/contrib/jedit-20250424/jedit5.7.0-patched/jEdit/org/gjt/sp/jedit/io/VFS.java jedit5.7.0-patched/jEdit/org/gjt/sp/jedit/io/VFS.java
--- /home/makarius/.isabelle/contrib/jedit-20250424/jedit5.7.0-patched/jEdit/org/gjt/sp/jedit/io/VFS.java 2024-08-03 19:53:14.000000000 +0200
+++ jedit5.7.0-patched/jEdit/org/gjt/sp/jedit/io/VFS.java 2025-05-14 10:51:16.530755624 +0200
@@ -1302,8 +1302,7 @@
      colors.add(new ColorEntry(
       Pattern.compile(StandardUtilities.globToRE(glob)),
       jEdit.getColorProperty(
-      "vfs.browser.colors." + i + ".color",
-      Color.black)));
+      "vfs.browser.colors." + i + ".color")));
     }
     catch(PatternSyntaxException e)
     {
diff -ru jedit5.7.0/jEdit/org/gjt/sp/util/SyntaxUtilities.java jedit5.7.0-patched/jEdit/org/gjt/sp/util/SyntaxUtilities.java
--- jedit5.7.0/jEdit/org/gjt/sp/util/SyntaxUtilities.java 2024-08-03 19:53:21.000000000 +0200
+++ jedit5.7.0-patched/jEdit/org/gjt/sp/util/SyntaxUtilities.java 2025-05-14 15:20:40.515623017 +0200
@@ -35,6 +35,7 @@
 import org.gjt.sp.jedit.syntax.SyntaxStyle;
 import org.gjt.sp.jedit.syntax.Token;
 import org.gjt.sp.jedit.IPropertyManager;
+import org.gjt.sp.jedit.GUIUtilities;
 
 import static java.util.stream.Collectors.joining;
 //}}}
@@ -49,6 +50,15 @@
 public class SyntaxUtilities
 {
  public static IPropertyManager propertyManager;
+
+ public static String getThemeProperty(String name)
+ {
+  String s = GUIUtilities.getThemeSuffix();
+  String a = propertyManager.getProperty(name);
+  String b = propertyManager.getProperty(name + s);
+  return b == null ? a : b;
+ }
+
  private static final Pattern COLOR_MATRIX_PATTERN = Pattern.compile("(?x)\n" +
    "^\n" +
    "\\s*+ # optionally preceded by whitespace\n" +
@@ -125,7 +135,7 @@
    */
  public static Color parseColor(String name)
  {
-  return parseColor(name, Color.black); 
+  return parseColor(name, GUIUtilities.defaultFgColor()); 
  } //}}}
  
  //{{{ parseColor() method
@@ -267,7 +277,7 @@
    if(s.startsWith("color:"))
    {
     if(color)
-     fgColor = parseColor(s.substring(6), Color.black);
+     fgColor = parseColor(s.substring(6), GUIUtilities.defaultFgColor());
    }
    else if(s.startsWith("bgColor:"))
    {
@@ -311,7 +321,7 @@
   boolean color)
   throws IllegalArgumentException
  {
-  return parseStyle(str, family, size, color, Color.black);
+  return parseStyle(str, family, size, color, GUIUtilities.defaultFgColor());
  } //}}}
 
  //{{{ loadStyles() methods
@@ -347,9 +357,7 @@
     String styleName = "view.style."
      + Token.tokenToString((byte)i)
      .toLowerCase(Locale.ENGLISH);
-    styles[i] = parseStyle(
-     propertyManager.getProperty(styleName),
-     family,size,color);
+    styles[i] = parseStyle(getThemeProperty(styleName),family,size,color);
    }
    catch(Exception e)
    {
@@ -357,8 +365,28 @@
    }
   }
 
-  return styles;
+  styles[0] =
+   new SyntaxStyle(org.gjt.sp.jedit.jEdit.getColorProperty("view.fgColor", GUIUtilities.defaultFgColor()),
+    null, new Font(family, 0, size));
+  return _styleExtender.extendStyles(styles);
  } //}}}
 
+ /**
+  * Extended styles derived from the user-specified style array.
+  */
+
+ public static class StyleExtender
+ {
+  public SyntaxStyle[] extendStyles(SyntaxStyle[] styles)
+  {
+   return styles;
+  }
+ }
+ volatile private static StyleExtender _styleExtender = new StyleExtender();
+ public static void setStyleExtender(StyleExtender ext)
+ {
+  _styleExtender = ext;
+ }
+
  private SyntaxUtilities(){}
 }
diff -Nru jedit5.7.0/jEdit/org/gjt/sp/jedit/EditPane.java jedit5.7.0-patched/jEdit/org/gjt/sp/jedit/EditPane.java
--- jedit5.7.0/jEdit/org/gjt/sp/jedit/EditPane.java 2024-08-03 19:53:15.000000000 +0200
+++ jedit5.7.0-patched/jEdit/org/gjt/sp/jedit/EditPane.java 2025-11-28 19:22:09.823220894 +0100
@@ -43,6 +43,7 @@
 import org.gjt.sp.jedit.msg.BufferChanging;
 import org.gjt.sp.jedit.msg.BufferUpdate;
 import org.gjt.sp.jedit.msg.EditPaneUpdate;
+import org.gjt.sp.jedit.msg.PositionChanging;
 import org.gjt.sp.jedit.msg.PropertiesChanged;
 import org.gjt.sp.jedit.options.GeneralOptionPane;
 import org.gjt.sp.jedit.options.GutterOptionPane;
@@ -50,11 +51,13 @@
 import org.gjt.sp.jedit.textarea.AntiAlias;
 import org.gjt.sp.jedit.textarea.Gutter;
 import org.gjt.sp.jedit.textarea.JEditTextArea;
+import org.gjt.sp.jedit.textarea.JEditTextAreaFactory;
 import org.gjt.sp.jedit.textarea.MouseHandler;
 import org.gjt.sp.jedit.textarea.Selection;
 import org.gjt.sp.jedit.textarea.StatusListener;
 import org.gjt.sp.jedit.textarea.TextArea;
 import org.gjt.sp.jedit.textarea.TextAreaExtension;
+import org.gjt.sp.jedit.textarea.TextAreaMouseHandler;
 import org.gjt.sp.jedit.textarea.TextAreaPainter;
 import org.gjt.sp.jedit.textarea.TextAreaTransferHandler;
 import org.gjt.sp.util.SyntaxUtilities;
@@ -380,9 +383,11 @@
   buffer.unsetProperty(Buffer.CARET_POSITIONED);
 
 
-  if(caret != -1)
+  if(caret != -1) {
    textArea.setCaretPosition(Math.min(caret,
     buffer.getLength()));
+   EditBus.send(new PositionChanging(this));
+  }
 
   // set any selections
   Selection[] selection = caretInfo.selection;
@@ -756,7 +761,7 @@
  //{{{ Package-private members
 
  //{{{ EditPane constructor
- EditPane(@Nonnull View view, @Nullable BufferSet bufferSetSource, @Nonnull Buffer buffer)
+ public EditPane(@Nonnull View view, @Nullable BufferSet bufferSetSource, @Nonnull Buffer buffer)
  {
   super(new BorderLayout());
   BufferSet.Scope scope = jEdit.getBufferSetManager().getScope();
@@ -795,10 +800,17 @@
   this.view = view;
 
 
-  textArea = new JEditTextArea(view);
+  JEditTextAreaFactory textAreaFactory =
+   ServiceManager.getService(JEditTextAreaFactory.class, "textarea-factory");
+  textArea =
+   textAreaFactory == null ? new JEditTextArea(view) : textAreaFactory.create(view);
   bufferSet.addBufferSetListener(this);
   textArea.getPainter().setAntiAlias(new AntiAlias(jEdit.getProperty("view.antiAlias")));
-  textArea.setMouseHandler(new MouseHandler(textArea));
+  EditPaneMouseHandlerFactory mouseHandlerFactory =
+   ServiceManager.getService(EditPaneMouseHandlerFactory.class, "mouse-handler-factory");
+        TextAreaMouseHandler mouseHandler =
+         mouseHandlerFactory == null ? new MouseHandler(textArea) : mouseHandlerFactory.create(this);
+  textArea.setMouseHandler(mouseHandler);
   textArea.setTransferHandler(new TextAreaTransferHandler());
   markerHighlight = new MarkerHighlight();
   Gutter gutter = textArea.getGutter();
@@ -1029,7 +1041,7 @@
   for(int i = 0; i <= 3; i++)
   {
    foldLineStyle[i] = SyntaxUtilities.parseStyle(
-    jEdit.getProperty("view.style.foldLine." + i),
+    jEdit.getThemeProperty("view.style.foldLine." + i),
     defaultFont,defaultFontSize, true);
   }
   painter.setFoldLineStyle(foldLineStyle);
diff -Nru jedit5.7.0/jEdit/org/gjt/sp/jedit/EditPaneMouseHandlerFactory.java jedit5.7.0-patched/jEdit/org/gjt/sp/jedit/EditPaneMouseHandlerFactory.java
--- jedit5.7.0/jEdit/org/gjt/sp/jedit/EditPaneMouseHandlerFactory.java 1970-01-01 01:00:00.000000000 +0100
+++ jedit5.7.0-patched/jEdit/org/gjt/sp/jedit/EditPaneMouseHandlerFactory.java 2025-11-28 19:16:11.269418129 +0100
@@ -0,0 +1,14 @@
+package org.gjt.sp.jedit;
+
+import org.gjt.sp.jedit.textarea.JEditTextArea;
+import org.gjt.sp.jedit.textarea.TextAreaMouseHandler;
+import org.gjt.sp.jedit.textarea.MouseHandler;
+
+
+public class EditPaneMouseHandlerFactory
+{
+    public TextAreaMouseHandler create(EditPane editPane)
+    {
+        return new MouseHandler(editPane.getTextArea());
+    }
+}
diff -Nru jedit5.7.0/jEdit/org/gjt/sp/jedit/textarea/TextAreaMouseHandler.java jedit5.7.0-patched/jEdit/org/gjt/sp/jedit/textarea/TextAreaMouseHandler.java
--- jedit5.7.0/jEdit/org/gjt/sp/jedit/textarea/TextAreaMouseHandler.java 2024-08-03 19:53:18.000000000 +0200
+++ jedit5.7.0-patched/jEdit/org/gjt/sp/jedit/textarea/TextAreaMouseHandler.java 2025-11-28 19:37:46.852139435 +0100
@@ -45,7 +45,7 @@
 public class TextAreaMouseHandler extends MouseInputAdapter
 {
  //{{{ MouseHandler constructor
- TextAreaMouseHandler(TextArea textArea)
+ protected TextAreaMouseHandler(TextArea textArea)
  {
   this.textArea = textArea;
  } //}}}
@@ -341,7 +341,7 @@
  } //}}}
 
  //{{{ doSingleDrag() method
- private void doSingleDrag(MouseEvent evt)
+ protected void doSingleDrag(MouseEvent evt)
  {
   dragged = true;
 
@@ -413,7 +413,7 @@
  } //}}}
 
  //{{{ doDoubleDrag() method
- private void doDoubleDrag(MouseEvent evt)
+ protected void doDoubleDrag(MouseEvent evt)
  {
   int markLineStart = textArea.getLineStartOffset(dragStartLine);
   int markLineLength = textArea.getLineLength(dragStartLine);
@@ -480,7 +480,7 @@
  } //}}}
 
  //{{{ doTripleDrag() method
- private void doTripleDrag(MouseEvent evt)
+ protected void doTripleDrag(MouseEvent evt)
  {
   TextAreaPainter painter = textArea.getPainter();
 
@@ -683,7 +683,7 @@
   * Dynamically get the "pivot" point associated with a current
   * selection.  See inline comments for details.
   */
- private int getSelectionPivotCaret()
+ protected int getSelectionPivotCaret()
  {
   int caret = textArea.caret;
 
@@ -713,7 +713,7 @@
  /*
   * See getSelectionPivotCaret for an explanation of this function
   */
- private int getSelectionPivotLine()
+ protected int getSelectionPivotLine()
  {
   int c  = textArea.caret;
   int cl = textArea.caretLine;
diff -ru /home/makarius/.isabelle/contrib/jedit-20250424/jedit5.7.0-patched/jEdit/org/gjt/sp/jedit/gui/NumericTextField.java jedit5.7.0-patched/jEdit/org/gjt/sp/jedit/gui/NumericTextField.java
--- /home/makarius/.isabelle/contrib/jedit-20250424/jedit5.7.0-patched/jEdit/org/gjt/sp/jedit/gui/NumericTextField.java 2024-08-03 19:53:18.000000000 +0200
+++ jedit5.7.0-patched/jEdit/org/gjt/sp/jedit/gui/NumericTextField.java 2025-05-14 15:46:44.805742407 +0200
@@ -95,7 +95,7 @@
   Font font = getFont();
   String family = font.getFamily();
   int size = font.getSize();
-  invalidStyle = SyntaxUtilities.parseStyle(jEdit.getProperty("view.style.invalid"), family, size, true);
+  invalidStyle = SyntaxUtilities.parseStyle(jEdit.getThemeProperty("view.style.invalid"), family, size, true);
   defaultForeground = getForeground();
   defaultBackground = getBackground();
  }
diff -ru /home/makarius/.isabelle/contrib/jedit-20250424/jedit5.7.0-patched/jEdit/org/gjt/sp/jedit/gui/statusbar/ErrorsWidgetFactory.java jedit5.7.0-patched/jEdit/org/gjt/sp/jedit/gui/statusbar/ErrorsWidgetFactory.java
--- /home/makarius/.isabelle/contrib/jedit-20250424/jedit5.7.0-patched/jEdit/org/gjt/sp/jedit/gui/statusbar/ErrorsWidgetFactory.java 2024-08-03 19:53:16.000000000 +0200
+++ jedit5.7.0-patched/jEdit/org/gjt/sp/jedit/gui/statusbar/ErrorsWidgetFactory.java 2025-05-14 15:46:52.413610804 +0200
@@ -102,7 +102,7 @@
    String defaultFont = jEdit.getProperty("view.font");
    int defaultFontSize = jEdit.getIntegerProperty("view.fontsize", 12);
    SyntaxStyle invalid = SyntaxUtilities.parseStyle(
-    jEdit.getProperty("view.style.invalid"),
+    jEdit.getThemeProperty("view.style.invalid"),
     defaultFont,defaultFontSize, true);
    foregroundColor = invalid.getForegroundColor();
    setForeground(foregroundColor);
diff -ru jedit5.7.0/jEdit/org/gjt/sp/jedit/options/SyntaxHiliteOptionPane.java jedit5.7.0-patched/jEdit/org/gjt/sp/jedit/options/SyntaxHiliteOptionPane.java
--- jedit5.7.0/jEdit/org/gjt/sp/jedit/options/SyntaxHiliteOptionPane.java 2024-08-03 19:53:15.000000000 +0200
+++ jedit5.7.0-patched/jEdit/org/gjt/sp/jedit/options/SyntaxHiliteOptionPane.java 2025-05-15 21:23:50.047418219 +0200
@@ -222,8 +222,7 @@
   {
    for (StyleChoice ch : styleChoices)
    {
-    jEdit.setProperty(ch.property,
-     GUIUtilities.getStyleString(ch.style));
+    jEdit.setThemeProperty(ch.property,GUIUtilities.getStyleString(ch.style));
    }
   } //}}}
 
@@ -233,7 +232,7 @@
    Font font = new JLabel().getFont();
    styleChoices.add(new StyleChoice(label,
                                     property,
-                                    SyntaxUtilities.parseStyle(jEdit.getProperty(property),
+                                    SyntaxUtilities.parseStyle(jEdit.getThemeProperty(property),
                                                             font.getFamily(), font.getSize(), true)));
   } //}}}
 
@@ -289,8 +288,8 @@
      else
      {
       // this part sucks
-      setBackground(jEdit.getColorProperty(
-       "view.bgColor"));
+      setBackground(
+       jEdit.getColorProperty("view.bgColor", GUIUtilities.defaultBgColor()));
      }
      setFont(style.getFont());
     }
diff -ru jedit5.7.0/jEdit/org/gjt/sp/jedit/gui/StyleEditor.java jedit5.7.0-patched/jEdit/org/gjt/sp/jedit/gui/StyleEditor.java
--- jedit5.7.0/jEdit/org/gjt/sp/jedit/gui/StyleEditor.java 2024-08-03 19:53:18.000000000 +0200
+++ jedit5.7.0-patched/jEdit/org/gjt/sp/jedit/gui/StyleEditor.java 2025-05-14 15:48:00.821423396 +0200
@@ -90,12 +90,12 @@
   String property = "view.style." + typeName.toLowerCase();
   Font font = new JLabel().getFont();
   SyntaxStyle currentStyle = SyntaxUtilities.parseStyle(
-    jEdit.getProperty(property), font.getFamily(), font.getSize(), true);
+    jEdit.getThemeProperty(property), font.getFamily(), font.getSize(), true);
   SyntaxStyle style = new StyleEditor(textArea.getView(),
     currentStyle, typeName).getStyle();
   if(style != null)
   {
-   jEdit.setProperty(property, GUIUtilities.getStyleString(style));
+   jEdit.setProperty(property + GUIUtilities.getThemeSuffix(), GUIUtilities.getStyleString(style));
    jEdit.propertiesChanged();
   }
  } //}}}
diff -ru jedit5.7.0/jEdit/org/gjt/sp/jedit/search/SearchBar.java jedit5.7.0-patched/jEdit/org/gjt/sp/jedit/search/SearchBar.java
--- jedit5.7.0/jEdit/org/gjt/sp/jedit/search/SearchBar.java 2024-08-03 19:53:18.000000000 +0200
+++ jedit5.7.0-patched/jEdit/org/gjt/sp/jedit/search/SearchBar.java 2025-05-14 15:49:19.228054251 +0200
@@ -51,6 +51,10 @@
   setFloatable(false);
   add(Box.createHorizontalStrut(2));
 
+  if (!jEdit.getProperty("navigate-toolbar", "").isEmpty()) {
+   add(GUIUtilities.loadToolBar("navigate-toolbar"));
+  }
+
   JLabel label = new JLabel(jEdit.getProperty("view.search.find"));
   add(label);
   
@@ -59,7 +63,7 @@
   add(find = new HistoryTextField("find"));
   find.setSelectAllOnFocus(true);
 
-  SyntaxStyle style = SyntaxUtilities.parseStyle(jEdit.getProperty("view.style.invalid"), "Dialog", 12, true);
+  SyntaxStyle style = SyntaxUtilities.parseStyle(jEdit.getThemeProperty("view.style.invalid"), "Dialog", 12, true);
   errorBackground = style.getBackgroundColor();
   errorForeground = style.getForegroundColor();
   defaultBackground = find.getBackground();
diff -ru jedit5.7.0/jEdit/org/gjt/sp/jedit/help/HistoryButton.java jedit5.7.0-patched/jEdit/org/gjt/sp/jedit/help/HistoryButton.java
--- jedit5.7.0/jEdit/org/gjt/sp/jedit/help/HistoryButton.java 2024-08-03 19:53:20.000000000 +0200
+++ jedit5.7.0-patched/jEdit/org/gjt/sp/jedit/help/HistoryButton.java 2025-05-20 15:21:59.692613480 +0200
@@ -61,7 +61,7 @@
       ? "helpviewer.back.label"
       : "helpviewer.forward.label"));
   Box box = new Box(BoxLayout.X_AXIS);
-  drop_button = new RolloverButton(GUIUtilities.loadIcon(jEdit.getProperty("dropdown-arrow.icon")));
+  drop_button = new RolloverButton(GUIUtilities.loadIcon(jEdit.getThemeProperty("dropdown-arrow.icon")));
   drop_button.addActionListener(new DropActionHandler());
   box.add(arrow_button);
   box.add(drop_button);
diff -ru jedit5.7.0/jEdit/org/gjt/sp/jedit/gui/OptionsDialog.java jedit5.7.0-patched/jEdit/org/gjt/sp/jedit/gui/OptionsDialog.java
--- jedit5.7.0/jEdit/org/gjt/sp/jedit/gui/OptionsDialog.java 2024-08-03 19:53:18.000000000 +0200
+++ jedit5.7.0-patched/jEdit/org/gjt/sp/jedit/gui/OptionsDialog.java 2025-05-20 16:27:48.111088672 +0200
@@ -191,6 +191,7 @@
 
       if(optionPane != null)
       {
+       deferredOptionPanes.clear();
        deferredOptionPanes.put(
         node,optionPane);
       }
diff -ru jedit5.7.0/jEdit/org/jedit/options/OptionGroupPane.java jedit5.7.0-patched/jEdit/org/jedit/options/OptionGroupPane.java
--- jedit5.7.0/jEdit/org/jedit/options/OptionGroupPane.java 2024-08-03 19:53:23.000000000 +0200
+++ jedit5.7.0-patched/jEdit/org/jedit/options/OptionGroupPane.java 2025-05-20 16:34:10.010928214 +0200
@@ -151,6 +151,7 @@
 
       if (optionPane != null)
       {
+       deferredOptionPanes.clear();
        deferredOptionPanes.put(node, optionPane);
       }
       else
diff -ru jedit5.7.0/jEdit/org/gjt/sp/jedit/gui/FloatingWindowContainer.java jedit5.7.0-patched/jEdit/org/gjt/sp/jedit/gui/FloatingWindowContainer.java
--- jedit5.7.0/jEdit/org/gjt/sp/jedit/gui/FloatingWindowContainer.java 2024-08-03 19:53:18.000000000 +0200
+++ jedit5.7.0-patched/jEdit/org/gjt/sp/jedit/gui/FloatingWindowContainer.java 2025-05-20 15:21:47.892811800 +0200
@@ -45,14 +45,15 @@
  * @version $Id: FloatingWindowContainer.java 25333 2020-05-10 09:40:02Z kpouer $
  * @since jEdit 4.0pre1
  */
-public class FloatingWindowContainer extends JFrame implements DockableWindowContainer, PropertyChangeListener
-{
+public class FloatingWindowContainer extends JDialog implements DockableWindowContainer, PropertyChangeListener {
  private String dockableName;
 
  //{{{ FloatingWindowContainer constructor
  public FloatingWindowContainer(DockableWindowManagerImpl dockableWindowManager,
   boolean clone)
  {
+  super(dockableWindowManager.getView());
+
   this.dockableWindowManager = dockableWindowManager;
 
   dockableWindowManager.addPropertyChangeListener(this);
@@ -62,7 +63,7 @@
 
   Box caption = new Box(BoxLayout.X_AXIS);
   caption.add(menu = new RolloverButton(GUIUtilities
-   .loadIcon(jEdit.getProperty("dropdown-arrow.icon"))));
+   .loadIcon(jEdit.getThemeProperty("dropdown-arrow.icon"))));
   menu.addMouseListener(new MouseHandler());
   menu.setToolTipText(jEdit.getProperty("docking.menu.label"));
   Box separatorBox = new Box(BoxLayout.Y_AXIS);
@@ -87,7 +88,6 @@
   pack();
   Container parent = dockableWindowManager.getView();
   GUIUtilities.loadGeometry(this, parent, dockableName);
-  GUIUtilities.addSizeSaver(this, parent, dockableName);
   KeyListener listener = dockableWindowManager.closeListener(dockableName);
   addKeyListener(listener);
   getContentPane().addKeyListener(listener);
@@ -154,8 +154,11 @@
  @Override
  public void dispose()
  {
-  entry.container = null;
-  entry.win = null;
+  GUIUtilities.saveGeometry(this, dockableWindowManager.getView(), dockableName);
+  if (entry != null) {
+   entry.container = null;
+   entry.win = null;
+  }
   super.dispose();
  } //}}}
 
diff -Nru jedit5.7.0/jEdit/org/gjt/sp/jedit/gui/PanelWindowContainer.java jedit5.7.0-patched/jEdit/org/gjt/sp/jedit/gui/PanelWindowContainer.java
--- jedit5.7.0/jEdit/org/gjt/sp/jedit/gui/PanelWindowContainer.java 2024-08-03 19:53:16.000000000 +0200
+++ jedit5.7.0-patched/jEdit/org/gjt/sp/jedit/gui/PanelWindowContainer.java 2025-08-23 19:56:33.392876293 +0200
@@ -53,11 +53,13 @@
 import javax.swing.JComponent;
 import javax.swing.JPanel;
 import javax.swing.JPopupMenu;
+import javax.swing.JMenuItem;
 import javax.swing.JToggleButton;
 import javax.swing.UIManager;
 import javax.swing.border.Border;
 import javax.swing.border.EmptyBorder;
 import javax.swing.plaf.metal.MetalLookAndFeel;
+import javax.accessibility.AccessibleContext;
 
 import org.gjt.sp.jedit.EditBus;
 import org.gjt.sp.jedit.GUIUtilities;
@@ -99,7 +101,7 @@
 
   closeBox.addActionListener(e -> show((DockableWindowManagerImpl.Entry)null));
 
-  menuBtn = new JButton(GUIUtilities.loadIcon(jEdit.getProperty("dropdown-arrow.icon")));
+  menuBtn = new JButton(GUIUtilities.loadIcon(jEdit.getThemeProperty("dropdown-arrow.icon")));
   menuBtn.setRequestFocusEnabled(false);
   menuBtn.setToolTipText(jEdit.getProperty("view.docking.menu-tooltip"));
   if(OperatingSystem.isMacOSLF())
@@ -164,11 +166,13 @@
   {
    button = new JToggleButton(); 
    button.setMargin(new Insets(1,1,1,1));
+            button.setFont(new JMenuItem().getFont());
   }
   GenericGUIUtilities.setButtonContentMargin(button, new Insets(6,6,6,6));
   button.setRequestFocusEnabled(false);
-  button.setIcon(new RotatedTextIcon(rotation,button.getFont(),
-   entry.shortTitle()));
+  String shortTitle = entry.shortTitle();
+  button.setIcon(new RotatedTextIcon(rotation,button.getFont(), shortTitle));
+  button.putClientProperty(AccessibleContext.ACCESSIBLE_NAME_PROPERTY, shortTitle);
   button.setActionCommand(entry.factory.name);
   button.addActionListener(new ActionHandler());
   button.addMouseListener(new MenuMouseHandler());
@@ -683,8 +687,6 @@
    renderHints = new RenderingHints(
     RenderingHints.KEY_ANTIALIASING,
     RenderingHints.VALUE_ANTIALIAS_ON);
-   renderHints.put(RenderingHints.KEY_FRACTIONALMETRICS,
-    RenderingHints.VALUE_FRACTIONALMETRICS_ON);
    renderHints.put(RenderingHints.KEY_RENDERING,
     RenderingHints.VALUE_RENDER_QUALITY);
   } //}}}
diff -Nru jedit5.7.0/jEdit/org/gjt/sp/jedit/browser/BrowserView.java jedit5.7.0-patched/jEdit/org/gjt/sp/jedit/browser/BrowserView.java
--- jedit5.7.0/jEdit/org/gjt/sp/jedit/browser/BrowserView.java 2024-08-03 19:53:15.000000000 +0200
+++ jedit5.7.0-patched/jEdit/org/gjt/sp/jedit/browser/BrowserView.java 2025-08-25 21:14:57.442610750 +0200
@@ -26,6 +26,7 @@
 import javax.swing.border.EmptyBorder;
 import javax.swing.event.*;
 import javax.swing.*;
+import javax.accessibility.AccessibleContext;
 
 import static java.awt.event.InputEvent.*;
 import java.awt.event.*;
@@ -61,6 +62,7 @@
   parentDirectories = new ParentDirectoryList();
   parentDirectories.addKeyListener(keyListener);
   parentDirectories.setName("parent");
+  parentDirectories.putClientProperty(AccessibleContext.ACCESSIBLE_NAME_PROPERTY, "Directory hierarchy");
 
   parentDirectories.getSelectionModel().setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
   parentDirectories.setCellRenderer(new ParentDirectoryRenderer());
@@ -74,6 +76,8 @@
   table.addMouseListener(new TableMouseHandler());
   table.addKeyListener(new TableKeyListener());
   table.setName("file");
+  table.putClientProperty(AccessibleContext.ACCESSIBLE_NAME_PROPERTY, "Directory entries");
+
   JScrollPane tableScroller = new JScrollPane(table);
   tableScroller.setMinimumSize(new Dimension(0,0));
   tableScroller.getViewport().setBackground(table.getBackground());
diff -Nru jedit5.7.0/jEdit/org/gjt/sp/jedit/browser/VFSBrowser.java jedit5.7.0-patched/jEdit/org/gjt/sp/jedit/browser/VFSBrowser.java
--- jedit5.7.0/jEdit/org/gjt/sp/jedit/browser/VFSBrowser.java 2024-08-03 19:53:15.000000000 +0200
+++ jedit5.7.0-patched/jEdit/org/gjt/sp/jedit/browser/VFSBrowser.java 2025-08-25 21:24:39.620005049 +0200
@@ -30,6 +30,7 @@
 import javax.swing.border.EmptyBorder;
 import javax.swing.event.*;
 import javax.swing.*;
+import javax.accessibility.AccessibleContext;
 import java.awt.datatransfer.DataFlavor;
 import java.awt.datatransfer.Transferable;
 import java.awt.datatransfer.UnsupportedFlavorException;
@@ -222,7 +223,7 @@
   pathField.setInstantPopups(true);
   pathField.setEnterAddsToHistory(false);
   pathField.setSelectAllOnFocus(true);
-
+  label.setLabelFor(pathField);
 
   // because its preferred size can be quite wide, we
   // don't want it to make the browser way too big,
@@ -239,6 +240,7 @@
   pathAndFilterPanel.add(pathField);
 
   filterCheckbox = new JCheckBox(jEdit.getProperty("vfs.browser.filter"));
+  filterCheckbox.putClientProperty(AccessibleContext.ACCESSIBLE_NAME_PROPERTY, "Filter enabled");
   filterCheckbox.setMargin(new Insets(0,0,0,0));
--> --------------------

--> maximum size reached

--> --------------------

¤ Dauer der Verarbeitung: 0.36 Sekunden  (vorverarbeitet)  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

Beweissystem der NASA

Beweissystem Isabelle

NIST Cobol Testsuite

Cephes Mathematical Library

Wiener Entwicklungsmethode

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.






                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

Software

     Produkte
     Quellcodebibliothek

Aktivitäten

     Artikel über Sicherheit
     Anleitung zur Aktivierung von SSL

Muße

     Gedichte
     Musik
     Bilder

Jenseits des Üblichen ....
    

Besucherstatistik

Besucherstatistik

Monitoring

Montastic status badge