Terminal now updates its font when "Text Font" is changed.
diff --git a/com.google.eclipse.terminal.local/src/com/google/eclipse/terminal/local/ui/view/TerminalView.java b/com.google.eclipse.terminal.local/src/com/google/eclipse/terminal/local/ui/view/TerminalView.java
index 96a4972..ad8d241 100644
--- a/com.google.eclipse.terminal.local/src/com/google/eclipse/terminal/local/ui/view/TerminalView.java
+++ b/com.google.eclipse.terminal.local/src/com/google/eclipse/terminal/local/ui/view/TerminalView.java
@@ -15,10 +15,12 @@
import static com.google.eclipse.terminal.local.ui.view.Messages.defaultViewTitle;
import static com.google.eclipse.terminal.local.util.Platform.userHomeDirectory;
import static org.eclipse.core.runtime.Path.fromOSString;
+import static org.eclipse.jface.resource.JFaceResources.TEXT_FONT;
import static org.eclipse.ui.IWorkbenchPage.VIEW_ACTIVATE;
import org.eclipse.core.runtime.IPath;
-import org.eclipse.jface.util.IPropertyChangeListener;
+import org.eclipse.jface.resource.JFaceResources;
+import org.eclipse.jface.util.*;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.tm.internal.terminal.control.ITerminalListener;
@@ -39,6 +41,7 @@
private static final String VIEW_ID = "com.google.eclipse.terminal.local.localTerminalView";
private IPropertyChangeListener colorPreferencesChangeListener;
+ private IPropertyChangeListener textFontChangeListener;
private IMemento savedState;
private TerminalWidget terminalWidget;
private IPath workingDirectory;
@@ -101,11 +104,20 @@
terminalWidget.setUpGlobalEditActionHandlers(viewSite.getActionBars());
colorPreferencesChangeListener = new AbstractColorsAndFontsPreferencesChangeListener() {
@Override protected void onColorChanged() {
- resetColors();
+ updateColors();
}
};
preferenceStore().addPropertyChangeListener(colorPreferencesChangeListener);
- resetColors();
+ updateColors();
+ textFontChangeListener = new IPropertyChangeListener() {
+ @Override public void propertyChange(PropertyChangeEvent event) {
+ if (TEXT_FONT.equals(event.getProperty())) {
+ updateFont();
+ }
+ }
+ };
+ JFaceResources.getFontRegistry().addListener(textFontChangeListener);
+ updateFont();
if (savedState != null) {
connectUsingSavedState();
return;
@@ -116,8 +128,12 @@
}
}
- private void resetColors() {
- terminalWidget.resetTerminalColors(background(), foreground());
+ private void updateColors() {
+ terminalWidget.setColors(background(), foreground());
+ }
+
+ private void updateFont() {
+ terminalWidget.setFont(JFaceResources.getTextFont());
}
private void connectUsingSavedState() {
@@ -151,6 +167,9 @@
if (colorPreferencesChangeListener != null) {
preferenceStore().removePropertyChangeListener(colorPreferencesChangeListener);
}
+ if (textFontChangeListener != null) {
+ JFaceResources.getFontRegistry().removeListener(textFontChangeListener);
+ }
super.dispose();
}
}
diff --git a/com.google.eclipse.terminal.local/src/com/google/eclipse/terminal/local/ui/view/TerminalWidget.java b/com.google.eclipse.terminal.local/src/com/google/eclipse/terminal/local/ui/view/TerminalWidget.java
index 9157b9f..a9c3a58 100644
--- a/com.google.eclipse.terminal.local/src/com/google/eclipse/terminal/local/ui/view/TerminalWidget.java
+++ b/com.google.eclipse.terminal.local/src/com/google/eclipse/terminal/local/ui/view/TerminalWidget.java
@@ -15,7 +15,7 @@
import org.eclipse.jface.action.*;
import org.eclipse.jface.layout.*;
import org.eclipse.swt.events.*;
-import org.eclipse.swt.graphics.RGB;
+import org.eclipse.swt.graphics.*;
import org.eclipse.swt.widgets.*;
import org.eclipse.tm.internal.terminal.control.ITerminalListener;
import org.eclipse.tm.internal.terminal.emulator.VT100TerminalControl;
@@ -128,8 +128,12 @@
return (LocalTerminalConnector) terminalControl.getTerminalConnector().getAdapter(LocalTerminalConnector.class);
}
- void resetTerminalColors(RGB background, RGB foreground) {
- terminalControl.resetColors(background, foreground);
+ void setColors(RGB background, RGB foreground) {
+ terminalControl.setColors(background, foreground);
+ }
+
+ @Override public void setFont(Font font) {
+ terminalControl.setFont(font);
}
@Override public boolean setFocus() {
diff --git a/com.google.eclipse.tm.terminal/src/org/eclipse/tm/internal/terminal/emulator/VT100TerminalControl.java b/com.google.eclipse.tm.terminal/src/org/eclipse/tm/internal/terminal/emulator/VT100TerminalControl.java
index 817561c..a69e07a 100644
--- a/com.google.eclipse.tm.terminal/src/org/eclipse/tm/internal/terminal/emulator/VT100TerminalControl.java
+++ b/com.google.eclipse.tm.terminal/src/org/eclipse/tm/internal/terminal/emulator/VT100TerminalControl.java
@@ -1047,7 +1047,7 @@
fCtlText.setInvertedColors(invert);
}
- public void resetColors(RGB background, RGB foreground) {
- fCtlText.resetColors(background, foreground);
+ public void setColors(RGB background, RGB foreground) {
+ fCtlText.setColors(background, foreground);
}
}
diff --git a/com.google.eclipse.tm.terminal/src/org/eclipse/tm/internal/terminal/textcanvas/ILinelRenderer.java b/com.google.eclipse.tm.terminal/src/org/eclipse/tm/internal/terminal/textcanvas/ILinelRenderer.java
index 5c28769..c586f32 100644
--- a/com.google.eclipse.tm.terminal/src/org/eclipse/tm/internal/terminal/textcanvas/ILinelRenderer.java
+++ b/com.google.eclipse.tm.terminal/src/org/eclipse/tm/internal/terminal/textcanvas/ILinelRenderer.java
@@ -23,5 +23,5 @@
void onFontChange();
void setInvertedColors(boolean invert);
Color getDefaultBackgroundColor();
- void resetColors(RGB background, RGB foreground);
+ void setColors(RGB background, RGB foreground);
}
diff --git a/com.google.eclipse.tm.terminal/src/org/eclipse/tm/internal/terminal/textcanvas/StyleMap.java b/com.google.eclipse.tm.terminal/src/org/eclipse/tm/internal/terminal/textcanvas/StyleMap.java
index bde87d1..d89bb0a 100644
--- a/com.google.eclipse.tm.terminal/src/org/eclipse/tm/internal/terminal/textcanvas/StyleMap.java
+++ b/com.google.eclipse.tm.terminal/src/org/eclipse/tm/internal/terminal/textcanvas/StyleMap.java
@@ -276,7 +276,7 @@
return fOffsets[c];
}
- public void resetColors(RGB background, RGB foreground) {
+ public void setColors(RGB background, RGB foreground) {
this.background = background;
this.foreground = foreground;
initColors();
diff --git a/com.google.eclipse.tm.terminal/src/org/eclipse/tm/internal/terminal/textcanvas/TextCanvas.java b/com.google.eclipse.tm.terminal/src/org/eclipse/tm/internal/terminal/textcanvas/TextCanvas.java
index 787b1f6..2074ebd 100644
--- a/com.google.eclipse.tm.terminal/src/org/eclipse/tm/internal/terminal/textcanvas/TextCanvas.java
+++ b/com.google.eclipse.tm.terminal/src/org/eclipse/tm/internal/terminal/textcanvas/TextCanvas.java
@@ -400,8 +400,8 @@
}
- public void resetColors(RGB background, RGB foreground) {
- fCellRenderer.resetColors(background, foreground);
+ public void setColors(RGB background, RGB foreground) {
+ fCellRenderer.setColors(background, foreground);
}
}
diff --git a/com.google.eclipse.tm.terminal/src/org/eclipse/tm/internal/terminal/textcanvas/TextLineRenderer.java b/com.google.eclipse.tm.terminal/src/org/eclipse/tm/internal/terminal/textcanvas/TextLineRenderer.java
index 98336ae..436413c 100644
--- a/com.google.eclipse.tm.terminal/src/org/eclipse/tm/internal/terminal/textcanvas/TextLineRenderer.java
+++ b/com.google.eclipse.tm.terminal/src/org/eclipse/tm/internal/terminal/textcanvas/TextLineRenderer.java
@@ -159,7 +159,7 @@
}
- @Override public void resetColors(RGB background, RGB foreground) {
- fStyleMap.resetColors(background, foreground);
+ @Override public void setColors(RGB background, RGB foreground) {
+ fStyleMap.setColors(background, foreground);
}
}