blob: b3af29d8375402bb53411152a089eefd63322bb3 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2018 Red Hat and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
* which accompanies this distribution, and is available at
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* Red Hat - initial API and implementation
*******************************************************************************/
package org.eclipse.swt.tests.gtk.snippets;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.MouseMoveListener;
import org.eclipse.swt.events.PaintEvent;
import org.eclipse.swt.events.PaintListener;
import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.graphics.Rectangle;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.widgets.Canvas;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
/**
* This code reproduce GTK's setToolTipText(null) problem.
*/
public class Bug85131_ToolTipSetNull
{
public static void main(String[]v)
{
Display disp = Display.getDefault();
final Shell shell = new Shell(disp, SWT.DIALOG_TRIM|SWT.RESIZE );
shell.setText( "Test Tooltip" );
shell.setLayout( new FillLayout() );
final Canvas canvas = new Canvas( shell, SWT.NONE );
canvas.addPaintListener( new PaintListener() {
@Override
public void paintControl(PaintEvent e)
{
Rectangle r = canvas.getClientArea();
int wm = r.width/8, w2 = r.width/2;
int hm = r.height/8;
int rw = w2-wm, rh = r.height-2*hm;
e.gc.setBackground( new Color(null,200,0,0) );
e.gc.fillRectangle( 0,hm,w2,rh);
e.gc.setBackground( new Color(null,0,0,200) );
e.gc.fillRectangle( w2,hm+hm,rw+wm,rh-hm);
}
});
canvas.addMouseMoveListener( new MouseMoveListener() {
@Override
public void mouseMove(org.eclipse.swt.events.MouseEvent
e) {
int mx = e.x;
int my = e.y;
Rectangle r = canvas.getClientArea();
int wm = r.width/8, w2 = r.width/2;
int hm = r.height/8;
int rw = w2-wm, rh = r.height-2*hm;
String tip = null;
if( mx>=0 && mx <= 0+w2 && my >= hm && my <= hm+rh )
{
tip = "Red Rectangle";
}
else if( mx>=w2 && mx <= w2+rw+wm && my >= hm+hm && my <=
hm+rh )
{
tip = "Blue Rectangle";
}
System.out.println("setToolTipText("+tip+")");
canvas.setToolTipText( tip );
}
});
shell.setSize( 300, 200 );
shell.open();
while (!shell.isDisposed())
if (!disp.readAndDispatch())
disp.sleep();
}
}