- replaced Layer::alter_visible_for_children with _ReserveRegions()
- simplified a bit Layer::rebuild_visible_regions()
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14335 a95241bf-73f2-0310-859d-f6bbb57e9c96
- implemented RootLayer::SetActive(WinBorder*).
- added support for BWindow::Activate(). I realize now that I only added support for Activate(true). :-D In the next days I will add support for Activate(false).
- removed a few cases from ServerWindow as they are not needed.
- addapted WinBorder::MouseDown() to work with the new RootLayer::SetActive() implementation.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14318 a95241bf-73f2-0310-859d-f6bbb57e9c96
- Added a skeleton for RootLayer::SetActive()
- removed Workspace::SetFocus(). Use AttemptToSetFocus() instead.
- properly implemented Workspace::_SetFocus().
- removed Workspace::fActiveItem - it had/has no use.
- fixed a problem with Decorator buttons being drawn improperly when
B_MOUSE_UP was generated outside their area.
- added 2 TODOs to later fix Decorator's (re)drawing path.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14295 a95241bf-73f2-0310-859d-f6bbb57e9c96
* make RootLayer::SetWinBorderWorkspaces() work under NEW_INPUT_HANDLING
define. Soon I think I'll move this method under WinBorder's hood.
* RootLayer::change_winBorder_feel() is also working under this define
** NEW_INPUT_HANDLING define is active.
If someone discovers something bad happening after this checkin please
notify me on app_server list. If in one week no major problems appear,
I'll remove this define and the old code.
Thanks.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14288 a95241bf-73f2-0310-859d-f6bbb57e9c96
names like Front|Focus|Active because in a not so later stage of
development these methods will return Layer* instead of WinBorder*
* fixed a problem where (floating) windows were not shown because their
visible regions were not cleared and taken as valid.
* fixed a bug where clicking on a border button actualy performed the
specific action instead of first activating the window.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14233 a95241bf-73f2-0310-859d-f6bbb57e9c96
now) (there will be a WindowManager class soon). We use a simple BList
now, for simplicity reasons; performance comes later :-).
* added RootLayer::RevealNewWMState() which will actualise the window list
and display/repaint differences between this state and the previous one,
including focus. It also sends B_WINDOW_ACTIVATED as appropriate. This
method removes other like get_workspace_windows(), draw_window_tab(),
winborder_activation(), show_final_scene() which were a bit confussing.
* ALL these changes are available under NEW_INPUT_HANDLING define which
isn't active yet. Soon...
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14228 a95241bf-73f2-0310-859d-f6bbb57e9c96
improved GetBoundingBoxesAsString (just for fun, keep in mind we'll use AGGTextRenderer in the end :) )
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14091 a95241bf-73f2-0310-859d-f6bbb57e9c96
now uses _GetBoundingBoxes_ for GetBoundingBoxesAsGlyphs and GetBoundingBoxesAsString
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14071 a95241bf-73f2-0310-859d-f6bbb57e9c96
Maybe the CursorManager should be used to set the cursors directly instead of using
fDesktop->GetCursorManager.FindCursor() and then fDesktop->GetHWInterface()->SetCursor()
in ServerApp.cpp.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14033 a95241bf-73f2-0310-859d-f6bbb57e9c96
signature and otherwise made the spam detection system work properly again.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@13952 a95241bf-73f2-0310-859d-f6bbb57e9c96
Moved the scanning of individual font folders to FontServer
Implemented server-side code for update_font_families
Removed ClientFontList from the build
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@13938 a95241bf-73f2-0310-859d-f6bbb57e9c96
src/tests/servers/app/Jamfile. This makes the original Jamfile much cleaner.
Note that you now have to maintain two Jamfiles when adding/removing sources.
The test app server is called haiku_app_server, its library
libhaikuappserver.so. I adjusted a few paths in scripts accordingly, but
I may have missed something elsewhere.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@13858 a95241bf-73f2-0310-859d-f6bbb57e9c96
Removed unused stuff.
The app_server now deletes itself when done (and therefore must not be
allocated on the stack anymore).
The cursor handling should be moved over to the desktop as well.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@13825 a95241bf-73f2-0310-859d-f6bbb57e9c96
creation/deletion (and management) over to that class.
ServerApp now gets a desktop pointer, and no longer uses gDesktop.
Converted private MessageLooper::_MessagePort() to a public method MessagePort()
so that the looper can be addressed from elsewhere without using PostMessage().
Added a real basic message loop to MessageLooper::_MessageLoop().
BApplication now only asks the app_server to get its desktop object which should
now be used for everything that's not in the realm of the application.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@13824 a95241bf-73f2-0310-859d-f6bbb57e9c96
* Added the respective case statement in AppServer::DispatchMessage().
The code that actually activates the app is still missing.
* Removed the remnants of the old way of notifying the registrar about
what app got activated (the activated client window did that).
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@13820 a95241bf-73f2-0310-859d-f6bbb57e9c96
class runs it, too.
No real message processing is done yet, though.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@13816 a95241bf-73f2-0310-859d-f6bbb57e9c96
the MessageLooper class - the other part is called from there as virtual
_PrepareQuit().
Moved the class documentation to the source file.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@13815 a95241bf-73f2-0310-859d-f6bbb57e9c96
be improved a bit (Quit() and _MessageLooper() are empty right now).
Removed ServerApp::PingTarget().
Hopefully cleared some confusion about ServerApp::fClientLooperPort and fClientToken
(previously fHandlerToken), even if it's currently unused.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@13807 a95241bf-73f2-0310-859d-f6bbb57e9c96
ServerWindow printed the title in its destructor after freeing it (with debug output turned on).
Calmed it down a bit, too (disabled "listening on port...").
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@13741 a95241bf-73f2-0310-859d-f6bbb57e9c96
* Moved setting the default cursor from ServerScreen to Desktop
* Getting the default cursor is now done using the CursorManager
* Removed outdated setcursor from SysCursor.cpp (we have a new implementation by now)
* Renamed SysCursor.cpp to CursorSet.cpp as that's what it is
* Moved headers/private/app/SysCursor.h to headers/private/servers/app/CursorSet.h
* Removed some unneeded header includes along the way
There remains {set|get}_syscursor now in CursorSet.cpp. Serverside for these are not implemented
and they are obvious hacks. Do we need to keep them?
Also this commit _would_ break Appearance, but 1) all the related code is currently commented out
with the comment "cursor set management belongs in another app" and 2) it is already broken
because of ColorSet.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@13726 a95241bf-73f2-0310-859d-f6bbb57e9c96
Deskbar to initiate the shutdown process asynchronously. Couldn't test it,
because opening the Be menu doesn't work:
***PANIC: BW: Can't find view with ID: 19 !***
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@13722 a95241bf-73f2-0310-859d-f6bbb57e9c96
the desktop's settings, you have to do something like this:
DesktopSettings settings(desktop);
settings.SetMouseMode(mode);
The advantage of this is that this object is fully locked, and cannot lead to
corrupted settings anymore. Also, the settings will stay the same until you
delete the object again.
Updated all accesses to use this new API.
Removed no longer used FFM messages.
Implemented AS_{GET|SET}_MENU_INFO for future use.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@13719 a95241bf-73f2-0310-859d-f6bbb57e9c96
debug_server uses this feature to print stack traces with symbols.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@13698 a95241bf-73f2-0310-859d-f6bbb57e9c96
- introduced new ScreenManager and VirtualScreen classes
- removed screen handling from RootLayer
- removed multiple screen/root layer stuff from Desktop, it's
now using a VirtualScreen object instead
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@13686 a95241bf-73f2-0310-859d-f6bbb57e9c96
one alert, when two threads of a team crash. Now we have a per team queue
of debug messages and a thread per team that processes them (that is
usually only the first one). The application class does nothing anymore.
* Implemented debugger handover:
- In case of normal apps, when the relevant servers needed for GUI are
running, we show an alert and, if requested, start a MiniTerminal with
gdb for the crashed team. I couldn't really test it, since alerts don't
seem to work, respectively crash the app server (usually both ;-).
- In case the app server crashes, we always start a consoled with gdb.
This does indeed seem to work.
A gdb attached to a team is not really useful yet, since the shared object
relocations seem to be incorrect, so "bt" is not giving any useful info.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@13684 a95241bf-73f2-0310-859d-f6bbb57e9c96
shutdown (input, app, debug server, and registrar).
* Fixed crashing bug, if the shutdown was aborted before the window was
created.
* The text of the confirmation alert depends on whether we reboot or
shut down.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@13643 a95241bf-73f2-0310-859d-f6bbb57e9c96
* When an application aborts the shutdown process by refusing to quit, the
shutdown window says so for 3 seconds before closing.
* Fixed the height of the normal buttons in the shutdown window. They
accidentially got the size of a default button.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@13564 a95241bf-73f2-0310-859d-f6bbb57e9c96
fonts are now installed as part of other data files
we still install some host fonts if found
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@13557 a95241bf-73f2-0310-859d-f6bbb57e9c96
* Implemented handling of apps blocking on modal windows.
* Fixed a few bugs.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@13539 a95241bf-73f2-0310-859d-f6bbb57e9c96
Now handles it gracefully if someone deletes its message port (it will try to close
the client and quit).
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@13511 a95241bf-73f2-0310-859d-f6bbb57e9c96
the focus border, and therefore, I probably broke floating windows (but that's
not that important right now).
Workspace::HideWinBorder() now sets focus to the next WinBorder, not always
the top one.
Workspace::MoveToFront() no longer changes focus, no longer calls ShowWinBorder()
when the window doesn't have to be moved (ie. for the desktop window).
Added Workspace::SetFocus() to change the focus explicetly.
Some other cleanup. This is an ugly patch, but refactoring/rewriting is coming
soon.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@13509 a95241bf-73f2-0310-859d-f6bbb57e9c96
asked to quit in parallel. Instead they are asked one after the other.
Played with the window to look more like the one in BeOS. The "shadow" on
the left side is still missing, but otherwise it's close.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@13496 a95241bf-73f2-0310-859d-f6bbb57e9c96
the registrar no longer depends on the app_server to be running.
Added a "run_haiku_registrar" tool that is now used in the various "run" scripts.
It only start the registrar on demand, ie. if it's not yet running.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@13493 a95241bf-73f2-0310-859d-f6bbb57e9c96
busy loop of the MessageDeliverer when the port was deleted while there
were still messages to send.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@13489 a95241bf-73f2-0310-859d-f6bbb57e9c96
in parallel, it displays the mini icons of all still running apps. Doesn't
look that great, though. Also, quitting the apps in parallel speeds up the
shutdown process, but has the disadvantage, that all apps will throw their
"Save changes...?" alerts at the user at once, which might not be a
desirable experience. I'll probably revert to the way Be did it.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@13488 a95241bf-73f2-0310-859d-f6bbb57e9c96
them if they didn't listen to B_QUIT_REQUESTED. This works much better
as how it was done before.
Now uses exit() instead of exit_thread() which makes sure no thread survives.
Note, there still is a race condition in case an application quits immediately
before shutting down the server - in that case, it doesn't participate in
the fShutdownSemaphore stuff, and therefore, the app_server could quit it
too early. Maybe I'll fix that one day, as well :)
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@13481 a95241bf-73f2-0310-859d-f6bbb57e9c96
(but should still have their own look that includes the bevel, I think).
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@13469 a95241bf-73f2-0310-859d-f6bbb57e9c96
Basic support for the desktop window feel: WinBorder will now resize
a window with kDesktopWindowFeel to span over the whole screen.
Minor cleanup.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@13462 a95241bf-73f2-0310-859d-f6bbb57e9c96
Fixed handling in ServerWindow as stippi's latest commit broke it.
It's now properly done with a separate ServerWindow::SetTitle() method,
that will also take care to rename the window's thread.
Changed naming the window thread in the app_server to "w:<team>:<title>".
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@13461 a95241bf-73f2-0310-859d-f6bbb57e9c96
Renamed Desktop::FindWinBorderByServerWindowTokenAndTeamID() to FindWinBorderByClientToken().
Every ServerWindow now gets a server token.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@13455 a95241bf-73f2-0310-859d-f6bbb57e9c96
and that put apps that used it to sleep (for example, Tracker is using it).
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@13433 a95241bf-73f2-0310-859d-f6bbb57e9c96
any public header.
* Replaced a good deal of the MessageDeliverer's DeliverMessage() versions
by more general ones using the new interface MessagingTargetSet to represent
a set of targets. This simplifies the usage in cases where the caller doesn't
already have the targets in a supported representation.
* Implemented a first approximation of the shutdown process. There is no
GUI yet. Only superficially tested under R5.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@13417 a95241bf-73f2-0310-859d-f6bbb57e9c96
are different. Therefore, workspace changes should work on real hardware as
well now.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@13387 a95241bf-73f2-0310-859d-f6bbb57e9c96
But since every single cursor is owned by a team - why the cursor manager?
I must overlook something...
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@13385 a95241bf-73f2-0310-859d-f6bbb57e9c96
windows that wouldn't quit on demand, the app_server would have gotten
the kShutdownServer message anyway already (as the last app was quit).
Since that one removed things like gDesktop/gBitmapManager, it liked
crashing.
Now, there is a semaphore that will be send to each app on quit. Only
when this semaphore can be acquired, the shutdown message will be sent.
Removed unused semaphores (decorator, active app).
Replaced fAppListLock with a BLocker (just calling acquire_sem() without
error checking is very unsafe in userland, and should never be done).
BTW the bug was triggered by broken menu code that only sometimes
really quit the window; it leaves a whole lot of zombies around - Stefano,
any quick idea? :-)
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@13384 a95241bf-73f2-0310-859d-f6bbb57e9c96
The ServerWindow did not even have such a mechanism anyway... (it now has).
Minor cleanup, replaced some "delete" with "delete[]" where appropriate.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@13382 a95241bf-73f2-0310-859d-f6bbb57e9c96
handle the case at all to give the server the possibility to send a
failure response - ifdef'd some code out.
Added comment to ServerApp::PingTarget(), because what it currently does
does not make any sense.
Minor cleanup (replaced fSignature.String() with Signature()).
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@13381 a95241bf-73f2-0310-859d-f6bbb57e9c96
bitmap manager do the job.
This fixes a possible crashing bug on quit, a giant memory hole, and
probably also a possible crash during runtime.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@13380 a95241bf-73f2-0310-859d-f6bbb57e9c96
order to flicker less (which works, but it's not really that nice yet, as
it currently only works for the background).
The workspaces layer is now also invalidated if a new window appears on the
screen or goes away (also when this happens in another workspace).
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@13379 a95241bf-73f2-0310-859d-f6bbb57e9c96
A view-only workspaces window support (with lots of drawing flicker) - this
means you see what happens in the workspaces, but it doesn't do anything if
you click on it.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@13378 a95241bf-73f2-0310-859d-f6bbb57e9c96
- it now seems to work finally correctly
- renamed ViewAttr to ViewState and put it into the BPrivate namespace
- some refactoring (moved some private BView methods to ViewState)
- renamed AS_LAYER_MOVETO/RESIZETO to *_TO (note the underscore)
- exchanged BView::originX/Y with fParentOffset (BPoint)
- divided AS_LAYER_GET_COLORS into separate ones for high/low/view color
- BView::SetPattern() now actually works as expected (ie. updates
only if necessary)
- exchanged the ViewAttr::flags with ViewState::valid_flags which inverses
the previous logic (which wasn't even used consistently)
- fState was initialized twice (incorrectly by the ViewAttr constructor,
and then again correctly by initCachedState()) - now the ViewState
constructor does the job alone, but correctly
- BView::PushState() no longer resets the state (it did so only locally
anyway...)
- cleanup
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@13325 a95241bf-73f2-0310-859d-f6bbb57e9c96
say hello to RootLayer.
Adi will probably not like this, but that's definitely only a temporary solution :-)
This little fix greatly increases app_server stability under Haiku - ie. menus
are working now, the team monitor comes up regularly, etc. - how great is that?
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@13305 a95241bf-73f2-0310-859d-f6bbb57e9c96
test application now works as it should.
DefaultDecorator::GetSizeLimits() did work correctly, there was no need
to have extra protection limits.
Enabled Stephan's automatic resize code on BWindow::SetSizeLimits() again, and
added a short comment why I think R5's behaviour is just a bug/leftover.
Moved guts of ResizeBy() into _ResizeBy() that doesn't send the update message
to the client, and is now called in the constructor to make sure the border
size is within limits. Also made it work there, as fTopLayer is NULL in that
environment.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@13304 a95241bf-73f2-0310-859d-f6bbb57e9c96
the window on server side - ie. if the app_server could not create a
window of the size requested, BWindow::fFrame will still be correct
(and the size limits will mirror actual decorator limits).
Renamed fMinWindHeight and friends to fMinHeight and so on.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@13302 a95241bf-73f2-0310-859d-f6bbb57e9c96