diff --git a/headers/private/preferences/ScreenDefs.h b/headers/private/preferences/ScreenDefs.h new file mode 100644 index 0000000000..f03a3a7912 --- /dev/null +++ b/headers/private/preferences/ScreenDefs.h @@ -0,0 +1,15 @@ +/* + * Copyright 2017, Haiku. + * Distributed under the terms of the MIT License. + * + * Authors: + * Brian Hill + */ +#ifndef _SCREEN_DEFS_H +#define _SCREEN_DEFS_H + + +// Message sent to Screen from Backgrounds when updating the background color +static const uint32 UPDATE_DESKTOP_COLOR_MSG = 'udsc'; + +#endif // _SCREEN_DEFS_H diff --git a/src/preferences/backgrounds/BackgroundsView.cpp b/src/preferences/backgrounds/BackgroundsView.cpp index 71853c8f92..4f49b40c6a 100644 --- a/src/preferences/backgrounds/BackgroundsView.cpp +++ b/src/preferences/backgrounds/BackgroundsView.cpp @@ -1,5 +1,5 @@ /* - * Copyright 2002-2015 Haiku, Inc. All rights reserved. + * Copyright 2002-2017 Haiku, Inc. All rights reserved. * Distributed under the terms of the MIT License. * * Authors: @@ -7,6 +7,7 @@ * Jerome Duval, jerome.duval@free.fr * Jonas Sundström, jonas@kirilla.se * John Scipione, jscipione@gmail.com + * Brian Hill */ @@ -17,6 +18,7 @@ #include #include +#include #include #include #include @@ -33,6 +35,7 @@ #include #include +#include #include "ImageFilePanel.h" @@ -415,10 +418,10 @@ BackgroundsView::MessageReceived(BMessage* message) { _Save(); - //_NotifyServer(); + // Notify the server and Screen preflet thread_id notify_thread; notify_thread = spawn_thread(BackgroundsView::_NotifyThread, - "notifyServer", B_NORMAL_PRIORITY, this); + "notifyThread", B_NORMAL_PRIORITY, this); resume_thread(notify_thread); _UpdateButtons(); break; @@ -659,8 +662,14 @@ BackgroundsView::_Save() status_t status = fCurrent->SetBackgroundImage(&node); if (status != B_OK) { - // TODO: this should be a BAlert! - printf("setting background image failed: %s\n", strerror(status)); + BString error(strerror(status)); + BString text(B_TRANSLATE("Setting the background image failed:")); + text.Append("\n").Append(error); + BAlert* alert = new BAlert(B_TRANSLATE("Set background image error"), + text, B_TRANSLATE("OK")); + alert->SetShortcut(0, B_ESCAPE); + alert->Go(NULL); + printf("setting background image failed: %s\n", error.String()); } } @@ -743,12 +752,22 @@ BackgroundsView::_NotifyServer() } +void +BackgroundsView::_NotifyScreenPreflet() +{ + BMessenger messenger("application/x-vnd.Haiku-Screen"); + if (messenger.IsValid()) + messenger.SendMessage(UPDATE_DESKTOP_COLOR_MSG); +} + + int32 BackgroundsView::_NotifyThread(void* data) { BackgroundsView* view = (BackgroundsView*)data; view->_NotifyServer(); + view->_NotifyScreenPreflet(); return B_OK; } diff --git a/src/preferences/backgrounds/BackgroundsView.h b/src/preferences/backgrounds/BackgroundsView.h index eece562986..4df303f248 100644 --- a/src/preferences/backgrounds/BackgroundsView.h +++ b/src/preferences/backgrounds/BackgroundsView.h @@ -120,6 +120,7 @@ public: protected: void _Save(); void _NotifyServer(); + void _NotifyScreenPreflet(); void _LoadSettings(); void _LoadDesktopFolder(); void _LoadDefaultFolder(); diff --git a/src/preferences/backgrounds/Jamfile b/src/preferences/backgrounds/Jamfile index 3d134f5cde..75b6cd6c98 100644 --- a/src/preferences/backgrounds/Jamfile +++ b/src/preferences/backgrounds/Jamfile @@ -1,6 +1,6 @@ SubDir HAIKU_TOP src preferences backgrounds ; -UsePrivateHeaders shared ; +UsePrivateHeaders preferences shared ; Preference Backgrounds : BackgroundImage.cpp diff --git a/src/preferences/screen/Constants.h b/src/preferences/screen/Constants.h index 3191d9df6c..f581d564e9 100644 --- a/src/preferences/screen/Constants.h +++ b/src/preferences/screen/Constants.h @@ -10,6 +10,7 @@ #define CONSTANTS_H +#include #include @@ -30,7 +31,8 @@ static const uint32 POP_COMBINE_DISPLAYS_MSG = 'pcdi'; static const uint32 POP_SWAP_DISPLAYS_MSG = 'psdi'; static const uint32 POP_USE_LAPTOP_PANEL_MSG = 'pulp'; static const uint32 POP_TV_STANDARD_MSG = 'ptvs'; -static const uint32 UPDATE_DESKTOP_COLOR_MSG = 'udsc'; +//static const uint32 UPDATE_DESKTOP_COLOR_MSG = 'udsc'; + // This is now defined in headers/private/preferences/ScreenDefs.h static const uint32 UPDATE_DESKTOP_MSG = 'udsk'; static const uint32 SLIDER_MODIFICATION_MSG = 'sldm'; static const uint32 SLIDER_INVOKE_MSG = 'sldi'; diff --git a/src/preferences/screen/Jamfile b/src/preferences/screen/Jamfile index 116d9f2606..ce605a80b0 100644 --- a/src/preferences/screen/Jamfile +++ b/src/preferences/screen/Jamfile @@ -4,7 +4,7 @@ AddSubDirSupportedPlatforms libbe_test ; UsePrivateHeaders [ FDirName graphics common ] ; UsePrivateHeaders [ FDirName graphics radeon ] ; -UsePrivateHeaders interface ; +UsePrivateHeaders interface preferences ; Preference Screen : AlertWindow.cpp diff --git a/src/preferences/screen/ScreenApplication.cpp b/src/preferences/screen/ScreenApplication.cpp index f02238009c..e5be94fff0 100644 --- a/src/preferences/screen/ScreenApplication.cpp +++ b/src/preferences/screen/ScreenApplication.cpp @@ -51,6 +51,7 @@ ScreenApplication::MessageReceived(BMessage* message) switch (message->what) { case SET_CUSTOM_REFRESH_MSG: case MAKE_INITIAL_MSG: + case UPDATE_DESKTOP_COLOR_MSG: fScreenWindow->PostMessage(message); break; diff --git a/src/preferences/screen/ScreenWindow.cpp b/src/preferences/screen/ScreenWindow.cpp index 0054c316f2..22c8d801c1 100644 --- a/src/preferences/screen/ScreenWindow.cpp +++ b/src/preferences/screen/ScreenWindow.cpp @@ -1131,6 +1131,10 @@ ScreenWindow::MessageReceived(BMessage* message) _UpdateActiveMode(); break; + case UPDATE_DESKTOP_COLOR_MSG: + PostMessage(message, fMonitorView); + break; + default: BWindow::MessageReceived(message); }