Commit Graph

1202 Commits

Author SHA1 Message Date
Axel Dörfler
bde8b9c6e0 * Layers are now put into an application wide token space that mirrors the
client's token space.
* finding layers by token is now O(1) instead of O(n) (as they are looked
  up in the token space).
* removed Layer::FindView() as it's no longer needed (or should be used).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15113 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-11-24 13:14:49 +00:00
Axel Dörfler
46b7964e5c Got rid of "cnt" debugging stuff.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15110 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-11-24 12:22:55 +00:00
Axel Dörfler
343e4ff465 Got rid of fAdFlags whatever that was meant to be.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15109 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-11-24 12:21:07 +00:00
Axel Dörfler
5ed0556236 * Got rid of the frightening Layer::fCurrent/RootLayer::fWinBorderIndex as well as
NextChild() and PreviousChild() - the current WinBorder list is now rebuilt on every
  change; this is not perfect, and only a temporary solution (but cleaner than the
  previous one).
* Introduced Layer::PreviousLayer()/NextLayer() methods that return the previous resp.
  the next sibling.
* Moved {show|hide}_winBorder() into {Show|Hide}WinBorder() and got rid of the former.
* Renamed Layer::fServerWin to fWindow.
* removed some unused stuff, minor cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15108 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-11-24 12:19:11 +00:00
Axel Dörfler
5a67ef6634 Removed broken Layer::LayerAt() semantics (for recursive == false),
and introduced a RootLayer::_ChildAt() that is used instead.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15097 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-11-23 22:01:49 +00:00
Axel Dörfler
a8d44b6fea Quick fix for the broken focus changing I introduced earlier.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15096 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-11-23 21:52:36 +00:00
Axel Dörfler
6450b76dd4 Next big step in the event handling:
* RootLayer's mouse event processing is now at its minimum - the
  EventDispatcher handles them now. As a result, a window will now
  get only one message per event.
* RootLayer adds "_view_token" to mouse moved messages that specify
  the view currently under the cursor.
* There is now a mouse event layer in RootLayer that gets preferred
  when it's set - this is now used for the window moving instead of
  the previous mechanism.
* changed the previous DistributeMessage() to an UnpackMessage()
  method following Adi's suggestion.
* caveat: some things might be functionally broken in RootLayer now
  because of removing the mouse notification stuff.
* "be:transit" handling is now done completely client side by
  BWindow::_SanitizeMessage(() (similar to what the input_server does).
  This should also make the mechanism pretty robust, since every
  B_MOUSE_MOVED message can now trigger the view transit (in case a
  message is lost). B_WINDOW_ACTIVATED messages should be generated
  client side as well.
* renamed AS_LAYER_GET_MOUSE_COORDS to AS_GET_MOUSE as it's not a
  layer specific command, and also gets the mouse buttons.
* B_MOUSE_* messages from the up server now contain only a "screen_where"
  field; "where" (in window's coordinates) and "be:view_where" are
  added in BMessage::_SanitizeMessage().
* messages that don't have a valid target in the looper are now
  dropped instead of being sent to the looper - this should be done
  in BLooper as well, though.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15087 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-11-23 15:17:58 +00:00
Axel Dörfler
876a3803df * removed adding "be:transit" stuff in the EventDispatcher - this is now only done
client side (or will be, with the next commit).
* added GetMouse() functionality.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15084 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-11-23 11:27:09 +00:00
Axel Dörfler
b361534e3c Filter out some fields in the message that we may set ourselves.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15078 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-11-22 20:34:02 +00:00
Axel Dörfler
b095201503 * changed the way a message is forwarded to the focus view (instead of adding
a suspend focus field to the message, there is now a "feed focus" field in
  case the message should be forwarded).
* added a comment to the BPoint version of _FindView() (since it's broken)
* _DistributeMessage() is now called after _DetermineTarget() - so that it
  can prevent sending the message twice to the focus view.
* removed BWindow::DoUpdate() as it's no longer used.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15066 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-11-22 12:49:35 +00:00
Axel Dörfler
82d8744887 * now all event targets of the focus window get into the focus list - that
way, we always send only one message per event, no matter how many targets
  there are in the window (the focus event list was not always maintained
  correctly before, too).
* the current mouse filter eats all B_MOUSE_UP events, and therefore, the
  temporary event targets were never removed.
* changed the way BWindow::_DistributeMessage() recognizes if it should forward
  the event - not yet final, though.
* naming is now more consistent (events -> event_mask).
* some minor cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15058 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-11-21 16:25:23 +00:00
Axel Dörfler
51a16ce830 No longer needed.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15049 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-11-20 17:26:25 +00:00
Axel Dörfler
4ceb1e519c * reverted Adi's premature changes to BWindow and restored _DetermineTarget() and
task_looper() again.
* removed BMessenger::fPreferred - whenever you had to specify "usePreferred" separately,
  you don't have to do that anymore - use B_PREFERRED_TOKEN instead.
* fixed BTokenSpace::GetToken() semantics: it will no longer touch the "object" argument
  in case of failure.
* Introduced a BWindow::_DistributeMessage() that will be part of the event dispatcher
  counterpart to the app_server (the other will be _DetermineTarget()).
* Made it easier to use Michael's Message4 implementation: just add the following line
  to your UserBuildConfig:
	AppendToConfigVar DEFINES : HAIKU_TOP src : USING_MESSAGE4 : global ;
* Introduced ServerWindow::HandlerMessenger() and FocusMessenger() - the first will
  target the client handler, while the other will target the preferred handler of the
  client looper (usually the view having focus).
* Fixed dano message unflattening in the Message4 code.
* Changed BMessage::PrintToStream() to no longer use macros in the Message4 implementation.
* I hope that's all - it's a huge change, but it's all connected.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15046 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-11-20 16:24:23 +00:00
Axel Dörfler
d1071ff01b Removed Utils.cpp - it's not really useful anymore.
Note, I temporarily kept the Utils.h in, because I have other local changes to be
committed soon (sorry for this, but it shouldn't harm).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15043 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-11-20 16:09:16 +00:00
Axel Dörfler
ae3ba51fc1 Some minor fixes.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15042 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-11-20 16:03:11 +00:00
Axel Dörfler
ece36066af Removed third argument from calls to ServerWindow::SendMessageToClient() - it's predefined
to "false" anyway, and will be removed shortly.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15041 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-11-20 15:52:48 +00:00
Stephan Aßmus
b223f78041 fixes origin and scale handling, it behaves mostly like R5 now (it is used for drawing only, yes not mouse coords or anything else). Also fixes offscreen layers clipping rebuilding when the user defined clipping is added or changed
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15040 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-11-20 15:10:18 +00:00
Adi Oanca
2899b880f6 Uncommented a correct piece of code. B_FRAME_RESIZED/MOVED are sent more accurately. Renamed AddToViewsWithInvalidCoords, SendViewCoordUpdateMsg into _AddToViewsWithInvalidCoords, _SendViewCoordUpdateMsg.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15036 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-11-19 21:16:57 +00:00
Adi Oanca
8e81fc4919 Some cleanup. Removed do_Hide, do_Show and do_CopyBits
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15034 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-11-19 18:25:27 +00:00
Axel Dörfler
55d6d70ee5 * EventDispatcher::AddListener() now honors the BView semantics and will only
update the options in case the specified eventMask was zero.
* Added missing EventDispatcher::RemoveTemporaryTarget().
* Layers setting their event mask are now added to the EventDispatcher.
* The RootLayer is no longer contacted for SetEventMask() - it still handles
  SetMouseEventMask(), tough - as a result, SetEventMask() temporarily doesn't
  work anymore.
* Added Layer::ViewToken() method.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15023 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-11-18 15:50:30 +00:00
Ingo Weinhold
63ea9a2870 Missing "using std::nothrow".
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15021 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-11-18 14:20:38 +00:00
Axel Dörfler
6b95c59bd8 Renamed myRootLayer variable to rootLayer.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15019 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-11-18 13:56:35 +00:00
Axel Dörfler
fa26723bb2 * Moved workspace keyboard switch and dump screen capability from RootLayer
into a Desktop keyboard filter.
* Removed keyboard handling code from RootLayer and Layer.
* Renamed Desktop::ActiveRootLayer() to RootLayer() as there is only one
  root layer per desktop.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15018 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-11-18 13:51:32 +00:00
Axel Dörfler
f68598780e * the keyboard events are now using the new EventDispatcher, B_KEYBOARD_EVENTS don't
work yet, though, as the dispatcher is not yet notified about those.
* no more mouse cursor jumping - the cursor will now start in the middle of the screen;
  this should be part of the initial input_server handshake, though.
* ServerWindow can now return a BMessenger of its client window.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15017 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-11-18 13:21:07 +00:00
Axel Dörfler
8d8f5950d0 Some cleanup, mostly GetHWInterface() to HWInterface().
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15016 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-11-18 12:26:20 +00:00
Axel Dörfler
1b120ea94a Turns out there were a couple of problems:
* RootLayer still set the mouse cursor...
* mixed up "x" and "y" in the cursor thread
* but that didn't get noticed, as B_RELEASE_ALL doesn't seem to work
  (will look into that next)!

The cursor finally works as good as expected in Qemu :-)


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15013 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-11-18 11:50:34 +00:00
Axel Dörfler
f759822327 * the new input event dispatcher is now actually used, although it doesn't
distribute any messages to the clients yet.
* removed the working thread from RootLayer - for now, its event handlers are
  still called using input filters in the new event dispatcher, though (to
  get things started).
* ServerApp is now using a BMessenger to identify its client, and no longer
  stores the port/token separately.
* the input_server handshake is a bit simpler now, as it can now just reply
  to the app_server message, removed unused code from ServerProtocol.h
* calmed down the MultiLocker (it always printed thread statistics on startup,
  because it's compiled in debug mode).
* removed the cursor thread stuff from AppServer.cpp
* the new event dispatcher now uses a cursor thread when supported (only in
  native mode, not in the test environment), although it improves cursor
  movement under Qemu, the effect is not as good as expected - this might
  need some more investigations (might just be a thread priority problem).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15012 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-11-18 11:30:06 +00:00
Axel Dörfler
b9e43e2c12 Just another manager - not yet used, though.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15011 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-11-18 09:43:37 +00:00
Axel Dörfler
0307fbb17d Implemented support for Set[Mouse]EventMask() functionality - still untested, though.
Also supports the B_SUSPEND_VIEW_FOCUS options, B_NO_POINTER_HISTORY is not yet there,
and B_LOCK_WINDOW_FOCUS has to be implemented somewhere else (its outside of the
scope of this class).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15007 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-11-17 18:46:55 +00:00
Axel Dörfler
0e29f57a22 Fixed the app_server build in the test environment.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15005 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-11-17 18:43:08 +00:00
Axel Dörfler
afe5450a83 * Fixed the most obvious copy&paste bugs.
* no longer allocates focus messengers on the heap but keeps them around.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14992 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-11-17 16:08:04 +00:00
Axel Dörfler
08f35604b0 The basics of the new event handling - not yet connected to anything, and therefore
neither used nor tested. It's not even complete yet (support for Set[Mouse]EventMask()
is missing), but it will get there :)


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14990 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-11-17 14:58:19 +00:00
Axel Dörfler
6226d5f7cd The Desktop's message port now gets the same name as its looper.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14988 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-11-17 14:56:12 +00:00
Axel Dörfler
aabcf63973 When using "Message4", we don't need to flatten the BMessage into another buffer anymore.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14956 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-11-16 14:34:56 +00:00
Stephan Aßmus
02ed46b0de * fixes the cursor handling after Axels changes, it crashed on real HW.
Axel, I think you didn't realise that _CursorFrame() gave and
invalid BRect for fCursorVisible=false, but that rect was used
to create the backup area, so it was buggy at that place. I removed
your checks for fCursorVisible in SetCursor() for cleaner code, but
left it in MoveCursor() because it might save a few cycles.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14954 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-11-16 10:29:06 +00:00
Axel Dörfler
6c17d02551 * Introduced a new handshake between input_server and app_server, and some
temporary handling code in the app_server.
* RootLayer no longer creates the input_server messaging port - this is now
  the responsibility of the input_server.
* Moved AS_CREATE_[OFFSCREEN_]WINDOW from ServerApp::_MessageLooper() to
  _DispatchMessage().
* The RootLayer thread is now started as soon as the input_server is there.
* removed or disabled any input_server stuff in the AppServer class.
* removed old message commmands to the app_server.
* Removed the R5_CURSOR_COMM and HAIKU_APPSERVER_COMM definitions: the
  input_server is now automatically built correctly depending on the target.
* InputServer::EventLoop() plays now safe and checks for error conditions.
* InputServer::EnqueueDeviceMessage() seems to leak memory, added TODO about
  this.
* InputServer event loop messaging uses ports for inner-app communication - why?
* The InputServer event loop thread is no longer killed on exit, it just quits
  when its port is gone.
* Minor cleanup in input_server.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14949 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-11-15 19:59:53 +00:00
Axel Dörfler
af8899c4bf Added support for not visible cursors - defaults to invisible now!
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14948 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-11-15 19:50:19 +00:00
Stephan Aßmus
8f90c77db9 a quick fix for offscreen layers drawing region, ie BitmapDrawing works again
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14937 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-11-15 11:18:33 +00:00
Stephan Aßmus
a7ab4a2642 fix activation of windows
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14933 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-11-15 01:42:58 +00:00
Axel Dörfler
f375b21da5 Forgot to remove IPoint.h - it's no longer needed.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14926 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-11-14 19:48:16 +00:00
Axel Dörfler
be05d56c7e * the app_server now uses a global token space - this should later be changed to
have different token spaces depending on the scope of its objects.
* removed TokenHandler - we're now using BTokenSpace instead.
* removed unused IPoint.cpp - if we ever need it again, it can still easily be
  resurrected from the dead.
* some cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14925 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-11-14 19:46:20 +00:00
Axel Dörfler
614de12d9c * the decorator knows best which region to update when changing the title, so
it must now fill the updateRegion parameter of SetTitle().
* WinBorder::SetName() is now greatly simplified and achieves better results
  due to that.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14923 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-11-14 18:16:01 +00:00
Adi Oanca
9a3090b0ed this fixes the problem Axel signaled with the OK button in terminal's about box
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14922 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-11-14 18:10:54 +00:00
Axel Dörfler
a436bab2da Renamed fVisible2 and fFullVisible2 to fVisible and fFullVisible.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14921 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-11-14 17:56:51 +00:00
Axel Dörfler
5df853ea79 * Renamed Layer::GetWantedRegion() to GetOnScreenRegion().
* minor cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14920 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-11-14 17:50:39 +00:00
Axel Dörfler
618c515c4c * pruned Layer::PruneTree()
* the Layer destructor now deletes all of the layer's children
* WinBorder no longer has to delete its top layer, as it's also its child.
* minor cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14919 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-11-14 17:39:33 +00:00
Axel Dörfler
b66d753712 * Prepared the BScreen and BPrivateScreen class to be used with multiple monitors.
* BPrivateScreen now buffers its frame for 0.1 seconds (so that calling it several
  times in a row is both consistent and cheap).
* Added GetFrameBufferConfig() call to the HW interface (and implemented it).
* Added server commands AS_VALID_SCREEN_ID, AS_GET_NEXT_SCREEN_ID, and
  AS_GET_FRAME_BUFFER_CONFIG.
* BPrivateScreen::BaseAddress() and BPrivateScreen::BytesPerRow() are now working.
* minor cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14915 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-11-14 14:36:12 +00:00
Axel Dörfler
d9525baaf5 * Forgot to update Screen.h with the last commit...
* Introduced and implemented AS_GET_SCREEN_ID_FROM_WINDOW - it only returns B_MAIN_SCREEN_ID,
  though.
* renamed ServerWindow::fHandlerToken to fClientToken.
* The BScreen(BWindow *) constructor now really asks the server for the screen ID.
* ServerApp::fWindowList is now a BObjectList.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14910 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-11-14 12:08:21 +00:00
Axel Dörfler
a817d6ad5a * (tried to) implemented RootLayer::ResizeBy() and activated AS_SET_SCREEN_MODE again;
it works in the test environment, but I haven't yet tested it on real hardware.
* moved PrivateScreen.h to src/kits/interface/ - it's not used outside of that one.
* moved reading the color map from the BPrivateScreen constructor to the ColorMap()
  method.
* improved/cleaned server/client communication for the screen stuff a tiny bit.
* fixed the GetBitmap() method I implemented yesterday.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14908 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-11-14 11:01:02 +00:00
Stefano Ceccherini
d2718b5d34 we write family and style as an uint32, so we should read it as an uint32 too
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14906 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-11-13 21:54:41 +00:00
Axel Dörfler
8bd2c11fc4 Moved the declaration of roundf() to HaikuBuildCompatibility.h - it's missing from
math.h but exported by libroot.so.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14903 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-11-13 19:43:42 +00:00
Axel Dörfler
8b794301de Changed the way the app_server is built:
* no more libappserver.so - this breaks the "Appearance" application, but that
  has to be fixed some day later.
* the drawing stuff is now built in its own directory as libasdrawing.a.
* TEST_MODE defaults to "0" if not defined yet - it's overridden in the test
  build now, not in the main build.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14896 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-11-13 15:40:21 +00:00
Axel Dörfler
96709e443e One more now superfluous roundf() removed.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14895 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-11-13 14:09:55 +00:00
Michael Lotz
cf10934e5f Introducing Message4. The changes to the related sources are ifdefed with USING_MESSAGE4 which is defined in Message4.h. To use Message4 the Message4.cpp, Message4.h, MessageUtils4.cpp, MessageUtils4.h and MessagePrivate4.h have to be linked to their counterparts without 4 suffix. Then MessageBody.cpp and MessageField.cpp have to be commented out in the app kit Jamfile and r5_message.cpp has to be added. There remain some bugs to be found. Feel free to change that.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14882 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-11-13 11:31:07 +00:00
Stephan Aßmus
4cfc480f5d no longer valid with new way of setting user clipping
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14881 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-11-13 00:24:37 +00:00
Ingo Weinhold
758b1d0e05 Fixes that make Haiku build with gcc 4. Mainly out of the following
categories:
* Missing includes (like <stdlib.h> and <string.h>).
* Linking against $(TARGET_LIBSTDC++) instead of libstdc++.r4.so.
* Local variables shadowing parameters.
* Default parameters in function definitions (as opposed to function
  declarations).
* All C++ stuff (nothrow, map, set, vector, min, max,...) must be imported
  explicitly from the std:: namespace now.
* "new (sometype)[...]" must read "new sometype[...]", even if sometype is
  something like "const char *".
* __FUNCTION__ is no longer a string literal (but a string expression), i.e.
  'printf(__FUNCTION__ ": ...\n")' is invalid code.
* A type cast results in a non-lvalue. E.g. "(char *)buffer += bytes"
  is an invalid expression.
* "friend class SomeClass" only works when SomeClass is known before.
  Otherwise the an inner class with that name is considered as friend.
  gcc 4 is much pickier about scopes.
* gcc 4 is generally stricter with respect to type conversions in C.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14878 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-11-12 23:27:14 +00:00
Ingo Weinhold
56436a1ab8 GCC 4 fix. Might have changed the semantics, but I refuse to hurt
my brain by trying to understand code using gotos. People, learn
structured programming!


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14870 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-11-12 17:49:05 +00:00
Stefano Ceccherini
25922abe74 reduced the directwindow semaphore timeout to half a second. Now we checks for < B_OK in the semaphore acquisition, to handle every error condition
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14860 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-11-12 11:00:57 +00:00
Axel Dörfler
2b7b3ade5c Added more or less empty "begin/end transaction" handling in ServerWindow.
Right now, only the updates are disabled as a start. I am not sure what else
we can do here, but there probably is something :-)


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14855 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-11-11 14:25:12 +00:00
Axel Dörfler
dfd5b49996 * last change set window title to "Unnamed Window" if the title was empty - but
that's probably not wanted, as a window without a title is perfectly okay.
* AS_CREATE_WINDOW will now return a proper error code on failure.
* The title read from the link is no longer adopted by the ServerWindow constructor,
  but copied - while the previous version was a bit faster, this is a lot cleaner.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14851 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-11-11 13:06:22 +00:00
Axel Dörfler
13e525e302 WinBorder::SetName() now also triggers rebuilding the decorator region - IOW BWindow::SetTitle()
should now work as expected.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14849 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-11-11 11:03:33 +00:00
Stefano Ceccherini
df555388b9 Don't look for bugs in other people's code. The bug is in your code. IOW BDirectWindow apps now work fine :)
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14848 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-11-11 00:45:45 +00:00
Stephan Aßmus
c5522d81d8 * added SetUserClipping() and DrawingRegion(), which is used for
handling client defined clipping. The client clipping stays in local coords,
  which greatly simplyfies things. We ought to find a way to reduce the number
  of regions needed per Layer. I just added another one...
* renamed a few "lay"s to "child".
* used the new client added clipping in ServerWindow


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14847 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-11-11 00:19:32 +00:00
Stephan Aßmus
41f78f7884 the current clipping is the combined user defined clipping from all previous states
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14846 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-11-11 00:14:58 +00:00
Stefano Ceccherini
b2cc1487d1 Send notifications for directwindow when a window is moved
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14843 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-11-11 00:10:03 +00:00
Axel Dörfler
8f5f0ec4b1 * fixed case for WinBorder::MouseDown() if there is no layer below the mouse - might
not even be a valid condition, but seems to happen.
* style cleanup...


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14841 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-11-10 22:30:43 +00:00
Adi Oanca
e2ad4ab9b2 Not in mood for too much coding, I had a look through the code tonight. And guess what? Like Stefano
the other day, I discovered, not a bug, but how to invalidate only the area that requires it when
changing window order (selecting or moving to back a window). Stuppid me, that stuff didn't worked
because I forgot how windows were arranged in the list returned by Workspace::GetWMState(). I was
iterating the wrong way! :-)



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14839 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-11-10 21:52:59 +00:00
Axel Dörfler
0964291534 Added message filter to the CardView; it now intercepts all messages, so that "Command-Q"
will no longer quit the haiku_app_server, but the application running in the server.
"Print Key" now also works as expected.
Only switching workspaces continues to use "Control-Fx" in the test environment. Under
Haiku, it now uses "Command-Fx" as on BeOS.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14834 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-11-10 18:37:55 +00:00
Axel Dörfler
c12196d47b * Removing fonts now works as expected.
* removing a font family or style now always goes through the font manager.
* removed FreeType "cache" remains (it wasn't used, anyway, and won't be used
  by us).
* renamed SharedObject to ReferenceCounting as that's what it does.
* the default fonts weren't deleted on shutdown.
* added temporary work-around for waiting until a newly created entry is complete
  (just waits a moment...) - this will be fixed once Haiku supports this in a
  better way.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14833 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-11-10 17:32:35 +00:00
Axel Dörfler
831a01f893 FontStyles are now also orded, but not alphabetically: their faces determine
the order, regular fonts come first, then bold, and then italics.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14828 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-11-10 15:48:37 +00:00
Axel Dörfler
36a37b76d6 The font family list is now sorted - besides the obvious advantage for the user,
this also allows binary searching the families (which is now done, too).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14826 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-11-10 15:33:18 +00:00
Axel Dörfler
2522a90fd1 Even more font stuff:
* the node monitor is now working - fonts can only be added yet, though
* deleting a FontFamily did not work before, as the last style to be
  removed tried to delete the family again.
* "luckily", FontFamilies and FontStyles were not deleted at all before.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14824 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-11-10 14:52:26 +00:00
Axel Dörfler
174b20a89a Adds the concept of owning the table entries - before, they were always owned,
now it defaults to not-owning.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14823 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-11-10 14:49:24 +00:00
Stephan Aßmus
5211328a37 turn off on-screen debugging for now, the errors it reported are not that critical, and printing the debug info itself could lead to problems
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14820 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-11-10 13:38:22 +00:00
Stephan Aßmus
0d660a960b handle errors when reading from the link, at least for the bigger items, it should be enough to just check the error in the last call to Read(), since previous errors are kept in the Link
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14819 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-11-10 13:37:08 +00:00
Axel Dörfler
7c3d8ad0c7 * added a call to png_set_strip_alpha() which could fix the alpha channel
problem we're seeing (at least I couldn't reproduce the problem anymore).
* SaveToPNG() now returns an error code.
* cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14813 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-11-09 23:52:27 +00:00
Adi Oanca
76d68e8ad8 More cleanup.
* moved code from Layer::do_MoveBy/do_ResizeBy/do_ScrollBy into
Layer::MoveBy/ResizeBy/ScrollBy()
* removed do_Move/Resize/ScrollBy()
* removed WinBorder::_ResizeBy()




git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14810 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-11-09 20:14:52 +00:00
Axel Dörfler
90dfa70739 * ServerFont now also adopts the FontStyle's face and direction on
construction.
* ServerFont::SetStyle() now adopts the style's face and direction, too.
* Started a more sane handling of ServerFont::SetFace() (at least there's
  a to-do comment :-)).
* Minor cleanup (GetStyle() -> Style(), GetFamily() -> Family(),
  GetPath() -> Path()).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14809 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-11-09 20:10:40 +00:00
Axel Dörfler
2fe84ae95f Now AS_GET_DEFAULT_SYSTEM_FONT actually returns the default font as used
by the app_server (ie. also if it's a fallback font).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14805 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-11-09 19:22:21 +00:00
Axel Dörfler
974dd00c85 The font manager now has default fonts for bold/fixed as well - these are now used
in the DesktopSettings as defaults, too (but can be changed there).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14804 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-11-09 19:16:25 +00:00
Axel Dörfler
16f782ccbd Implemented AS_SET_SYSTEM_FONT.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14803 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-11-09 19:14:13 +00:00
Axel Dörfler
d0a688ee92 Introduced and implemented new font command AS_GET_DEFAULT_SYSTEM_FONT that returns
the default fonts of the app_server.
Moved some font command implementations around to group them a bit better.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14800 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-11-09 18:34:48 +00:00
Stephan Aßmus
2b97fe884d now updates BView::PenLocation() correctly after DrawString(), stuff like DrawChar('a') is working nicely now, for rotated text much better then in BeOS in fact because of subpixel precision in pen location
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14794 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-11-09 16:55:08 +00:00
Stephan Aßmus
f8e33ed5bd fixed current pen position, thanks to Stefano for spotting this one, I looked very hard in the same place, but didn't see it :-)
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14787 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-11-09 13:28:15 +00:00
Stefano Ceccherini
ba48e86927 Removed leftover
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14786 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-11-08 23:55:27 +00:00
Stefano Ceccherini
e16b3f2972 friend is bad. Protected, even.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14785 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-11-08 23:48:13 +00:00
Axel Dörfler
e3343885bb Even if Adi really don't like it, it's perfectly okay to resize or move a layer before
adding it to its parent.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14784 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-11-08 23:48:06 +00:00
Stefano Ceccherini
8fbbd37f83 Added some code for notifying client BDirectWindows that the window was moved or resized. Currently commented because of other problems. Looks like the windows bounds are not changed if a MoveBy() is called before the window is shown. Removed unneeded includes. Small changes
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14783 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-11-08 23:26:47 +00:00
Stefano Ceccherini
602d0ba42c Remove IPoint.cpp from the build as no one needs it
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14782 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-11-08 23:25:31 +00:00
Axel Dörfler
d08f8a6e68 Upon construction, the font is not locked by the drawing engine, so we better lock it ourselves.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14781 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-11-08 19:29:05 +00:00
Axel Dörfler
5e4d267b5e The FontStyles are already deleted when deconstructing the family list - the
styles hash table shouldn't try to delete them again.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14780 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-11-08 19:04:01 +00:00
Adi Oanca
02414ebd4e Cleanup.
* removed old Convert{To|From}{Parent|Top} methods. They were replaced by
Convert{To|From}{Parent|Screen}(type *data)
* removed some unused methods from Layer class.
* re-aranged Layer's class declaration - grouped methods
* made all Layer's members private.
* renamed a few private methods from method_name _MethodName




git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14778 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-11-08 17:38:07 +00:00
Axel Dörfler
ec9b3f7ca1 The font manager now utilizes a hash table to look up fonts by ID.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14777 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-11-08 16:49:33 +00:00
Stefano Ceccherini
0266d3fd18 Made ServerWindow::_HandleDirectConnection() a public method. It will be called from WinBorder too.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14773 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-11-08 08:32:32 +00:00
Axel Dörfler
3a222bcbec Adi's changes broke layer resizing before they are attached to the layer hierarchy.
Also fixed a drop into the debugger when starting Tracker: fRootLayer is now NULL
in the constructor of WinBorder - which is not fatal, as we only wanted to get
the screen size (which was formerly managed by RootLayer).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14772 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-11-08 01:39:59 +00:00
Stephan Aßmus
971ed3de1e * origin in DrawState is now the summed up origin, when setting it,
use the origin from the previous state as a start
* this fixes scrolling again (minus redrawing too much stuff,
  this is left for Adi :-)


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14770 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-11-08 01:16:15 +00:00
Adi Oanca
d4e4f29a42 Cleanup after the old clipping code. Removed a few methods as others took their place. More cleanup to follow on tomorrow. :-)
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14764 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-11-07 21:24:53 +00:00
Adi Oanca
2c8cfe2dfc Bye-bye old clipping codesvn update Some cleanup to follow.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14760 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-11-07 19:01:12 +00:00
Adi Oanca
d7467f6923 Fixed resize limits problem
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14758 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-11-07 18:09:49 +00:00
Axel Dörfler
474f33d137 Added missing header, applied style guide.
This file should probably still removed one day, or at least most of its functions
should either go away or somewhere else.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14754 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-11-07 17:16:09 +00:00
Axel Dörfler
91c82a4957 Added missing newline.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14753 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-11-07 17:00:36 +00:00
Axel Dörfler
e37155c670 * The font list is now cached client-side. The app_server is only queried for
updates.
* Optimized retrieving the font list from the server.
* This greatly simplifies the app_server communication for getting the font
  list as well - there are now only 2 commands instead of 6.
* Moved extra font flags creation from ServerApp to FontStyle::Flags().


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14751 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-11-07 16:19:40 +00:00
Ingo Weinhold
ca9e5772c3 * Reintroduced third LinkAgainst parameter <mapLibs>, defaulting to true.
Library names are now mapped for all targets but "host" (not only for
  "haiku") -- added one more level of indirection to achieve that.
  (TARGET_LIBRARY_NAME_MAP -> *_LIBRARY_NAME_MAP_*).
* Renamed build/HaikuBuildCompatibility.h to BeOSBuildCompatibility.h
  (auto-included when compiling something that uses the Be API for platform
  "host" on anon-BeOS platform), and introduced build/HaikuBuildCompatibility.h,
  which can be included when compiling something that can be built for both,
  Haiku and BeOS compatible platforms.
* Introduced libhaikucompat.a, a library that adds a few functions existing
  under Haiku, but not under BeOS.
* New rule AddSubDirSupportedPlatforms.
* Renamed libopenbeos.so to libbe_haiku.so.
* Introduced new target platform "libbe_test", which is basically equivalent
  to a BeOS compatible host platform target, with the exception, that instead
  of the host platform's libbe.so a special build of Haiku's libbe.so
  (libbe_haiku.so (formerly known as libopenbeos.so)) is used. Furthermore
  Haiku's public app, interface, storage, and support kit headers are used
  when compiling. This replaces the less nice way in which the test app server
  and applications for this test environment were built.
  When building for platform "libbe_test", the library name "be" is
  autotranslated to "libbe_haiku.so". Thus most applications don't need
  special fiddling when them building them for the app server test environment;
  usually an "AddSubDirSupportedPlatforms libbe_test ;" will suffice.
* Reduced the dependencies of <syscalls.h> and fixed problems caused by this
  (e.g. source files not including the needed headers directly).



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14749 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-11-07 16:07:25 +00:00
Axel Dörfler
b2cc345461 More font work:
* Simplified server communication a bit: instead of separate queries for font
  direction, "is fixed", ... there is now a private extra flags field that is
  filled on demand.
* The server command names now describe what the command does, and are not simply
  named after the BFont method (AS_SET_FAMILY_AND_STYLE vs. AS_GET_FAMILY_AND_STYLE_IDS).
* Replaced B_SET_SYSFONT_{PLAIN|BOLD|FIXED} with a single B_GET_SYSTEM_FONTS.
* Rewrote Font.h and added our license.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14741 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-11-07 11:02:39 +00:00
Stephan Aßmus
0118ad76e1 * Painter uses the line_cap and join_mode settings of DrawState
* Painter implements DrawShape for stroking and filling BShape data
* Painter uses clipping to avoid problems with huge coordinates, the R5 app_server can be crashed by this.
  -> this should be added to more places as well like text rendering
* DrawingEngine uses the Painter to draw BShape data


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14735 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-11-07 01:23:40 +00:00
Stephan Aßmus
b574c74121 opList is uint32
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14733 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-11-07 01:17:40 +00:00
Stephan Aßmus
7dd038f405 calling _ResizeBy with zero offset doesn't do anything
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14731 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-11-07 01:16:12 +00:00
Stephan Aßmus
19ae7ecce0 sorry, forgotten in previous commit
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14730 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-11-07 01:14:47 +00:00
Stephan Aßmus
a38aedd980 no longer needed, moved to painter test folder
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14729 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-11-07 01:13:12 +00:00
Stephan Aßmus
f9129d56a7 updated license header
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14728 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-11-07 01:11:58 +00:00
Stephan Aßmus
c00fc4e31a default to B_MITER_JOIN too
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14727 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-11-07 01:11:02 +00:00
Axel Dörfler
86ad4b9c5e First steps into on-demand font scanning. When you've installed lots of fonts, this
will speed up launching the app_server considerably (once it's done).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14720 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-11-06 18:58:09 +00:00
Adi Oanca
ac4f06c5c6 Fixed invalidation with new clipping code. Only what's needed is
redrawn/invalidated now, with a single exception which I am working
on(when changing the front window the whole window area is invalidated
not just the region that became visible). The old Clipping code is broken
now. I will remove it in the next days.

Actual changes:
* removed Layer::GetWantedRegion() - was badly implemented.
* made Layer::_GetWantedRegion public and renamed it to: you guessed! :-)

* introduced Layer::MarkForRebuild(), TriggerRebuild(). You want to
calculate the new clipping regions, mark an area and then call
TRiggerRebuild() which will rebuild the visible regions for the current
Layer and all its descendants.

* for a Layer to redraw some parts of it, use
RootLayer::MarkForRedraw() to mark a region and then
RootLayer::TriggerRedraw() to see the changes (or send _UPDATE_ message in
case of a WinBorder).






git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14719 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-11-06 17:47:06 +00:00
Marcus Overhagen
4b1aabf67e I don't know why, but when starting Tracker there is no root layer here
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14717 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-11-05 21:24:51 +00:00
Jérôme Duval
428ebf6d5f myRootLayer can be NULL for offscreen bitmaps, fixes crash on Media preferences
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14711 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-11-04 22:48:51 +00:00
Stephan Aßmus
b2f2cb6203 simplified coordinate conversion from/to screen by removing duplicated code, Adi was there a reason to check for RootLayer before conversion or was this left-over?
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14709 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-11-04 19:51:38 +00:00
Stephan Aßmus
d79939116c fixed build for old clipping
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14708 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-11-04 19:50:34 +00:00
Stephan Aßmus
e7869c4c74 renamed DisplayDriverPainter to DrawingEngine, removed tons of duplicated code, and - guess what - found some bugs while doing so... but nothing critical. This patch removes the former DisplayDriver API from libappserver.so, which I think breaks Decorator plug-ins for now
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14707 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-11-04 18:22:22 +00:00
Marcus Overhagen
f38c001e56 Assigned names to "some BLocker"s to aid debugging.
Small cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14703 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-11-04 16:56:15 +00:00
Stephan Aßmus
6ed894182f renamed DisplayDriverPainter.* to DrawingEngine.*
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14695 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-11-04 15:54:16 +00:00
Stephan Aßmus
58468dfed0 first step of geting rid of abstract DisplayDriver base class for less development overhead, DisplayDriverPainter is renamed to DrawingEngine
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14694 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-11-04 15:23:54 +00:00
Stephan Aßmus
13cff625f0 cleanup and removable of large portions of code duplication, fCurrentLayer and fCurrentLayer->CurrentState() are checked in _DispatchMessage already, so _DispatchGraphicsMessage() assumes they are valid
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14691 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-11-04 13:45:16 +00:00
Stephan Aßmus
55e764c7f6 update license
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14690 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-11-04 13:41:44 +00:00
Stephan Aßmus
e422da6973 fix build for old clipping
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14688 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-11-04 13:39:12 +00:00
Axel Dörfler
962b688433 Forgot to update Layer::Scale(), too.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14687 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-11-04 13:27:41 +00:00
Axel Dörfler
cb24f13bb0 The current graphics state of a Layer can now be retrieved by the new CurrentState() method.
ServerWindow is now using that method instead of directly accessing a Layer member.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14684 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-11-04 12:15:36 +00:00
Axel Dörfler
2c2fd7b237 Fixed scale calculation. The scaling is still ignored for the drawing coordinations.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14682 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-11-04 12:01:44 +00:00
Axel Dörfler
1be1c7ccdf Fixed (again) the crash that happened when you quit the app_server in the test environment.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14681 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-11-04 11:57:43 +00:00
Axel Dörfler
aca4f50d1e Merged DrawData and LayerData to one class DrawState.
Removed that ambiguous second copy constructor and moved push state functionality
into a separate PushState() method. 


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14679 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-11-04 11:37:28 +00:00
Axel Dörfler
5abd5613d6 LayerData::prevState is now called fPreviousState and is now private. Added new method
PopState() to make this possible.
When a new layer is created, the font state of the desktop will now be set: this fixes
a bug I introduced when separating the font manager's default font and the desktop's
default font.
The scaling stuff looks pretty broken to me.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14675 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-11-04 09:52:56 +00:00
Axel Dörfler
7490bd32f1 Now also uses the fallback family when the usual default font couldn't be found.
This hides a problem with the view states that the next commit will fix :)


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14674 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-11-04 09:49:25 +00:00
Axel Dörfler
05bd1efe5b * the FontManager is now a looper (but doesn't do anything useful yet).
* moved the system default font functionality into the DesktopSettings class.
* ServerFont::SetStyle() is now a public method.
* Improved font fallback routines: they will never end up without a font if
  there is at least one font installed.
* fixed some minor bugs in the DecorManager.
* Decorator now get a DesktopSettings object passed - dunno if that's a good
  idea (since we'll have to open the DesktopSettings header), but it works
  for now (and something like this is probably needed anyway).
* a clean ServerFont is now set to the system default font - and not to the
  (user chosen) desktop default font anymore (since the font manager doesn't
  know about that one).
* Improved font directory scanning in the font manager a bit, it's now using
  find_directory() instead of hard-coded paths.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14666 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-11-03 17:03:36 +00:00
Axel Dörfler
8365d9ecd2 * A ServerFont is now always valid, bye-bye ServerFont::InitCheck().
* The FontFamily is no longer reference counting itself.
* SharedObject is now more useful and destructs itself when unused.
* Fixed FontStyle::GetHeight()/ServerFont::GetHeight() semantics.
* Simplified ServerFont constructors.
* Removed wrong function descriptions.
* FontStyleHeight is no longer used: the FontStyle is calculating the
  base font height on construction - this reduces the resolution a bit,
  but it's hopefully not causing any troubles (doesn't look like it,
  at least).
* A FontStyle now removes itself from its family on destruction.
* More cleanup, removed unused stuff like FontStyleHeight.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14657 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-11-03 13:10:28 +00:00
Axel Dörfler
c9ff9a39d0 ServerFont::StringWidth() did not set the size of the face, and could therefore
return wrong results. Activated it again to work-around the possible font deadlock.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14654 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-11-03 00:04:18 +00:00
Axel Dörfler
f1d3628119 Apparently, ServerFont::StringWidth() doesn't work for fixed width fonts...
Will look into this later.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14648 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-11-02 14:55:51 +00:00
Axel Dörfler
cf550035dd This works around a deadlock that frequently happened when working with menus (font stuff).
I should start investigate this one more deeply some time...


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14646 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-11-02 14:37:17 +00:00
Axel Dörfler
bdd34c028f Renamed the FontServer class to FontManager.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14642 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-11-02 13:25:39 +00:00
Stephan Aßmus
382049ca6f fix build of server for test environment
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14640 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-11-02 13:15:36 +00:00
Stephan Aßmus
26a2be8ba5 less overhead when byte count of string is already known
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14639 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-11-02 13:14:03 +00:00
Axel Dörfler
1156138b2f Removed unused files like PortMessage.cpp/h and Session.cpp/h.
Renamed LinkMsgReceiver.h and LinkMsgSender.h to LinkReceiver.h and LinkSender.h like
the classes they contain.
Split up PortLink.cpp/h into ServerLink.cpp/h and PortLink.cpp/h.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14635 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-11-02 12:55:20 +00:00
Axel Dörfler
52d97df59c The FontStyle now gives its locker a name.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14632 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-11-02 10:51:46 +00:00
Axel Dörfler
5d1bd031a2 Fixed some communication mismatches I introduced earlier: we are no longer sending
whole font_family/style strings (each 64 bytes), but only strings, because they
are usually shorter than 64 bytes.
This should fix the StyleEdit problems Stefano were seeing.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14628 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-11-02 09:50:51 +00:00
Axel Dörfler
3eba9bd8b3 Renamed the global "ftlib" to gFreeTypeLibrary.
Removed the FTC_Manager for now.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14627 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-11-02 08:55:51 +00:00
Axel Dörfler
fb2d4d51a7 Removed unused variable (copy&paste remains...).
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14626 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-11-02 08:54:56 +00:00
Axel Dörfler
6f121769ad * Added and implemented AS_GET_FONT_FILE_FORMAT - currently, it returns always
B_TRUETYPE_WINDOWS, though.
* possibly returned an uninitialized error code in some BFont methods.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14622 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-11-01 18:21:04 +00:00
Stefano Ceccherini
f3aa24ede7 Corrected the clipping region for BDirectWindow. The stripped down Stars demo now works.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14621 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-11-01 18:13:10 +00:00
Axel Dörfler
b4f34cfb95 * style and family IDs are no longer just the index in their parent's lists (as
they can disappear and IDs should stay persistent at least as long as the
  system runs).
* destroying a FontStyle discards its FT_Face again.
* the font style and family names are now truncated to the appropriate length,
  so that they can always be used via the Be API.
* (char *) == (char *) hardly compares the string (but was probably introduced
  by me when I stopped FontFamily from accessing FontStyle privates
* removed FontServer::SaveList() - made no particular sense to me.
* removed superfluous "inline" keyword in the FontStyle definition.
* more cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14619 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-11-01 17:49:01 +00:00
Axel Dörfler
b8cde4497e More font work:
* simplified BFont::SetFamily*() server communication - there is now only
  AS_SET_FAMILY_AND_STYLE left, but at least that one works correctly.
* BFont::fFace is now always updated correctly.
* Moved the fFace masking to the server - BFont doesn't know enough to do
  this correctly, anyway.
* Only one version of get_font_style() worked correctly.
* Font family/style ID and index were used completely mixed up - this
  would have become an issue as soon as the font list changes during
  runtime.
* Enabled AS_GET_FONT_DIRECTION again - missing functionality should only
  be taken into account on lowest level as long as it can be emulated.
* Made FontServer a bit clearer to use (more to come).
* fixed several allocation leaks in the font server communication.
* New FontStyle::Direction() method, that currently only returns
  B_FONT_LEFT_TO_RIGHT, though.
* more cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14618 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-11-01 16:28:01 +00:00
Stefano Ceccherini
0c378a5714 Thanks to latest changes, BDirectWindow now draws something. Though, looks like either the clipping region is wrong, or the app_server overwrites what the BDirectWindow app writes.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14610 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-11-01 09:53:47 +00:00
Marcus Overhagen
1334ab4721 just some work, made sure to preserve app_server coding style
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14608 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-11-01 01:57:52 +00:00