From bda7aeba79a0279f58ff5b3dd4ee2c128aced994 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jindra=20Pet=C5=99=C3=ADk?= Date: Sun, 23 Nov 2014 08:54:56 +0100 Subject: [PATCH] Issue #635,#726 jsyntaxpane - Fixed placing cursor inside Unicode characters --- lib/jsyntaxpane-0.9.5.jar | Bin 558263 -> 558366 bytes .../src/main/java/jsyntaxpane/SyntaxView.java | 2 +- .../src/main/java/jsyntaxpane/UniTools.java | 313 +++++++++--------- 3 files changed, 160 insertions(+), 155 deletions(-) diff --git a/lib/jsyntaxpane-0.9.5.jar b/lib/jsyntaxpane-0.9.5.jar index 567e90d4da39dcc260fa0bc5493bb4f1237bfe47..a1c100c87deaa00eea9a7ce89046ef0d802fa571 100644 GIT binary patch delta 11180 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 diff --git a/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/SyntaxView.java b/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/SyntaxView.java index fcebf67b3..c885237d9 100644 --- a/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/SyntaxView.java +++ b/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/SyntaxView.java @@ -134,7 +134,7 @@ public class SyntaxView extends PlainView { graphics.setColor(rightMarginColor); graphics.drawLine(m_x, y, m_x, y - h); } - return super.drawUnselectedText(graphics, x, y, p0, p1); + return drawUnselectedText(graphics, x, y, p0, p1); } else { return drawUnselectedText(graphics, x, y, p0, p1); } diff --git a/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/UniTools.java b/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/UniTools.java index 3bfb0821f..16048ecfa 100644 --- a/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/UniTools.java +++ b/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/UniTools.java @@ -1,154 +1,159 @@ -package jsyntaxpane; - -import java.awt.Font; -import java.awt.FontMetrics; -import java.awt.Graphics; -import java.awt.GraphicsEnvironment; -import java.awt.image.BufferedImage; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; -import javax.swing.JLabel; -import javax.swing.text.Segment; -import javax.swing.text.TabExpander; -import javax.swing.text.Utilities; -import javax.swing.text.View; - -/** - * - * @author JPEXS - */ -public class UniTools { - - private static List backupFonts =new ArrayList(); - - private static boolean fontExists(String name){ - GraphicsEnvironment g=GraphicsEnvironment.getLocalGraphicsEnvironment(); - List availFonts=Arrays.asList(g.getAvailableFontFamilyNames()); - for(int i=0;i segments=new ArrayList(); - List unis=new ArrayList(); - - Font origFont=metrics.getFont(); - getSegments(origFont, segment, segments, unis); - Graphics g=new BufferedImage(1, 1, BufferedImage.TYPE_INT_ARGB).getGraphics(); - Font uniFont = defaultUniFont.deriveFont(origFont.getStyle(),origFont.getSize2D()); - int ret=0; - int pos=0; - for(int i=0;i segments,List unis){ - - int start=0; - int len=0; - boolean uni=false; - for(int i=0;i0 && uni!=newuni){ - Segment s =new Segment(segment.array, segment.offset+start, len); - segments.add(s); - unis.add(uni); - start = i; - len=0; - } - uni=newuni; - len++; - } - if(len>0){ - Segment s =new Segment(segment.array, segment.offset+start, len); - segments.add(s); - unis.add(uni); - } - } - - public static int getTabbedTextWidth(Segment segment,FontMetrics f,int x,TabExpander e, int startOffset){ - Graphics g=new BufferedImage(1, 1, BufferedImage.TYPE_INT_ARGB).getGraphics(); - g.setFont(f.getFont()); - return getTabbedTextWidth(g,segment,x,e,startOffset); - } - - public static int getTabbedTextWidth(Graphics g,Segment segment,int x,TabExpander e, int startOffset){ - List segments=new ArrayList(); - List unis=new ArrayList(); - getSegments(g.getFont(), segment, segments, unis); - Font origFont=g.getFont(); - Font uniFont = defaultUniFont.deriveFont(origFont.getStyle(),origFont.getSize2D()); - int ret=0; - int pos=0; - for(int i=0;i segments=new ArrayList(); - List unis=new ArrayList(); - getSegments(g.getFont(), segment, segments, unis); - Font origFont=g.getFont(); - Font uniFont = defaultUniFont.deriveFont(origFont.getStyle(),origFont.getSize2D()); - int ret=x; - int pos=0; - for(int i=0;i segments=new ArrayList(); - List unis=new ArrayList(); - Segment segment=new Segment(string.toCharArray(), 0, string.length()); - getSegments(g.getFont(), segment, segments, unis); - Font origFont=g.getFont(); - Font uniFont = defaultUniFont.deriveFont(origFont.getStyle(),origFont.getSize2D()); - int ret=0; - for(int i=0;i backupFonts =new ArrayList(); + + private static boolean fontExists(String name){ + GraphicsEnvironment g=GraphicsEnvironment.getLocalGraphicsEnvironment(); + List availFonts=Arrays.asList(g.getAvailableFontFamilyNames()); + for(int i=0;i segments=new ArrayList(); + List unis=new ArrayList(); + + Font origFont=metrics.getFont(); + getSegments(origFont, segment, segments, unis); + Graphics g=new BufferedImage(1, 1, BufferedImage.TYPE_INT_ARGB).getGraphics(); + Font uniFont = defaultUniFont.deriveFont(origFont.getStyle(),origFont.getSize2D()); + int ofs=0; + int totalto = 0; + for(int i=0;i segments,List unis){ + + int start=0; + int len=0; + boolean uni=false; + for(int i=0;i0 && uni!=newuni){ + Segment s =new Segment(segment.array, segment.offset+start, len); + segments.add(s); + unis.add(uni); + start = i; + len=0; + } + uni=newuni; + len++; + } + if(len>0){ + Segment s =new Segment(segment.array, segment.offset+start, len); + segments.add(s); + unis.add(uni); + } + } + + public static int getTabbedTextWidth(Segment segment,FontMetrics f,int x,TabExpander e, int startOffset){ + Graphics g=new BufferedImage(1, 1, BufferedImage.TYPE_INT_ARGB).getGraphics(); + g.setFont(f.getFont()); + return getTabbedTextWidth(g,segment,x,e,startOffset); + } + + public static int getTabbedTextWidth(Graphics g,Segment segment,int x,TabExpander e, int startOffset){ + List segments=new ArrayList(); + List unis=new ArrayList(); + getSegments(g.getFont(), segment, segments, unis); + Font origFont=g.getFont(); + Font uniFont = defaultUniFont.deriveFont(origFont.getStyle(),origFont.getSize2D()); + int ret=0; + int pos=0; + for(int i=0;i segments=new ArrayList(); + List unis=new ArrayList(); + getSegments(g.getFont(), segment, segments, unis); + Font origFont=g.getFont(); + Font uniFont = defaultUniFont.deriveFont(origFont.getStyle(),origFont.getSize2D()); + int ret=x; + int pos=0; + for(int i=0;i segments=new ArrayList(); + List unis=new ArrayList(); + Segment segment=new Segment(string.toCharArray(), 0, string.length()); + getSegments(g.getFont(), segment, segments, unis); + Font origFont=g.getFont(); + Font uniFont = defaultUniFont.deriveFont(origFont.getStyle(),origFont.getSize2D()); + int ret=0; + for(int i=0;i