Windows receive focus when shown
System cursor API and infrastructure largely implemented Added Decorator::SetFont Removed unnecessary parameter copying in WinBorder class API Optimized screen updates when a decorator button is clicked Moved TokenHandler and BitmapManager to libappserver to allow decorators to use bitmaps Began reworking of DefaultDecorator::_DrawFrame to draw only what it is asked to Partly implemented ViewDriver::StrokeLineArray - calls StrokeLine Fixed a Layer init bug - visibility regions were initialized to Bounds() and not Frame() git-svn-id: file:///srv/svn/repos/haiku/trunk/current@4060 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
parent
aea9bed9de
commit
2a8283e420
@ -618,6 +618,11 @@ void AppServer::DispatchMessage(int32 code, int8 *buffer)
|
|||||||
_exit_poller=true;
|
_exit_poller=true;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
case AS_SET_SYSCURSOR_DEFAULTS:
|
||||||
|
{
|
||||||
|
cursormanager->SetDefaults();
|
||||||
|
break;
|
||||||
|
}
|
||||||
default:
|
default:
|
||||||
// we should never get here.
|
// we should never get here.
|
||||||
break;
|
break;
|
||||||
@ -980,7 +985,10 @@ Decorator *new_decorator(BRect rect, const char *title, int32 wlook, int32 wfeel
|
|||||||
dec=app_server->make_decorator(rect,wlook,wfeel,wflags);
|
dec=app_server->make_decorator(rect,wlook,wfeel,wflags);
|
||||||
|
|
||||||
gui_colorset.Lock();
|
gui_colorset.Lock();
|
||||||
|
dec->SetDriver(ddriver);
|
||||||
dec->SetColors(gui_colorset);
|
dec->SetColors(gui_colorset);
|
||||||
|
dec->SetFont(fontserver->GetSystemPlain());
|
||||||
|
dec->SetTitle(title);
|
||||||
gui_colorset.Unlock();
|
gui_colorset.Unlock();
|
||||||
|
|
||||||
return dec;
|
return dec;
|
||||||
|
@ -29,7 +29,10 @@
|
|||||||
#include "CursorManager.h"
|
#include "CursorManager.h"
|
||||||
#include "ServerCursor.h"
|
#include "ServerCursor.h"
|
||||||
#include "CursorData.h"
|
#include "CursorData.h"
|
||||||
|
#include "ServerConfig.h"
|
||||||
#include <Errors.h>
|
#include <Errors.h>
|
||||||
|
#include <Directory.h>
|
||||||
|
#include <String.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
//! The global cursor manager object. Allocated and freed by AppServer class
|
//! The global cursor manager object. Allocated and freed by AppServer class
|
||||||
@ -39,7 +42,6 @@ CursorManager *cursormanager;
|
|||||||
CursorManager::CursorManager(void)
|
CursorManager::CursorManager(void)
|
||||||
{
|
{
|
||||||
_cursorlist=new BList(0);
|
_cursorlist=new BList(0);
|
||||||
_lock=create_sem(1,"cursor_manager_sem");
|
|
||||||
|
|
||||||
// Error code for AddCursor
|
// Error code for AddCursor
|
||||||
_tokenizer.ExcludeValue(B_ERROR);
|
_tokenizer.ExcludeValue(B_ERROR);
|
||||||
@ -53,21 +55,21 @@ CursorManager::CursorManager(void)
|
|||||||
AddCursor(ctext);
|
AddCursor(ctext);
|
||||||
_textcsr=ctext;
|
_textcsr=ctext;
|
||||||
|
|
||||||
ServerCursor *cdrag=new ServerCursor(default_drag_data);
|
|
||||||
AddCursor(cdrag);
|
|
||||||
_dragcsr=cdrag;
|
|
||||||
|
|
||||||
ServerCursor *cmove=new ServerCursor(default_move_data);
|
ServerCursor *cmove=new ServerCursor(default_move_data);
|
||||||
AddCursor(cmove);
|
AddCursor(cmove);
|
||||||
_movecsr=cmove;
|
_movecsr=cmove;
|
||||||
|
|
||||||
|
ServerCursor *cdrag=new ServerCursor(default_drag_data);
|
||||||
|
AddCursor(cdrag);
|
||||||
|
_dragcsr=cdrag;
|
||||||
|
|
||||||
ServerCursor *cresize=new ServerCursor(default_resize_data);
|
ServerCursor *cresize=new ServerCursor(default_resize_data);
|
||||||
AddCursor(cresize);
|
AddCursor(cresize);
|
||||||
_resizecsr=cresize;
|
_resizecsr=cresize;
|
||||||
|
|
||||||
ServerCursor *cresizeew=new ServerCursor(default_resize_ew_data);
|
ServerCursor *cresizenwse=new ServerCursor(default_resize_nwse_data);
|
||||||
AddCursor(cresizeew);
|
AddCursor(cresizenwse);
|
||||||
_resize_ew_csr=cresizeew;
|
_resize_nwse_csr=cresizenwse;
|
||||||
|
|
||||||
ServerCursor *cresizenesw=new ServerCursor(default_resize_nesw_data);
|
ServerCursor *cresizenesw=new ServerCursor(default_resize_nesw_data);
|
||||||
AddCursor(cresizenesw);
|
AddCursor(cresizenesw);
|
||||||
@ -77,9 +79,10 @@ CursorManager::CursorManager(void)
|
|||||||
AddCursor(cresizens);
|
AddCursor(cresizens);
|
||||||
_resize_ns_csr=cresizens;
|
_resize_ns_csr=cresizens;
|
||||||
|
|
||||||
ServerCursor *cresizenwse=new ServerCursor(default_resize_nwse_data);
|
ServerCursor *cresizeew=new ServerCursor(default_resize_ew_data);
|
||||||
AddCursor(cresizenwse);
|
AddCursor(cresizeew);
|
||||||
_resize_nwse_csr=cresizenwse;
|
_resize_ew_csr=cresizeew;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//! Does all the teardown
|
//! Does all the teardown
|
||||||
@ -95,8 +98,6 @@ CursorManager::~CursorManager(void)
|
|||||||
_cursorlist->MakeEmpty();
|
_cursorlist->MakeEmpty();
|
||||||
delete _cursorlist;
|
delete _cursorlist;
|
||||||
|
|
||||||
delete_sem(_lock);
|
|
||||||
|
|
||||||
// Note that it is not necessary to remove and delete the system
|
// Note that it is not necessary to remove and delete the system
|
||||||
// cursors. These cursors are kept in the list with a NULL application
|
// cursors. These cursors are kept in the list with a NULL application
|
||||||
// signature so they cannot be removed very easily except via
|
// signature so they cannot be removed very easily except via
|
||||||
@ -114,11 +115,11 @@ int32 CursorManager::AddCursor(ServerCursor *sc)
|
|||||||
if(!sc)
|
if(!sc)
|
||||||
return B_ERROR;
|
return B_ERROR;
|
||||||
|
|
||||||
acquire_sem(_lock);
|
Lock();
|
||||||
_cursorlist->AddItem(sc);
|
_cursorlist->AddItem(sc);
|
||||||
int32 value=_tokenizer.GetToken();
|
int32 value=_tokenizer.GetToken();
|
||||||
sc->_token=value;
|
sc->_token=value;
|
||||||
release_sem(_lock);
|
Unlock();
|
||||||
|
|
||||||
return value;
|
return value;
|
||||||
}
|
}
|
||||||
@ -131,7 +132,7 @@ int32 CursorManager::AddCursor(ServerCursor *sc)
|
|||||||
*/
|
*/
|
||||||
void CursorManager::DeleteCursor(int32 token)
|
void CursorManager::DeleteCursor(int32 token)
|
||||||
{
|
{
|
||||||
acquire_sem(_lock);
|
Lock();
|
||||||
|
|
||||||
ServerCursor *temp;
|
ServerCursor *temp;
|
||||||
for(int32 i=0; i<_cursorlist->CountItems();i++)
|
for(int32 i=0; i<_cursorlist->CountItems();i++)
|
||||||
@ -144,7 +145,7 @@ void CursorManager::DeleteCursor(int32 token)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
release_sem(_lock);
|
Unlock();
|
||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
@ -156,7 +157,7 @@ void CursorManager::RemoveAppCursors(const char *signature)
|
|||||||
// OPTIMIZATION: For an optimization, it perhaps may be wise down
|
// OPTIMIZATION: For an optimization, it perhaps may be wise down
|
||||||
// the road to replace the ServerCursor's app signature with a
|
// the road to replace the ServerCursor's app signature with a
|
||||||
// pointer to its application and compare ServerApp pointers instead.
|
// pointer to its application and compare ServerApp pointers instead.
|
||||||
acquire_sem(_lock);
|
Lock();
|
||||||
|
|
||||||
ServerCursor *temp;
|
ServerCursor *temp;
|
||||||
for(int32 i=0; i<_cursorlist->CountItems();i++)
|
for(int32 i=0; i<_cursorlist->CountItems();i++)
|
||||||
@ -170,37 +171,37 @@ void CursorManager::RemoveAppCursors(const char *signature)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
release_sem(_lock);
|
Unlock();
|
||||||
}
|
}
|
||||||
|
|
||||||
//! Wrapper around the DisplayDriver ShowCursor call
|
//! Wrapper around the DisplayDriver ShowCursor call
|
||||||
void CursorManager::ShowCursor(void)
|
void CursorManager::ShowCursor(void)
|
||||||
{
|
{
|
||||||
acquire_sem(_lock);
|
Lock();
|
||||||
|
|
||||||
DisplayDriver *driver=GetGfxDriver(ActiveScreen());
|
DisplayDriver *driver=GetGfxDriver(ActiveScreen());
|
||||||
driver->ShowCursor();
|
driver->ShowCursor();
|
||||||
release_sem(_lock);
|
Unlock();
|
||||||
}
|
}
|
||||||
|
|
||||||
//! Wrapper around the DisplayDriver HideCursor call
|
//! Wrapper around the DisplayDriver HideCursor call
|
||||||
void CursorManager::HideCursor(void)
|
void CursorManager::HideCursor(void)
|
||||||
{
|
{
|
||||||
acquire_sem(_lock);
|
Lock();
|
||||||
|
|
||||||
DisplayDriver *driver=GetGfxDriver(ActiveScreen());
|
DisplayDriver *driver=GetGfxDriver(ActiveScreen());
|
||||||
driver->HideCursor();
|
driver->HideCursor();
|
||||||
release_sem(_lock);
|
Unlock();
|
||||||
}
|
}
|
||||||
|
|
||||||
//! Wrapper around the DisplayDriver ObscureCursor call
|
//! Wrapper around the DisplayDriver ObscureCursor call
|
||||||
void CursorManager::ObscureCursor(void)
|
void CursorManager::ObscureCursor(void)
|
||||||
{
|
{
|
||||||
acquire_sem(_lock);
|
Lock();
|
||||||
|
|
||||||
DisplayDriver *driver=GetGfxDriver(ActiveScreen());
|
DisplayDriver *driver=GetGfxDriver(ActiveScreen());
|
||||||
driver->ObscureCursor();
|
driver->ObscureCursor();
|
||||||
release_sem(_lock);
|
Unlock();
|
||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
@ -209,7 +210,7 @@ void CursorManager::ObscureCursor(void)
|
|||||||
*/
|
*/
|
||||||
void CursorManager::SetCursor(int32 token)
|
void CursorManager::SetCursor(int32 token)
|
||||||
{
|
{
|
||||||
acquire_sem(_lock);
|
Lock();
|
||||||
ServerCursor *c=_FindCursor(token);
|
ServerCursor *c=_FindCursor(token);
|
||||||
if(c)
|
if(c)
|
||||||
{
|
{
|
||||||
@ -217,12 +218,12 @@ void CursorManager::SetCursor(int32 token)
|
|||||||
driver->SetCursor(c);
|
driver->SetCursor(c);
|
||||||
_current_which=B_CURSOR_OTHER;
|
_current_which=B_CURSOR_OTHER;
|
||||||
}
|
}
|
||||||
release_sem(_lock);
|
Unlock();
|
||||||
}
|
}
|
||||||
|
|
||||||
void CursorManager::SetCursor(cursor_which which)
|
void CursorManager::SetCursor(cursor_which which)
|
||||||
{
|
{
|
||||||
acquire_sem(_lock);
|
Lock();
|
||||||
|
|
||||||
DisplayDriver *driver=GetGfxDriver(ActiveScreen());
|
DisplayDriver *driver=GetGfxDriver(ActiveScreen());
|
||||||
switch(which)
|
switch(which)
|
||||||
@ -285,7 +286,90 @@ void CursorManager::SetCursor(cursor_which which)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
release_sem(_lock);
|
Unlock();
|
||||||
|
}
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\brief Sets all the cursors from a specified CursorSet
|
||||||
|
\param path Path to the cursor set
|
||||||
|
|
||||||
|
All cursors in the set will be assigned. If the set does not specify a cursor for a
|
||||||
|
particular cursor specifier, it will remain unchanged. This function will fail if passed
|
||||||
|
a NULL path, an invalid path, or the path to a non-CursorSet file.
|
||||||
|
*/
|
||||||
|
void CursorManager::SetCursorSet(const char *path)
|
||||||
|
{
|
||||||
|
Lock();
|
||||||
|
CursorSet cs(NULL);
|
||||||
|
|
||||||
|
if(!path || cs.Load(path)!=B_OK)
|
||||||
|
return;
|
||||||
|
ServerCursor *csr;
|
||||||
|
|
||||||
|
if(cs.FindCursor(B_CURSOR_DEFAULT,&csr)==B_OK)
|
||||||
|
{
|
||||||
|
if(_defaultcsr)
|
||||||
|
delete _defaultcsr;
|
||||||
|
_defaultcsr=csr;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(cs.FindCursor(B_CURSOR_TEXT,&csr)==B_OK)
|
||||||
|
{
|
||||||
|
if(_textcsr)
|
||||||
|
delete _textcsr;
|
||||||
|
_textcsr=csr;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(cs.FindCursor(B_CURSOR_MOVE,&csr)==B_OK)
|
||||||
|
{
|
||||||
|
if(_movecsr)
|
||||||
|
delete _movecsr;
|
||||||
|
_movecsr=csr;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(cs.FindCursor(B_CURSOR_DRAG,&csr)==B_OK)
|
||||||
|
{
|
||||||
|
if(_dragcsr)
|
||||||
|
delete _dragcsr;
|
||||||
|
_dragcsr=csr;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(cs.FindCursor(B_CURSOR_RESIZE,&csr)==B_OK)
|
||||||
|
{
|
||||||
|
if(_resizecsr)
|
||||||
|
delete _resizecsr;
|
||||||
|
_resizecsr=csr;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(cs.FindCursor(B_CURSOR_RESIZE_NWSE,&csr)==B_OK)
|
||||||
|
{
|
||||||
|
if(_resize_nwse_csr)
|
||||||
|
delete _resize_nwse_csr;
|
||||||
|
_resize_nwse_csr=csr;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(cs.FindCursor(B_CURSOR_RESIZE_NESW,&csr)==B_OK)
|
||||||
|
{
|
||||||
|
if(_resize_nesw_csr)
|
||||||
|
delete _resize_nesw_csr;
|
||||||
|
_resize_nesw_csr=csr;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(cs.FindCursor(B_CURSOR_RESIZE_NS,&csr)==B_OK)
|
||||||
|
{
|
||||||
|
if(_resize_ns_csr)
|
||||||
|
delete _resize_ns_csr;
|
||||||
|
_resize_ns_csr=csr;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(cs.FindCursor(B_CURSOR_RESIZE_EW,&csr)==B_OK)
|
||||||
|
{
|
||||||
|
if(_resize_ew_csr)
|
||||||
|
delete _resize_ew_csr;
|
||||||
|
_resize_ew_csr=csr;
|
||||||
|
}
|
||||||
|
Unlock();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
@ -298,7 +382,7 @@ ServerCursor *CursorManager::GetCursor(cursor_which which)
|
|||||||
{
|
{
|
||||||
ServerCursor *temp=NULL;
|
ServerCursor *temp=NULL;
|
||||||
|
|
||||||
acquire_sem(_lock);
|
Lock();
|
||||||
|
|
||||||
switch(which)
|
switch(which)
|
||||||
{
|
{
|
||||||
@ -351,7 +435,7 @@ ServerCursor *CursorManager::GetCursor(cursor_which which)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
release_sem(_lock);
|
Unlock();
|
||||||
return temp;
|
return temp;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -363,9 +447,9 @@ cursor_which CursorManager::GetCursorWhich(void)
|
|||||||
{
|
{
|
||||||
cursor_which temp;
|
cursor_which temp;
|
||||||
|
|
||||||
acquire_sem(_lock);
|
Lock();
|
||||||
temp=_current_which;
|
temp=_current_which;
|
||||||
release_sem(_lock);
|
Unlock();
|
||||||
return temp;
|
return temp;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -380,7 +464,7 @@ cursor_which CursorManager::GetCursorWhich(void)
|
|||||||
*/
|
*/
|
||||||
void CursorManager::ChangeCursor(cursor_which which, int32 token)
|
void CursorManager::ChangeCursor(cursor_which which, int32 token)
|
||||||
{
|
{
|
||||||
acquire_sem(_lock);
|
Lock();
|
||||||
|
|
||||||
// Find the cursor, based on the token
|
// Find the cursor, based on the token
|
||||||
ServerCursor *cursor=_FindCursor(token);
|
ServerCursor *cursor=_FindCursor(token);
|
||||||
@ -388,7 +472,7 @@ void CursorManager::ChangeCursor(cursor_which which, int32 token)
|
|||||||
// Did we find a cursor with this token?
|
// Did we find a cursor with this token?
|
||||||
if(!cursor)
|
if(!cursor)
|
||||||
{
|
{
|
||||||
release_sem(_lock);
|
Unlock();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -407,6 +491,7 @@ void CursorManager::ChangeCursor(cursor_which which, int32 token)
|
|||||||
delete cursor->_app_signature;
|
delete cursor->_app_signature;
|
||||||
cursor->_app_signature=NULL;
|
cursor->_app_signature=NULL;
|
||||||
}
|
}
|
||||||
|
_cursorlist->RemoveItem(cursor);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case B_CURSOR_TEXT:
|
case B_CURSOR_TEXT:
|
||||||
@ -421,6 +506,7 @@ void CursorManager::ChangeCursor(cursor_which which, int32 token)
|
|||||||
delete cursor->_app_signature;
|
delete cursor->_app_signature;
|
||||||
cursor->_app_signature=NULL;
|
cursor->_app_signature=NULL;
|
||||||
}
|
}
|
||||||
|
_cursorlist->RemoveItem(cursor);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case B_CURSOR_MOVE:
|
case B_CURSOR_MOVE:
|
||||||
@ -435,6 +521,7 @@ void CursorManager::ChangeCursor(cursor_which which, int32 token)
|
|||||||
delete cursor->_app_signature;
|
delete cursor->_app_signature;
|
||||||
cursor->_app_signature=NULL;
|
cursor->_app_signature=NULL;
|
||||||
}
|
}
|
||||||
|
_cursorlist->RemoveItem(cursor);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case B_CURSOR_DRAG:
|
case B_CURSOR_DRAG:
|
||||||
@ -449,6 +536,7 @@ void CursorManager::ChangeCursor(cursor_which which, int32 token)
|
|||||||
delete cursor->_app_signature;
|
delete cursor->_app_signature;
|
||||||
cursor->_app_signature=NULL;
|
cursor->_app_signature=NULL;
|
||||||
}
|
}
|
||||||
|
_cursorlist->RemoveItem(cursor);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case B_CURSOR_RESIZE:
|
case B_CURSOR_RESIZE:
|
||||||
@ -463,6 +551,7 @@ void CursorManager::ChangeCursor(cursor_which which, int32 token)
|
|||||||
delete cursor->_app_signature;
|
delete cursor->_app_signature;
|
||||||
cursor->_app_signature=NULL;
|
cursor->_app_signature=NULL;
|
||||||
}
|
}
|
||||||
|
_cursorlist->RemoveItem(cursor);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case B_CURSOR_RESIZE_NWSE:
|
case B_CURSOR_RESIZE_NWSE:
|
||||||
@ -477,6 +566,7 @@ void CursorManager::ChangeCursor(cursor_which which, int32 token)
|
|||||||
delete cursor->_app_signature;
|
delete cursor->_app_signature;
|
||||||
cursor->_app_signature=NULL;
|
cursor->_app_signature=NULL;
|
||||||
}
|
}
|
||||||
|
_cursorlist->RemoveItem(cursor);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case B_CURSOR_RESIZE_NESW:
|
case B_CURSOR_RESIZE_NESW:
|
||||||
@ -491,6 +581,7 @@ void CursorManager::ChangeCursor(cursor_which which, int32 token)
|
|||||||
delete cursor->_app_signature;
|
delete cursor->_app_signature;
|
||||||
cursor->_app_signature=NULL;
|
cursor->_app_signature=NULL;
|
||||||
}
|
}
|
||||||
|
_cursorlist->RemoveItem(cursor);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case B_CURSOR_RESIZE_NS:
|
case B_CURSOR_RESIZE_NS:
|
||||||
@ -505,6 +596,7 @@ void CursorManager::ChangeCursor(cursor_which which, int32 token)
|
|||||||
delete cursor->_app_signature;
|
delete cursor->_app_signature;
|
||||||
cursor->_app_signature=NULL;
|
cursor->_app_signature=NULL;
|
||||||
}
|
}
|
||||||
|
_cursorlist->RemoveItem(cursor);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case B_CURSOR_RESIZE_EW:
|
case B_CURSOR_RESIZE_EW:
|
||||||
@ -519,13 +611,14 @@ void CursorManager::ChangeCursor(cursor_which which, int32 token)
|
|||||||
delete cursor->_app_signature;
|
delete cursor->_app_signature;
|
||||||
cursor->_app_signature=NULL;
|
cursor->_app_signature=NULL;
|
||||||
}
|
}
|
||||||
|
_cursorlist->RemoveItem(cursor);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
release_sem(_lock);
|
Unlock();
|
||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
@ -544,3 +637,31 @@ ServerCursor *CursorManager::_FindCursor(int32 token)
|
|||||||
}
|
}
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//! Sets the cursors to the defaults and saves them to CURSOR_SETTINGS_DIR/"d
|
||||||
|
void CursorManager::SetDefaults(void)
|
||||||
|
{
|
||||||
|
Lock();
|
||||||
|
CursorSet cs("Default");
|
||||||
|
cs.AddCursor(B_CURSOR_DEFAULT,default_cursor_data);
|
||||||
|
cs.AddCursor(B_CURSOR_TEXT,default_text_data);
|
||||||
|
cs.AddCursor(B_CURSOR_MOVE,default_move_data);
|
||||||
|
cs.AddCursor(B_CURSOR_DRAG,default_drag_data);
|
||||||
|
cs.AddCursor(B_CURSOR_RESIZE,default_resize_data);
|
||||||
|
cs.AddCursor(B_CURSOR_RESIZE_NWSE,default_resize_nwse_data);
|
||||||
|
cs.AddCursor(B_CURSOR_RESIZE_NESW,default_resize_nesw_data);
|
||||||
|
cs.AddCursor(B_CURSOR_RESIZE_NS,default_resize_ns_data);
|
||||||
|
cs.AddCursor(B_CURSOR_RESIZE_EW,default_resize_ew_data);
|
||||||
|
|
||||||
|
BDirectory dir;
|
||||||
|
if(dir.SetTo(CURSOR_SET_DIR)==B_ENTRY_NOT_FOUND)
|
||||||
|
create_directory(CURSOR_SET_DIR,0777);
|
||||||
|
|
||||||
|
BString string(CURSOR_SET_DIR);
|
||||||
|
string+="Default";
|
||||||
|
cs.Save(string.String(),B_CREATE_FILE | B_FAIL_IF_EXISTS);
|
||||||
|
|
||||||
|
SetCursorSet(string.String());
|
||||||
|
Unlock();
|
||||||
|
}
|
||||||
|
|
||||||
|
@ -30,6 +30,7 @@
|
|||||||
#include <List.h>
|
#include <List.h>
|
||||||
#include <OS.h>
|
#include <OS.h>
|
||||||
#include <SysCursor.h>
|
#include <SysCursor.h>
|
||||||
|
#include <Locker.h>
|
||||||
#include "TokenHandler.h"
|
#include "TokenHandler.h"
|
||||||
|
|
||||||
class ServerCursor;
|
class ServerCursor;
|
||||||
@ -42,7 +43,7 @@ class ServerCursor;
|
|||||||
any BeOS platform. It also provides tokens for BCursors and frees all
|
any BeOS platform. It also provides tokens for BCursors and frees all
|
||||||
of an application's cursors whenever an application closes.
|
of an application's cursors whenever an application closes.
|
||||||
*/
|
*/
|
||||||
class CursorManager
|
class CursorManager : public BLocker
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
CursorManager(void);
|
CursorManager(void);
|
||||||
@ -55,16 +56,16 @@ public:
|
|||||||
void ObscureCursor(void);
|
void ObscureCursor(void);
|
||||||
void SetCursor(int32 token);
|
void SetCursor(int32 token);
|
||||||
void SetCursor(cursor_which which);
|
void SetCursor(cursor_which which);
|
||||||
|
void SetCursorSet(const char *path);
|
||||||
ServerCursor *GetCursor(cursor_which which);
|
ServerCursor *GetCursor(cursor_which which);
|
||||||
cursor_which GetCursorWhich(void);
|
cursor_which GetCursorWhich(void);
|
||||||
void ChangeCursor(cursor_which which, int32 token);
|
void ChangeCursor(cursor_which which, int32 token);
|
||||||
|
void SetDefaults(void);
|
||||||
private:
|
private:
|
||||||
ServerCursor *_FindCursor(int32 token);
|
ServerCursor *_FindCursor(int32 token);
|
||||||
|
|
||||||
BList *_cursorlist;
|
BList *_cursorlist;
|
||||||
TokenHandler _tokenizer;
|
TokenHandler _tokenizer;
|
||||||
sem_id _lock;
|
|
||||||
|
|
||||||
// System cursor members
|
// System cursor members
|
||||||
ServerCursor *_defaultcsr,
|
ServerCursor *_defaultcsr,
|
||||||
|
@ -160,6 +160,21 @@ void Decorator::SetFeel(int32 wfeel)
|
|||||||
_feel=wfeel;
|
_feel=wfeel;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
\brief Sets the decorator's font
|
||||||
|
\param font The new font object to copy from
|
||||||
|
*/
|
||||||
|
void Decorator::SetFont(ServerFont *font)
|
||||||
|
{
|
||||||
|
if(!font)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if(_layerdata.font)
|
||||||
|
delete _layerdata.font;
|
||||||
|
|
||||||
|
_layerdata.font=new ServerFont(*font);
|
||||||
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
\brief Sets the decorator's window look
|
\brief Sets the decorator's window look
|
||||||
\param wflags New value for the look
|
\param wflags New value for the look
|
||||||
|
@ -31,9 +31,8 @@
|
|||||||
#include "ColorUtils.h"
|
#include "ColorUtils.h"
|
||||||
#include "DefaultDecorator.h"
|
#include "DefaultDecorator.h"
|
||||||
#include "RGBColor.h"
|
#include "RGBColor.h"
|
||||||
|
#include "RectUtils.h"
|
||||||
//#define DEBUG_DECORATOR
|
#include <stdio.h>
|
||||||
|
|
||||||
|
|
||||||
#define USE_VIEW_FILL_HACK
|
#define USE_VIEW_FILL_HACK
|
||||||
|
|
||||||
@ -44,22 +43,19 @@
|
|||||||
DefaultDecorator::DefaultDecorator(BRect rect, int32 wlook, int32 wfeel, int32 wflags)
|
DefaultDecorator::DefaultDecorator(BRect rect, int32 wlook, int32 wfeel, int32 wflags)
|
||||||
: Decorator(rect,wlook,wfeel,wflags)
|
: Decorator(rect,wlook,wfeel,wflags)
|
||||||
{
|
{
|
||||||
|
|
||||||
taboffset=0;
|
taboffset=0;
|
||||||
titlepixelwidth=0;
|
titlepixelwidth=0;
|
||||||
|
|
||||||
|
framecolors=new RGBColor[5];
|
||||||
|
framecolors[0].SetColor(255,255,255);
|
||||||
|
framecolors[1].SetColor(216,216,216);
|
||||||
|
framecolors[2].SetColor(152,152,152);
|
||||||
|
framecolors[3].SetColor(136,136,136);
|
||||||
|
framecolors[4].SetColor(96,96,96);
|
||||||
|
|
||||||
_SetFocus();
|
_SetFocus();
|
||||||
|
|
||||||
// These hard-coded assignments will go bye-bye when the system _colors
|
|
||||||
// API is implemented
|
|
||||||
frame_highercol.SetColor(216,216,216);
|
|
||||||
frame_lowercol.SetColor(110,110,110);
|
|
||||||
|
|
||||||
textcol.SetColor(0,0,0);
|
|
||||||
|
|
||||||
frame_highcol=frame_lowercol.MakeBlendColor(frame_highercol,0.75);
|
|
||||||
frame_midcol=frame_lowercol.MakeBlendColor(frame_highercol,0.5);
|
|
||||||
frame_lowcol=frame_lowercol.MakeBlendColor(frame_highercol,0.25);
|
|
||||||
|
|
||||||
_DoLayout();
|
_DoLayout();
|
||||||
|
|
||||||
// This flag is used to determine whether or not we're moving the tab
|
// This flag is used to determine whether or not we're moving the tab
|
||||||
@ -81,6 +77,7 @@ DefaultDecorator::~DefaultDecorator(void)
|
|||||||
#ifdef DEBUG_DECORATOR
|
#ifdef DEBUG_DECORATOR
|
||||||
printf("DefaultDecorator: ~DefaultDecorator()\n");
|
printf("DefaultDecorator: ~DefaultDecorator()\n");
|
||||||
#endif
|
#endif
|
||||||
|
delete [] framecolors;
|
||||||
}
|
}
|
||||||
|
|
||||||
click_type DefaultDecorator::Clicked(BPoint pt, int32 buttons, int32 modifiers)
|
click_type DefaultDecorator::Clicked(BPoint pt, int32 buttons, int32 modifiers)
|
||||||
@ -183,6 +180,21 @@ printf("DefaultDecorator: Do Layout\n");
|
|||||||
_resizerect=_frame;
|
_resizerect=_frame;
|
||||||
_borderrect=_frame;
|
_borderrect=_frame;
|
||||||
_closerect=_frame;
|
_closerect=_frame;
|
||||||
|
|
||||||
|
switch(GetLook())
|
||||||
|
{
|
||||||
|
case B_BORDERED_WINDOW_LOOK:
|
||||||
|
case B_TITLED_WINDOW_LOOK:
|
||||||
|
case B_DOCUMENT_WINDOW_LOOK:
|
||||||
|
borderwidth=5;
|
||||||
|
break;
|
||||||
|
case B_FLOATING_WINDOW_LOOK:
|
||||||
|
case B_MODAL_WINDOW_LOOK:
|
||||||
|
borderwidth=3;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
borderwidth=0;
|
||||||
|
}
|
||||||
|
|
||||||
textoffset=(_look==B_FLOATING_WINDOW_LOOK)?5:7;
|
textoffset=(_look==B_FLOATING_WINDOW_LOOK)?5:7;
|
||||||
|
|
||||||
@ -190,8 +202,22 @@ printf("DefaultDecorator: Do Layout\n");
|
|||||||
_closerect.top+=(_look==B_FLOATING_WINDOW_LOOK)?6:4;
|
_closerect.top+=(_look==B_FLOATING_WINDOW_LOOK)?6:4;
|
||||||
_closerect.right=_closerect.left+10;
|
_closerect.right=_closerect.left+10;
|
||||||
_closerect.bottom=_closerect.top+10;
|
_closerect.bottom=_closerect.top+10;
|
||||||
|
|
||||||
|
|
||||||
_borderrect.top+=19;
|
_borderrect.top+=19;
|
||||||
|
|
||||||
|
if(borderwidth)
|
||||||
|
{
|
||||||
|
// Set up the border rectangles to handle the window's frame
|
||||||
|
rightborder=leftborder=topborder=bottomborder=_borderrect;
|
||||||
|
|
||||||
|
// We want the rectangles to intersect because of the beveled intersections, so all
|
||||||
|
// that is necessary is to set the short dimension of each side
|
||||||
|
leftborder.right=leftborder.left+borderwidth;
|
||||||
|
rightborder.left=rightborder.right-borderwidth;
|
||||||
|
topborder.bottom=topborder.top+borderwidth;
|
||||||
|
bottomborder.top=bottomborder.bottom-borderwidth;
|
||||||
|
}
|
||||||
|
|
||||||
_resizerect.top=_resizerect.bottom-18;
|
_resizerect.top=_resizerect.bottom-18;
|
||||||
_resizerect.left=_resizerect.right-18;
|
_resizerect.left=_resizerect.right-18;
|
||||||
@ -307,7 +333,7 @@ printf("DefaultDecorator: Draw(%.1f,%.1f,%.1f,%.1f)\n",update.left,update.top,up
|
|||||||
_layerdata.highcolor=_colors->document_background;
|
_layerdata.highcolor=_colors->document_background;
|
||||||
|
|
||||||
if(_borderrect.Intersects(update))
|
if(_borderrect.Intersects(update))
|
||||||
_driver->FillRect(_borderrect,&_layerdata,(int8*)&solidhigh);
|
_driver->FillRect(_borderrect & update,&_layerdata,(int8*)&solidhigh);
|
||||||
|
|
||||||
_DrawFrame(update);
|
_DrawFrame(update);
|
||||||
}
|
}
|
||||||
@ -318,9 +344,9 @@ void DefaultDecorator::Draw(void)
|
|||||||
// things
|
// things
|
||||||
|
|
||||||
// Draw the top view's client area - just a hack :)
|
// Draw the top view's client area - just a hack :)
|
||||||
_layerdata.highcolor=_colors->document_background;
|
// _layerdata.highcolor=_colors->document_background;
|
||||||
|
|
||||||
_driver->FillRect(_borderrect,&_layerdata,(int8*)&solidhigh);
|
// _driver->FillRect(_borderrect,&_layerdata,(int8*)&solidhigh);
|
||||||
DrawFrame();
|
DrawFrame();
|
||||||
|
|
||||||
DrawTab();
|
DrawTab();
|
||||||
@ -354,7 +380,7 @@ void DefaultDecorator::_DrawTab(BRect r)
|
|||||||
|
|
||||||
_layerdata.highcolor=(GetFocus())?_colors->window_tab:_colors->inactive_window_tab;
|
_layerdata.highcolor=(GetFocus())?_colors->window_tab:_colors->inactive_window_tab;
|
||||||
_driver->FillRect(_tabrect,&_layerdata,(int8*)&solidhigh);
|
_driver->FillRect(_tabrect,&_layerdata,(int8*)&solidhigh);
|
||||||
_layerdata.highcolor=frame_lowcol;
|
_layerdata.highcolor=framecolors[3];
|
||||||
_driver->StrokeLine(_tabrect.LeftBottom(),_tabrect.RightBottom(),&_layerdata,(int8*)&solidhigh);
|
_driver->StrokeLine(_tabrect.LeftBottom(),_tabrect.RightBottom(),&_layerdata,(int8*)&solidhigh);
|
||||||
|
|
||||||
_DrawTitle(_tabrect);
|
_DrawTitle(_tabrect);
|
||||||
@ -423,69 +449,154 @@ void DefaultDecorator::DrawBlendedRect(BRect r, bool down)
|
|||||||
|
|
||||||
// _layerdata.highcolor=startcol;
|
// _layerdata.highcolor=startcol;
|
||||||
// _driver->FillRect(r,&_layerdata,(int8*)&solidhigh);
|
// _driver->FillRect(r,&_layerdata,(int8*)&solidhigh);
|
||||||
_layerdata.highcolor=frame_lowcol;
|
_layerdata.highcolor=framecolors[3];
|
||||||
_driver->StrokeRect(r,&_layerdata,(int8*)&solidhigh);
|
_driver->StrokeRect(r,&_layerdata,(int8*)&solidhigh);
|
||||||
}
|
}
|
||||||
|
|
||||||
void DefaultDecorator::_DrawFrame(BRect rect)
|
void DefaultDecorator::_DrawFrame(BRect invalid)
|
||||||
{
|
{
|
||||||
// Duh, draws the window frame, I think. ;)
|
// We need to test each side to determine whether or not it needs drawn. Additionally,
|
||||||
|
// we must clip the lines drawn by this function to the invalid rectangle we are given
|
||||||
|
|
||||||
|
#ifdef USE_VIEW_FILL_HACK
|
||||||
|
_driver->FillRect(_borderrect,&_layerdata,(int8*)&solidhigh);
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef USE_VIEW_FILL_HACK
|
if(!borderwidth)
|
||||||
_driver->FillRect(_borderrect,&_layerdata,(int8*)&solidhigh);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
if(_look==B_NO_BORDER_WINDOW_LOOK)
|
|
||||||
return;
|
return;
|
||||||
|
|
||||||
BRect r=_borderrect;
|
// Data specifically for the StrokeLineArray call.
|
||||||
|
int32 numlines=0, maxlines=20;
|
||||||
|
|
||||||
_layerdata.highcolor=frame_midcol;
|
BPoint points[maxlines*2];
|
||||||
|
RGBColor colors[maxlines];
|
||||||
|
|
||||||
|
// For quick calculation of gradients for each side. Top is same as left, right is same as
|
||||||
|
// bottom
|
||||||
|
int8 rightindices[borderwidth],leftindices[borderwidth];
|
||||||
|
|
||||||
|
if(borderwidth==5)
|
||||||
|
{
|
||||||
|
leftindices[0]=2;
|
||||||
|
leftindices[1]=0;
|
||||||
|
leftindices[2]=1;
|
||||||
|
leftindices[3]=3;
|
||||||
|
leftindices[4]=2;
|
||||||
|
|
||||||
|
rightindices[0]=2;
|
||||||
|
rightindices[1]=0;
|
||||||
|
rightindices[2]=1;
|
||||||
|
rightindices[3]=3;
|
||||||
|
rightindices[4]=4;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// TODO: figure out border colors for floating window look
|
||||||
|
}
|
||||||
|
|
||||||
|
// Right side
|
||||||
|
if(TestRectIntersection(rightborder,invalid))
|
||||||
|
{
|
||||||
|
|
||||||
|
// We may not have to redraw the entire width of the frame itself. Rare case, but
|
||||||
|
// it must be accounted for.
|
||||||
|
int32 startx=(int32) MAX(invalid.left,rightborder.left);
|
||||||
|
int32 endx=(int32) MIN(invalid.right,rightborder.right);
|
||||||
|
|
||||||
|
|
||||||
|
// We'll need these flags to see if we must include the corners in final line
|
||||||
|
// calculations
|
||||||
|
BRect r(rightborder);
|
||||||
|
r.bottom=r.top+borderwidth;
|
||||||
|
bool topcorner=TestRectIntersection(invalid,r);
|
||||||
|
|
||||||
|
r=rightborder;
|
||||||
|
r.top=r.bottom-borderwidth;
|
||||||
|
bool bottomcorner=TestRectIntersection(invalid,r);
|
||||||
|
|
||||||
|
// Generate the lines for this side
|
||||||
|
for(int32 i=startx; i<endx; i++)
|
||||||
|
{
|
||||||
|
BPoint start, end;
|
||||||
|
|
||||||
|
start.x=end.x=i;
|
||||||
|
|
||||||
|
if(topcorner)
|
||||||
|
{
|
||||||
|
start.y=rightborder.top+(borderwidth-(i-rightborder.left));
|
||||||
|
start.y=MAX(start.y,invalid.top);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
start.y=MAX(start.y+borderwidth,invalid.top);
|
||||||
|
|
||||||
|
if(bottomcorner)
|
||||||
|
{
|
||||||
|
end.y=rightborder.bottom-(borderwidth-(i-rightborder.left));
|
||||||
|
end.y=MAX(end.y,invalid.top);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
end.y=MAX(end.y-borderwidth,invalid.top);
|
||||||
|
|
||||||
|
// Make the appropriate
|
||||||
|
points[numlines*2]=start;
|
||||||
|
points[(numlines*2)+1]=end;
|
||||||
|
colors[numlines]=framecolors[rightindices[endx-i]];
|
||||||
|
|
||||||
|
numlines++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
debugger("");
|
||||||
|
_driver->StrokeLineArray(points,numlines,colors,&_layerdata);
|
||||||
|
|
||||||
|
/* BRect r=_borderrect;
|
||||||
|
|
||||||
|
_layerdata.highcolor=framecolors[2];
|
||||||
_driver->StrokeLine(BPoint(r.left,r.top),BPoint(r.right-1,r.top),
|
_driver->StrokeLine(BPoint(r.left,r.top),BPoint(r.right-1,r.top),
|
||||||
&_layerdata,(int8*)&solidhigh);
|
&_layerdata,(int8*)&solidhigh);
|
||||||
_layerdata.highcolor=frame_lowcol;
|
_layerdata.highcolor=framecolors[3];
|
||||||
_driver->StrokeLine(BPoint(r.left,r.top),BPoint(r.left,r.bottom),
|
_driver->StrokeLine(BPoint(r.left,r.top),BPoint(r.left,r.bottom),
|
||||||
&_layerdata,(int8*)&solidhigh);
|
&_layerdata,(int8*)&solidhigh);
|
||||||
_layerdata.highcolor=frame_lowercol;
|
_layerdata.highcolor=framecolors[4];
|
||||||
_driver->StrokeLine(BPoint(r.right,r.bottom),BPoint(r.right,r.top),
|
_driver->StrokeLine(BPoint(r.right,r.bottom),BPoint(r.right,r.top),
|
||||||
&_layerdata,(int8*)&solidhigh);
|
&_layerdata,(int8*)&solidhigh);
|
||||||
_layerdata.highcolor=frame_lowercol;
|
_layerdata.highcolor=framecolors[4];
|
||||||
_driver->StrokeLine(BPoint(r.right,r.bottom),BPoint(r.left,r.bottom),
|
_driver->StrokeLine(BPoint(r.right,r.bottom),BPoint(r.left,r.bottom),
|
||||||
&_layerdata,(int8*)&solidhigh);
|
&_layerdata,(int8*)&solidhigh);
|
||||||
|
|
||||||
r.InsetBy(1,1);
|
r.InsetBy(1,1);
|
||||||
_layerdata.highcolor=frame_highercol;
|
_layerdata.highcolor=framecolors[0];
|
||||||
_driver->StrokeLine(BPoint(r.left,r.top),BPoint(r.right-1,r.top),
|
_driver->StrokeLine(BPoint(r.left,r.top),BPoint(r.right-1,r.top),
|
||||||
&_layerdata,(int8*)&solidhigh);
|
&_layerdata,(int8*)&solidhigh);
|
||||||
_layerdata.highcolor=frame_highercol;
|
_layerdata.highcolor=framecolors[0];
|
||||||
_driver->StrokeLine(BPoint(r.left,r.top),BPoint(r.left,r.bottom),
|
_driver->StrokeLine(BPoint(r.left,r.top),BPoint(r.left,r.bottom),
|
||||||
&_layerdata,(int8*)&solidhigh);
|
&_layerdata,(int8*)&solidhigh);
|
||||||
_layerdata.highcolor=frame_midcol;
|
_layerdata.highcolor=framecolors[2];
|
||||||
_driver->StrokeLine(BPoint(r.right,r.bottom),BPoint(r.right,r.top),
|
_driver->StrokeLine(BPoint(r.right,r.bottom),BPoint(r.right,r.top),
|
||||||
&_layerdata,(int8*)&solidhigh);
|
&_layerdata,(int8*)&solidhigh);
|
||||||
_layerdata.highcolor=frame_midcol;
|
_layerdata.highcolor=framecolors[2];
|
||||||
_driver->StrokeLine(BPoint(r.right,r.bottom),BPoint(r.left,r.bottom),
|
_driver->StrokeLine(BPoint(r.right,r.bottom),BPoint(r.left,r.bottom),
|
||||||
&_layerdata,(int8*)&solidhigh);
|
&_layerdata,(int8*)&solidhigh);
|
||||||
|
|
||||||
r.InsetBy(1,1);
|
r.InsetBy(1,1);
|
||||||
_layerdata.highcolor=frame_highcol;
|
_layerdata.highcolor=framecolors[1];
|
||||||
_driver->StrokeRect(r,&_layerdata,(int8*)&solidhigh);
|
_driver->StrokeRect(r,&_layerdata,(int8*)&solidhigh);
|
||||||
|
|
||||||
r.InsetBy(1,1);
|
r.InsetBy(1,1);
|
||||||
_layerdata.highcolor=frame_lowercol;
|
_layerdata.highcolor=framecolors[4];
|
||||||
_driver->StrokeLine(BPoint(r.left,r.top),BPoint(r.right-1,r.top),
|
_driver->StrokeLine(BPoint(r.left,r.top),BPoint(r.right-1,r.top),
|
||||||
&_layerdata,(int8*)&solidhigh);
|
&_layerdata,(int8*)&solidhigh);
|
||||||
_layerdata.highcolor=frame_lowercol;
|
_layerdata.highcolor=framecolors[4];
|
||||||
_driver->StrokeLine(BPoint(r.left,r.top),BPoint(r.left,r.bottom),
|
_driver->StrokeLine(BPoint(r.left,r.top),BPoint(r.left,r.bottom),
|
||||||
&_layerdata,(int8*)&solidhigh);
|
&_layerdata,(int8*)&solidhigh);
|
||||||
_layerdata.highcolor=frame_highercol;
|
_layerdata.highcolor=framecolors[0];
|
||||||
_driver->StrokeLine(BPoint(r.right,r.bottom),BPoint(r.right,r.top),
|
_driver->StrokeLine(BPoint(r.right,r.bottom),BPoint(r.right,r.top),
|
||||||
&_layerdata,(int8*)&solidhigh);
|
&_layerdata,(int8*)&solidhigh);
|
||||||
_layerdata.highcolor=frame_highercol;
|
_layerdata.highcolor=framecolors[0];
|
||||||
_driver->StrokeLine(BPoint(r.right,r.bottom),BPoint(r.left,r.bottom),
|
_driver->StrokeLine(BPoint(r.right,r.bottom),BPoint(r.left,r.bottom),
|
||||||
&_layerdata,(int8*)&solidhigh);
|
&_layerdata,(int8*)&solidhigh);
|
||||||
_driver->StrokeRect(_borderrect,&_layerdata,(int8*)&solidhigh);
|
_driver->StrokeRect(_borderrect,&_layerdata,(int8*)&solidhigh);
|
||||||
|
|
||||||
|
|
||||||
// Draw the resize thumb if we're supposed to
|
// Draw the resize thumb if we're supposed to
|
||||||
if(!(_flags & B_NOT_RESIZABLE))
|
if(!(_flags & B_NOT_RESIZABLE))
|
||||||
{
|
{
|
||||||
@ -501,10 +612,10 @@ _driver->FillRect(_borderrect,&_layerdata,(int8*)&solidhigh);
|
|||||||
|
|
||||||
int steps=(w<h)?w:h;
|
int steps=(w<h)?w:h;
|
||||||
|
|
||||||
startcol=frame_highercol.GetColor32();
|
startcol=framecolors[0].GetColor32();
|
||||||
endcol=frame_lowercol.GetColor32();
|
endcol=framecolors[4].GetColor32();
|
||||||
|
|
||||||
halfcol=frame_highercol.MakeBlendColor(frame_lowercol,0.5).GetColor32();
|
halfcol=framecolors[0].MakeBlendColor(framecolors[4],0.5).GetColor32();
|
||||||
|
|
||||||
rstep=(startcol.red-halfcol.red)/steps;
|
rstep=(startcol.red-halfcol.red)/steps;
|
||||||
gstep=(startcol.green-halfcol.green)/steps;
|
gstep=(startcol.green-halfcol.green)/steps;
|
||||||
@ -525,16 +636,18 @@ _driver->FillRect(_borderrect,&_layerdata,(int8*)&solidhigh);
|
|||||||
_driver->StrokeLine(BPoint(r.left+steps,r.top+i),
|
_driver->StrokeLine(BPoint(r.left+steps,r.top+i),
|
||||||
BPoint(r.left+i,r.top+steps),&_layerdata,(int8*)&solidhigh);
|
BPoint(r.left+i,r.top+steps),&_layerdata,(int8*)&solidhigh);
|
||||||
}
|
}
|
||||||
_layerdata.highcolor=frame_lowercol;
|
_layerdata.highcolor=framecolors[4];
|
||||||
_driver->StrokeRect(r,&_layerdata,(int8*)&solidhigh);
|
_driver->StrokeRect(r,&_layerdata,(int8*)&solidhigh);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
_layerdata.highcolor=frame_lowercol;
|
_layerdata.highcolor=framecolors[4];
|
||||||
_driver->StrokeLine(BPoint(r.right,r.top),BPoint(r.right-3,r.top),
|
_driver->StrokeLine(BPoint(r.right,r.top),BPoint(r.right-3,r.top),
|
||||||
&_layerdata,(int8*)&solidhigh);
|
&_layerdata,(int8*)&solidhigh);
|
||||||
_driver->StrokeLine(BPoint(r.left,r.bottom),BPoint(r.left,r.bottom-3),
|
_driver->StrokeLine(BPoint(r.left,r.bottom),BPoint(r.left,r.bottom-3),
|
||||||
&_layerdata,(int8*)&solidhigh);
|
&_layerdata,(int8*)&solidhigh);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -59,7 +59,14 @@ protected:
|
|||||||
RGBColor frame_highcol, frame_midcol, frame_lowcol, frame_highercol,
|
RGBColor frame_highcol, frame_midcol, frame_lowcol, frame_highercol,
|
||||||
frame_lowercol;
|
frame_lowercol;
|
||||||
RGBColor textcol;
|
RGBColor textcol;
|
||||||
|
|
||||||
|
RGBColor *framecolors;
|
||||||
|
|
||||||
|
// Individual rects for handling window frame rendering the proper way
|
||||||
|
BRect rightborder,leftborder,topborder,bottomborder;
|
||||||
uint64 solidhigh, solidlow;
|
uint64 solidhigh, solidlow;
|
||||||
|
|
||||||
|
int32 borderwidth;
|
||||||
|
|
||||||
bool slidetab;
|
bool slidetab;
|
||||||
int textoffset;
|
int textoffset;
|
||||||
|
@ -28,8 +28,7 @@
|
|||||||
#include "ServerFont.h"
|
#include "ServerFont.h"
|
||||||
#include FT_CACHE_H
|
#include FT_CACHE_H
|
||||||
|
|
||||||
FTC_Manager ftmanager;
|
FTC_Manager ftmanager;
|
||||||
FT_Library ftlib;
|
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
\brief Constructor
|
\brief Constructor
|
||||||
|
@ -37,6 +37,8 @@
|
|||||||
#include "ServerFont.h"
|
#include "ServerFont.h"
|
||||||
#include "ServerConfig.h"
|
#include "ServerConfig.h"
|
||||||
|
|
||||||
|
extern FTC_Manager ftmanager;
|
||||||
|
FT_Library ftlib;
|
||||||
FontServer *fontserver;
|
FontServer *fontserver;
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
|
@ -7,6 +7,9 @@ UsePrivateHeaders app interface [ FDirName servers app ] ;
|
|||||||
UseFreeTypeHeaders ;
|
UseFreeTypeHeaders ;
|
||||||
|
|
||||||
SharedLibrary appserver :
|
SharedLibrary appserver :
|
||||||
|
areafunc.c
|
||||||
|
bget.c
|
||||||
|
BitmapManager.cpp
|
||||||
ColorSet.cpp
|
ColorSet.cpp
|
||||||
Decorator.cpp
|
Decorator.cpp
|
||||||
DisplayDriver.cpp
|
DisplayDriver.cpp
|
||||||
@ -17,7 +20,9 @@ SharedLibrary appserver :
|
|||||||
ServerBitmap.cpp
|
ServerBitmap.cpp
|
||||||
ServerCursor.cpp
|
ServerCursor.cpp
|
||||||
ServerFont.cpp
|
ServerFont.cpp
|
||||||
|
SysCursor.cpp
|
||||||
SystemPalette.cpp
|
SystemPalette.cpp
|
||||||
|
TokenHandler.cpp
|
||||||
;
|
;
|
||||||
|
|
||||||
LinkSharedOSLibs libappserver.so : root be
|
LinkSharedOSLibs libappserver.so : root be
|
||||||
@ -26,11 +31,8 @@ LinkSharedOSLibs libappserver.so : root be
|
|||||||
|
|
||||||
Server app_server :
|
Server app_server :
|
||||||
# Misc. Sources
|
# Misc. Sources
|
||||||
areafunc.c
|
|
||||||
Angle.cpp
|
Angle.cpp
|
||||||
bget.c
|
|
||||||
CursorData.cpp
|
CursorData.cpp
|
||||||
TokenHandler.cpp
|
|
||||||
PicturePlayer.cpp
|
PicturePlayer.cpp
|
||||||
|
|
||||||
PNGDump.cpp
|
PNGDump.cpp
|
||||||
@ -39,7 +41,6 @@ Server app_server :
|
|||||||
# Manager Classes
|
# Manager Classes
|
||||||
AppServer.cpp
|
AppServer.cpp
|
||||||
BitmapDriver.cpp
|
BitmapDriver.cpp
|
||||||
BitmapManager.cpp
|
|
||||||
CursorManager.cpp
|
CursorManager.cpp
|
||||||
Desktop.cpp
|
Desktop.cpp
|
||||||
ServerApp.cpp
|
ServerApp.cpp
|
||||||
|
@ -36,7 +36,7 @@
|
|||||||
#include "RectUtils.h"
|
#include "RectUtils.h"
|
||||||
|
|
||||||
//#define DEBUG_LAYER
|
//#define DEBUG_LAYER
|
||||||
#define DEBUG_REGIONS
|
//#define DEBUG_REGIONS
|
||||||
|
|
||||||
#ifdef DEBUG_REGIONS
|
#ifdef DEBUG_REGIONS
|
||||||
#include "Desktop.h"
|
#include "Desktop.h"
|
||||||
@ -71,9 +71,9 @@ Layer::Layer(BRect frame, const char *name, int32 resize, int32 flags,ServerWind
|
|||||||
_topchild=NULL;
|
_topchild=NULL;
|
||||||
_bottomchild=NULL;
|
_bottomchild=NULL;
|
||||||
|
|
||||||
_visible=new BRegion(Bounds());
|
_visible=new BRegion(Frame());
|
||||||
_full=new BRegion(Bounds());
|
_full=new BRegion(Frame());
|
||||||
_invalid=new BRegion(Bounds());
|
_invalid=new BRegion(Frame());
|
||||||
|
|
||||||
_serverwin=win;
|
_serverwin=win;
|
||||||
|
|
||||||
|
@ -337,11 +337,13 @@ void ServerApp::_DispatchMessage(int32 code, int8 *buffer)
|
|||||||
// Attached data:
|
// Attached data:
|
||||||
// 1) port_id reply port
|
// 1) port_id reply port
|
||||||
// 2) BRect window frame
|
// 2) BRect window frame
|
||||||
// 3) uint32 window flags
|
// 3) uint32 window look
|
||||||
// 4) port_id window's message port
|
// 4) uint32 window feel
|
||||||
// 5) uint32 workspace index
|
// 5) uint32 window flags
|
||||||
// 6) int32 BHandler token of the window
|
// 6) port_id window's message port
|
||||||
// 7) const char * title
|
// 7) uint32 workspace index
|
||||||
|
// 8) int32 BHandler token of the window
|
||||||
|
// 9) const char * title
|
||||||
|
|
||||||
// Find the necessary data
|
// Find the necessary data
|
||||||
port_id reply_port=*((port_id*)index); index+=sizeof(port_id);
|
port_id reply_port=*((port_id*)index); index+=sizeof(port_id);
|
||||||
@ -483,33 +485,33 @@ void ServerApp::_DispatchMessage(int32 code, int8 *buffer)
|
|||||||
case AS_CREATE_PICTURE:
|
case AS_CREATE_PICTURE:
|
||||||
{
|
{
|
||||||
// TODO: Implement
|
// TODO: Implement
|
||||||
#ifdef DEBUG_SERVERAPP
|
#ifdef DEBUG_SERVERAPP
|
||||||
printf("ServerApp %s: Create Picture unimplemented\n",_signature.String());
|
printf("ServerApp %s: Create Picture unimplemented\n",_signature.String());
|
||||||
#endif
|
#endif
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case AS_DELETE_PICTURE:
|
case AS_DELETE_PICTURE:
|
||||||
{
|
{
|
||||||
// TODO: Implement
|
// TODO: Implement
|
||||||
#ifdef DEBUG_SERVERAPP
|
#ifdef DEBUG_SERVERAPP
|
||||||
printf("ServerApp %s: Delete Picture unimplemented\n",_signature.String());
|
printf("ServerApp %s: Delete Picture unimplemented\n",_signature.String());
|
||||||
#endif
|
#endif
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case AS_CLONE_PICTURE:
|
case AS_CLONE_PICTURE:
|
||||||
{
|
{
|
||||||
// TODO: Implement
|
// TODO: Implement
|
||||||
#ifdef DEBUG_SERVERAPP
|
#ifdef DEBUG_SERVERAPP
|
||||||
printf("ServerApp %s: Clone Picture unimplemented\n",_signature.String());
|
printf("ServerApp %s: Clone Picture unimplemented\n",_signature.String());
|
||||||
#endif
|
#endif
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case AS_DOWNLOAD_PICTURE:
|
case AS_DOWNLOAD_PICTURE:
|
||||||
{
|
{
|
||||||
// TODO; Implement
|
// TODO; Implement
|
||||||
#ifdef DEBUG_SERVERAPP
|
#ifdef DEBUG_SERVERAPP
|
||||||
printf("ServerApp %s: Download Picture unimplemented\n",_signature.String());
|
printf("ServerApp %s: Download Picture unimplemented\n",_signature.String());
|
||||||
#endif
|
#endif
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case AS_SET_SCREEN_MODE:
|
case AS_SET_SCREEN_MODE:
|
||||||
@ -669,7 +671,7 @@ printf("ServerApp %s: Download Picture unimplemented\n",_signature.String());
|
|||||||
default:
|
default:
|
||||||
{
|
{
|
||||||
#ifdef DEBUG_SERVERAPP
|
#ifdef DEBUG_SERVERAPP
|
||||||
printf("ServerApp %s received unhandled message code %lx\n",_signature.String(),code);
|
printf("ServerApp %s received unhandled message code offset %lx\n",_signature.String(),MsgCodeToString(code));
|
||||||
#endif
|
#endif
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -223,6 +223,7 @@ void ServerWindow::Show(void)
|
|||||||
if(_winborder)
|
if(_winborder)
|
||||||
{
|
{
|
||||||
_winborder->Show();
|
_winborder->Show();
|
||||||
|
_winborder->SetFocus(true);
|
||||||
_winborder->UpdateRegions(true);
|
_winborder->UpdateRegions(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -261,6 +262,7 @@ void ServerWindow::SetFocus(bool value)
|
|||||||
if(_active!=value)
|
if(_active!=value)
|
||||||
{
|
{
|
||||||
_active=value;
|
_active=value;
|
||||||
|
_winborder->SetFocus(value);
|
||||||
_winborder->RequestDraw();
|
_winborder->RequestDraw();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -627,7 +629,7 @@ void ServerWindow::DispatchMessage(PortMessage *msg)
|
|||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
{
|
{
|
||||||
printf("ServerWindow %s received unexpected code %s\n",_title->String(),MsgCodeToString(msg->Code()));
|
printf("ServerWindow %s received unexpected code - message offset %lx\n",_title->String(),msg->Code()-SERVER_TRUE);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1040,9 +1040,43 @@ void ViewDriver::StrokeLine(BPoint start, BPoint end, LayerData *d, int8 *pat)
|
|||||||
|
|
||||||
void ViewDriver::StrokeLineArray(BPoint *pts, int32 numlines, RGBColor *colors, LayerData *d)
|
void ViewDriver::StrokeLineArray(BPoint *pts, int32 numlines, RGBColor *colors, LayerData *d)
|
||||||
{
|
{
|
||||||
#ifdef DEBUG_DRIVER_MODULE
|
if(!d || numlines==0 || !pts || !colors)
|
||||||
printf("ViewDriver:: StrokeLineArray unimplemented\n");
|
return;
|
||||||
#endif
|
|
||||||
|
screenwin->Lock();
|
||||||
|
framebuffer->Lock();
|
||||||
|
SetLayerData(d);
|
||||||
|
|
||||||
|
// Do LineArray stuff here.
|
||||||
|
|
||||||
|
// drawview->Sync();
|
||||||
|
// screenwin->view->Invalidate();
|
||||||
|
|
||||||
|
// for now, just print the data and hope we don't crash
|
||||||
|
printf("ViewDriver::StrokeLineArray(): \n");
|
||||||
|
BPoint *ptindex=pts;
|
||||||
|
|
||||||
|
for(int32 i=0; i<numlines; i++)
|
||||||
|
{
|
||||||
|
BPoint pt1=*ptindex;
|
||||||
|
ptindex+=sizeof(BPoint);
|
||||||
|
BPoint pt2=*ptindex;
|
||||||
|
ptindex+=sizeof(BPoint);
|
||||||
|
rgb_color col=colors[i].GetColor32();
|
||||||
|
|
||||||
|
drawview->SetHighColor(col);
|
||||||
|
drawview->StrokeLine(pt1,pt2,B_SOLID_HIGH);
|
||||||
|
|
||||||
|
|
||||||
|
printf("\tLine (%.1f,%.1f)-(%.1f,%.1f) in color (%d,%d,%d)\n",pt1.x,pt1.y,pt2.x,pt2.y,
|
||||||
|
col.red,col.green,col.blue);
|
||||||
|
}
|
||||||
|
drawview->Sync();
|
||||||
|
screenwin->view->Invalidate();
|
||||||
|
|
||||||
|
framebuffer->Unlock();
|
||||||
|
screenwin->Unlock();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void ViewDriver::StrokePolygon(BPoint *ptlist, int32 numpts, BRect rect, LayerData *d, int8 *pat, bool is_closed)
|
void ViewDriver::StrokePolygon(BPoint *ptlist, int32 numpts, BRect rect, LayerData *d, int8 *pat, bool is_closed)
|
||||||
|
@ -37,6 +37,8 @@
|
|||||||
#include "WinBorder.h"
|
#include "WinBorder.h"
|
||||||
#include "AppServer.h" // for new_decorator()
|
#include "AppServer.h" // for new_decorator()
|
||||||
|
|
||||||
|
// TODO: Document this file completely
|
||||||
|
|
||||||
//#define DEBUG_WINBORDER
|
//#define DEBUG_WINBORDER
|
||||||
//#define DEBUG_WINBORDER_MOUSE
|
//#define DEBUG_WINBORDER_MOUSE
|
||||||
//#define DEBUG_WINBORDER_CLICK
|
//#define DEBUG_WINBORDER_CLICK
|
||||||
@ -72,9 +74,13 @@ void set_is_sliding_tab(bool state) { winborder_private::is_sliding_tab=state; }
|
|||||||
WinBorder * get_active_winborder(void) { return winborder_private::active_winborder; }
|
WinBorder * get_active_winborder(void) { return winborder_private::active_winborder; }
|
||||||
void set_active_winborder(WinBorder *win) { winborder_private::active_winborder=win; }
|
void set_active_winborder(WinBorder *win) { winborder_private::active_winborder=win; }
|
||||||
|
|
||||||
WinBorder::WinBorder(BRect r, const char *name, int32 look, int32 feel, int32 flags, ServerWindow *win)
|
WinBorder::WinBorder(const BRect &r, const char *name, const int32 look, const int32 feel,
|
||||||
|
const int32 flags, ServerWindow *win)
|
||||||
: Layer(r,name,B_FOLLOW_NONE,flags,win)
|
: Layer(r,name,B_FOLLOW_NONE,flags,win)
|
||||||
{
|
{
|
||||||
|
// unlike BViews, windows start off as hidden, so we need to tweak the hidecount
|
||||||
|
// assignment made by Layer().
|
||||||
|
_hidecount=1;
|
||||||
_mbuttons=0;
|
_mbuttons=0;
|
||||||
_kmodifiers=0;
|
_kmodifiers=0;
|
||||||
_win=win;
|
_win=win;
|
||||||
@ -153,7 +159,7 @@ printf("Click: MoveToFront\n");
|
|||||||
printf("Click: Close\n");
|
printf("Click: Close\n");
|
||||||
#endif
|
#endif
|
||||||
_decorator->SetClose(true);
|
_decorator->SetClose(true);
|
||||||
_decorator->Draw();
|
_decorator->DrawClose();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case CLICK_ZOOM:
|
case CLICK_ZOOM:
|
||||||
@ -162,7 +168,7 @@ printf("Click: Close\n");
|
|||||||
printf("Click: Zoom\n");
|
printf("Click: Zoom\n");
|
||||||
#endif
|
#endif
|
||||||
_decorator->SetZoom(true);
|
_decorator->SetZoom(true);
|
||||||
_decorator->Draw();
|
_decorator->DrawZoom();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case CLICK_MINIMIZE:
|
case CLICK_MINIMIZE:
|
||||||
@ -171,7 +177,7 @@ printf("Click: Zoom\n");
|
|||||||
printf("Click: Minimize\n");
|
printf("Click: Minimize\n");
|
||||||
#endif
|
#endif
|
||||||
_decorator->SetMinimize(true);
|
_decorator->SetMinimize(true);
|
||||||
_decorator->Draw();
|
_decorator->DrawMinimize();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case CLICK_DRAG:
|
case CLICK_DRAG:
|
||||||
@ -357,7 +363,7 @@ void WinBorder::MouseUp(int8 *buffer)
|
|||||||
BPoint pt(x,y);
|
BPoint pt(x,y);
|
||||||
|
|
||||||
#ifdef DEBUG_WINBORDER_MOUSE
|
#ifdef DEBUG_WINBORDER_MOUSE
|
||||||
printf("WinBorder %s: MouseUp unimplmented\n",_title->String());
|
printf("WinBorder %s: MouseUp unimplemented\n",_title->String());
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
_mbuttons=0;
|
_mbuttons=0;
|
||||||
@ -374,7 +380,7 @@ printf("WinBorder %s: MouseUp unimplmented\n",_title->String());
|
|||||||
case CLICK_CLOSE:
|
case CLICK_CLOSE:
|
||||||
{
|
{
|
||||||
_decorator->SetClose(false);
|
_decorator->SetClose(false);
|
||||||
_decorator->Draw();
|
_decorator->DrawClose();
|
||||||
|
|
||||||
// call close window stuff here
|
// call close window stuff here
|
||||||
|
|
||||||
@ -383,7 +389,7 @@ printf("WinBorder %s: MouseUp unimplmented\n",_title->String());
|
|||||||
case CLICK_ZOOM:
|
case CLICK_ZOOM:
|
||||||
{
|
{
|
||||||
_decorator->SetZoom(false);
|
_decorator->SetZoom(false);
|
||||||
_decorator->Draw();
|
_decorator->DrawZoom();
|
||||||
|
|
||||||
// call zoom stuff here
|
// call zoom stuff here
|
||||||
|
|
||||||
@ -392,7 +398,7 @@ printf("WinBorder %s: MouseUp unimplmented\n",_title->String());
|
|||||||
case CLICK_MINIMIZE:
|
case CLICK_MINIMIZE:
|
||||||
{
|
{
|
||||||
_decorator->SetMinimize(false);
|
_decorator->SetMinimize(false);
|
||||||
_decorator->Draw();
|
_decorator->DrawMinimize();
|
||||||
|
|
||||||
// call minimize stuff here
|
// call minimize stuff here
|
||||||
|
|
||||||
@ -404,6 +410,16 @@ printf("WinBorder %s: MouseUp unimplmented\n",_title->String());
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\brief Function to pass focus value on to decorator
|
||||||
|
\param active Focus flag
|
||||||
|
*/
|
||||||
|
void WinBorder::SetFocus(const bool &active)
|
||||||
|
{
|
||||||
|
if(_decorator)
|
||||||
|
_decorator->SetFocus(active);
|
||||||
|
}
|
||||||
|
|
||||||
void WinBorder::RequestDraw(const BRect &r)
|
void WinBorder::RequestDraw(const BRect &r)
|
||||||
{
|
{
|
||||||
#ifdef DEBUG_WINBORDER
|
#ifdef DEBUG_WINBORDER
|
||||||
|
@ -38,7 +38,8 @@ class DisplayDriver;
|
|||||||
class WinBorder : public Layer
|
class WinBorder : public Layer
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
WinBorder(BRect r, const char *name, int32 look, int32 feel, int32 flags, ServerWindow *win);
|
WinBorder(const BRect &r, const char *name, const int32 look, const int32 feel,
|
||||||
|
const int32 flags, ServerWindow *win);
|
||||||
~WinBorder(void);
|
~WinBorder(void);
|
||||||
void RequestDraw(void);
|
void RequestDraw(void);
|
||||||
void RequestDraw(const BRect &r);
|
void RequestDraw(const BRect &r);
|
||||||
@ -53,8 +54,8 @@ public:
|
|||||||
void UpdateDecorator(void);
|
void UpdateDecorator(void);
|
||||||
void UpdateFont(void);
|
void UpdateFont(void);
|
||||||
void UpdateScreen(void);
|
void UpdateScreen(void);
|
||||||
void RebuildRegions(bool recursive=true);
|
void RebuildRegions(const bool &recursive=true);
|
||||||
void Activate(bool active=false);
|
void SetFocus(const bool &active=false);
|
||||||
ServerWindow *Window(void) { return _win; }
|
ServerWindow *Window(void) { return _win; }
|
||||||
Decorator *GetDecorator(void) { return _decorator; }
|
Decorator *GetDecorator(void) { return _decorator; }
|
||||||
protected:
|
protected:
|
||||||
|
Loading…
Reference in New Issue
Block a user