Complete server update.
Fix for garbage text in window titles Updates to decorator and API git-svn-id: file:///srv/svn/repos/haiku/trunk/current@2066 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
parent
2b99433ef9
commit
f0577aea09
@ -59,8 +59,8 @@ printf("Server input port: %ld\n",mouseport);
|
|||||||
// fontserver->ScanDirectory("/boot/home/config/fonts/psfonts/");
|
// fontserver->ScanDirectory("/boot/home/config/fonts/psfonts/");
|
||||||
fontserver->SaveList();
|
fontserver->SaveList();
|
||||||
|
|
||||||
if(!fontserver->SetSystemPlain("Dutch801 Rm BT","Roman",12))
|
if(!fontserver->SetSystemPlain("Swis721 BT","Roman",12))
|
||||||
printf("Couldn't set plain to Dutch801 Rm BT, Roman 12 pt\n");
|
printf("Couldn't set plain to Swis721 BT, Roman 12 pt\n");
|
||||||
if(!fontserver->SetSystemBold("Dutch801 Rm BT","Bold",12))
|
if(!fontserver->SetSystemBold("Dutch801 Rm BT","Bold",12))
|
||||||
printf("Couldn't set bold to Dutch801 Rm BT, Bold 12 pt\n");
|
printf("Couldn't set bold to Dutch801 Rm BT, Bold 12 pt\n");
|
||||||
if(!fontserver->SetSystemFixed("Courier10 BT","Roman",12))
|
if(!fontserver->SetSystemFixed("Courier10 BT","Roman",12))
|
||||||
@ -236,9 +236,18 @@ printf("AppServer: Create App\n");
|
|||||||
|
|
||||||
// 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);
|
||||||
|
#ifdef DEBUG_APPSERVER_THREAD
|
||||||
|
printf("\tCreate App: reply port is %lu\n",reply_port);
|
||||||
|
#endif
|
||||||
port_id app_port=*((port_id*)index); index+=sizeof(port_id);
|
port_id app_port=*((port_id*)index); index+=sizeof(port_id);
|
||||||
|
#ifdef DEBUG_APPSERVER_THREAD
|
||||||
|
printf("\tCreate App: ServerApp port is %lu\n", app_port);
|
||||||
|
#endif
|
||||||
|
|
||||||
char *app_signature=(char *)index;
|
char *app_signature=(char *)index;
|
||||||
|
#ifdef DEBUG_APPSERVER_THREAD
|
||||||
|
printf("\tCreate App: Signature received is %s\n", app_signature);
|
||||||
|
#endif
|
||||||
|
|
||||||
// Create the ServerApp subthread for this app
|
// Create the ServerApp subthread for this app
|
||||||
applist_lock->Lock();
|
applist_lock->Lock();
|
||||||
@ -463,7 +472,8 @@ void AppServer::LoadDefaultDecorator(void)
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Decorator *instantiate_decorator(BRect rect, int32 wlook, int32 wfeel, int32 wflags)
|
Decorator *instantiate_decorator(BRect rect, const char *title, int32 wlook, int32 wfeel, int32 wflags,
|
||||||
|
DisplayDriver *ddriver)
|
||||||
{
|
{
|
||||||
Decorator *decor=NULL;
|
Decorator *decor=NULL;
|
||||||
|
|
||||||
@ -471,11 +481,8 @@ Decorator *instantiate_decorator(BRect rect, int32 wlook, int32 wfeel, int32 wfl
|
|||||||
if(app_server->make_decorator!=NULL)
|
if(app_server->make_decorator!=NULL)
|
||||||
decor=app_server->make_decorator(rect,wlook,wfeel,wflags);
|
decor=app_server->make_decorator(rect,wlook,wfeel,wflags);
|
||||||
else
|
else
|
||||||
{
|
decor=new BeDecorator(rect,title,wlook,wfeel,wflags,ddriver);
|
||||||
decor=new BeDecorator(rect,wlook,wfeel,wflags);
|
|
||||||
// decor=new WinDecorator(lay, dflags, wlook);
|
|
||||||
// decor=new YMakDecorator(lay, dflags, wlook);
|
|
||||||
}
|
|
||||||
decor->SetDriver(get_gfxdriver());
|
decor->SetDriver(get_gfxdriver());
|
||||||
app_server->UnlockDecorator();
|
app_server->UnlockDecorator();
|
||||||
return decor;
|
return decor;
|
||||||
@ -508,6 +515,7 @@ void AppServer::Poller(void)
|
|||||||
#ifdef DEBUG_POLLER_THREAD
|
#ifdef DEBUG_POLLER_THREAD
|
||||||
printf("Poller: MouseDown() - Empty buffer\n");
|
printf("Poller: MouseDown() - Empty buffer\n");
|
||||||
#endif
|
#endif
|
||||||
|
ServerWindow::HandleMouseEvent(msgcode,msgbuffer);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case B_MOUSE_UP:
|
case B_MOUSE_UP:
|
||||||
|
@ -27,7 +27,7 @@ public:
|
|||||||
void UnlockDecorator(void) { if(decor_lock) decor_lock->Unlock(); }
|
void UnlockDecorator(void) { if(decor_lock) decor_lock->Unlock(); }
|
||||||
create_decorator *make_decorator; // global function pointer
|
create_decorator *make_decorator; // global function pointer
|
||||||
private:
|
private:
|
||||||
friend Decorator *instantiate_decorator(Layer *lay, uint32 dflags, uint32 wlook);
|
friend Decorator *instantiate_decorator(Layer *lay, const char *title, uint32 dflags, uint32 wlook);
|
||||||
|
|
||||||
void DispatchMessage(int32 code, int8 *buffer);
|
void DispatchMessage(int32 code, int8 *buffer);
|
||||||
static int32 PollerThread(void *data);
|
static int32 PollerThread(void *data);
|
||||||
@ -47,5 +47,6 @@ private:
|
|||||||
DisplayDriver *driver;
|
DisplayDriver *driver;
|
||||||
};
|
};
|
||||||
|
|
||||||
Decorator *instantiate_decorator(BRect rect, int32 wlook, int32 wfeel, int32 wflags);
|
Decorator *instantiate_decorator(BRect rect, const char *title, int32 wlook, int32 wfeel,
|
||||||
|
int32 wflags, DisplayDriver *ddriver);
|
||||||
#endif
|
#endif
|
@ -13,8 +13,9 @@
|
|||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
BeDecorator::BeDecorator(BRect rect, int32 wlook, int32 wfeel, int32 wflags)
|
BeDecorator::BeDecorator(BRect rect, const char *title, int32 wlook, int32 wfeel, int32 wflags,
|
||||||
: Decorator(rect,wlook,wfeel,wflags)
|
DisplayDriver *ddriver)
|
||||||
|
: Decorator(rect,title,wlook,wfeel,wflags,ddriver)
|
||||||
{
|
{
|
||||||
#ifdef DEBUG_DECOR
|
#ifdef DEBUG_DECOR
|
||||||
printf("BeDecorator()\n");
|
printf("BeDecorator()\n");
|
||||||
@ -147,16 +148,14 @@ printf("BeDecorator()::_DoLayout()"); rect.PrintToStream();
|
|||||||
resizerect.left=resizerect.right-18;
|
resizerect.left=resizerect.right-18;
|
||||||
|
|
||||||
tabrect.bottom=tabrect.top+18;
|
tabrect.bottom=tabrect.top+18;
|
||||||
/* if(GetTitle())
|
if(titlewidth>0)
|
||||||
{
|
{
|
||||||
float titlewidth=closerect.right
|
tabrect.right=closerect.right+textoffset+titlewidth+15;
|
||||||
+driver->StringWidth(layer->name->String(),
|
if(tabrect.right>frame.right)
|
||||||
layer->name->Length())
|
tabrect.right=frame.right;
|
||||||
+35;
|
|
||||||
tabrect.right=(titlewidth<frame.right -1)?titlewidth:frame.right;
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
*/ tabrect.right=tabrect.left+tabrect.Width()/2;
|
tabrect.right=tabrect.left+tabrect.Width()/2;
|
||||||
|
|
||||||
if(look==WLOOK_FLOATING)
|
if(look==WLOOK_FLOATING)
|
||||||
tabrect.top+=4;
|
tabrect.top+=4;
|
||||||
@ -169,6 +168,17 @@ printf("BeDecorator()::_DoLayout()"); rect.PrintToStream();
|
|||||||
zoomrect.bottom=zoomrect.top+10;
|
zoomrect.bottom=zoomrect.top+10;
|
||||||
|
|
||||||
textoffset=(look==WLOOK_FLOATING)?5:7;
|
textoffset=(look==WLOOK_FLOATING)?5:7;
|
||||||
|
// titlechars=_ClipTitle(zoomrect.left-(closerect.right+textoffset));
|
||||||
|
titlechars=_ClipTitle(zoomrect.left-closerect.right);
|
||||||
|
}
|
||||||
|
|
||||||
|
void BeDecorator::SetTitle(const char *string)
|
||||||
|
{
|
||||||
|
Decorator::SetTitle(string);
|
||||||
|
if(string && driver)
|
||||||
|
titlewidth=driver->StringWidth(GetTitle(),strlen(GetTitle()),&layerdata);
|
||||||
|
else
|
||||||
|
titlewidth=0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void BeDecorator::MoveBy(float x, float y)
|
void BeDecorator::MoveBy(float x, float y)
|
||||||
@ -214,14 +224,12 @@ void BeDecorator::_DrawTitle(BRect r)
|
|||||||
{
|
{
|
||||||
// Designed simply to redraw the title when it has changed on
|
// Designed simply to redraw the title when it has changed on
|
||||||
// the client side.
|
// the client side.
|
||||||
/* driver->SetDrawingMode(B_OP_OVER);
|
layerdata.draw_mode=B_OP_OVER;
|
||||||
rgb_color tmpcol=driver->HighColor();
|
layerdata.highcolor=colors->window_tab_text;
|
||||||
driver->SetHighColor(textcol.red,textcol.green,textcol.blue);
|
driver->DrawString(GetTitle(),titlechars,
|
||||||
driver->DrawString((char *)string,strlen(string),
|
BPoint(closerect.right+textoffset,closerect.bottom),&layerdata);
|
||||||
BPoint(closerect.right+textoffset,closerect.bottom-1));
|
layerdata.draw_mode=B_OP_COPY;
|
||||||
driver->SetHighColor(tmpcol.red,tmpcol.green,tmpcol.blue);
|
|
||||||
driver->SetDrawingMode(B_OP_COPY);
|
|
||||||
*/
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void BeDecorator::_SetFocus(void)
|
void BeDecorator::_SetFocus(void)
|
||||||
@ -313,8 +321,6 @@ void BeDecorator::_DrawTab(BRect r)
|
|||||||
layerdata.highcolor=frame_lowcol;
|
layerdata.highcolor=frame_lowcol;
|
||||||
driver->StrokeRect(tabrect,&layerdata,(int8*)&solidhigh);
|
driver->StrokeRect(tabrect,&layerdata,(int8*)&solidhigh);
|
||||||
|
|
||||||
// UpdateTitle(layer->name->String());
|
|
||||||
|
|
||||||
layerdata.highcolor=colors->window_tab;
|
layerdata.highcolor=colors->window_tab;
|
||||||
driver->FillRect(tabrect.InsetByCopy(1,1),&layerdata,(int8*)&solidhigh);
|
driver->FillRect(tabrect.InsetByCopy(1,1),&layerdata,(int8*)&solidhigh);
|
||||||
|
|
||||||
@ -494,7 +500,8 @@ extern "C" float get_decorator_version(void)
|
|||||||
return 1.00;
|
return 1.00;
|
||||||
}
|
}
|
||||||
|
|
||||||
extern "C" Decorator *instantiate_decorator(BRect rect, int32 wlook, int32 wfeel, int32 wflags)
|
extern "C" Decorator *instantiate_decorator(BRect rect, const char *title,
|
||||||
|
int32 wlook, int32 wfeel, int32 wflags,DisplayDriver *ddriver)
|
||||||
{
|
{
|
||||||
return new BeDecorator(rect,wlook,wfeel,wflags);
|
return new BeDecorator(rect,title, wlook,wfeel,wflags,ddriver);
|
||||||
}
|
}
|
@ -7,9 +7,11 @@
|
|||||||
class BeDecorator: public Decorator
|
class BeDecorator: public Decorator
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
BeDecorator(BRect frame, int32 wlook, int32 wfeel, int32 wflags);
|
BeDecorator(BRect frame, const char *title, int32 wlook, int32 wfeel, int32 wflags,
|
||||||
|
DisplayDriver *ddriver);
|
||||||
~BeDecorator(void);
|
~BeDecorator(void);
|
||||||
|
|
||||||
|
void SetTitle(const char *string);
|
||||||
void MoveBy(float x, float y);
|
void MoveBy(float x, float y);
|
||||||
void MoveBy(BPoint pt);
|
void MoveBy(BPoint pt);
|
||||||
void ResizeBy(float x, float y);
|
void ResizeBy(float x, float y);
|
||||||
@ -36,9 +38,10 @@ protected:
|
|||||||
frame_lowercol;
|
frame_lowercol;
|
||||||
RGBColor textcol;
|
RGBColor textcol;
|
||||||
uint64 solidhigh, solidlow;
|
uint64 solidhigh, solidlow;
|
||||||
|
float titlewidth;
|
||||||
|
|
||||||
bool slidetab;
|
bool slidetab;
|
||||||
int textoffset;
|
int textoffset, titlechars;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
@ -1,13 +1,14 @@
|
|||||||
#include "Decorator.h"
|
#include "Decorator.h"
|
||||||
#include <string.h>
|
#include "DisplayDriver.h"
|
||||||
|
|
||||||
Decorator::Decorator(BRect rect, int32 wlook, int32 wfeel, int32 wflags)
|
Decorator::Decorator(BRect rect, const char *title, int32 wlook, int32 wfeel, int32 wflags,
|
||||||
|
DisplayDriver *ddriver)
|
||||||
{
|
{
|
||||||
close_state=false;
|
close_state=false;
|
||||||
minimize_state=false;
|
minimize_state=false;
|
||||||
zoom_state=false;
|
zoom_state=false;
|
||||||
title_string=NULL;
|
title_string=new BString(title);
|
||||||
driver=NULL;
|
driver=ddriver;
|
||||||
|
|
||||||
closerect.Set(0,0,1,1);
|
closerect.Set(0,0,1,1);
|
||||||
zoomrect.Set(0,0,1,1);
|
zoomrect.Set(0,0,1,1);
|
||||||
@ -41,7 +42,10 @@ void Decorator::SetColors(ColorSet cset)
|
|||||||
|
|
||||||
void Decorator::SetDriver(DisplayDriver *d)
|
void Decorator::SetDriver(DisplayDriver *d)
|
||||||
{
|
{
|
||||||
|
// lots of subclasses will depend on the driver for text support, so call
|
||||||
|
// _DoLayout() after this
|
||||||
driver=d;
|
driver=d;
|
||||||
|
_DoLayout();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Decorator::SetClose(bool is_down)
|
void Decorator::SetClose(bool is_down)
|
||||||
@ -106,25 +110,12 @@ int32 Decorator::GetFlags(void)
|
|||||||
|
|
||||||
void Decorator::SetTitle(const char *string)
|
void Decorator::SetTitle(const char *string)
|
||||||
{
|
{
|
||||||
if(string)
|
title_string->SetTo(string);
|
||||||
{
|
|
||||||
size_t size=strlen(string);
|
|
||||||
if(!(size>0))
|
|
||||||
return;
|
|
||||||
delete title_string;
|
|
||||||
title_string=new char[size];
|
|
||||||
strcpy(title_string,string);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
delete title_string;
|
|
||||||
title_string=NULL;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const char *Decorator::GetTitle(void)
|
const char *Decorator::GetTitle(void)
|
||||||
{
|
{
|
||||||
return title_string;
|
return title_string->String();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Decorator::SetFocus(bool is_active)
|
void Decorator::SetFocus(bool is_active)
|
||||||
@ -138,8 +129,24 @@ void Decorator::SetFont(SFont *sf)
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
void Decorator::_ClipTitle(void)
|
int32 Decorator::_ClipTitle(float width)
|
||||||
{
|
{
|
||||||
|
if(driver)
|
||||||
|
{
|
||||||
|
int32 strlength=title_string->CountChars();
|
||||||
|
float pixwidth=driver->StringWidth(title_string->String(),strlength,&layerdata);
|
||||||
|
|
||||||
|
while(strlength>=0)
|
||||||
|
{
|
||||||
|
if(pixwidth<width)
|
||||||
|
break;
|
||||||
|
strlength--;
|
||||||
|
pixwidth=driver->StringWidth(title_string->String(),strlength,&layerdata);
|
||||||
|
}
|
||||||
|
|
||||||
|
return strlength;
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
//-------------------------------------------------------------------------
|
//-------------------------------------------------------------------------
|
||||||
@ -230,6 +237,7 @@ void Decorator::_DrawTitle(BRect r)
|
|||||||
void Decorator::_DrawZoom(BRect r)
|
void Decorator::_DrawZoom(BRect r)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
SRegion Decorator::GetFootprint(void)
|
SRegion Decorator::GetFootprint(void)
|
||||||
{
|
{
|
||||||
|
@ -3,6 +3,7 @@
|
|||||||
|
|
||||||
#include <SupportDefs.h>
|
#include <SupportDefs.h>
|
||||||
#include <Rect.h>
|
#include <Rect.h>
|
||||||
|
#include <String.h>
|
||||||
#include "ColorSet.h"
|
#include "ColorSet.h"
|
||||||
#include "LayerData.h"
|
#include "LayerData.h"
|
||||||
|
|
||||||
@ -55,7 +56,8 @@ typedef enum { CLICK_NONE=0, CLICK_ZOOM, CLICK_CLOSE, CLICK_MINIMIZE,
|
|||||||
class Decorator
|
class Decorator
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
Decorator(BRect rect, int32 wlook, int32 wfeel, int32 wflags);
|
Decorator(BRect rect, const char *title, int32 wlook, int32 wfeel, int32 wflags,
|
||||||
|
DisplayDriver *ddriver);
|
||||||
virtual ~Decorator(void);
|
virtual ~Decorator(void);
|
||||||
void SetColors(ColorSet cset);
|
void SetColors(ColorSet cset);
|
||||||
void SetDriver(DisplayDriver *d);
|
void SetDriver(DisplayDriver *d);
|
||||||
@ -71,12 +73,11 @@ public:
|
|||||||
int32 GetLook(void);
|
int32 GetLook(void);
|
||||||
int32 GetFeel(void);
|
int32 GetFeel(void);
|
||||||
int32 GetFlags(void);
|
int32 GetFlags(void);
|
||||||
void SetTitle(const char *string);
|
virtual void SetTitle(const char *string);
|
||||||
void SetFocus(bool is_active);
|
void SetFocus(bool is_active);
|
||||||
bool GetFocus(void) { return has_focus; };
|
bool GetFocus(void) { return has_focus; };
|
||||||
const char *GetTitle(void);
|
const char *GetTitle(void);
|
||||||
// void SetFont(SFont *sf);
|
// void SetFont(SFont *sf);
|
||||||
void _ClipTitle(void);
|
|
||||||
ColorSet GetColors(void) { if(colors) return *colors; else return ColorSet(); }
|
ColorSet GetColors(void) { if(colors) return *colors; else return ColorSet(); }
|
||||||
|
|
||||||
virtual void MoveBy(float x, float y);
|
virtual void MoveBy(float x, float y);
|
||||||
@ -95,6 +96,8 @@ public:
|
|||||||
virtual click_type Clicked(BPoint pt, int32 buttons, int32 modifiers);
|
virtual click_type Clicked(BPoint pt, int32 buttons, int32 modifiers);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
int32 _ClipTitle(float width);
|
||||||
|
int32 TitleWidth(void) { return (title_string)?title_string->CountChars():0; }
|
||||||
virtual void _DrawClose(BRect r);
|
virtual void _DrawClose(BRect r);
|
||||||
virtual void _DrawFrame(BRect r);
|
virtual void _DrawFrame(BRect r);
|
||||||
virtual void _DrawMinimize(BRect r);
|
virtual void _DrawMinimize(BRect r);
|
||||||
@ -112,7 +115,7 @@ protected:
|
|||||||
private:
|
private:
|
||||||
bool close_state, zoom_state, minimize_state;
|
bool close_state, zoom_state, minimize_state;
|
||||||
bool has_focus;
|
bool has_focus;
|
||||||
char *title_string;
|
BString *title_string;
|
||||||
};
|
};
|
||||||
|
|
||||||
typedef float get_version(void);
|
typedef float get_version(void);
|
||||||
|
@ -41,7 +41,7 @@
|
|||||||
|
|
||||||
// Define this if you want to use the spacebar to launch the server prototype's
|
// Define this if you want to use the spacebar to launch the server prototype's
|
||||||
// test application
|
// test application
|
||||||
//#define LAUNCH_TESTAPP
|
#define LAUNCH_TESTAPP
|
||||||
|
|
||||||
#ifdef LAUNCH_TESTAPP
|
#ifdef LAUNCH_TESTAPP
|
||||||
#include <Roster.h>
|
#include <Roster.h>
|
||||||
@ -1348,7 +1348,7 @@ void ScreenDriver::SetCursor(ServerBitmap *csr, const BPoint &spot)
|
|||||||
#ifdef DEBUG_DRIVER
|
#ifdef DEBUG_DRIVER
|
||||||
printf("ScreenDriver::SetCursor\n");
|
printf("ScreenDriver::SetCursor\n");
|
||||||
#endif
|
#endif
|
||||||
if(!csr)
|
/* if(!csr)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
Lock();
|
Lock();
|
||||||
@ -1380,6 +1380,7 @@ printf("ScreenDriver::SetCursor\n");
|
|||||||
BlitBitmap(cursor,cursor->Bounds(),cursorframe);
|
BlitBitmap(cursor,cursor->Bounds(),cursorframe);
|
||||||
|
|
||||||
Unlock();
|
Unlock();
|
||||||
|
*/
|
||||||
}
|
}
|
||||||
|
|
||||||
void ScreenDriver::HLine(int32 x1, int32 x2, int32 y, RGBColor color)
|
void ScreenDriver::HLine(int32 x1, int32 x2, int32 y, RGBColor color)
|
||||||
|
@ -6,7 +6,6 @@
|
|||||||
class BMessage;
|
class BMessage;
|
||||||
class PortLink;
|
class PortLink;
|
||||||
class BList;
|
class BList;
|
||||||
class ServerCursor;
|
|
||||||
class DisplayDriver;
|
class DisplayDriver;
|
||||||
|
|
||||||
class ServerApp
|
class ServerApp
|
||||||
|
@ -36,7 +36,7 @@ ServerWindow::ServerWindow(BRect rect, const char *string, uint32 wlook,
|
|||||||
else
|
else
|
||||||
title->SetTo("Window");
|
title->SetTo("Window");
|
||||||
#ifdef DEBUG_SERVERWIN
|
#ifdef DEBUG_SERVERWIN
|
||||||
printf("ServerWindow() %s\n",title->String());
|
printf("ServerWindow(%s)\n",title->String());
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// This must happen before the WindowBorder object - it needs this object's frame
|
// This must happen before the WindowBorder object - it needs this object's frame
|
||||||
@ -53,14 +53,14 @@ printf("ServerWindow() %s\n",title->String());
|
|||||||
|
|
||||||
// hard code this for now - window look also needs to be attached and sent to
|
// hard code this for now - window look also needs to be attached and sent to
|
||||||
// server by BWindow constructor
|
// server by BWindow constructor
|
||||||
decorator=instantiate_decorator(frame,winlook,winfeel,winflags);
|
decorator=instantiate_decorator(frame,title->String(),winlook,winfeel,winflags,get_gfxdriver());
|
||||||
#ifdef DEBUG_SERVERWIN
|
#ifdef DEBUG_SERVERWIN
|
||||||
if(decorator==NULL)
|
if(decorator==NULL)
|
||||||
printf("ServerWindow() %s: NULL decorator returned\n",title->String());
|
printf("\tNULL decorator returned\n");
|
||||||
#endif
|
#endif
|
||||||
winborder->SetDecorator(decorator);
|
winborder->SetDecorator(decorator);
|
||||||
#ifdef DEBUG_SERVERWIN
|
#ifdef DEBUG_SERVERWIN
|
||||||
printf("ServerWindow() %s: decorator set\n",title->String());
|
printf("\tdecorator set\n");
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// sender is the monitored app's event port
|
// sender is the monitored app's event port
|
||||||
@ -72,7 +72,7 @@ printf("ServerWindow() %s: decorator set\n",title->String());
|
|||||||
else
|
else
|
||||||
applink=NULL;
|
applink=NULL;
|
||||||
#ifdef DEBUG_SERVERWIN
|
#ifdef DEBUG_SERVERWIN
|
||||||
printf("ServerWindow() %s: PortLink established\n",title->String());
|
printf("\tPortLink established\n");
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// receiver is the port to which the app sends messages for the server
|
// receiver is the port to which the app sends messages for the server
|
||||||
@ -86,14 +86,14 @@ printf("ServerWindow() %s: PortLink established\n",title->String());
|
|||||||
if(thread!=B_NO_MORE_THREADS && thread!=B_NO_MEMORY)
|
if(thread!=B_NO_MORE_THREADS && thread!=B_NO_MEMORY)
|
||||||
resume_thread(thread);
|
resume_thread(thread);
|
||||||
#ifdef DEBUG_SERVERWIN
|
#ifdef DEBUG_SERVERWIN
|
||||||
printf("ServerWindow() %s: MonitorThread spawned\n",title->String());
|
printf("\tMonitorThread spawned\n");
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
workspace=index;
|
workspace=index;
|
||||||
|
|
||||||
AddWindowToDesktop(this,index);
|
AddWindowToDesktop(this,index);
|
||||||
#ifdef DEBUG_SERVERWIN
|
#ifdef DEBUG_SERVERWIN
|
||||||
printf("ServerWindow() %s: Added to Desktop\n",title->String());
|
printf("\tAdded to Desktop\n");
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -504,6 +504,7 @@ printf("ViewDriver:: CopyBits()\n"); src.PrintToStream(); dest.PrintToStream();
|
|||||||
framebuffer->Lock();
|
framebuffer->Lock();
|
||||||
drawview->CopyBits(src,dest);
|
drawview->CopyBits(src,dest);
|
||||||
drawview->Sync();
|
drawview->Sync();
|
||||||
|
screenwin->view->Invalidate(src);
|
||||||
screenwin->view->Invalidate(dest);
|
screenwin->view->Invalidate(dest);
|
||||||
framebuffer->Unlock();
|
framebuffer->Unlock();
|
||||||
screenwin->Unlock();
|
screenwin->Unlock();
|
||||||
|
@ -4,11 +4,12 @@
|
|||||||
#include <Debug.h>
|
#include <Debug.h>
|
||||||
#include "View.h" // for mouse button defines
|
#include "View.h" // for mouse button defines
|
||||||
#include "ServerWindow.h"
|
#include "ServerWindow.h"
|
||||||
#include "WindowBorder.h"
|
|
||||||
#include "Decorator.h"
|
#include "Decorator.h"
|
||||||
|
#include "DisplayDriver.h"
|
||||||
#include "Desktop.h"
|
#include "Desktop.h"
|
||||||
|
#include "WindowBorder.h"
|
||||||
|
|
||||||
#define DEBUG_WINBORDER
|
//#define DEBUG_WINBORDER
|
||||||
|
|
||||||
#ifdef DEBUG_WINBORDER
|
#ifdef DEBUG_WINBORDER
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
@ -23,7 +24,7 @@ WindowBorder::WindowBorder(ServerWindow *win, const char *bordertitle)
|
|||||||
(win==NULL)?NULL:win->title->String())
|
(win==NULL)?NULL:win->title->String())
|
||||||
{
|
{
|
||||||
#ifdef DEBUG_WINBORDER
|
#ifdef DEBUG_WINBORDER
|
||||||
printf("WindowBorder()\n");
|
printf("WindowBorder(%s)\n",bordertitle);
|
||||||
#endif
|
#endif
|
||||||
mbuttons=0;
|
mbuttons=0;
|
||||||
swin=win;
|
swin=win;
|
||||||
@ -33,7 +34,6 @@ printf("WindowBorder()\n");
|
|||||||
title=new BString(bordertitle);
|
title=new BString(bordertitle);
|
||||||
hresizewin=false;
|
hresizewin=false;
|
||||||
vresizewin=false;
|
vresizewin=false;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
WindowBorder::~WindowBorder(void)
|
WindowBorder::~WindowBorder(void)
|
||||||
@ -276,6 +276,8 @@ printf("WindowBorder::SetDecorator(%p)\n",newdecor);
|
|||||||
if(newdecor)
|
if(newdecor)
|
||||||
{
|
{
|
||||||
decor=newdecor;
|
decor=newdecor;
|
||||||
|
decor->SetTitle(title->String());
|
||||||
|
decor->ResizeBy(0,0);
|
||||||
// if(visible)
|
// if(visible)
|
||||||
// delete visible;
|
// delete visible;
|
||||||
// visible=decor->GetFootprint();
|
// visible=decor->GetFootprint();
|
||||||
|
@ -7,6 +7,7 @@
|
|||||||
|
|
||||||
class ServerWindow;
|
class ServerWindow;
|
||||||
class Decorator;
|
class Decorator;
|
||||||
|
class DisplayDriver;
|
||||||
|
|
||||||
class WindowBorder : public Layer
|
class WindowBorder : public Layer
|
||||||
{
|
{
|
||||||
|
@ -38,7 +38,7 @@ printf("OBWindow(%s)\n",title);
|
|||||||
if(inport==B_BAD_VALUE || inport==B_NO_MORE_PORTS)
|
if(inport==B_BAD_VALUE || inport==B_NO_MORE_PORTS)
|
||||||
printf("OBWindow: Couldn't create message port\n");
|
printf("OBWindow: Couldn't create message port\n");
|
||||||
|
|
||||||
// Notify app that we exist
|
// Notify BApplication that we exist
|
||||||
OBWindow *win=this;
|
OBWindow *win=this;
|
||||||
PortLink *link=new PortLink(obe_app->messageport);
|
PortLink *link=new PortLink(obe_app->messageport);
|
||||||
link->SetOpCode(ADDWINDOW);
|
link->SetOpCode(ADDWINDOW);
|
||||||
@ -67,7 +67,10 @@ printf("OBWindow(%s)\n",title);
|
|||||||
serverlink->Attach((int32)wflags);
|
serverlink->Attach((int32)wflags);
|
||||||
serverlink->Attach(&inport,sizeof(port_id));
|
serverlink->Attach(&inport,sizeof(port_id));
|
||||||
serverlink->Attach((int32)wkspace);
|
serverlink->Attach((int32)wkspace);
|
||||||
serverlink->Attach((char*)wtitle->String(),wtitle->Length());
|
//We add one so that the string will end up NULL-terminated. Otherwise, when
|
||||||
|
// we go to use the thing in the app_server, it will sometimes get junk
|
||||||
|
// characters at the end.
|
||||||
|
serverlink->Attach((char*)wtitle->String(),wtitle->CountChars()+1);
|
||||||
|
|
||||||
// Send and wait for ServerWindow port. Necessary here so we can respond to
|
// Send and wait for ServerWindow port. Necessary here so we can respond to
|
||||||
// messages as soon as Show() is called.
|
// messages as soon as Show() is called.
|
||||||
|
Loading…
Reference in New Issue
Block a user