View Single Post
Old 07-22-2009, 03:10 AM   #1 (permalink)
ComputerWolf
Knows Where the Search Button Is
 
ComputerWolf's Avatar
 
Join Date: Jul 2009
Model: 8310
PIN: N/A
Carrier: AT&T
Posts: 19
Post Thanks: 0
Thanked 0 Times in 0 Posts
Default 4.6 Scroll Field Problem

Please Login to Remove!

I have the following code which is a custom RichTextField. Many of these are placed in a VerticalFieldManager and scrolled through. In OS 4.5 and 4.7 when one of the fields gets focus and is highlighted, the entire field is moved onto the screen. However in 4.6.0, only 2 lines of the field are brought onto the screen and the rest is hidden until the next field is moved up. I am confused because the focusRect.height variable is the correct height of the field. Is this a bug or something I am missing in my code?
Code:
class TextRichTextField extends RichTextField {
			
			public TextRichTextField(String text){
				super(text);
			}
			
			public TextRichTextField(String text, long style){
				super(text, style);
			}
			
			XYRect focusRect;
            protected void onFocus(int direction) {
                if ( focusRect == null ) {
                    focusRect = this.getExtent();
                }
                super.onFocus(direction);
                invalidate();
            }
            
            protected void unFocus() {
                super.onUnfocus();
                invalidate();
            }
            
            public boolean isSelectable() {
                return false;
            }
            
            public boolean isFocusable() {
                return true;
            }
            
            protected void drawFocus(Graphics g, boolean on) {
                if ( focusRect != null ) {
                	super.drawHighlightRegion(g, Field.HIGHLIGHT_FOCUS | Field.HIGHLIGHT_SELECT, on, 0, 0, focusRect.width, focusRect.height);
                	this.invalidate();
                	super.drawFocus(g, on);
                }
                else {
                    super.drawFocus(g, on);                    
                }
            }
            public void getFocusRect(XYRect rect) {
                if ( focusRect == null ) {
                    super.getFocusRect(rect);
                }
                else {
                    rect.x = 0;
                    rect.y = 0;
                    rect.width = focusRect.width;
                    rect.height = focusRect.height;
                }                 
            }            
            public int moveFocus(int amount, int status, int time) {
            	return amount;
            }
            
            public void paint(Graphics graphics) {
           	    graphics.setColor(Color.WHITE);
           	    super.paint(graphics);
           	  }
		}
Offline   Reply With Quote