Commit Graph
232 Commits
Author SHA1 Message Date
Stephan Aßmus c3b57150e2 I was just going to implement Begin/EndViewTransaction(), but I saw
it is already implemented they way I thought it could be done - nice! Just
some simplifications.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24027 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-02-20 00:42:09 +00:00
Stefano Ceccherini ec20f9f60d reverted r21961. A menu could be closed, if the user
clicked (with the menu opened) on a view which uses GetMouse() in a loop 
(PE, tracker), since it stealed the mousedown message.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24005 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-02-18 13:24:13 +00:00
Axel Dörfler 1ea104aeeb UpdateIfNeeded() no longer keeps the looper's BMessageQueue locked when
calling DispatchMessage().


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@23870 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-02-05 08:36:01 +00:00
Axel Dörfler 7cb9337835 * Ingo broke binary compatibility of Window.h in r18649, thanks to Stefano
for finding this. This should fix bug #1734.
* Removed unused BWindow members and the temporary PrintToStream() method.
* Indentation cleanup (DirectWindow.h had some spaces instead of tabs).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@23863 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-02-04 15:01:34 +00:00
Stefano Ceccherini 0625889c61 IsModal() now includes also the kMenuWindowLook. Fixes bug #1269. Please
review.
Added a compile time option to switch off the use of the cached menu 
windows. Looks like there is a problem with the focus system, if I keep 
the cached menu window around, it "steals" keyboard events from the main 
app window after the menu has been opened and closed once.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@23343 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-01-10 16:04:57 +00:00
Axel Dörfler 33d3580bdc Fixed copy&paste bug, thanks Stefano!
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@23197 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-12-30 13:02:13 +00:00
Axel Dörfler deb58f165b * DispatchMessage()'s B_WINDOW_ACTIVATED now checks if there are any pending
activation messages, and always retrieves the information from the latest.
* Reverted r23062, as the above should fix bug #613 as well.
* This should also fix bug #1674.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@23196 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-12-30 12:46:30 +00:00
Stephan Aßmus 099fb2d3be * removed declarations for methods which are not used/implemented in View.h
* improved naming of some private BView functions and used our underscore
  prefix
* added a _DrawAfterChildren method to BView which does the necessary setup
  and calls the DrawAfterChildren hook
* call the new _DrawAfterChildren method in the BWindow implementation, this
  was easy since the view tokens are already hierachically sorted
* implement support for B_DRAW_ON_CHILDREN in the app_server's ViewLayer, it
  simply means that children are ignored for the views clipping region, any
  drawing methods will paint over children (therefor the B_DRAW_ON_CHILDREN
  flag is even properly named)

With these changes, support for B_DRAW_ON_CHILDREN and the DrawAfterChildren()
hook are implemented and behave exactly as on R5 as far as I can tell, also
for the view background painting.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@23154 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-12-25 14:47:06 +00:00
Stefano Ceccherini ebe41f1a76 added a TODO item
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@23063 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-12-05 12:13:43 +00:00
Stefano Ceccherini d7c343d92c Dispatch also the B_WINDOW_ACTIVATED messages. This fixes bug #613, but
we need to check which other messages are handled by beos here.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@23062 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-12-05 12:12:48 +00:00
Axel Dörfler 7acb68edf9 Made the private B_HIDE_APPLICATION message (now a misnomer) hide all applications
that share the same signature - so that this feature is now consistent to what the
Deskbar does.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22304 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-09-25 13:38:10 +00:00
Axel Dörfler 229f4986d2 * Added private (as of now) B_HIDE_APPLICATION message that calls
do_minimize_team() (which is what the Deskbar does when you select
  "Hide All").
* Added keyboard shortcuts to minimize, and zoom a window, and to hide
  the whole application (Cmd+Ctrl+M/Z/H respectively). The former two
  are also present in Dano and up.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22302 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-09-25 13:15:15 +00:00
Axel Dörfler 22ca66b9f8 Fixed bug #1028 from both sides:
* FindPanel::SetUpAddRemoveButtons() called Window()->FindView() but did not
  check if Window() was NULL.
* BWindow now always checks the result of a BAutolock - this is why Tracker
  got away with this bug on BeOS; NULL windows cannot be locked...


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22102 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-08-29 00:40:40 +00:00
Axel Dörfler b78583734c The client-side implementation of B_NO_POINTER_HISTORY did only work for SetEventMask(),
but not for SetMouseEventMask(). We now track the value of that mask in a dedicated
member variable.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22022 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-08-20 23:24:26 +00:00
Axel Dörfler e46b225479 The server is too fast sending the messages; we now filter out old mouse events
client side in case B_NO_POINTER_HISTORY is set.
This fixes bug #1415.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22021 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-08-20 22:51:46 +00:00
Axel Dörfler cc116483ef The bug worked around in r21960 also affected Haiku. Now, a menu is only quit if the click
into its "controlling" window targeted the preferred handler - ie. is a standard click that
is not sent because of an event mask.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21961 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-08-15 02:12:05 +00:00
Axel Dörfler b73648647d * Fixed the TODO added by Ingo in r21957: locking the application didn't even make any
sense. Instead, we now lock its app_server connection only. The deadlock as exposed
  by starting Icon-O-Matic twice is now gone, at last.
* Fixed the TODO added by Ingo in r21953: moved the thread/handler renaming code in a
  dedicated method _SetName() which is now called from _InitData() and SetTitle(); the
  "w>" is no longer lost.
* Unlike the BeBook states, BMessageQueue::RemoveMessage() is indeed not supposed to
  delete the message it removes.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21959 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-08-15 01:06:20 +00:00
Ingo Weinhold 78fe3db271 Added another TODO.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21957 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-08-15 00:10:37 +00:00
Ingo Weinhold a1a144828c Added TODO.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21953 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-08-14 23:36:53 +00:00
Stephan Aßmus 7a90948b20 * this should fix BWindow::FindChild(BPoint)
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21537 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-07-01 14:57:41 +00:00
Axel Dörfler 1e651d5b4f Modal windows no longer install the 'Q' shortcut anymore. This fixes bug #1256.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21311 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-06-03 20:33:56 +00:00
Axel Dörfler 288e17885a Implemented B_CLOSE_ON_ESCAPE as mentioned on the mailing list.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21308 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-06-03 19:23:03 +00:00
Stefano Ceccherini 8860ba90e6 If there's a opened menu, the window should "eat" the B_MOUSE_DOWN
message. This fixes bug #582 and now menus behave like on beos (or 
should, at least)


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20799 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-04-24 21:00:20 +00:00
Axel Dörfler f5faf48a9f Small fix for _StealMouseMessage(): only if "feed focus" is "false", the message
can't be used.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20737 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-04-17 14:29:54 +00:00
Axel Dörfler ffcc37a0aa * Added and implemented B_INVALIDATE as available on Dano; to invalidate only a certain
part of the view, you can add a BRect "be:area" to that message - very handy.
* Cleaned up AppDefs.h a bit.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20683 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-04-14 18:11:42 +00:00
Axel Dörfler 9dbe170a69 Implemented direct message passing for local targets; this fixes a deadlock
with PostMessage() in case the message queue is full.
Some notes:
* for synchronous replies, we don't use this mechanism yet, but it could be
  extended to do that as well.
* the code looks so complicated because we need a way to access the looper's
  queue without locking it (to prevent deadlocks); like Dano's solution, I've
  abused BTokenSpace to store a BDirectMessageTarget with a BHandler.
* we also need to decouple the lifetime of a looper's queue from its target,
  as we cannot lock the looper, and therefore, can't guarantee it stays valid
  as long as we're accessing it outside of BLooper.
* init_clipboard() now needs to be done after the global constructors have
  been called - since sending messages now needs gDefaultTokens to be initialized.
  Since this is done per image, it shouldn't cause any troubles, though.
* some minor cleanup, removed unused _msg_cache_cleanup_() and friends.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19968 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-01-26 13:59:56 +00:00
Axel Dörfler c01f349e6d Cleanup:
* Got rid of unused BLooper members
* renamed fTaskID to fThread
* Removed private and deprecated AddLooper()/RemoveLooper()/... stuff; BLooper is now
  directly calling BLooperList methods.
* Got rid of extensive and useless comments
* Made a few TODOs more clear
* Merged InitData() and InitData(...) to _InitData(...)
* BLooper::Team() now uses BPrivate::current_team(), sTeamID is gone now.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19966 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-01-26 12:42:18 +00:00
Axel Dörfler e30afed439 As per Ingo's request, I moved calling BRoster::Private::UpdateActiveApp() into
the app_server (and updated all comments that said otherwise).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19865 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-01-19 16:41:58 +00:00
Axel Dörfler c2f641f2e5 Turns out the whole "active app" mechanism in the registrar wasn't used at all; the
Switcher now works as expected.
* Renamed TRoster::ActivateApp() to UpdateActiveApp(), as the app is already activated
  at that point (the registrar only keeps track of it).
* BWindow::DispatchMessage() now calls the new BRoster::Private::UpdateActiveApp()
  method when it receives a B_WINDOW_ACTIVATED message.
* Added BRoster::_UpdateActiveApp() which calls the new B_REG_UPDATE_ACTIVE_APP.
* Removed now unused B_REG_ACTIVATE_APP.
* Minor cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19857 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-01-18 17:45:08 +00:00
Axel Dörfler badbad99a9 Messed up logic last time - the cursor should now work as expected again in BTextView.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19856 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-01-18 16:04:01 +00:00
Axel Dörfler 6c3692dc87 Turns out our pulse mechanism was broken; we need to honour the rate set by
SetPulseRate() even if it is 0. BView::_Attach() and BView::SetFlags() now
just set the previous pulse rate again (which will start pulsing in case
there is no fPulseRunner yet).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19850 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-01-17 21:26:54 +00:00
Axel Dörfler 2a720453e1 One step closer to the Switcher - still doesn't work, though, but at least the
BWindow code looks okay now.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19849 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-01-17 19:38:58 +00:00
Axel Dörfler ccf137b886 BWindow::IsFront() was implemented incorrectly - we actually need to query the
app_server for this; added a new AS_IS_FRONT_WINDOW command for this.
For example, clicking on the menu bar to bring windows to front in FFM mode
does work now.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19725 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-01-06 17:08:19 +00:00
Jérôme Duval fbeb1fca5f Notifies input_server about the focus view IM awareness when the window is (de)activated
This fixes the last part of bug #658 


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19166 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-11-01 16:01:04 +00:00
Axel Dörfler cc347633b9 This fixes bug #851 - GLTeapot unlocks the window before indirectly calling
BWindow::UpdateIfNeeded(); BPopUpMenu::Go() should be independent of this.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@18946 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-09-26 21:06:20 +00:00
Axel Dörfler 946d88f90b We're now using the same priorities for windows as BeOS does - this should improve
the responsiveness of the GUI, and should also fix bug #742.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@18821 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-09-12 11:11:22 +00:00
Ingo Weinhold 9ecf9d1c1d Merge from layout management branch.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@18649 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-08-26 16:21:15 +00:00
Axel Dörfler 967302c5b7 Fixed a stupid copy&paste bug.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@18605 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-08-24 12:33:15 +00:00
Axel Dörfler fa407130aa Now this should nail down bug #762 pretty well: BView::GetMouse() no calls the
private BWindow::_StealMouseMessage() which makes sure only messages for the
preferred handler are stolen, and also, that nothing gets lost that shouldn't
get lost.
Also updates the fLastMouseMoved view in case the message is actually removed
due to GetMouse().


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@18601 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-08-24 09:52:12 +00:00
Stefano Ceccherini f60d8e0b59 Replaced Unlock() with UnlockFully() in BWindow's destructor, fixes bug
406


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@18579 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-08-23 06:42:09 +00:00
Axel Dörfler 9319c7b88f We don't add the Alt-w shortcut to modal windows anymore
by default, thanks to Darkwyrm for pointing to this.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@18450 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-08-07 21:34:07 +00:00
Axel Dörfler 4fec945a03 Stefano's investigations did the trick: added MenusBeginning()/MenusEnded() in
the shortcut evaluation.
This fixes bug #531.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@18338 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-08-02 10:16:10 +00:00
Stefano Ceccherini 7212229343 The BWindow destructor is called with the window locked, but we need to unlock to acquire the menu semaphore. Updated BBitmap to lock he window on quit too. This fixes last problem mentioned in bug 406
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@18156 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-07-15 13:12:01 +00:00
Jérôme Duval 11235ae729 "class" is added by BArchivable::Archive(), no need to duplicate
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@18086 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-07-10 17:38:12 +00:00
Axel Dörfler 8ebbfab333 When the B_COMMAND key is pressed, the event will not be forwarded to the target
handler anymore, no matter if a shortcut existed or not.
This fixes bug #498.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17883 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-06-20 15:20:18 +00:00
Axel Dörfler 7477c792d5 * Dropped messages come in a _MESSAGE_DROPPED_ "packet", and were unpacked much too
late, in DispatchMessage(), working around all eventually installed message filters.
  This fixes the odd "cannot drop files into file panel" bug mentioned in bug #669.
* They are now handled in _DetermineTarget() and _SanitizeMessage().
* _SanitizeMessage() is now called earlier, so that no user code can see them before;
  even though this might give you wrong MouseDown() coordinates in combination with
  a redirecting message filter, I think that's exactly what would happen in this
  situation under R5 as well.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17839 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-06-14 18:27:10 +00:00
Jérôme Duval da08acb8bf fix some more bugs in scripting handling, this seems to never end
Having canna input method installed shouldn't crash Haiku anymore


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17810 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-06-12 23:45:55 +00:00
Axel Dörfler 5b741ecbfd Fixed warning.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17807 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-06-12 23:18:29 +00:00
Jérôme Duval e91315aa2d scripting in BApplication is mostly fixed
BLooper had a be-handler named suite
BWindow is now exposing Active
scripting to BViews isn't working yet


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17797 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-06-11 23:01:33 +00:00
Jérôme Duval f4fc3d626a * fixed some more GetSupportedSuites implementations
* fixed some local variables names
* fixed the case of some message attribute names


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17734 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-06-06 12:35:27 +00:00