[haiku-commits] haiku: hrev54180 - src/apps/pulse

  • From: waddlesplash <waddlesplash@xxxxxxxxx>
  • To: haiku-commits@xxxxxxxxxxxxx
  • Date: Sun, 10 May 2020 11:49:01 -0400 (EDT)

hrev54180 adds 1 changeset to branch 'master'
old head: db3a94141ac2e2d7a9155279fdb95a05a105888d
new head: e04f6f31b08f57dfd8a75d3f399666b76f23b22a
overview: 
https://git.haiku-os.org/haiku/log/?qt=range&q=e04f6f31b08f+%5Edb3a94141ac2

----------------------------------------------------------------------------

e04f6f31b08f: Pulse: do not run the preferences and about windows in DeskBar 
process
  
  Now Pulse can be both in a normal window and in DeskBar at the same
  time. The Replicant starts the app if needed to show the settings and
  about box there, instead of showing the window in the DeskBar process.
  
  Fixes #6901
  
  Change-Id: I3cede07df9216c54e4ad97b50618d42c2fa5e12e
  Reviewed-on: https://review.haiku-os.org/c/haiku/+/83
  Reviewed-by: Adrien Destugues <pulkomandy@xxxxxxxxx>
  Reviewed-by: waddlesplash <waddlesplash@xxxxxxxxx>

                             [ Adrien Destugues <pulkomandy@xxxxxxxxxxxxx> ]

----------------------------------------------------------------------------

Revision:    hrev54180
Commit:      e04f6f31b08f57dfd8a75d3f399666b76f23b22a
URL:         https://git.haiku-os.org/haiku/commit/?id=e04f6f31b08f
Author:      Adrien Destugues <pulkomandy@xxxxxxxxxxxxx>
Date:        Mon Apr 27 19:38:37 2020 UTC
Committer:   waddlesplash <waddlesplash@xxxxxxxxx>
Commit-Date: Sun May 10 15:48:57 2020 UTC

Ticket:      https://dev.haiku-os.org/ticket/6901

----------------------------------------------------------------------------

9 files changed, 193 insertions(+), 127 deletions(-)
src/apps/pulse/CPUButton.cpp        |   4 +-
src/apps/pulse/DeskbarPulseView.cpp |  79 ++++++++++++------
src/apps/pulse/DeskbarPulseView.h   |   5 +-
src/apps/pulse/PrefsWindow.cpp      |   2 +-
src/apps/pulse/ProgressBar.cpp      |   2 +-
src/apps/pulse/PulseApp.cpp         | 142 +++++++++++++++++++++-----------
src/apps/pulse/PulseApp.h           |  20 +++--
src/apps/pulse/PulseWindow.cpp      |  64 ++++++--------
src/apps/pulse/PulseWindow.h        |   2 -

----------------------------------------------------------------------------

diff --git a/src/apps/pulse/CPUButton.cpp b/src/apps/pulse/CPUButton.cpp
index 42701cfdf5..354a8c9432 100644
--- a/src/apps/pulse/CPUButton.cpp
+++ b/src/apps/pulse/CPUButton.cpp
@@ -277,7 +277,7 @@ CPUButton::MessageReceived(BMessage *message)
 {
        switch (message->what) {
                case B_ABOUT_REQUESTED: {
-                       PulseApp::ShowAbout(false);
+                       be_app->PostMessage(B_ABOUT_REQUESTED);
                        break;
                }
                case PV_REPLICANT_PULSE: {
@@ -330,7 +330,7 @@ CPUButton::AttachedToWindow()
                delete prefs;
        } else {
                PulseApp *pulseapp = (PulseApp *)be_app;
-               UpdateColors(pulseapp->prefs->normal_bar_color);
+               UpdateColors(pulseapp->fPrefs->normal_bar_color);
                _AddDragger();
        }
 
diff --git a/src/apps/pulse/DeskbarPulseView.cpp 
b/src/apps/pulse/DeskbarPulseView.cpp
index b5be675fe3..39ac67b5ee 100644
--- a/src/apps/pulse/DeskbarPulseView.cpp
+++ b/src/apps/pulse/DeskbarPulseView.cpp
@@ -29,13 +29,17 @@
 #define B_TRANSLATION_CONTEXT "DeskbarPulseView"
 
 
-DeskbarPulseView::DeskbarPulseView(BRect rect) : MiniPulseView(rect, 
"DeskbarPulseView") {
+DeskbarPulseView::DeskbarPulseView(BRect rect)
+       : MiniPulseView(rect, "DeskbarPulseView")
+{
        messagerunner = NULL;
        prefs = NULL;
-       prefswindow = NULL;
 }
 
-DeskbarPulseView::DeskbarPulseView(BMessage *message) : MiniPulseView(message) 
{
+
+DeskbarPulseView::DeskbarPulseView(BMessage *message)
+       : MiniPulseView(message)
+{
        mode1->SetLabel(B_TRANSLATE("Normal mode"));
        mode1->SetMessage(new BMessage(PV_NORMAL_MODE));
        mode2->SetLabel(B_TRANSLATE("Mini mode"));
@@ -61,10 +65,12 @@ DeskbarPulseView::DeskbarPulseView(BMessage *message) : 
MiniPulseView(message) {
        SetViewColor(idle_color);
 
        messagerunner = NULL;
-       prefswindow = NULL;
 }
 
-void DeskbarPulseView::AttachedToWindow() {
+
+void
+DeskbarPulseView::AttachedToWindow()
+{
        BMessenger messenger(this);
        mode1->SetTarget(messenger);
        mode2->SetTarget(messenger);
@@ -86,7 +92,10 @@ void DeskbarPulseView::AttachedToWindow() {
                200000, -1);
 }
 
-void DeskbarPulseView::MouseDown(BPoint point) {
+
+void
+DeskbarPulseView::MouseDown(BPoint point)
+{
        BPoint cursor;
        uint32 buttons;
        MakeFocus(true);
@@ -103,11 +112,17 @@ void DeskbarPulseView::MouseDown(BPoint point) {
        } else MiniPulseView::MouseDown(point);
 }
 
-void DeskbarPulseView::Pulse() {
+
+void
+DeskbarPulseView::Pulse()
+{
        // Override and do nothing here
 }
 
-void DeskbarPulseView::MessageReceived(BMessage *message) {
+
+void
+DeskbarPulseView::MessageReceived(BMessage *message)
+{
        switch (message->what) {
                case PV_NORMAL_MODE:
                        SetMode(true);
@@ -118,16 +133,16 @@ void DeskbarPulseView::MessageReceived(BMessage *message) 
{
                        Remove();
                        break;
                case PV_PREFERENCES:
-                       if (prefswindow != NULL) {
-                               prefswindow->Activate(true);
-                               break;
-                       }
-                       prefswindow = new PrefsWindow(prefs->prefs_window_rect,
-                               "Pulse settings", new BMessenger(this), prefs);
-                       prefswindow->Show();
+               {
+                       message->AddMessenger("settingsListener", this);
+                       // Spawn the app and open the window there, not in 
DeskBar process.
+                       be_roster->Launch("applicaiton/x-vnd.Haiku-Pulse", 
message);
                        break;
-               case PV_ABOUT: {
-                       PulseApp::ShowAbout(false);
+               }
+               case PV_ABOUT:
+               {
+                       BMessage aboutRequest(B_ABOUT_REQUESTED);
+                       be_roster->Launch("applicaiton/x-vnd.Haiku-Pulse", 
&aboutRequest);
                        break;
                }
                case PV_QUIT:
@@ -146,9 +161,6 @@ void DeskbarPulseView::MessageReceived(BMessage *message) {
                        Update();
                        Draw(Bounds());
                        break;
-               case PRV_QUIT:
-                       prefswindow = NULL;
-                       break;
                case PV_CPU_MENU_ITEM:
                        ChangeCPUState(message);
                        break;
@@ -158,19 +170,28 @@ void DeskbarPulseView::MessageReceived(BMessage *message) 
{
        }
 }
 
-DeskbarPulseView *DeskbarPulseView::Instantiate(BMessage *data) {
-       if (!validate_instantiation(data, "DeskbarPulseView")) return NULL;
+
+DeskbarPulseView *
+DeskbarPulseView::Instantiate(BMessage *data)
+{
+       if (!validate_instantiation(data, "DeskbarPulseView"))
+               return NULL;
        return new DeskbarPulseView(data);
 }
 
-status_t DeskbarPulseView::Archive(BMessage *data, bool deep) const {
+status_t
+DeskbarPulseView::Archive(BMessage *data, bool deep) const
+{
        PulseView::Archive(data, deep);
        data->AddString("add_on", APP_SIGNATURE);
        data->AddString("class", "DeskbarPulseView");
        return B_OK;
 }
 
-void DeskbarPulseView::Remove() {
+
+void
+DeskbarPulseView::Remove()
+{
        // Remove ourselves from the deskbar by name
        BDeskbar *deskbar = new BDeskbar();
        status_t err = deskbar->RemoveItem("DeskbarPulseView");
@@ -187,15 +208,19 @@ void DeskbarPulseView::Remove() {
        delete deskbar;
 }
 
-void DeskbarPulseView::SetMode(bool normal) {
+
+void
+DeskbarPulseView::SetMode(bool normal)
+{
        if (normal) prefs->window_mode = NORMAL_WINDOW_MODE;
        else prefs->window_mode = MINI_WINDOW_MODE;
        prefs->Save();
        be_roster->Launch(APP_SIGNATURE);
 }
 
-DeskbarPulseView::~DeskbarPulseView() {
+
+DeskbarPulseView::~DeskbarPulseView()
+{
        if (messagerunner != NULL) delete messagerunner;
-       if (prefswindow != NULL && prefswindow->Lock()) prefswindow->Quit();
        if (prefs != NULL) delete prefs;
 }
diff --git a/src/apps/pulse/DeskbarPulseView.h 
b/src/apps/pulse/DeskbarPulseView.h
index 984d7560f6..8ca2170fb9 100644
--- a/src/apps/pulse/DeskbarPulseView.h
+++ b/src/apps/pulse/DeskbarPulseView.h
@@ -15,7 +15,9 @@
 #include "PrefsWindow.h"
 #include <app/MessageRunner.h>
 
-class DeskbarPulseView : public MiniPulseView {
+
+class DeskbarPulseView : public MiniPulseView 
+{
        public:
                DeskbarPulseView(BRect rect);
                DeskbarPulseView(BMessage *message);
@@ -32,7 +34,6 @@ class DeskbarPulseView : public MiniPulseView {
                void Remove();
                void SetMode(bool normal);
 
-               PrefsWindow *prefswindow;
                Prefs *prefs;
                BMessageRunner *messagerunner;
 };
diff --git a/src/apps/pulse/PrefsWindow.cpp b/src/apps/pulse/PrefsWindow.cpp
index 3521b81c48..f880be57f6 100644
--- a/src/apps/pulse/PrefsWindow.cpp
+++ b/src/apps/pulse/PrefsWindow.cpp
@@ -135,6 +135,6 @@ PrefsWindow::MessageReceived(BMessage *message)
 bool
 PrefsWindow::QuitRequested()
 {
-       fTarget.SendMessage(new BMessage(PRV_QUIT));
+       be_app->PostMessage(new BMessage(PRV_QUIT));
        return true;
 }
diff --git a/src/apps/pulse/ProgressBar.cpp b/src/apps/pulse/ProgressBar.cpp
index 2b64ebd649..6857f1a7c3 100644
--- a/src/apps/pulse/ProgressBar.cpp
+++ b/src/apps/pulse/ProgressBar.cpp
@@ -67,7 +67,7 @@ ProgressBar::UpdateColors(int32 color, bool fade)
 void
 ProgressBar::AttachedToWindow()
 {
-       Prefs *prefs = ((PulseApp *)be_app)->prefs;
+       Prefs *prefs = ((PulseApp *)be_app)->fPrefs;
        UpdateColors(prefs->normal_bar_color, prefs->normal_fade_colors);
 }
 
diff --git a/src/apps/pulse/PulseApp.cpp b/src/apps/pulse/PulseApp.cpp
index f95f1165ca..4b96a03609 100644
--- a/src/apps/pulse/PulseApp.cpp
+++ b/src/apps/pulse/PulseApp.cpp
@@ -35,10 +35,12 @@
 
 
 PulseApp::PulseApp(int argc, char **argv)
-       : BApplication(APP_SIGNATURE)
+       : BApplication(APP_SIGNATURE),
+       fPrefs(new Prefs()),
+       fRunFromReplicant(false),
+       fIsRunning(false),
+       fPrefsWindow(NULL)
 {
-       prefs = new Prefs();
-
        int mini = false, deskbar = false, normal = false;
        uint32 framecolor = 0, activecolor = 0, idlecolor = 0;
 
@@ -84,10 +86,10 @@ PulseApp::PulseApp(int argc, char **argv)
                                }
                                break;
                        case 'w':
-                               prefs->deskbar_icon_width = atoi(optarg);
-                               if (prefs->deskbar_icon_width < 
GetMinimumViewWidth())
-                                       prefs->deskbar_icon_width = 
GetMinimumViewWidth();
-                               else if (prefs->deskbar_icon_width > 50) 
prefs->deskbar_icon_width = 50;
+                               fPrefs->deskbar_icon_width = atoi(optarg);
+                               if (fPrefs->deskbar_icon_width < 
GetMinimumViewWidth())
+                                       fPrefs->deskbar_icon_width = 
GetMinimumViewWidth();
+                               else if (fPrefs->deskbar_icon_width > 50) 
fPrefs->deskbar_icon_width = 50;
                                break;
                        case 'h':
                        case '?':
@@ -100,48 +102,47 @@ PulseApp::PulseApp(int argc, char **argv)
        }
 
        if (deskbar) {
-               prefs->window_mode = DESKBAR_MODE;
+               fPrefs->window_mode = DESKBAR_MODE;
                if (activecolor != 0)
-                       prefs->deskbar_active_color = activecolor;
+                       fPrefs->deskbar_active_color = activecolor;
                if (idlecolor != 0)
-                       prefs->deskbar_idle_color = idlecolor;
+                       fPrefs->deskbar_idle_color = idlecolor;
                if (framecolor != 0)
-                       prefs->deskbar_frame_color = framecolor;
+                       fPrefs->deskbar_frame_color = framecolor;
        } else if (mini) {
-               prefs->window_mode = MINI_WINDOW_MODE;
+               fPrefs->window_mode = MINI_WINDOW_MODE;
                if (activecolor != 0)
-                       prefs->mini_active_color = activecolor;
+                       fPrefs->mini_active_color = activecolor;
                if (idlecolor != 0)
-                       prefs->mini_idle_color = idlecolor;
+                       fPrefs->mini_idle_color = idlecolor;
                if (framecolor != 0)
-                       prefs->mini_frame_color = framecolor;
+                       fPrefs->mini_frame_color = framecolor;
        } else if (normal)
-               prefs->window_mode = NORMAL_WINDOW_MODE;
+               fPrefs->window_mode = NORMAL_WINDOW_MODE;
 
-       prefs->Save();
-       BuildPulse();
+       fPrefs->Save();
 }
 
 
 void
-PulseApp::BuildPulse()
+PulseApp::ReadyToRun()
 {
-       // Remove this case for Deskbar add on API
+       if (!fRunFromReplicant)
+               BuildPulse();
+
+       fIsRunning = true;
+}
 
-       // If loading the replicant fails, launch the app instead
-       // This allows having the replicant and the app open simultaneously
-       if (prefs->window_mode == DESKBAR_MODE && LoadInDeskbar()) {
-               PostMessage(new BMessage(B_QUIT_REQUESTED));
-               return;
-       } else if (prefs->window_mode == DESKBAR_MODE)
-               prefs->window_mode = NORMAL_WINDOW_MODE;
 
+void
+PulseApp::BuildPulse()
+{
        PulseWindow *pulseWindow = NULL;
 
-       if (prefs->window_mode == MINI_WINDOW_MODE)
-               pulseWindow = new PulseWindow(prefs->mini_window_rect);
+       if (fPrefs->window_mode == MINI_WINDOW_MODE)
+               pulseWindow = new PulseWindow(fPrefs->mini_window_rect);
        else
-               pulseWindow = new PulseWindow(prefs->normal_window_rect);
+               pulseWindow = new PulseWindow(fPrefs->normal_window_rect);
 
        pulseWindow->MoveOnScreen(B_MOVE_IF_PARTIALLY_OFFSCREEN);
        pulseWindow->Show();
@@ -150,32 +151,75 @@ PulseApp::BuildPulse()
 
 PulseApp::~PulseApp()
 {
-       // Load the replicant after we save our preferences so they don't
-       // get overwritten by DeskbarPulseView's instance
-       prefs->Save();
-       if (prefs->window_mode == DESKBAR_MODE)
-               LoadInDeskbar();
+       fPrefs->Save();
 
-       delete prefs;
+       delete fPrefs;
 }
 
 
 void
-PulseApp::AboutRequested()
+PulseApp::MessageReceived(BMessage* message)
 {
-       PulseApp::ShowAbout(true);
+       switch (message->what) {
+               case PV_PREFERENCES:
+               {
+                       // This message can be posted before ReadyToRun from
+                       // BRoster::Launch, in that case, take note to not show 
the main
+                       // window but only the preferences
+                       if (!fIsRunning)
+                               fRunFromReplicant = true;
+                       BMessenger from;
+                       message->FindMessenger("settingsListener", &from);
+
+
+                       if (fPrefsWindow != NULL) {
+                               fPrefsWindow->Activate(true);
+                               break;
+                       }
+                       // If the window is already open, bring it to the front
+                       if (fPrefsWindow != NULL) {
+                               fPrefsWindow->Activate(true);
+                               break;
+                       }
+                       // Otherwise launch a new preferences window
+                       PulseApp *pulseapp = (PulseApp *)be_app;
+                       fPrefsWindow = new 
PrefsWindow(pulseapp->fPrefs->prefs_window_rect,
+                               B_TRANSLATE("Pulse settings"), &from,
+                               pulseapp->fPrefs);
+                       if (fRunFromReplicant) {
+                               fPrefsWindow->SetFlags(fPrefsWindow->Flags()
+                                       | B_QUIT_ON_WINDOW_CLOSE);
+                       }
+                       fPrefsWindow->Show();
+
+                       break;
+               }
+
+               case PV_ABOUT:
+                       // This message can be posted before ReadyToRun from
+                       // BRoster::Launch, in that case, take note to not show 
the main
+                       // window but only the about box
+                       if (!fIsRunning)
+                               fRunFromReplicant = true;
+                       PostMessage(B_ABOUT_REQUESTED);
+                       break;
+
+               case PRV_QUIT:
+                       fPrefsWindow = NULL;
+                       fRunFromReplicant = false;
+                       break;
+
+               default:
+                       BApplication::MessageReceived(message);
+                       break;
+       }
 }
 
 
 void
-PulseApp::ShowAbout(bool asApplication)
+PulseApp::AboutRequested()
 {
-       // static version to be used in replicant mode
-       BString name;
-       if (asApplication)
-               name = B_TRANSLATE_SYSTEM_NAME("Pulse");
-       else
-               name = B_TRANSLATE("Pulse");
+       BString name = B_TRANSLATE("Pulse");
 
        BString message = B_TRANSLATE(
                "%s\n\nBy David Ramsey and Arve Hjønnevåg\n"
@@ -184,6 +228,9 @@ PulseApp::ShowAbout(bool asApplication)
        BAlert *alert = new BAlert(B_TRANSLATE("Info"),
                message.String(), B_TRANSLATE("OK"));
 
+       if (fRunFromReplicant)
+               alert->SetFlags(alert->Flags() | B_QUIT_ON_WINDOW_CLOSE);
+
        BTextView* view = alert->TextView();
        BFont font;
 
@@ -196,6 +243,7 @@ PulseApp::ShowAbout(bool asApplication)
        alert->SetFlags(alert->Flags() | B_CLOSE_ON_ESCAPE);
        // Use the asynchronous version so we don't block the window's thread
        alert->Go(NULL);
+       fRunFromReplicant = false;
 }
 
 //     #pragma mark -
@@ -259,10 +307,10 @@ LoadInDeskbar()
        }
 
        // Must be 16 pixels high, the width is retrieved from the Prefs class
-       int width = pulseapp->prefs->deskbar_icon_width;
+       int width = pulseapp->fPrefs->deskbar_icon_width;
        int min_width = GetMinimumViewWidth();
        if (width < min_width) {
-               pulseapp->prefs->deskbar_icon_width = min_width;
+               pulseapp->fPrefs->deskbar_icon_width = min_width;
                width = min_width;
        }
 
diff --git a/src/apps/pulse/PulseApp.h b/src/apps/pulse/PulseApp.h
index 266af30d4f..97a3e2c0af 100644
--- a/src/apps/pulse/PulseApp.h
+++ b/src/apps/pulse/PulseApp.h
@@ -16,20 +16,28 @@
 #include <Catalog.h>
 
 #include "Prefs.h"
+#include "PrefsWindow.h"
 
 
 class PulseApp : public BApplication {
 public:
-                                               PulseApp(int argc, char **argv);
-                                               ~PulseApp();
+                                                       PulseApp(int argc, char 
**argv);
+                                                       ~PulseApp();
 
-       virtual void            AboutRequested();
-       static  void            ShowAbout(bool asApplication);
+       virtual void                    MessageReceived(BMessage* message);
+       virtual void                    ReadyToRun();
+       virtual void                    AboutRequested();
 
-                       Prefs*          prefs;
+private:
+                       void                    BuildPulse();
+
+public:
+                       Prefs*                  fPrefs;
 
 private:
-                       void            BuildPulse();
+                       bool                    fRunFromReplicant;
+                       bool                    fIsRunning;
+                       PrefsWindow*    fPrefsWindow;
 };
 
 extern bool LastEnabledCPU(unsigned int cpu);
diff --git a/src/apps/pulse/PulseWindow.cpp b/src/apps/pulse/PulseWindow.cpp
index c27d4ad3f2..6ae131a373 100644
--- a/src/apps/pulse/PulseWindow.cpp
+++ b/src/apps/pulse/PulseWindow.cpp
@@ -30,7 +30,7 @@
 PulseWindow::PulseWindow(BRect rect)
        :
        BWindow(rect, B_TRANSLATE_SYSTEM_NAME("Pulse"), B_TITLED_WINDOW,
-               B_NOT_RESIZABLE | B_NOT_ZOOMABLE)
+               B_NOT_RESIZABLE | B_NOT_ZOOMABLE | B_QUIT_ON_WINDOW_CLOSE)
 {
        SetPulseRate(200000);
 
@@ -40,10 +40,10 @@ PulseWindow::PulseWindow(BRect rect)
        AddChild(fNormalPulseView);
 
        fMiniPulseView = new MiniPulseView(bounds, "MiniPulseView",
-               pulseapp->prefs);
+               pulseapp->fPrefs);
        AddChild(fMiniPulseView);
 
-       fMode = pulseapp->prefs->window_mode;
+       fMode = pulseapp->fPrefs->window_mode;
        if (fMode == MINI_WINDOW_MODE) {
                SetLook(B_MODAL_WINDOW_LOOK);
                SetFeel(B_NORMAL_WINDOW_FEEL);
@@ -53,8 +53,6 @@ PulseWindow::PulseWindow(BRect rect)
                ResizeTo(rect.Width(), rect.Height());
        } else
                fMiniPulseView->Hide();
-
-       fPrefsWindow = NULL;
 }
 
 
@@ -63,9 +61,9 @@ PulseWindow::~PulseWindow()
        PulseApp *pulseapp = (PulseApp *)be_app;
 
        if (fMode == NORMAL_WINDOW_MODE)
-               pulseapp->prefs->normal_window_rect = Frame();
+               pulseapp->fPrefs->normal_window_rect = Frame();
        else if (fMode == MINI_WINDOW_MODE)
-               pulseapp->prefs->mini_window_rect = Frame();
+               pulseapp->fPrefs->mini_window_rect = Frame();
 }
 
 
@@ -85,25 +83,14 @@ PulseWindow::MessageReceived(BMessage *message)
                case PRV_MINI_CHANGE_COLOR:
                        fMiniPulseView->UpdateColors(message);
                        break;
-               case PRV_QUIT:
-                       fPrefsWindow = NULL;
-                       break;
                case PV_PREFERENCES: {
-                       // If the window is already open, bring it to the front
-                       if (fPrefsWindow != NULL) {
-                               fPrefsWindow->Activate(true);
-                               break;
-                       }
-                       // Otherwise launch a new preferences window
-                       PulseApp *pulseapp = (PulseApp *)be_app;
-                       fPrefsWindow = new 
PrefsWindow(pulseapp->prefs->prefs_window_rect,
-                               B_TRANSLATE("Pulse settings"), new 
BMessenger(this),
-                               pulseapp->prefs);
-                       fPrefsWindow->Show();
+                       DetachCurrentMessage();
+                       message->AddMessenger("settingsListener", this);
+                       be_app->PostMessage(message);
                        break;
                }
                case PV_ABOUT: {
-                       PulseApp::ShowAbout(true);
+                       be_app->PostMessage(B_ABOUT_REQUESTED);
                        break;
                }
                case PV_QUIT:
@@ -131,27 +118,27 @@ PulseWindow::SetMode(int newmode)
        switch (newmode) {
                case PV_NORMAL_MODE:
                        if (fMode == MINI_WINDOW_MODE) {
-                               pulseapp->prefs->mini_window_rect = Frame();
-                               pulseapp->prefs->window_mode = 
NORMAL_WINDOW_MODE;
-                               pulseapp->prefs->Save();
+                               pulseapp->fPrefs->mini_window_rect = Frame();
+                               pulseapp->fPrefs->window_mode = 
NORMAL_WINDOW_MODE;
+                               pulseapp->fPrefs->Save();
                        }
                        fMiniPulseView->Hide();
                        fNormalPulseView->Show();
                        fMode = NORMAL_WINDOW_MODE;
                        SetType(B_TITLED_WINDOW);
                        SetFlags(B_NOT_RESIZABLE | B_NOT_ZOOMABLE);
-                       
ResizeTo(pulseapp->prefs->normal_window_rect.IntegerWidth(),
-                               
pulseapp->prefs->normal_window_rect.IntegerHeight());
-                       MoveTo(pulseapp->prefs->normal_window_rect.left,
-                               pulseapp->prefs->normal_window_rect.top);
+                       
ResizeTo(pulseapp->fPrefs->normal_window_rect.IntegerWidth(),
+                               
pulseapp->fPrefs->normal_window_rect.IntegerHeight());
+                       MoveTo(pulseapp->fPrefs->normal_window_rect.left,
+                               pulseapp->fPrefs->normal_window_rect.top);
                        MoveOnScreen(B_MOVE_IF_PARTIALLY_OFFSCREEN);
                        break;
 
                case PV_MINI_MODE:
                        if (fMode == NORMAL_WINDOW_MODE) {
-                               pulseapp->prefs->normal_window_rect = Frame();
-                               pulseapp->prefs->window_mode = MINI_WINDOW_MODE;
-                               pulseapp->prefs->Save();
+                               pulseapp->fPrefs->normal_window_rect = Frame();
+                               pulseapp->fPrefs->window_mode = 
MINI_WINDOW_MODE;
+                               pulseapp->fPrefs->Save();
                        }
                        fNormalPulseView->Hide();
                        fMiniPulseView->Show();
@@ -160,10 +147,10 @@ PulseWindow::SetMode(int newmode)
                        SetFeel(B_NORMAL_WINDOW_FEEL);
                        SetFlags(B_NOT_ZOOMABLE);
                        SetSizeLimits(GetMinimumViewWidth() - 1, 4096, 2, 4096);
-                       
ResizeTo(pulseapp->prefs->mini_window_rect.IntegerWidth(),
-                               
pulseapp->prefs->mini_window_rect.IntegerHeight());
-                       MoveTo(pulseapp->prefs->mini_window_rect.left,
-                               pulseapp->prefs->mini_window_rect.top);
+                       
ResizeTo(pulseapp->fPrefs->mini_window_rect.IntegerWidth(),
+                               
pulseapp->fPrefs->mini_window_rect.IntegerHeight());
+                       MoveTo(pulseapp->fPrefs->mini_window_rect.left,
+                               pulseapp->fPrefs->mini_window_rect.top);
                        MoveOnScreen(B_MOVE_IF_PARTIALLY_OFFSCREEN);
                        break;
 
@@ -171,8 +158,8 @@ PulseWindow::SetMode(int newmode)
                        // Do not set window's mode to DESKBAR_MODE because the
                        // destructor needs to save the correct BRect. 
~PulseApp()
                        // will handle launching the replicant after our prefs 
are saved.
-                       pulseapp->prefs->window_mode = DESKBAR_MODE;
-                       PostMessage(B_QUIT_REQUESTED);
+                       pulseapp->fPrefs->window_mode = DESKBAR_MODE;
+                       LoadInDeskbar();
                        break;
        }
 }
@@ -181,6 +168,5 @@ PulseWindow::SetMode(int newmode)
 bool
 PulseWindow::QuitRequested()
 {
-       be_app->PostMessage(B_QUIT_REQUESTED);
        return true;
 }
diff --git a/src/apps/pulse/PulseWindow.h b/src/apps/pulse/PulseWindow.h
index 0f9b35186a..79ee0c0424 100644
--- a/src/apps/pulse/PulseWindow.h
+++ b/src/apps/pulse/PulseWindow.h
@@ -16,7 +16,6 @@
 
 #include "NormalPulseView.h"
 #include "MiniPulseView.h"
-#include "PrefsWindow.h"
 
 
 class PulseWindow : public BWindow {
@@ -32,7 +31,6 @@ class PulseWindow : public BWindow {
        private:
                NormalPulseView*        fNormalPulseView;
                MiniPulseView*          fMiniPulseView;
-               PrefsWindow*            fPrefsWindow;
                int32                           fMode;
 };
 


Other related posts:

  • » [haiku-commits] haiku: hrev54180 - src/apps/pulse - waddlesplash