hrev52834 adds 1 changeset to branch 'master'
old head: 3493fcb668b090f975b6f7d7aa8ac35069107991
new head: b073a8c83ff43a60cfe688af345abfa053bd7e6d
overview:
https://git.haiku-os.org/haiku/log/?qt=range&q=b073a8c83ff4+%5E3493fcb668b0
----------------------------------------------------------------------------
b073a8c83ff4: apps/autoraise Restore functionality
* Restore functionality / compilation
(C++11)Spacing issues with string macros fixed.
Fix type declarartion for removeFromDeskbar so compiles
on x86_64.
* Code format cleanup
* Remove DANO related code
Change-Id: I738d14914e320b7606210d8263065187b2c06b1a
Reviewed-on: https://review.haiku-os.org/c/898
Reviewed-by: Adrien Destugues <pulkomandy@xxxxxxxxx>
[ Rob Gill <rrobgill@xxxxxxxxxxxxxx> ]
----------------------------------------------------------------------------
Revision: hrev52834
Commit: b073a8c83ff43a60cfe688af345abfa053bd7e6d
URL: https://git.haiku-os.org/haiku/commit/?id=b073a8c83ff4
Author: Rob Gill <rrobgill@xxxxxxxxxxxxxx>
Date: Fri Jan 25 03:10:39 2019 UTC
Committer: waddlesplash <waddlesplash@xxxxxxxxx>
Commit-Date: Sun Feb 3 18:03:50 2019 UTC
----------------------------------------------------------------------------
6 files changed, 80 insertions(+), 196 deletions(-)
src/apps/autoraise/AutoRaiseApp.cpp | 52 +++++++-----
src/apps/autoraise/AutoRaiseApp.h | 3 +
src/apps/autoraise/AutoRaiseIcon.cpp | 134 ++++++-------------------------
src/apps/autoraise/AutoRaiseIcon.h | 32 ++++----
src/apps/autoraise/Jamfile | 3 +
src/apps/autoraise/common.h | 52 +-----------
----------------------------------------------------------------------------
diff --git a/src/apps/autoraise/AutoRaiseApp.cpp
b/src/apps/autoraise/AutoRaiseApp.cpp
index edd7790626..69069231f1 100644
--- a/src/apps/autoraise/AutoRaiseApp.cpp
+++ b/src/apps/autoraise/AutoRaiseApp.cpp
@@ -6,15 +6,16 @@ AutoRaiseApp::AutoRaiseApp()
{
removeFromDeskbar(NULL);
_directToDeskbar = false;
-
- //since the tray item shows an icon, and the class TrayView needs to be
able to know the location
- //of the executing binary, we write into the settings file this
critical information when the app is fired up
+
+ //since the tray item shows an icon, and the class TrayView needs to be
+ //able to know the location of the executing binary, we write into the
+ //settings file this critical information when the app is fired up
app_info info;
be_app->GetAppInfo(&info);
-
+
//now, put the path into the settings file
AutoRaiseSettings settings;
- settings.SetAppPath(info.ref);
+ settings.SetAppPath(info.ref);
}
AutoRaiseApp::~AutoRaiseApp()
@@ -26,39 +27,43 @@ void AutoRaiseApp::ArgvReceived(int32 argc, char ** argv)
{
BString option;
bool inDeskbar = false, persist = false;
+ BString usageNote;
+ usageNote = "\nUsage: " APP_NAME " [options]\n\t--deskbar\twill not
open "
+ "window, will just put " APP_NAME " into
tray\n\t--persist will put "
+ APP_NAME " into tray such that it remains between
bootings\n";
for (int32 i = 1; i < argc; i++)
{
option = argv[i];
if (option.IFindFirst("deskbar") != B_ERROR)
inDeskbar = true;
-
+
if (option.IFindFirst("persist") != B_ERROR)
persist = true;
}
-
+
if (inDeskbar && !persist)
{
- printf(APP_NAME" being put into Tray (one shot)...\n");
-
+ printf(APP_NAME " being put into Tray (one shot)...\n");
+
PutInTray(false);
-
+
_directToDeskbar = true;
}
else if (inDeskbar && persist)
{
- printf(APP_NAME" being put into Tray (persistant)...\n");
+ printf(APP_NAME " being put into Tray (persistant)...\n");
PutInTray(true);
-
+
_directToDeskbar = true;
}
else
{
- printf("\nUsage: "APP_NAME" [options]\n\t--deskbar\twill not
open window, will just put "APP_NAME" into tray\n\t--persist will put
"APP_NAME" into tray such that it remains between bootings\n");
+ printf(usageNote);
}
-
+
be_app_messenger.SendMessage(B_QUIT_REQUESTED);
}
@@ -66,12 +71,16 @@ void AutoRaiseApp::ReadyToRun()
{
if (!_directToDeskbar)
{
- printf("\nUsage: " APP_NAME " [options]\n\t--deskbar\twill not
open window, will just put " APP_NAME " into tray\n\t--persist will put "
APP_NAME " into tray such that it remains between bootings\n");
- BAlert *alert = new BAlert("usage box", APP_NAME ", (c) 2002,
mmu_man\nUsage: " APP_NAME " [options]\n\t--deskbar\twill not open window, will
just put " APP_NAME " into tray\n\t--persist will put "APP_NAME" into tray such
that it remains between bootings\n", "OK", NULL, NULL,
- B_WIDTH_AS_USUAL, B_OFFSET_SPACING, B_INFO_ALERT);
- alert->SetShortcut(0, B_ENTER);
- alert->SetFlags(alert->Flags() | B_CLOSE_ON_ESCAPE);
- alert->Go();
+ printf(usageNote);
+ BAlert *alert = new BAlert("usage box", APP_NAME ", (c) 2002, "
+ "mmu_man\nUsage: " APP_NAME "
[options]\n\t--deskbar\twill not "
+ "open window, will just put " APP_NAME " into
tray\n\t--persist "
+ "will put " APP_NAME " into tray such that it remains
between "
+ "bootings\n", "OK", NULL, NULL, B_WIDTH_AS_USUAL,
B_OFFSET_SPACING,
+ B_INFO_ALERT);
+ alert->SetShortcut(0, B_ENTER);
+ alert->SetFlags(alert->Flags() | B_CLOSE_ON_ESCAPE);
+ alert->Go();
be_app_messenger.SendMessage(B_QUIT_REQUESTED);
}
}
@@ -79,7 +88,7 @@ void AutoRaiseApp::ReadyToRun()
void AutoRaiseApp::PutInTray(bool persist)
{
BDeskbar db;
-
+
if (!persist)
db.AddItem(new TrayView);
else {
@@ -95,5 +104,4 @@ int main()
{
AutoRaiseApp *app = new AutoRaiseApp();
app->Run();
-
}
diff --git a/src/apps/autoraise/AutoRaiseApp.h
b/src/apps/autoraise/AutoRaiseApp.h
index 608bb2dc5a..8df68c3638 100644
--- a/src/apps/autoraise/AutoRaiseApp.h
+++ b/src/apps/autoraise/AutoRaiseApp.h
@@ -20,6 +20,9 @@ class AutoRaiseApp: public BApplication{
virtual void ReadyToRun();
void PutInTray(bool);
+
+ private:
+ BString usageNote;
};
#endif
diff --git a/src/apps/autoraise/AutoRaiseIcon.cpp
b/src/apps/autoraise/AutoRaiseIcon.cpp
index c51d9f7340..c3070b72ad 100644
--- a/src/apps/autoraise/AutoRaiseIcon.cpp
+++ b/src/apps/autoraise/AutoRaiseIcon.cpp
@@ -1,10 +1,4 @@
-/* this is for the DANO hack (new, simpler version than the BStringIO hack) */
#include <BeBuild.h>
-#ifdef B_BEOS_VERSION_DANO
-#define private public
-#include <Messenger.h>
-#undef private
-#endif
#include "AutoRaiseIcon.h"
#include <stdlib.h>
@@ -21,13 +15,14 @@ extern "C" _EXPORT BView *instantiate_deskbar_item(void)
}
-long removeFromDeskbar(void *)
+status_t removeFromDeskbar(void *)
{
BDeskbar db;
- if (db.RemoveItem(APP_NAME) != B_OK)
+ if (db.RemoveItem(APP_NAME) != B_OK) {
printf("Unable to remove AutoRaise from BDeskbar\n");
+ }
- return 0;
+ return B_OK;
}
//**************************************************
@@ -61,9 +56,6 @@ ConfigMenu::ConfigMenu(TrayView *tv, bool useMag)
msg->AddInt32(AR_MODE, Mode_DeskbarOver);
tmpi = new BMenuItem("Deskbar only (over its area)", msg);
tmpi->SetMarked(s->Mode() == Mode_DeskbarOver);
-#ifdef USE_DANO_HACK
- tmpi->SetEnabled(false);
-#endif
tmpm->AddItem(tmpi);
msg = new BMessage(MSG_SET_MODE);
@@ -170,7 +162,7 @@ ConfigMenu::ConfigMenu(TrayView *tv, bool useMag)
AddSeparatorItem();
// AddItem(new BMenuItem("Settings...", new BMessage(OPEN_SETTINGS)));
- AddItem(new BMenuItem("About "APP_NAME B_UTF8_ELLIPSIS,
+ AddItem(new BMenuItem("About " APP_NAME B_UTF8_ELLIPSIS,
new BMessage(B_ABOUT_REQUESTED)));
AddItem(new BMenuItem("Remove from tray", new
BMessage(REMOVE_FROM_TRAY)));
@@ -221,10 +213,8 @@ void TrayView::_init()
get_thread_info(find_thread(NULL), &ti);
fDeskbarTeam = ti.team;
-#ifndef USE_DANO_HACK
resume_thread(poller_thread = spawn_thread(poller, "AutoRaise desktop "
"poller", B_NORMAL_PRIORITY, (void *)this));
-#endif
//determine paths to icon files based on app path in settings file
@@ -269,18 +259,11 @@ TrayView::~TrayView(){
status_t ret;
if (watching) {
-#ifdef USE_DANO_HACK
- be_roster->StopWatching(this);
-#else
-// acquire_sem(fPollerSem);
-#endif
set_mouse_mode(fNormalMM);
watching = false;
}
delete_sem(fPollerSem);
-#ifndef USE_DANO_HACK
wait_for_thread(poller_thread, &ret);
-#endif
if (_activeIcon) delete _activeIcon;
if (_inactiveIcon) delete _inactiveIcon;
if (_settings) delete _settings;
@@ -303,8 +286,7 @@ status_t TrayView::Archive(BMessage *data, bool deep) const
{
//Rehydrate the View from a given message (called by the DeskBar)
TrayView *TrayView::Instantiate(BMessage *data) {
- if (!validate_instantiation(data, "TrayView"))
- {
+ if (!validate_instantiation(data, "TrayView")) {
return NULL;
}
@@ -314,16 +296,12 @@ TrayView *TrayView::Instantiate(BMessage *data) {
void TrayView::AttachedToWindow() {
if(Parent())
SetViewColor(Parent()->ViewColor());
- if (_settings->Active()) {
- fNormalMM = mouse_mode();
- set_mouse_mode(B_FOCUS_FOLLOWS_MOUSE);
-#ifdef USE_DANO_HACK
- be_roster->StartWatching(this,
B_REQUEST_WINDOW_ACTIVATED);
-#else
- release_sem(fPollerSem);
-#endif
- watching = true;
- }
+ if (_settings->Active()) {
+ fNormalMM = mouse_mode();
+ set_mouse_mode(B_FOCUS_FOLLOWS_MOUSE);
+ release_sem(fPollerSem);
+ watching = true;
+ }
}
void TrayView::Draw(BRect updaterect) {
@@ -389,16 +367,14 @@ void TrayView::MouseDown(BPoint where) {
int32 fronter(void *arg)
{
TrayView *tv = (TrayView *)arg;
- int32 tok = tv->current_window;
int32 ws = current_workspace();
+ volatile int32 tok = tv->current_window;
sem_id sem = tv->fPollerSem;
snooze(tv->raise_delay);
-#ifndef USE_DANO_HACK
if (acquire_sem(sem) != B_OK)
return B_OK; // this really needs a better locking model...
-#endif
if (ws != current_workspace())
goto end; // don't touch windows if we changed workspace
if (tv->last_raiser_thread != find_thread(NULL))
@@ -415,7 +391,6 @@ PRINT(("tok = %ld cw = %ld\n", tok, tv->current_window));
return B_OK;
}
-#ifndef USE_DANO_HACK
int32 poller(void *arg)
{
@@ -451,7 +426,8 @@ int32 poller(void *arg)
goto zzz; // invalid window ?
/*
printf("if (!%s && (%li, %li)isin(%li)(%li, %li, %li, %li) && (%li != %li) ",
wi->is_mini?"true":"false",
- (long)mouse.x, (long)mouse.y, i, wi->window_left, wi->window_right,
wi->window_top, wi->window_bottom, wi->id, tok);
+ (long)mouse.x, (long)mouse.y, i, wi->window_left, wi->window_right,
+ wi->window_top, wi->window_bottom, wi-server_token, tok);
*/
@@ -460,12 +436,13 @@ printf("if (!%s && (%li, %li)isin(%li)(%li, %li, %li,
%li) && (%li != %li) ", wi
&& (((long)mouse.y) >
wi->window_top) && (((long)mouse.y) < wi->window_bottom)) {
//((tv->_settings->Mode() != Mode_DeskbarOver) || (wi->team ==
tv->fDeskbarTeam))
- if ((tv->_settings->Mode() == Mode_All)
&& (wi->id == tv->current_window))
+ if ((tv->_settings->Mode() == Mode_All)
&&
+ (wi->server_token ==
tv->current_window))
goto zzz; // already raised
if ((tv->_settings->Mode() == Mode_All)
|| (wi->team == tv->fDeskbarTeam)) {
- tv->current_window = wi->id;
- tok = wi->id;
+ tv->current_window =
wi->server_token;
+ tok = wi->server_token;
resume_thread(tv->last_raiser_thread = spawn_thread(fronter, "fronter",
B_NORMAL_PRIORITY, (void *)tv));
goto zzz;
} else if (tv->_settings->Mode() ==
Mode_DeskbarTouch) // give up, before we find Deskbar under it
@@ -487,7 +464,6 @@ printf("if (!%s && (%li, %li)isin(%li)(%li, %li, %li, %li)
&& (%li != %li) ", wi
return B_OK;
}
-#endif
void TrayView::MessageReceived(BMessage* message)
{
@@ -533,72 +509,22 @@ void TrayView::MessageReceived(BMessage* message)
}
case REMOVE_FROM_TRAY:
{
- thread_id tid = spawn_thread(removeFromDeskbar,
"RemoveFromDeskbar", B_NORMAL_PRIORITY, NULL);
- if (tid) resume_thread(tid);
+ thread_id tid = spawn_thread(removeFromDeskbar,
"RemoveFromDeskbar", B_NORMAL_PRIORITY, (void*)this);
+ if (tid != 0) resume_thread(tid);
break;
}
case B_ABOUT_REQUESTED:
alert = new BAlert("about box", "AutoRaise, (c) 2002,
mmu_man\nEnjoy :-)", "OK", NULL, NULL,
- B_WIDTH_AS_USUAL, B_OFFSET_SPACING, B_INFO_ALERT);
- alert->SetShortcut(0, B_ENTER);
- alert->SetFlags(alert->Flags() | B_CLOSE_ON_ESCAPE);
- alert->Go(NULL); // use asynchronous version
+ B_WIDTH_AS_USUAL, B_OFFSET_SPACING,
B_INFO_ALERT);
+ alert->SetShortcut(0, B_ENTER);
+ alert->SetFlags(alert->Flags() | B_CLOSE_ON_ESCAPE);
+ alert->Go(NULL); // use asynchronous version
break;
case OPEN_SETTINGS:
break;
-#ifdef USE_DANO_HACK
- case B_SOME_WINDOW_ACTIVATED:
-// printf("Window Activated\n");
-// message->PrintToStream();
- BPoint mouse;
- uint32 buttons;
- GetMouse(&mouse, &buttons);
- if (buttons)
- break;
- if (message->FindMessenger("be:window", &msgr) < B_OK)
- puts("BMsgr ERROR");
- else {
- bool doZoom = false;
- BRect zoomRect(0.0f, 0.0f, 0.0f, 0.0f);
- port_id pi = msgr.fPort;
-// printf("port:%li (%lx)\n", pi, pi);
-
- int32 *tl, tlc;
- tl = get_token_list(msgr.Team(), &tlc);
-// printf("tokens (team %li): (%li) ",
msgr.Team(), tlc);
- for (tlc; tlc; tlc--) {
-// printf("%li ", tl[tlc-1]);
- window_info *wi =
get_window_info(tl[tlc-1]);
- if (wi) {
- if (wi->client_port == pi) {
- if ((wi->layer < 3) //
we hit the desktop or a window not on this WS
- ||
(wi->window_left > wi->window_right) || (wi->window_top > wi->window_bottom)
- ||
(wi->is_mini)
- ||
(/*(_settings->Mode() == Mode_All) && */(wi->id == current_window))) {
- // already
raised
- free(wi);
- break;
- }
-
- if ((_settings->Mode()
== Mode_All) || (wi->team == fDeskbarTeam)) {
- PRINT(("raising
wi=%li, cp=%ld, pi=%ld team=%ld DBteam=%ld\n", wi->id, wi->client_port, pi,
wi->team, fDeskbarTeam));
- current_window
= wi->id;
- int32 tok =
wi->id;
-
resume_thread(last_raiser_thread = spawn_thread(fronter, "fronter",
B_NORMAL_PRIORITY, (void *)this));
- } else {
- current_window
= wi->id;
- }
- }
- free(wi);
- }
- }
-// puts("");
- free(tl);
- }
- break;
-#endif
+
default:
BView::MessageReceived(message);
}
@@ -617,22 +543,14 @@ void TrayView::SetActive(bool st)
if (!watching) {
fNormalMM = mouse_mode();
set_mouse_mode(B_FOCUS_FOLLOWS_MOUSE);
-#ifdef USE_DANO_HACK
- be_roster->StartWatching(this,
B_REQUEST_WINDOW_ACTIVATED);
-#else
release_sem(fPollerSem);
-#endif
watching = true;
}
}
else
{
if (watching) {
-#ifdef USE_DANO_HACK
- be_roster->StopWatching(this);
-#else
acquire_sem(fPollerSem);
-#endif
set_mouse_mode(fNormalMM);
watching = false;
}
diff --git a/src/apps/autoraise/AutoRaiseIcon.h
b/src/apps/autoraise/AutoRaiseIcon.h
index 3d6d3eaefd..83164166cc 100644
--- a/src/apps/autoraise/AutoRaiseIcon.h
+++ b/src/apps/autoraise/AutoRaiseIcon.h
@@ -16,9 +16,9 @@ extern "C" _EXPORT BView* instantiate_deskbar_item();
//since we can't remove the view from the deskbar from within the same thread
-//as tray view, a thread will be spawned and this function called. It removed
TrayView
-//from the Deskbar
-long removeFromDeskbar(void *);
+//as tray view, a thread will be spawned and this function called. It removed
+//TrayView from the Deskbar
+status_t removeFromDeskbar(void *);
class _EXPORT TrayView;
@@ -27,20 +27,20 @@ class _EXPORT TrayView;
class TrayView derived from BView
The icon in the Deskbar tray, provides the fundamental
- user interface. Archivable, so it can be flattened and fired
- at the deskbar.
+ user interface. Archivable, so it can be flattened and
+ fired at the deskbar.
*********************************************/
class TrayView:public BView{
private:
-
+
BBitmap *_activeIcon, *_inactiveIcon;
entry_ref _appPath;
bool watching;
-
- void _init(void); //initialization common to all constructors
-
+
+ void _init(void); //initialization common to all constructors
+
public:
AutoRaiseSettings *_settings;
mode_mouse fNormalMM;
@@ -48,24 +48,24 @@ class TrayView:public BView{
bigtime_t raise_delay;
volatile thread_id last_raiser_thread;
team_id fDeskbarTeam;
-
- bigtime_t polling_delay; // for !DANO
+
+ bigtime_t polling_delay;
sem_id fPollerSem;
thread_id poller_thread;
-
+
TrayView();
TrayView(BMessage *mdArchive);
virtual ~TrayView();
-
+
virtual status_t Archive(BMessage *data, bool deep = true)
const;
static TrayView *Instantiate(BMessage *data);
-
+
virtual void Draw(BRect updateRect );
virtual void AttachedToWindow();
virtual void MouseDown(BPoint where);
virtual void MessageReceived(BMessage* message);
virtual void GetPreferredSize(float *w, float *h);
-
+
AutoRaiseSettings *Settings() const;
void SetActive(bool);
};
@@ -84,7 +84,7 @@ int32 poller(void *);
class ConfigMenu: public BPopUpMenu{
private:
-
+
public:
ConfigMenu(TrayView *tv, bool useMag);
virtual ~ConfigMenu();
diff --git a/src/apps/autoraise/Jamfile b/src/apps/autoraise/Jamfile
index bf42e526b7..b9f56681b9 100644
--- a/src/apps/autoraise/Jamfile
+++ b/src/apps/autoraise/Jamfile
@@ -1,5 +1,8 @@
SubDir HAIKU_TOP src apps autoraise ;
+UsePrivateHeaders interface shared ;
+UsePrivateHeaders private shared ;
+
SetSubDirSupportedPlatformsBeOSCompatible ;
Application AutoRaise :
diff --git a/src/apps/autoraise/common.h b/src/apps/autoraise/common.h
index 797bc0d85a..0a6cfffdb7 100644
--- a/src/apps/autoraise/common.h
+++ b/src/apps/autoraise/common.h
@@ -7,12 +7,7 @@
#include <InterfaceKit.h>
#include <String.h>
#include <StorageKit.h>
-
-
-// R5.1 has a very helpful API...
-#if (B_BEOS_VERSION == 0x0510)
-#define USE_DANO_HACK
-#endif
+#include <WindowInfo.h>
/***************************************************
common.h
@@ -21,7 +16,7 @@
// used to check the image to use to get the resources
#define APP_NAME "AutoRaise"
-#define APP_SIG "application/x-vnd.mmu.AutoRaise"
+#define APP_SIG "application/x-vnd.mmu.AutoRaise"
#define SETTINGS_FILE "x-vnd.mmu.AutoRaise_settings"
//names of data segments in settings file
@@ -51,12 +46,8 @@ enum {
#define ADD_TO_TRAY 'zATT'
#define REMOVE_FROM_TRAY 'zRFT'
-
#define OPEN_SETTINGS 'zOPS'
-
-
#define MSG_DELAY_POPUP 'arDP'
-
#define MSG_TOGGLE_ACTIVE 'arTA'
#define MSG_SET_ACTIVE 'arSA'
#define MSG_SET_INACTIVE 'arSI'
@@ -64,43 +55,4 @@ enum {
#define MSG_SET_MODE 'arSM'
#define MSG_SET_BEHAVIOUR 'arSB'
-/* from OpenTracker deskbar/WindowMenuItem.h */
-
-// from interface_defs.h
-struct window_info {
- team_id team;
- int32 id; /* window's token */
-
- int32 thread;
- int32 client_token;
- int32 client_port;
- uint32 workspaces;
-
- int32 layer;
- uint32 w_type; /* B_TITLED_WINDOW, etc. */
- uint32 flags; /* B_WILL_FLOAT, etc. */
- int32 window_left;
- int32 window_top;
- int32 window_right;
- int32 window_bottom;
- int32 show_hide_level;
- bool is_mini;
- char name[1];
-};
-
-// from interface_misc.h
-enum window_action {
- B_MINIMIZE_WINDOW,
- B_BRING_TO_FRONT
-};
-
-// from interface_misc.h
-void do_window_action(int32 window_id, int32 action,
- BRect zoomRect, bool
zoom);
-window_info *get_window_info(int32 a_token);
-int32 *get_token_list(team_id app, int32 *count);
-void do_minimize_team(BRect zoomRect, team_id team, bool zoom);
-void do_bring_to_front_team(BRect zoomRect, team_id app, bool zoom);
-
-
#endif