Commit Graph
113 Commits
Author SHA1 Message Date
Adi Oanca 5412b02d50 cleanup
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14567 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-10-29 11:39:34 +00:00
Adi Oanca 88820e7210 the new clipping code uses the same mechanism for updating frame/bounds, so we don't need some things anymore.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14559 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-10-28 17:05:46 +00:00
Adi Oanca a5cd1aeed0 small checkin to make the new clipping code work if one desires
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14461 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-10-20 18:49:36 +00:00
Adi Oanca f2f3ee8fe7 Undid my last checkin
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14406 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-10-17 18:13:16 +00:00
Adi Oanca 908915fb91 This change should've been checked in for well over a week, back when I activated the NEW_INPUT_HANDLING define. Sorry about that!
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14393 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-10-15 19:06:38 +00:00
Axel Dörfler ef5ab08df3 Fixed keyboard navigation; it should now behave pretty much like R5 AFAICT:
- moved standard keyboard navigation into the BView::KeyDown() hook
- the window now only handles tab+option/command key
- B_COMMAND_KEY triggers group jumping, not B_CONTROL_KEY (that activates the switcher,
  but directly in the app_server)
- fixed broken group navigation: (modifiers & B_COMMAND_KEY & B_SHIFT_KEY) is different
  to (modifiers & (B_COMMAND_KEY | B_SHIFT_KEY)) and is just never true with these
  constants.
That allows the tab key completion to be used again in Terminal.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14038 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-08-21 14:44:53 +00:00
Ingo Weinhold 18b5424c5f * Implemented BRoster::ActivateApp().
* 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
2005-07-24 21:10:33 +00:00
Axel Dörfler 4821aac375 The window is not supposed to resize the top level view. This removes the
"look-through" area in Terminal, and probably ShowImage as well.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@13743 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-07-18 10:30:29 +00:00
Axel Dörfler 39d30137dc A call to SetSizeLimits() can change the window frame, so it's now updated, too (a separate FrameResized() message is sent anyway).
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@13742 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-07-18 09:53:37 +00:00
Michael Lotz 3f319b3346 Some cleanup, some removed typos, some unification, some fixes and some added todos. Most of it related to client-server communication. Apps that rely on BFont stuff should work now (StyledEdit, Fonts, Keymap, Menu, ...). Or should not hang/quit at startup at least.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@13625 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-07-10 21:16:43 +00:00
Ingo Weinhold 32d7b6cf21 BWindow::SetDefaultButton() crashed when setting another default button.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@13565 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-07-09 20:27:43 +00:00
Stephan Aßmus 7dc436d8dd usability improvements to scrollbar, sorry had no time to include all of Stefanos drawing code yet, other visual improvements
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@13535 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-07-07 14:33:19 +00:00
Axel Dörfler d520c103e5 We must not delete the server window's port...
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@13510 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-07-06 22:23:34 +00:00
Axel Dörfler b93d2480cc Now drops into the debugger if the window/looper is still locked in task_looper().
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@13480 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-07-06 04:52:58 +00:00
Axel Dörfler 2b1246d968 Renamed AS_WINDOW_TITLE to AS_SET_WINDOW_TITLE.
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
2005-07-05 19:20:19 +00:00
Stephan Aßmus 2e6a5805ba MenuField layouts the menu bar better with respect to fDivider, it aligns better with other controls. fDivider in TextControl is an integer number now, small fix and small cleanup in Menu, Window::InitData takes an optional BBitmap token to construct an offscreen window, fixed PrivateScreen IndexForColor, View prevents being located at fractional coordinates as in R5, BBitmap unlocks its offscreen window since it is never Show()n and needs manual unlocking, fixed Slider offscreen window mode and improved triange thumb drawing, ScrollView would not crash when passing a NULL target just for kicks, the private MenuBar class now implements Draw to draw itself a little differently inside the BMenuField (dark right and bottom side) - though how it currently sets the clipping region prevents the text controls to draw in Playground, needs fixing
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@13450 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-07-05 16:30:53 +00:00
Adi Oanca 173c6e9597 Fixed resizing/moving using the new clipping code. Stephan (I know I wrote about these changes in Layer.cpp) I saw the changes you did at how B_VIEW_RESIZE/MOVED are handled. This might break compatibility with R5. I think you guys should discuss this.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@13396 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-07-02 10:09:35 +00:00
Axel Dörfler 41c719936b Fixed SetLook() (is not implemented server-side, though).
Finally got the thread rename code right under R5 8-)


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@13391 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-07-01 18:26:18 +00:00
Axel Dörfler bb1336b44f Some refactoring and cleanup:
- renamed some members and methods to fit our style guide
- moved removeSelf() to RemoveSelf() (as those two are essentially
  the same), and fixed it on the way: the state of the child views
  is now also updated by the new _UpdateStateForRemove() method
- Moved BWindow::sendPulse() and activateView() to BView::_Pulse()
  and BView::_Activate()
- some minor stuff

This also fixes the broken previous commit - I forgot to update
View.h; this update contains the previous changes as well. Sorry
for the inconvenience.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@13334 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-06-28 23:02:44 +00:00
Axel Dörfler 80a230b10e Rewrote the push/pop state and ViewAttr stuff:
- 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
2005-06-28 18:56:55 +00:00
Ingo Weinhold c8e7f53e08 * Radically culled the list of BApplication friends and introduced a
BApplication::Private class for accessing relevant parts.
* Pulled the app server connection and IK initialization out of
  InitData() into a new method _InitGUIContext() and introduced a private
  constructor that allows to avoid this initialization. This will be used
  for servers that don't have GUI respectively want to init the app server
  connection later.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@13312 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-06-28 12:55:16 +00:00
Axel Dörfler 85bd83a710 AS_CREATE_WINDOW now also gets the actual frame width and size limits of
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
2005-06-28 01:14:39 +00:00
Axel Dörfler 5727f0cfa2 B_WINDOW_RESIZED sends int32 values, not floats.
Made message parsing more robust for a lot of messages.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@13301 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-06-28 00:58:26 +00:00
Axel Dörfler 84d9f25ac5 The thread renaming was broken under R5. Cleaned it up a little.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@13289 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-06-27 01:58:56 +00:00
Axel Dörfler d2e5d36050 fMenuSem was not initialized, and therefore, the window tried to delete some
arbitrary semaphore on destruction.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@13250 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-06-23 23:18:17 +00:00
Axel Dörfler 8eee00f687 No longer draws hidden views (the app_server still handles them wrong, though,
when they are hidden while being attached to the window).
DrawAfterChildren() is now called at the appropriate place.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@13224 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-06-22 17:28:24 +00:00
Stephan Aßmus 4d67034226 a new graphics state is pushed before calling BView::Draw() and popped after it. So any state changes you do in your Draw() function will be forgotton when you're done, as on R5. I have not done a lot of testing for bugs in the state stack within the app_server though...
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@13174 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-06-16 12:37:30 +00:00
Axel Dörfler dd10337fd0 Renamed BAppServerLink to AppServerLink, BPortLink to PortLink, LinkMsgReader
to LinkReceiver, LinkMsgSender to LinkSender, and put everything into the
BPrivate namespace.
Made AppServerLink a cheap object - it will use the applications receiver/sender
and not create its own buffers.
Fixed broken communication stuff here and there (mostly Font.cpp).
Put the newly introduced set|get_system_colors() into the BPrivate namespace -
please don't introduce private functions into the public namespace!!!
Also fixed their broken communication use, as Darkwyrm obviously forgot about
it again: the sequence Flush(); GetNextMessage() without error checking is
purely wrong and can make the app hang and/or crash! :-)
Other minor cleanup.
The input_server used some test mode with the haiku build target which is
probably wrong.
Hopefully I did not forget anything this time.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@13128 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-06-14 21:28:56 +00:00
Stefano Ceccherini aa6f42c954 DispatchMessage() is called with the looper already locked, so we call fLink->Flush() directly, which does not lock it again. Changed some TODO to be more informative, removed one.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@13076 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-06-12 14:46:22 +00:00
Stefano Ceccherini 9b7978ffe6 No need to Lock()/Unlock() as Flush() does it already. Sync() wouldn't have unlocked the window in case FlushWithReply() wouldn't succeed.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@13061 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-06-11 15:08:00 +00:00
Stephan Aßmus 56efd1ace8 Sometimes I have seen crashes in BWindow::determine_target(), and this could very well fix it.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@13060 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-06-11 14:28:54 +00:00
Stefano Ceccherini 95c58faa2d Now we flush the command buffer after handling a B_PULSE message. This fixes the PulseTest (and probably some other things).
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@13059 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-06-11 13:23:53 +00:00
Axel Dörfler 75936a02e4 BPortLink now has a FlushWithReply() method itself.
BPortLink::AttachString() now accepts a length argument, and will no longer
send a terminating null byte; LinkMsgReader::ReadString(), however, will
make sure the string read is null terminated.
Changed client communication code to use FlushWithReply() instead of Flush()
and GetNextReply() - there were many bugs and shortcomings in the code, I
hope I've fixed them all.
Converted ClientFontList.cpp to our coding style (but not completely, the
class members are missing).
Some more cleanup - I hope Adi will adopt our coding style one day!


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@12998 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-06-08 00:36:26 +00:00
Stephan Aßmus 442992bf26 fixed some pretty bad bugs that prevented menus from working (they now do): The BMessage* in AddShortcut is taken in responsibility by the BWindow, so we cannot directly use the message from BMenuItem, the be_app was locked in InitData but never unlocked, it fixes BMenus only working once, and who knows what else it fixes. A little cleanup with _BCmdKey usage, also note that it is inefficient to RemoveItem()s from a list in the destructor of any class using a BList as data container! Simply delete the items and be done with it. The BList destructor will take care of the rest and free its storage in one go.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@12982 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-06-07 13:19:28 +00:00
Axel Dörfler e17b33e56b The window was removing the app_server connection too early, and thus hang in Quit().
Removed the stopConnection() method.
Cleaned up header a bit.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@12959 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-06-05 18:57:55 +00:00
Stephan Aßmus 59345e264f huge cleanup, support for SetSizeLimits, support for truncating strings, numerous decorator bug fixes, Layer does not draw when view color is B_TRANSPARENT_COLOR, cleaner dispatching of mouse events to the WinBorder in RootLayer, commented the char map selection in the font server, as it seems glyph lookup by unicode index works much better with the default map
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@12945 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-06-03 19:50:30 +00:00
Stefano Ceccherini b9b38bc7b2 Fixed build with debug enabled. Renamed a static variable.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@12938 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-06-03 14:15:33 +00:00
Stefano Ceccherini 38b35d9caa BBitmap now uses the correct (private) BWindow constructor. Partially implemented that constructor. Fixed another typo in BView, verified and removed some TODOs
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@12884 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-05-29 06:32:16 +00:00
Stefano Ceccherini 87ab5d5c6d Now we delete the menu semaphore in the window's destructor
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@12785 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-05-23 13:56:06 +00:00
Axel Dörfler 25500bdfd9 Fixed BWindow::UpdateIfNeeded() by moving the code from BView::GetMouse() over.
GetMouse() will now just call UpdateIfNeeded().


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@12736 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-05-19 17:20:36 +00:00
Axel Dörfler bcd8a1fad9 Converted Window.cpp to our coding style guide and (unfortunately) fixed a
myriad of small bugs here and there, as well as some very odd coding techniques:
- the "Minimize" property was not handled
- the "Minimize" property was not settable
- the property/scripting stuff was horrible, anyway
- there are more and better error codes than B_ERROR (could someone tell the
  app_server guys? :))
- added some ToDo items here and there
- and much more I don't remember


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@12723 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-05-18 20:53:21 +00:00
Axel Dörfler 3405fff2a9 Implemented private function BWindow::DequeueAll() which reads all pending
messages from the port.
BView::GetMouse() now calls this function if it was called from the window's
thread and thus blocking the message loop.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@12716 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-05-18 16:54:56 +00:00
Stephan Aßmus ad6b480400 Work in Progress. The server keeps the client window up to date on layer movement/resizing. This fixes quite a few problems and brings support for FrameMoved and Resized hooks. But implementing it this way has its own set of problem, most importantly: When a BView calles Window()->CurrentMessage() in its FrameMoved/Resized hooks, it will see something very different from what it would see in R5. This needs to be fixed, but I have not had a good idea how to do this other than faking the current message in BWindow, which I didn't look into.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@12689 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-05-16 15:39:58 +00:00
Stephan Aßmus d557af5b96 Fixes to my fixes of BView::MakeFocus(), the previous focus BView needs to be unfocused of course so the derived classes implementation gets called. Simplified BWindow::setFocus(). BView calls FrameResized() and FrameMoved() if it has no parent, I don't know how R5 handles it, but I added a TODO...
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@12683 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-05-16 11:59:42 +00:00
Stefano Ceccherini 7bdfb0d996 Added handler for _MENUS_DONE_
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@12583 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-05-07 13:24:25 +00:00
Stephan Aßmus fc72699071 added some safety checks, cosmetic changes - please note that it is safe to call delete with a NULL pointer, unlike free(), so please don't clutter the code
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@12564 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-05-03 21:54:44 +00:00
Stephan Aßmus 1596a167c0 work around for layers not being moved that have not yet been added to the tree. See WinBorder::MoveTo for the explaination. The same problem should be at other places and most likely for normal views as well. This fixes BWindow::MoveXX() when it is not yet Show()n
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@12500 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-04-28 23:56:40 +00:00
Stephan Aßmus 9715a3e1bf fixed BWindow::MoveXX(), BWindow::ResizeXX() and BView::ConvertToScreen()
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@12491 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-04-28 12:31:25 +00:00
Stephan Aßmus 3505574164 Added some TODO comments in Window.cpp, improved coordinate conversion in View.cpp. I'm not sure if this really works correctly, I need to write more tests. The scrolling test actually does more of what it is supposed to. At least the scrolling properly follows the mouse now. Missing are the movement of child views, the rebuilding of clipping, and I think that the scrolling needs to be synced to update requests having been fullfilled, or else some parts of the View will be CopyBits()ed which have not been drawn after having been scrolled into view by previous calls to ScrollBy(). Any insights appreciated.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@12485 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-04-27 23:27:37 +00:00
Stephan Aßmus 28930a1240 small changes and fixes here and there
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@12480 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-04-27 17:25:29 +00:00