Commit eccd9348 authored by Cyril Deguet's avatar Cyril Deguet

* beginning of tooltips (only in the console at the moment ;)

parent 77a466e3
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
* text.cpp: Text control * text.cpp: Text control
***************************************************************************** *****************************************************************************
* Copyright (C) 2003 VideoLAN * Copyright (C) 2003 VideoLAN
* $Id: text.cpp,v 1.10 2003/06/05 22:16:15 asmax Exp $ * $Id: text.cpp,v 1.11 2003/06/07 12:19:23 asmax Exp $
* *
* Authors: Olivier Teulire <ipkiss@via.ecp.fr> * Authors: Olivier Teulire <ipkiss@via.ecp.fr>
* Emmanuel Puig <karibu@via.ecp.fr> * Emmanuel Puig <karibu@via.ecp.fr>
...@@ -121,13 +121,14 @@ extern intf_thread_t *g_pIntf; ...@@ -121,13 +121,14 @@ extern intf_thread_t *g_pIntf;
//----------------------------------------------------------------------- //-----------------------------------------------------------------------
// X11 methods // X11 methods
//----------------------------------------------------------------------- //-----------------------------------------------------------------------
void ScrollingTextTimer( void *data ) bool ScrollingTextTimer( void *data )
{ {
if( (ControlText *)data != NULL if( (ControlText *)data != NULL
&& !( (ControlText *)data )->GetSelected() ) && !( (ControlText *)data )->GetSelected() )
{ {
( (ControlText *)data )->DoScroll(); ( (ControlText *)data )->DoScroll();
} }
return True;
} }
//----------------------------------------------------------------------- //-----------------------------------------------------------------------
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
* x11_run.cpp: * x11_run.cpp:
***************************************************************************** *****************************************************************************
* Copyright (C) 2003 VideoLAN * Copyright (C) 2003 VideoLAN
* $Id: x11_run.cpp,v 1.16 2003/06/06 19:40:37 asmax Exp $ * $Id: x11_run.cpp,v 1.17 2003/06/07 12:19:23 asmax Exp $
* *
* Authors: Cyril Deguet <asmax@videolan.org> * Authors: Cyril Deguet <asmax@videolan.org>
* *
...@@ -150,9 +150,10 @@ int ProcessEvent( intf_thread_t *p_intf, VlcProc *proc, XEvent *event ) ...@@ -150,9 +150,10 @@ int ProcessEvent( intf_thread_t *p_intf, VlcProc *proc, XEvent *event )
} }
void RefreshCallback( void *data ) bool RefreshCallback( void *data )
{ {
SkinManage( (intf_thread_t*)data ); SkinManage( (intf_thread_t*)data );
return True;
} }
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
* x11_timer.cpp: helper class to implement timers * x11_timer.cpp: helper class to implement timers
***************************************************************************** *****************************************************************************
* Copyright (C) 2003 VideoLAN * Copyright (C) 2003 VideoLAN
* $Id: x11_timer.cpp,v 1.1 2003/06/05 22:16:15 asmax Exp $ * $Id: x11_timer.cpp,v 1.2 2003/06/07 12:19:23 asmax Exp $
* *
* Authors: Cyril Deguet <asmax@videolan.org> * Authors: Cyril Deguet <asmax@videolan.org>
* *
...@@ -55,9 +55,9 @@ mtime_t X11Timer::getNextDate( mtime_t current ) ...@@ -55,9 +55,9 @@ mtime_t X11Timer::getNextDate( mtime_t current )
} }
void X11Timer::Execute() bool X11Timer::Execute()
{ {
(*_callback)( _data ); return (*_callback)( _data );
} }
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------
...@@ -112,6 +112,7 @@ void X11TimerManager::Destroy() ...@@ -112,6 +112,7 @@ void X11TimerManager::Destroy()
void *X11TimerManager::Thread( void *p_timer ) void *X11TimerManager::Thread( void *p_timer )
{ {
vlc_thread_ready( (vlc_object_t*) p_timer ); vlc_thread_ready( (vlc_object_t*) p_timer );
while( !((timer_thread_t*)p_timer)->die ) while( !((timer_thread_t*)p_timer)->die )
{ {
list<X11Timer*>::iterator timer; list<X11Timer*>::iterator timer;
...@@ -119,11 +120,14 @@ void *X11TimerManager::Thread( void *p_timer ) ...@@ -119,11 +120,14 @@ void *X11TimerManager::Thread( void *p_timer )
for( timer = _instance->_timers.begin(); for( timer = _instance->_timers.begin();
timer != _instance->_timers.end(); timer++ ) timer != _instance->_timers.end(); timer++ )
{ {
(*timer)->Execute(); bool ret = (*timer)->Execute();
if( !ret )
{ _instance->_timers.remove( *timer );
break;
}
} }
msleep( 100000 ); msleep( 100000 );
} }
} }
#endif #endif
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
* x11_timer.h: helper class to implement timers * x11_timer.h: helper class to implement timers
***************************************************************************** *****************************************************************************
* Copyright (C) 2003 VideoLAN * Copyright (C) 2003 VideoLAN
* $Id: x11_timer.h,v 1.1 2003/06/05 22:16:15 asmax Exp $ * $Id: x11_timer.h,v 1.2 2003/06/07 12:19:23 asmax Exp $
* *
* Authors: Cyril Deguet <asmax@videolan.org> * Authors: Cyril Deguet <asmax@videolan.org>
* *
...@@ -36,7 +36,7 @@ typedef struct ...@@ -36,7 +36,7 @@ typedef struct
class X11Timer; // forward declaration class X11Timer; // forward declaration
typedef void(*callback_t)( void* ); typedef bool(*callback_t)( void* );
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------
class X11Timer class X11Timer
...@@ -53,7 +53,7 @@ class X11Timer ...@@ -53,7 +53,7 @@ class X11Timer
~X11Timer(); ~X11Timer();
mtime_t getNextDate( mtime_t current ); mtime_t getNextDate( mtime_t current );
void Execute(); bool Execute();
}; };
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------
class X11TimerManager class X11TimerManager
...@@ -74,6 +74,7 @@ class X11TimerManager ...@@ -74,6 +74,7 @@ class X11TimerManager
void Destroy(); void Destroy();
void addTimer( X11Timer *timer ) { _timers.push_back( timer ); } void addTimer( X11Timer *timer ) { _timers.push_back( timer ); }
void removeTimer( X11Timer *timer ) { _timers.remove( timer ); }
}; };
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
* x11_window.cpp: X11 implementation of the Window class * x11_window.cpp: X11 implementation of the Window class
***************************************************************************** *****************************************************************************
* Copyright (C) 2003 VideoLAN * Copyright (C) 2003 VideoLAN
* $Id: x11_window.cpp,v 1.11 2003/06/07 00:36:28 asmax Exp $ * $Id: x11_window.cpp,v 1.12 2003/06/07 12:19:23 asmax Exp $
* *
* Authors: Cyril Deguet <asmax@videolan.org> * Authors: Cyril Deguet <asmax@videolan.org>
* *
...@@ -47,6 +47,10 @@ ...@@ -47,6 +47,10 @@
#include "../src/skin_common.h" #include "../src/skin_common.h"
#include "../src/theme.h" #include "../src/theme.h"
#include "../os_theme.h" #include "../os_theme.h"
#include "x11_timer.h"
bool ToolTipCallback( void *data );
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------
...@@ -78,24 +82,6 @@ X11Window::X11Window( intf_thread_t *p_intf, Window wnd, int x, int y, ...@@ -78,24 +82,6 @@ X11Window::X11Window( intf_thread_t *p_intf, Window wnd, int x, int y,
CursorPos = new POINT; CursorPos = new POINT;
WindowPos = new POINT; WindowPos = new POINT;
// Create Tool Tip Window
ToolTipWindow = CreateWindowEx(WS_EX_TOPMOST, TOOLTIPS_CLASS, NULL,
WS_POPUP | TTS_NOPREFIX | TTS_ALWAYSTIP,
CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,
hWnd, 0, GetModuleHandle( NULL ), 0);
// Create Tool Tip infos
ToolTipInfo.cbSize = sizeof(TOOLINFO);
ToolTipInfo.uFlags = TTF_SUBCLASS|TTF_IDISHWND;
ToolTipInfo.hwnd = hWnd;
ToolTipInfo.hinst = GetModuleHandle( NULL );
ToolTipInfo.uId = (unsigned int)hWnd;
ToolTipInfo.lpszText = NULL;
ToolTipInfo.rect.left = ToolTipInfo.rect.top = 0;
ToolTipInfo.rect.right = ToolTipInfo.rect.bottom = 0;
SendMessage( ToolTipWindow, TTM_ADDTOOL, 0,
(LPARAM)(LPTOOLINFO) &ToolTipInfo );
*/ */
if( DragDrop ) if( DragDrop )
...@@ -107,6 +93,9 @@ X11Window::X11Window( intf_thread_t *p_intf, Window wnd, int x, int y, ...@@ -107,6 +93,9 @@ X11Window::X11Window( intf_thread_t *p_intf, Window wnd, int x, int y,
// Create Tool Tip window // Create Tool Tip window
ToolTipWindow = XCreateSimpleWindow( display, wnd, 0, 0, 1, 1, 0, 0, 0 ); ToolTipWindow = XCreateSimpleWindow( display, wnd, 0, 0, 1, 1, 0, 0, 0 );
X11Timer *timer = new X11Timer( p_intf, 100, ToolTipCallback, &ToolTipInfo );
ToolTipInfo.p_intf = p_intf;
ToolTipInfo.timer = timer;
// Double-click handling // Double-click handling
ClickedX = 0; ClickedX = 0;
...@@ -369,6 +358,15 @@ void X11Window::Size( int width, int height ) ...@@ -369,6 +358,15 @@ void X11Window::Size( int width, int height )
XResizeWindow( display, Wnd, width, height ); XResizeWindow( display, Wnd, width, height );
} }
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------
bool ToolTipCallback( void *data )
{
fprintf(stderr," TOOLTIP: %s\n", ((tooltip_t*)data)->text.c_str());
return False;
}
void X11Window::ChangeToolTipText( string text ) void X11Window::ChangeToolTipText( string text )
{ {
if( text == "none" ) if( text == "none" )
...@@ -385,10 +383,10 @@ void X11Window::ChangeToolTipText( string text ) ...@@ -385,10 +383,10 @@ void X11Window::ChangeToolTipText( string text )
if( text != ToolTipText ) if( text != ToolTipText )
{ {
ToolTipText = text; ToolTipText = text;
ToolTipInfo.text = text;
X11TimerManager *timerManager = X11TimerManager::Instance( p_intf );
timerManager->addTimer( ToolTipInfo.timer );
// ToolTipInfo.lpszText = (char *)ToolTipText.c_str(); // ToolTipInfo.lpszText = (char *)ToolTipText.c_str();
/* SendMessage( ToolTipWindow, TTM_ACTIVATE, 1 , 0 );
SendMessage( ToolTipWindow, TTM_UPDATETIPTEXT, 0,
(LPARAM)(LPTOOLINFO)&ToolTipInfo );*/
} }
} }
} }
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
* x11_window.h: X11 implementation of the Window class * x11_window.h: X11 implementation of the Window class
***************************************************************************** *****************************************************************************
* Copyright (C) 2003 VideoLAN * Copyright (C) 2003 VideoLAN
* $Id: x11_window.h,v 1.3 2003/06/07 00:36:28 asmax Exp $ * $Id: x11_window.h,v 1.4 2003/06/07 12:19:23 asmax Exp $
* *
* Authors: Cyril Deguet <asmax@videolan.org> * Authors: Cyril Deguet <asmax@videolan.org>
* *
...@@ -29,10 +29,21 @@ ...@@ -29,10 +29,21 @@
//--- X11 ------------------------------------------------------------------- //--- X11 -------------------------------------------------------------------
#include <X11/Xlib.h> #include <X11/Xlib.h>
#include "x11_timer.h"
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------
class Graphics; class Graphics;
class Event; class Event;
typedef struct
{
intf_thread_t *p_intf;
X11Timer *timer;
string text;
} tooltip_t;
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------
class X11Window : public SkinWindow class X11Window : public SkinWindow
{ {
...@@ -52,7 +63,7 @@ class X11Window : public SkinWindow ...@@ -52,7 +63,7 @@ class X11Window : public SkinWindow
// Tooltip texts // Tooltip texts
Window ToolTipWindow; Window ToolTipWindow;
// TOOLINFO ToolTipInfo; tooltip_t ToolTipInfo;
// Double-click handling // Double-click handling
int ClickedX; int ClickedX;
......
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