From c28f8ea349ddd0e5b6cb9891bbb97f7bc9216965 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Revol?= Date: Fri, 18 Apr 2008 16:09:27 +0000 Subject: [PATCH] Now reacts to color drops. Tested with Zeta prefs and ArtPaint palette. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25028 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/apps/activitymonitor/ActivityView.cpp | 26 +++++++++++++++++++++-- src/apps/activitymonitor/ActivityView.h | 2 +- 2 files changed, 25 insertions(+), 3 deletions(-) diff --git a/src/apps/activitymonitor/ActivityView.cpp b/src/apps/activitymonitor/ActivityView.cpp index 1a56949ee5..0a8b678348 100644 --- a/src/apps/activitymonitor/ActivityView.cpp +++ b/src/apps/activitymonitor/ActivityView.cpp @@ -618,10 +618,10 @@ ActivityView::FrameResized(float /*width*/, float /*height*/) void -ActivityView::_UpdateOffscreenBitmap() +ActivityView::_UpdateOffscreenBitmap(bool force) { BRect frame = _HistoryFrame(); - if (fOffscreen != NULL && frame == fOffscreen->Bounds()) + if (!force && fOffscreen != NULL && frame == fOffscreen->Bounds()) return; delete fOffscreen; @@ -716,6 +716,28 @@ ActivityView::MouseMoved(BPoint where, uint32 transit, void ActivityView::MessageReceived(BMessage* message) { + // if a color is dropped, use it as background + if (message->WasDropped()) { + rgb_color *color; + ssize_t size; + if ((message->FindData("RGBColor", + B_RGB_COLOR_TYPE, 0, (const void **)&color, &size) == B_OK) && + size == sizeof(rgb_color)) { + //message->PrintToStream(); + BPoint dropPoint, dropOffset; + dropPoint = message->DropPoint(&dropOffset); + ConvertFromScreen(&dropPoint); + dropPoint += dropOffset; + if (_HistoryFrame().Contains(dropPoint)) { + fBackgroundColor = *color; + _UpdateOffscreenBitmap(true); + } else { + // XXX: check each legend color box ? + SetLowColor(*color); + } + return; + } // else try the switch or BView:: + } switch (message->what) { case B_ABOUT_REQUESTED: ActivityMonitor::ShowAbout(); diff --git a/src/apps/activitymonitor/ActivityView.h b/src/apps/activitymonitor/ActivityView.h index f41c529552..2d1d4b4f4f 100644 --- a/src/apps/activitymonitor/ActivityView.h +++ b/src/apps/activitymonitor/ActivityView.h @@ -86,7 +86,7 @@ protected: private: void _Init(const BMessage* settings); void _Refresh(); - void _UpdateOffscreenBitmap(); + void _UpdateOffscreenBitmap(bool force=false); void _UpdateFrame(); BRect _HistoryFrame() const; float _LegendHeight() const;