*/
package jexer;
-import java.awt.image.BufferedImage;
import java.awt.Font;
import java.awt.FontMetrics;
import java.awt.Graphics2D;
+import java.awt.image.BufferedImage;
import java.io.InputStream;
import java.io.IOException;
return;
}
- if (mouse.isMouseWheelUp()) {
- verticalDecrement();
- return;
- }
- if (mouse.isMouseWheelDown()) {
- verticalIncrement();
- return;
+ // If the emulator is tracking mouse buttons, it needs to see wheel
+ // events.
+ if (emulator.getMouseProtocol() == ECMA48.MouseProtocol.OFF) {
+ if (mouse.isMouseWheelUp()) {
+ verticalDecrement();
+ return;
+ }
+ if (mouse.isMouseWheelDown()) {
+ verticalIncrement();
+ return;
+ }
}
if (mouseOnEmulator(mouse)) {
synchronized (emulator) {
// Add shortcut text
newStatusBar(i18n.getString("statusBarRunning"));
+
+ // Pass the correct text cell width/height to the emulator
+ emulator.setTextWidth(getScreen().getTextWidth());
+ emulator.setTextHeight(getScreen().getTextHeight());
}
/**
private void putDoubleWidthCharXY(final DisplayLine line, final int x,
final int y, final Cell cell) {
- int textWidth = 16;
- int textHeight = 20;
+ int textWidth = getScreen().getTextWidth();
+ int textHeight = getScreen().getTextHeight();
boolean cursorBlinkVisible = true;
if (getScreen() instanceof SwingTerminal) {
SwingTerminal terminal = (SwingTerminal) getScreen();
-
- textWidth = terminal.getTextWidth();
- textHeight = terminal.getTextHeight();
cursorBlinkVisible = terminal.getCursorBlinkVisible();
} else if (getScreen() instanceof ECMA48Terminal) {
ECMA48Terminal terminal = (ECMA48Terminal) getScreen();
- textWidth = terminal.getTextWidth();
- textHeight = terminal.getTextHeight();
+ if (!terminal.hasSixel()) {
+ // The backend does not have sixel support, draw this as text
+ // and bail out.
+ putCharXY(x, y, cell);
+ putCharXY(x + 1, y, ' ', cell);
+ return;
+ }
cursorBlinkVisible = blinkState;
} else {
// We don't know how to dray glyphs to this screen, draw them as
gr2.setFont(doubleFont);
// Draw the background rectangle, then the foreground character.
- if (getScreen() instanceof ECMA48Terminal) {
- // BUG: the background color is coming in the same as the
- // foreground color. For now, don't draw it.
- } else {
- gr2.setColor(SwingTerminal.attrToBackgroundColor(cell));
- gr2.fillRect(0, 0, image.getWidth(), image.getHeight());
- }
+ gr2.setColor(SwingTerminal.attrToBackgroundColor(cell));
+ gr2.fillRect(0, 0, image.getWidth(), image.getHeight());
if (!cell.isBlink()
|| (cell.isBlink() && cursorBlinkVisible)
) {
}
left.setImage(leftImage);
right.setImage(rightImage);
+ // Since we have image data, ditch the character here. Otherwise, a
+ // drawBoxShadow() over the terminal window will show the characters
+ // which looks wrong.
+ left.setChar(' ');
+ right.setChar(' ');
putCharXY(x, y, left);
putCharXY(x + 1, y, right);
}