src/solaris/classes/sun/awt/X11/XListPeer.java
Print this page
*** 573,586 ****
repaint();
}
}
void mousePressed(MouseEvent mouseEvent) {
! if (log.isLoggable(PlatformLogger.FINER)) log.finer(mouseEvent.toString() + ", hsb " + hsbVis + ", vsb " + vsbVis);
if (isEnabled() && mouseEvent.getButton() == MouseEvent.BUTTON1) {
if (inWindow(mouseEvent.getX(), mouseEvent.getY())) {
! if (log.isLoggable(PlatformLogger.FINE)) log.fine("Mouse press in items area");
active = WINDOW;
int i = y2index(mouseEvent.getY());
if (i >= 0) {
if (multipleSelections) {
if (isSelected(i)) {
--- 573,590 ----
repaint();
}
}
void mousePressed(MouseEvent mouseEvent) {
! if (log.isLoggable(PlatformLogger.FINER)) {
! log.finer(mouseEvent.toString() + ", hsb " + hsbVis + ", vsb " + vsbVis);
! }
if (isEnabled() && mouseEvent.getButton() == MouseEvent.BUTTON1) {
if (inWindow(mouseEvent.getX(), mouseEvent.getY())) {
! if (log.isLoggable(PlatformLogger.FINE)) {
! log.fine("Mouse press in items area");
! }
active = WINDOW;
int i = y2index(mouseEvent.getY());
if (i >= 0) {
if (multipleSelections) {
if (isSelected(i)) {
*** 613,630 ****
// 6426186: reset variable to prevent action event
// if user clicks on unoccupied area of list
currentIndex = -1;
}
} else if (inVerticalScrollbar(mouseEvent.getX(), mouseEvent.getY())) {
! if (log.isLoggable(PlatformLogger.FINE)) log.fine("Mouse press in vertical scrollbar");
active = VERSCROLLBAR;
vsb.handleMouseEvent(mouseEvent.getID(),
mouseEvent.getModifiers(),
mouseEvent.getX() - (width - SCROLLBAR_WIDTH),
mouseEvent.getY());
} else if (inHorizontalScrollbar(mouseEvent.getX(), mouseEvent.getY())) {
! if (log.isLoggable(PlatformLogger.FINE)) log.fine("Mouse press in horizontal scrollbar");
active = HORSCROLLBAR;
hsb.handleMouseEvent(mouseEvent.getID(),
mouseEvent.getModifiers(),
mouseEvent.getX(),
mouseEvent.getY() - (height - SCROLLBAR_WIDTH));
--- 617,638 ----
// 6426186: reset variable to prevent action event
// if user clicks on unoccupied area of list
currentIndex = -1;
}
} else if (inVerticalScrollbar(mouseEvent.getX(), mouseEvent.getY())) {
! if (log.isLoggable(PlatformLogger.FINE)) {
! log.fine("Mouse press in vertical scrollbar");
! }
active = VERSCROLLBAR;
vsb.handleMouseEvent(mouseEvent.getID(),
mouseEvent.getModifiers(),
mouseEvent.getX() - (width - SCROLLBAR_WIDTH),
mouseEvent.getY());
} else if (inHorizontalScrollbar(mouseEvent.getX(), mouseEvent.getY())) {
! if (log.isLoggable(PlatformLogger.FINE)) {
! log.fine("Mouse press in horizontal scrollbar");
! }
active = HORSCROLLBAR;
hsb.handleMouseEvent(mouseEvent.getID(),
mouseEvent.getModifiers(),
mouseEvent.getX(),
mouseEvent.getY() - (height - SCROLLBAR_WIDTH));
*** 803,813 ****
}
}
void keyPressed(KeyEvent e) {
int keyCode = e.getKeyCode();
! if (log.isLoggable(PlatformLogger.FINE)) log.fine(e.toString());
switch(keyCode) {
case KeyEvent.VK_UP:
case KeyEvent.VK_KP_UP: // TODO: I assume we also want this, too
if (getFocusIndex() > 0) {
setFocusIndex(getFocusIndex()-1);
--- 811,823 ----
}
}
void keyPressed(KeyEvent e) {
int keyCode = e.getKeyCode();
! if (log.isLoggable(PlatformLogger.FINE)) {
! log.fine(e.toString());
! }
switch(keyCode) {
case KeyEvent.VK_UP:
case KeyEvent.VK_KP_UP: // TODO: I assume we also want this, too
if (getFocusIndex() > 0) {
setFocusIndex(getFocusIndex()-1);
*** 988,998 ****
/**
* return value from the scrollbar
*/
public void notifyValue(XScrollbar obj, int type, int v, boolean isAdjusting) {
! if (log.isLoggable(PlatformLogger.FINE)) log.fine("Notify value changed on " + obj + " to " + v);
int value = obj.getValue();
if (obj == vsb) {
scrollVertical(v - value);
// See 6243382 for more information
--- 998,1010 ----
/**
* return value from the scrollbar
*/
public void notifyValue(XScrollbar obj, int type, int v, boolean isAdjusting) {
! if (log.isLoggable(PlatformLogger.FINE)) {
! log.fine("Notify value changed on " + obj + " to " + v);
! }
int value = obj.getValue();
if (obj == vsb) {
scrollVertical(v - value);
// See 6243382 for more information
*** 1071,1081 ****
if (selected[j] >= i) {
selected[j] += 1;
}
}
}
! if (log.isLoggable(PlatformLogger.FINER)) log.finer("Adding item '" + item + "' to " + addedIndex);
// Update maxLength
boolean repaintItems = !isItemHidden(addedIndex);
maxLength = Math.max(maxLength, getItemWidth(addedIndex));
layout();
--- 1083,1095 ----
if (selected[j] >= i) {
selected[j] += 1;
}
}
}
! if (log.isLoggable(PlatformLogger.FINER)) {
! log.finer("Adding item '" + item + "' to " + addedIndex);
! }
// Update maxLength
boolean repaintItems = !isItemHidden(addedIndex);
maxLength = Math.max(maxLength, getItemWidth(addedIndex));
layout();
*** 1089,1100 ****
options = (repaintItems ? (PAINT_ITEMS):0)
| ((maxLength != oldMaxLength || (hsbWasVis ^ hsbVis))?(PAINT_HSCROLL):0)
| ((vsb.needsRepaint())?(PAINT_VSCROLL):0);
}
! if (log.isLoggable(PlatformLogger.FINEST)) log.finest("Last visible: " + getLastVisibleItem() +
", hsb changed : " + (hsbWasVis ^ hsbVis) + ", items changed " + repaintItems);
repaint(addedIndex, getLastVisibleItem(), options);
}
/**
* delete items starting with s (start position) to e (end position) including s and e
--- 1103,1116 ----
options = (repaintItems ? (PAINT_ITEMS):0)
| ((maxLength != oldMaxLength || (hsbWasVis ^ hsbVis))?(PAINT_HSCROLL):0)
| ((vsb.needsRepaint())?(PAINT_VSCROLL):0);
}
! if (log.isLoggable(PlatformLogger.FINEST)) {
! log.finest("Last visible: " + getLastVisibleItem() +
", hsb changed : " + (hsbWasVis ^ hsbVis) + ", items changed " + repaintItems);
+ }
repaint(addedIndex, getLastVisibleItem(), options);
}
/**
* delete items starting with s (start position) to e (end position) including s and e
*** 1105,1118 ****
// save the current state of the scrollbars
boolean hsbWasVisible = hsbVis;
boolean vsbWasVisible = vsbVis;
int oldLastDisplayed = lastItemDisplayed();
! if (log.isLoggable(PlatformLogger.FINE)) log.fine("Deleting from " + s + " to " + e);
! if (log.isLoggable(PlatformLogger.FINEST)) log.finest("Last displayed item: " + oldLastDisplayed + ", items in window " + itemsInWindow() +
", size " + items.size());
if (items.size() == 0) {
return;
}
--- 1121,1138 ----
// save the current state of the scrollbars
boolean hsbWasVisible = hsbVis;
boolean vsbWasVisible = vsbVis;
int oldLastDisplayed = lastItemDisplayed();
! if (log.isLoggable(PlatformLogger.FINE)) {
! log.fine("Deleting from " + s + " to " + e);
! }
! if (log.isLoggable(PlatformLogger.FINEST)) {
! log.finest("Last displayed item: " + oldLastDisplayed + ", items in window " + itemsInWindow() +
", size " + items.size());
+ }
if (items.size() == 0) {
return;
}
*** 1175,1185 ****
int focusBound = (items.size() > 0) ? 0 : -1;
setFocusIndex(Math.max(s-1, focusBound));
options |= PAINT_FOCUS;
}
! if (log.isLoggable(PlatformLogger.FINEST)) log.finest("Multiple selections: " + multipleSelections);
// update vsb.val
if (vsb.getValue() >= s) {
if (vsb.getValue() <= e) {
vsb.setValue(e+1 - diff);
--- 1195,1207 ----
int focusBound = (items.size() > 0) ? 0 : -1;
setFocusIndex(Math.max(s-1, focusBound));
options |= PAINT_FOCUS;
}
! if (log.isLoggable(PlatformLogger.FINEST)) {
! log.finest("Multiple selections: " + multipleSelections);
! }
// update vsb.val
if (vsb.getValue() >= s) {
if (vsb.getValue() <= e) {
vsb.setValue(e+1 - diff);
*** 1428,1438 ****
/**
* scrollVertical
* y is the number of items to scroll
*/
void scrollVertical(int y) {
! if (log.isLoggable(PlatformLogger.FINE)) log.fine("Scrolling vertically by " + y);
int itemsInWin = itemsInWindow();
int h = getItemHeight();
int pixelsToScroll = y * h;
if (vsb.getValue() < -y) {
--- 1450,1462 ----
/**
* scrollVertical
* y is the number of items to scroll
*/
void scrollVertical(int y) {
! if (log.isLoggable(PlatformLogger.FINE)) {
! log.fine("Scrolling vertically by " + y);
! }
int itemsInWin = itemsInWindow();
int h = getItemHeight();
int pixelsToScroll = y * h;
if (vsb.getValue() < -y) {
*** 1468,1478 ****
/**
* scrollHorizontal
* x is the number of pixels to scroll
*/
void scrollHorizontal(int x) {
! if (log.isLoggable(PlatformLogger.FINE)) log.fine("Scrolling horizontally by " + y);
int w = getListWidth();
w -= ((2 * SPACE) + (2 * MARGIN));
int h = height - (SCROLLBAR_AREA + (2 * MARGIN));
hsb.setValue(hsb.getValue() + x);
--- 1492,1504 ----
/**
* scrollHorizontal
* x is the number of pixels to scroll
*/
void scrollHorizontal(int x) {
! if (log.isLoggable(PlatformLogger.FINE)) {
! log.fine("Scrolling horizontally by " + y);
! }
int w = getListWidth();
w -= ((2 * SPACE) + (2 * MARGIN));
int h = height - (SCROLLBAR_AREA + (2 * MARGIN));
hsb.setValue(hsb.getValue() + x);
*** 1704,1714 ****
} finally {
XToolkit.awtUnlock();
}
if (localBuffer == null) {
! if (log.isLoggable(PlatformLogger.FINE)) log.fine("Creating buffer " + width + "x" + height);
// use GraphicsConfig.cCVI() instead of Component.cVI(),
// because the latter may cause a deadlock with the tree lock
localBuffer =
graphicsConfig.createCompatibleVolatileImage(width+1,
height+1);
--- 1730,1742 ----
} finally {
XToolkit.awtUnlock();
}
if (localBuffer == null) {
! if (log.isLoggable(PlatformLogger.FINE)) {
! log.fine("Creating buffer " + width + "x" + height);
! }
// use GraphicsConfig.cCVI() instead of Component.cVI(),
// because the latter may cause a deadlock with the tree lock
localBuffer =
graphicsConfig.createCompatibleVolatileImage(width+1,
height+1);
*** 1741,1751 ****
paint(listG, firstItem, lastItem, options, null, null);
}
private void paint(Graphics listG, int firstItem, int lastItem, int options,
Rectangle source, Point distance) {
! if (log.isLoggable(PlatformLogger.FINER)) log.finer("Repaint from " + firstItem + " to " + lastItem + " options " + options);
if (firstItem > lastItem) {
int t = lastItem;
lastItem = firstItem;
firstItem = t;
}
--- 1769,1781 ----
paint(listG, firstItem, lastItem, options, null, null);
}
private void paint(Graphics listG, int firstItem, int lastItem, int options,
Rectangle source, Point distance) {
! if (log.isLoggable(PlatformLogger.FINER)) {
! log.finer("Repaint from " + firstItem + " to " + lastItem + " options " + options);
! }
if (firstItem > lastItem) {
int t = lastItem;
lastItem = firstItem;
firstItem = t;
}
*** 1830,1878 ****
g.fillRect(0, 0, listWidth, listHeight);
draw3DRect(g, getSystemColors(), 0, 0, listWidth - 1, listHeight - 1, false);
}
private void paintItems(Graphics g, int firstItem, int lastItem, int options) {
! if (log.isLoggable(PlatformLogger.FINER)) log.finer("Painting items from " + firstItem + " to " + lastItem + ", focused " + focusIndex + ", first " + getFirstVisibleItem() + ", last " + getLastVisibleItem());
firstItem = Math.max(getFirstVisibleItem(), firstItem);
if (firstItem > lastItem) {
int t = lastItem;
lastItem = firstItem;
firstItem = t;
}
firstItem = Math.max(getFirstVisibleItem(), firstItem);
lastItem = Math.min(lastItem, items.size()-1);
! if (log.isLoggable(PlatformLogger.FINER)) log.finer("Actually painting items from " + firstItem + " to " + lastItem +
", items in window " + itemsInWindow());
for (int i = firstItem; i <= lastItem; i++) {
paintItem(g, i);
}
}
private void paintItem(Graphics g, int index) {
! if (log.isLoggable(PlatformLogger.FINEST)) log.finest("Painting item " + index);
// 4895367 - only paint items which are visible
if (!isItemHidden(index)) {
Shape clip = g.getClip();
int w = getItemWidth();
int h = getItemHeight();
int y = getItemY(index);
int x = getItemX();
! if (log.isLoggable(PlatformLogger.FINEST)) log.finest("Setting clip " + new Rectangle(x, y, w - (SPACE*2), h-(SPACE*2)));
g.setClip(x, y, w - (SPACE*2), h-(SPACE*2));
// Always paint the background so that focus is unpainted in
// multiselect mode
if (isSelected(index)) {
! if (log.isLoggable(PlatformLogger.FINEST)) log.finest("Painted item is selected");
g.setColor(getListForeground());
} else {
g.setColor(getListBackground());
}
! if (log.isLoggable(PlatformLogger.FINEST)) log.finest("Filling " + new Rectangle(x, y, w, h));
g.fillRect(x, y, w, h);
if (index <= getLastVisibleItem() && index < items.size()) {
if (!isEnabled()){
g.setColor(getDisabledColor());
--- 1860,1918 ----
g.fillRect(0, 0, listWidth, listHeight);
draw3DRect(g, getSystemColors(), 0, 0, listWidth - 1, listHeight - 1, false);
}
private void paintItems(Graphics g, int firstItem, int lastItem, int options) {
! if (log.isLoggable(PlatformLogger.FINER)) {
! log.finer("Painting items from " + firstItem + " to " + lastItem + ", focused " + focusIndex + ", first " + getFirstVisibleItem() + ", last " + getLastVisibleItem());
! }
firstItem = Math.max(getFirstVisibleItem(), firstItem);
if (firstItem > lastItem) {
int t = lastItem;
lastItem = firstItem;
firstItem = t;
}
firstItem = Math.max(getFirstVisibleItem(), firstItem);
lastItem = Math.min(lastItem, items.size()-1);
! if (log.isLoggable(PlatformLogger.FINER)) {
! log.finer("Actually painting items from " + firstItem + " to " + lastItem +
", items in window " + itemsInWindow());
+ }
for (int i = firstItem; i <= lastItem; i++) {
paintItem(g, i);
}
}
private void paintItem(Graphics g, int index) {
! if (log.isLoggable(PlatformLogger.FINEST)) {
! log.finest("Painting item " + index);
! }
// 4895367 - only paint items which are visible
if (!isItemHidden(index)) {
Shape clip = g.getClip();
int w = getItemWidth();
int h = getItemHeight();
int y = getItemY(index);
int x = getItemX();
! if (log.isLoggable(PlatformLogger.FINEST)) {
! log.finest("Setting clip " + new Rectangle(x, y, w - (SPACE*2), h-(SPACE*2)));
! }
g.setClip(x, y, w - (SPACE*2), h-(SPACE*2));
// Always paint the background so that focus is unpainted in
// multiselect mode
if (isSelected(index)) {
! log.finest("Painted item is selected");
g.setColor(getListForeground());
} else {
g.setColor(getListBackground());
}
! if (log.isLoggable(PlatformLogger.FINEST)) {
! log.finest("Filling " + new Rectangle(x, y, w, h));
! }
g.fillRect(x, y, w, h);
if (index <= getLastVisibleItem() && index < items.size()) {
if (!isEnabled()){
g.setColor(getDisabledColor());
*** 1892,1903 ****
g.setClip(clip);
}
}
void paintScrollBar(XScrollbar scr, Graphics g, int x, int y, int width, int height, boolean paintAll) {
! if (log.isLoggable(PlatformLogger.FINEST)) log.finest("Painting scrollbar " + scr + " width " +
width + " height " + height + ", paintAll " + paintAll);
g.translate(x, y);
scr.paint(g, getSystemColors(), paintAll);
g.translate(-x, -y);
}
--- 1932,1945 ----
g.setClip(clip);
}
}
void paintScrollBar(XScrollbar scr, Graphics g, int x, int y, int width, int height, boolean paintAll) {
! if (log.isLoggable(PlatformLogger.FINEST)) {
! log.finest("Painting scrollbar " + scr + " width " +
width + " height " + height + ", paintAll " + paintAll);
+ }
g.translate(x, y);
scr.paint(g, getSystemColors(), paintAll);
g.translate(-x, -y);
}
*** 1930,1955 ****
private void paintFocus(Graphics g, int options) {
boolean paintFocus = (options & PAINT_FOCUS) != 0;
if (paintFocus && !hasFocus()) {
paintFocus = false;
}
! if (log.isLoggable(PlatformLogger.FINE)) log.fine("Painting focus, focus index " + getFocusIndex() + ", focus is " +
(isItemHidden(getFocusIndex())?("invisible"):("visible")) + ", paint focus is " + paintFocus);
Shape clip = g.getClip();
g.setClip(0, 0, listWidth, listHeight);
! if (log.isLoggable(PlatformLogger.FINEST)) log.finest("Setting focus clip " + new Rectangle(0, 0, listWidth, listHeight));
Rectangle rect = getFocusRect();
if (prevFocusRect != null) {
// Erase focus rect
! if (log.isLoggable(PlatformLogger.FINEST)) log.finest("Erasing previous focus rect " + prevFocusRect);
g.setColor(getListBackground());
g.drawRect(prevFocusRect.x, prevFocusRect.y, prevFocusRect.width, prevFocusRect.height);
prevFocusRect = null;
}
if (paintFocus) {
// Paint new
! if (log.isLoggable(PlatformLogger.FINEST)) log.finest("Painting focus rect " + rect);
g.setColor(getListForeground()); // Focus color is always black on Linux
g.drawRect(rect.x, rect.y, rect.width, rect.height);
prevFocusRect = rect;
}
g.setClip(clip);
--- 1972,2005 ----
private void paintFocus(Graphics g, int options) {
boolean paintFocus = (options & PAINT_FOCUS) != 0;
if (paintFocus && !hasFocus()) {
paintFocus = false;
}
! if (log.isLoggable(PlatformLogger.FINE)) {
! log.fine("Painting focus, focus index " + getFocusIndex() + ", focus is " +
(isItemHidden(getFocusIndex())?("invisible"):("visible")) + ", paint focus is " + paintFocus);
+ }
Shape clip = g.getClip();
g.setClip(0, 0, listWidth, listHeight);
! if (log.isLoggable(PlatformLogger.FINEST)) {
! log.finest("Setting focus clip " + new Rectangle(0, 0, listWidth, listHeight));
! }
Rectangle rect = getFocusRect();
if (prevFocusRect != null) {
// Erase focus rect
! if (log.isLoggable(PlatformLogger.FINEST)) {
! log.finest("Erasing previous focus rect " + prevFocusRect);
! }
g.setColor(getListBackground());
g.drawRect(prevFocusRect.x, prevFocusRect.y, prevFocusRect.width, prevFocusRect.height);
prevFocusRect = null;
}
if (paintFocus) {
// Paint new
! if (log.isLoggable(PlatformLogger.FINEST)) {
! log.finest("Painting focus rect " + rect);
! }
g.setColor(getListForeground()); // Focus color is always black on Linux
g.drawRect(rect.x, rect.y, rect.width, rect.height);
prevFocusRect = rect;
}
g.setClip(clip);