Commit Graph
208 Commits
Author SHA1 Message Date
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
Jérôme Duval a03ac89526 fixed some property_info and value_info for BShelf, BMenu, BWindow and BView
real support is to be implemented for a lot of them


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17728 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-06-05 15:57:58 +00:00
Jérôme Duval 79adc02bc6 begin to fix bug #658:
makes use of BWindow::_SetFocus() in BView::MakeFocus()
BWindow::_KeyboardNavigation() now uses BView::MakeFocus()
This is though not enough: _SetFocus isn't called on window activation/deactivation, thus the input server isn't aware of a focus view change in this case.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17723 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-06-04 21:54:21 +00:00
Stephan Aßmus 95f766fa3e cleanup of archiving code
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17674 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-05-31 19:18:25 +00:00
Stefano Ceccherini 848b89034e More hacks to BWindow's mousedown handler, to fix some problems with menus. Fixes bug 610 among other things. Note: I don't like this code so much, but apparently BeOS handles it in a similar way. I accept suggestions on how to improve this.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17606 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-05-27 13:00:35 +00:00
Stefano Ceccherini e061d1bae5 an eventually opened menu is now quit in BWindow::DispatchMessage()
before sending a B_MOUSE_DOWN message to any other view. This fixes bug 
594 for real and another bug in BMenuBar.  BMenuBar tracking will also 
be simplified a bit because of this. Install items to a NULL window on 
Show() as does R5 (although I don't know why yet). 


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17605 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-05-27 09:57:14 +00:00
Stephan Aßmus a502e8cd6e sorry, forgot about this change... fixes build
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17604 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-05-27 09:28:59 +00:00
Stephan Aßmus b30e90211e added a way for BWindow to store and restore arbitrary decor settings,
currently those include only the tab location


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17583 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-05-25 12:01:28 +00:00
Michael Lotz 3279f3b055 Detect recursions of UpdateIfNeeded. This is necessary as we may call hook functions (FrameResized(), FrameMoved()) that in turn could call UpdateIfNeeded again. This is the case for DarkSite which uses GetMouse() inside FrameResized(). This fixes resizing DarkSite and probably fixes bug 539 too.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17314 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-05-03 22:30:52 +00:00
Axel Dörfler 9991d2b1ac * Applied patch by G. Zachrisson to fix the endless loop in _FindNextNavigable().
* Rewrote broken _FindPreviousNavigable() - it now does the exact opposite of
  _FindNextNavigable().
* Both methods did not ignore hidden views - they now do.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17287 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-05-01 14:57:49 +00:00
Axel Dörfler 29a92e4f53 Now checks all calls to Lock() - this should fix buggy apps like Globe in bug #499.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17227 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-04-24 23:08:45 +00:00
Axel Dörfler cbdbfd3a80 Implemented Switcher support in BWindow - doesn't yet work correctly for some
reason, though.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17164 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-04-18 16:27:09 +00:00
Stephan Aßmus 8165fa3936 * fix bug 414 by Sync()ing in UpdateIfNeeded() to make
sure all messages that could trigger an update have
  actually arrived at the server
* small clean ups here and there, some clarifications in
  comments
* check for the return value of Lock() in DisableUpdates()
  and EnableUpdates()


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17158 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-04-17 20:42:22 +00:00
Axel Dörfler a5c5697937 Fixed starting keyboard navigation (when no view has focus yet in which
case the window receives the keyboard message).
This fixes bug #411.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17156 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-04-17 15:58:12 +00:00
Michael Lotz 39cdae74a7 First steps at getting drag & drop to work properly. Simple drag & drop (draging Tracker items) should work now. Not sure about the negotiated version (with mimetype exchange). Fixed left behind drag bitmaps. Some cleanup.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17058 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-04-10 21:22:05 +00:00
Stephan Aßmus 835a7ebdf0 no need to contact the server for this, transaction means that drawing commands are not immediately flushed, which is handled entirely on client side
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17044 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-04-07 19:04:51 +00:00
Stefano Ceccherini cb8bdc4eda Window's destructor should acquire the menu sem, not delete it. Could help fixing bug 422
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17016 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-04-05 19:32:54 +00:00
Axel Dörfler 7bb48db1f2 * The BView::FrameResized()/FrameMoved() hooks are now called asynchronously
as in R5, and no longer directly. This fixes bug #301.
* As a side effect, the hooks are now only called when the view is attached
  to a window, as on R5.
* Removed dead B_VIEW_RESIZED/MOVED code from BWindow.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17009 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-04-04 16:41:29 +00:00
Axel Dörfler 557e9c04eb Setting fRunCalled in case of failure is stupid, as this prevents the
window from being freed on Quit(). There still is a memory leak within
StressTest, though - but it's pretty tiny now.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16753 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-03-12 23:12:17 +00:00
Axel Dörfler bc63570c9b BWindow::Show() will no longer Run() its looper without a valid app_server
connection.
StressTest now detects this case and quits those windows.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16752 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-03-12 22:59:49 +00:00
Axel Dörfler 3dd881e3af * Fixed memory leak in StressTest and BWindow: they both did not delete the
message they passed to a BMessageRunner object.
* Added note about the ownership of the message to the BMessageRunner
  documentation.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16751 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-03-12 22:35:36 +00:00
Axel Dörfler ce0be66ff4 When the creation of the window failed, all further messages accidently went
to the ServerApp, instead of being dropped - the window link is now updated
correctly in that case.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16750 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-03-12 22:04:35 +00:00
Axel Dörfler f025cd8b72 While the user resizes a window, programmatical resize operations are ignored,
likewise, while the user moves a window around, programmatical moves are ignored
as well.
This fixes bug #264.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16743 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-03-12 16:59:15 +00:00
Stephan Aßmus ecf9f94800 * cleaned up fPulseRunner stuff, I have no idea why fPulseEnabled was
useful... so I removed it
* fixed memory leak with SetPulseRate(0), fPulseRunner is now
  properly freed in the Window destructor
* fTitle is now freed as well
* fix some potential leaks in BView destructor as well

I wrote a stress test app, which I'm soon going to commit as well...
it shows that not all memory leaks are fixed by this patch, I could
use some help with this...



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16713 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-03-11 19:32:53 +00:00
Jérôme Duval da192ba4dd implemented input_server notification of IM aware focus changes, not tested
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16690 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-03-10 16:53:50 +00:00