Commit 4989904b authored by Cyril Deguet's avatar Cyril Deguet

* tooltips are now updated during scrolling

parent 0f0a0c68
......@@ -2,7 +2,7 @@
* window.cpp: Window class
*****************************************************************************
* Copyright (C) 2003 VideoLAN
* $Id: window.cpp,v 1.29 2003/06/10 11:43:40 gbazin Exp $
* $Id: window.cpp,v 1.30 2003/06/17 18:13:18 asmax Exp $
*
* Authors: Olivier Teulire <ipkiss@via.ecp.fr>
* Emmanuel Puig <karibu@via.ecp.fr>
......@@ -456,7 +456,18 @@ void SkinWindow::MouseScroll( int x, int y, int direction )
{
break;
}
}
// Checking for change in Tool Tip
for( int i = ControlList.size() - 1; i >= 0; i-- )
{
if( ControlList[i]->IsVisible() &&
ControlList[i]->ToolTipTest( x, y ) )
{
break;
}
}
}
//---------------------------------------------------------------------------
void SkinWindow::Init()
......
......@@ -2,7 +2,7 @@
* x11_window.cpp: X11 implementation of the Window class
*****************************************************************************
* Copyright (C) 2003 VideoLAN
* $Id: x11_window.cpp,v 1.23 2003/06/14 18:49:02 gbazin Exp $
* $Id: x11_window.cpp,v 1.24 2003/06/17 18:13:18 asmax Exp $
*
* Authors: Cyril Deguet <asmax@videolan.org>
*
......@@ -51,7 +51,8 @@
#include "x11_timer.h"
bool ToolTipCallback( void *data );
static bool ToolTipCallback( void *data );
static void DrawToolTipText( tooltip_t *tooltip );
//---------------------------------------------------------------------------
......@@ -145,6 +146,7 @@ X11Window::X11Window( intf_thread_t *p_intf, Window wnd, int x, int y,
X11Timer *timer = new X11Timer( p_intf, 500000, ToolTipCallback, &ToolTip );
ToolTip.p_intf = p_intf;
ToolTip.timer = timer;
ToolTip.active = False;
// Double-click handling
ClickedX = 0;
......@@ -491,12 +493,42 @@ bool ToolTipCallback( void *data )
XDrawString( disp, win, gc, 4, overall.ascent+4, text.c_str(),
text.size() );
XSync( disp, 0 );
((tooltip_t*)data)->active = True;
XUNLOCK;
return False;
}
void DrawToolTipText( tooltip_t *tooltip )
{
int direction, fontAscent, fontDescent;
Display *disp = tooltip->display;
Window win = tooltip->window;
Font font = tooltip->font;
GC gc = tooltip->gc;
string text = tooltip->text;
int curX = tooltip->curX;
int curY = tooltip->curY;
XLOCK;
XClearWindow( disp, win );
XCharStruct overall;
XQueryTextExtents( disp, font, text.c_str(), text.size(), &direction,
&fontAscent, &fontDescent, &overall );
int w = overall.rbearing - overall.lbearing;
int h = overall.ascent + overall.descent;
XMoveWindow( disp, win, curX - w/4, curY + 20 );
XResizeWindow( disp, win, w+8, h+8 );
XDrawString( disp, win, gc, 4, overall.ascent+4, text.c_str(),
text.size() );
XSync( disp, 0 );
XUNLOCK;
}
void X11Window::ChangeToolTipText( string text )
{
if( text == "none" )
......@@ -511,6 +543,7 @@ void X11Window::ChangeToolTipText( string text )
XUnmapWindow( display, ToolTip.window );
XResizeWindow( display, ToolTip.window, 1, 1 );
XSync( display, 0 );
ToolTip.active = False;
XUNLOCK;
}
}
......@@ -520,9 +553,18 @@ void X11Window::ChangeToolTipText( string text )
{
ToolTipText = text;
ToolTip.text = text;
OSAPI_GetMousePos( ToolTip.curX, ToolTip.curY );
X11TimerManager *timerManager = X11TimerManager::Instance( p_intf );
timerManager->addTimer( ToolTip.timer );
if( !ToolTip.active )
{
// Create the tooltip
OSAPI_GetMousePos( ToolTip.curX, ToolTip.curY );
X11TimerManager *timerManager = X11TimerManager::Instance( p_intf );
timerManager->addTimer( ToolTip.timer );
}
else
{
// Refresh the tooltip
DrawToolTipText( &ToolTip );
}
}
}
}
......
......@@ -2,7 +2,7 @@
* x11_window.h: X11 implementation of the Window class
*****************************************************************************
* Copyright (C) 2003 VideoLAN
* $Id: x11_window.h,v 1.5 2003/06/08 00:32:07 asmax Exp $
* $Id: x11_window.h,v 1.6 2003/06/17 18:13:18 asmax Exp $
*
* Authors: Cyril Deguet <asmax@videolan.org>
*
......@@ -47,6 +47,7 @@ typedef struct
Font font;
int curX;
int curY;
bool active;
} tooltip_t;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment