From c2458eff45b57cd53dabb2f488a7498667ced86d Mon Sep 17 00:00:00 2001 From: Adrien Destugues Date: Tue, 10 Nov 2015 14:11:26 +0100 Subject: [PATCH] LnLauncher: fix saving settings and add setting to not autostart --- haiku-apps/lnlauncher/lnlauncher-1.1.2.recipe | 5 +- .../patches/lnlauncher-1.1.2.patchset | 488 ++++++++++++++++++ 2 files changed, 492 insertions(+), 1 deletion(-) create mode 100644 haiku-apps/lnlauncher/patches/lnlauncher-1.1.2.patchset diff --git a/haiku-apps/lnlauncher/lnlauncher-1.1.2.recipe b/haiku-apps/lnlauncher/lnlauncher-1.1.2.recipe index e1db7852a..16324d1b2 100644 --- a/haiku-apps/lnlauncher/lnlauncher-1.1.2.recipe +++ b/haiku-apps/lnlauncher/lnlauncher-1.1.2.recipe @@ -12,10 +12,11 @@ The latest version, 1.1.2, was adapted for Haiku by Daniel Weber - thank you!" LICENSE="MIT" COPYRIGHT="2000-2015 Mikael Eiman" HOMEPAGE="http://eiman.tv/LnLauncher" -REVISION="4" +REVISION="5" ARCHITECTURES="x86_gcc2" SOURCE_URI="git+https://bitbucket.org/m_eiman/lnlauncher/commits/c74acd4" +PATCHES="lnlauncher-$portVersion.patchset" PROVIDES=" lnlauncher = $portVersion @@ -47,6 +48,8 @@ INSTALL() echo "target desktop { service x-vnd.LnLauncher { launch /system/apps/LnLauncher + if setting ~/config/settings/LnLauncher/Settings autostart + no_safemode legacy on { initial_volumes_mounted diff --git a/haiku-apps/lnlauncher/patches/lnlauncher-1.1.2.patchset b/haiku-apps/lnlauncher/patches/lnlauncher-1.1.2.patchset new file mode 100644 index 000000000..04db50768 --- /dev/null +++ b/haiku-apps/lnlauncher/patches/lnlauncher-1.1.2.patchset @@ -0,0 +1,488 @@ +From 10966120873fd1e31cab628aebe4dfe8689c71e3 Mon Sep 17 00:00:00 2001 +From: Adrien Destugues +Date: Tue, 10 Nov 2015 13:49:52 +0100 +Subject: Save settings when they change instead of at app exit. + +* Saving settings at exit does not seem to work properly (we end up with + an empty settings file). + +diff --git a/source/PanelWindow.cpp b/source/PanelWindow.cpp +index 3ec98c7..d8a22a8 100644 +--- a/source/PanelWindow.cpp ++++ b/source/PanelWindow.cpp +@@ -1,5 +1,6 @@ + #include "PanelWindow.h" + ++#include + #include + #include + #include +@@ -351,12 +352,14 @@ PanelWindow::MessageReceived( BMessage * msg ) + SetFeel(B_FLOATING_ALL_WINDOW_FEEL); + else + SetFeel(B_NORMAL_WINDOW_FEEL); ++ be_app->PostMessage('Uset'); + } break; + + case PANEL_SET_THIN_HANDLE: + { + msg->FindBool("thin_handle",&m_thin_handle); + PositionViews(); ++ be_app->PostMessage('Uset'); + } break; + + case PANEL_MOVE_ICON: +@@ -406,6 +409,7 @@ PanelWindow::MessageReceived( BMessage * msg ) + m_icons.InsertAt( icon, new_pos ); + + PositionViews(); ++ be_app->PostMessage('Uset'); + } break; + case PANEL_REMOVE_ICON: + { +@@ -422,6 +426,7 @@ PanelWindow::MessageReceived( BMessage * msg ) + m_size--; + + PositionViews(); ++ be_app->PostMessage('Uset'); + + delete icon; + } +@@ -451,6 +456,7 @@ PanelWindow::MessageReceived( BMessage * msg ) + m_size = m_icons.NumItems(); + PositionViews(); + } ++ be_app->PostMessage('Uset'); + } break; + case PANEL_MOVE_TO: + { +@@ -504,6 +510,7 @@ PanelWindow::MessageReceived( BMessage * msg ) + PositionViews(); + + m_handle->Invalidate(); ++ be_app->PostMessage('Uset'); + } + } break; + case PANEL_TOGGLE_OPEN: +@@ -534,6 +541,7 @@ PanelWindow::MessageReceived( BMessage * msg ) + { + msg->FindBool("small_icons",&m_small_icons); + PositionViews(); ++ be_app->PostMessage('Uset'); + for ( int32 c=0; ChildAt(c); c++ ) + ChildAt(c)->Invalidate(); + } break; +@@ -544,6 +552,7 @@ PanelWindow::MessageReceived( BMessage * msg ) + { + suspend_thread( m_pulse_thread ); + } ++ be_app->PostMessage('Uset'); + } break; + case PANEL_MOUSE_EXIT: + { +@@ -564,6 +573,7 @@ PanelWindow::MessageReceived( BMessage * msg ) + case PANEL_SET_EXPAND_ON_MOUSE_OVER: + { + msg->FindBool("expand_on_mouse_over",&m_expand_on_mouse_over); ++ be_app->PostMessage('Uset'); + } break; + default: + BWindow::MessageReceived( msg ); +diff --git a/source/main.cpp b/source/main.cpp +index 38622e3..34f6da5 100644 +--- a/source/main.cpp ++++ b/source/main.cpp +@@ -51,7 +51,7 @@ class MyApp : public BApplication + return BApplication::Run(); + }; + +- virtual bool QuitRequested() ++ void SaveSettings() + { + SettingsFile settings; + BMessage panel; +@@ -70,8 +70,6 @@ class MyApp : public BApplication + } + + settings.Save(); +- +- return BApplication::QuitRequested(); + }; + + virtual void MessageReceived( BMessage * msg ) +@@ -97,6 +95,11 @@ class MyApp : public BApplication + + panel->Lock(); + panel->Quit(); ++ SaveSettings(); ++ } break; ++ case 'Uset': ++ { // update settings ++ SaveSettings(); + } break; + default: + return BApplication::MessageReceived( msg ); +-- +2.2.2 + + +From d8b46bf2128de83c2a0509fa5a7ffdae4be050bc Mon Sep 17 00:00:00 2001 +From: Adrien Destugues +Date: Tue, 10 Nov 2015 14:08:30 +0100 +Subject: Remove rescue, add autostart + +* remove "rescue" menu, as launch daemon takes care of that now +* add "autostart" menu to allow LnLauncher to not autostart + +diff --git a/source/HandleView.cpp b/source/HandleView.cpp +index 3c46b49..cdef440 100644 +--- a/source/HandleView.cpp ++++ b/source/HandleView.cpp +@@ -45,9 +45,6 @@ static const char* kPanelRemove = B_TRANSLATE_MARK("Remove This"); + static const char* kReplicants = B_TRANSLATE_MARK("Replicants"); + static const char* kRepShow = B_TRANSLATE_MARK("Show"); + static const char* kRepHide = B_TRANSLATE_MARK("Hide"); +-static const char* kRescue = B_TRANSLATE_MARK("Rescue"); +-static const char* kRescueTracker = B_TRANSLATE_MARK("Tracker"); +-static const char* kRescueDeskbar = B_TRANSLATE_MARK("Deskbar"); + static const char* kStartTerminal = B_TRANSLATE_MARK("Terminal"); + static const char* kShutdown = B_TRANSLATE_MARK("Shutdown"); + static const char* kShutdownReboot = B_TRANSLATE_MARK("Reboot"); +@@ -68,7 +65,8 @@ HandleView::HandleView() + B_WILL_DRAW|B_PULSE_NEEDED|B_FULL_UPDATE_ON_RESIZE + ), + m_mouse_down( false ), +- m_moving_panel( false ) ++ m_moving_panel( false ), ++ fMenu(NULL) + { + SetViewColor( 255,203,0,0 ); + } +@@ -76,13 +74,15 @@ HandleView::HandleView() + HandleView::HandleView( BMessage * msg ) + : BView( msg ), + m_mouse_down( false ), +- m_moving_panel( false ) ++ m_moving_panel( false ), ++ fMenu(NULL) + { + SetFlags( Flags() | B_FULL_UPDATE_ON_RESIZE ); + } + + HandleView::~HandleView() + { ++ delete fMenu; + } + + BArchivable * +@@ -340,10 +340,17 @@ HandleView::MessageReceived( BMessage * msg ) + } break; + case 'Quit': + { +- printf("Quit requested\n"); + be_app->PostMessage( B_QUIT_REQUESTED ); + } + break; ++ case 'Auto': ++ { ++ fAutoStartMenu->SetMarked(!fAutoStartMenu->IsMarked()); ++ BMessage msg('Auto'); ++ msg.AddBool("autostart", fAutoStartMenu->IsMarked()); ++ be_app->PostMessage(&msg); ++ } ++ break; + case 'PSTE': + { // color drop + rgb_color * col; +@@ -462,11 +469,12 @@ HandleView::ShowPopup( BPoint pos ) + { + PanelWindow * panel = (PanelWindow*)Window(); + +- BPopUpMenu * menu = new BPopUpMenu( +- "context", +- false, // radio +- false // label from marked +- ); ++ if (fMenu == NULL) { ++ fMenu = new BPopUpMenu( ++ "context", ++ false, // radio ++ false // label from marked ++ ); + + BMenu * sub_menu; + +@@ -492,7 +500,7 @@ HandleView::ShowPopup( BPoint pos ) + sub_menu->FindItem(B_TRANSLATE(kSmallIco))->SetMarked(true); + // set target + sub_menu->SetTargetForItems( this ); +- menu->AddItem( sub_menu ); ++ fMenu->AddItem( sub_menu ); + + sub_menu = new BMenu( B_TRANSLATE(kThickness)); + // check if thick +@@ -511,7 +519,7 @@ HandleView::ShowPopup( BPoint pos ) + sub_menu->FindItem(B_TRANSLATE(kThickThin))->SetMarked(true); + // set target + sub_menu->SetTargetForItems( this ); +- menu->AddItem( sub_menu ); ++ fMenu->AddItem( sub_menu ); + + sub_menu = new BMenu( B_TRANSLATE(kScrollspeed)); + sub_menu->AddItem( new BMenuItem(B_TRANSLATE(kSpeedSlow), new BMessage('SCsl')) ); +@@ -529,7 +537,7 @@ HandleView::ShowPopup( BPoint pos ) + sub_menu->FindItem(B_TRANSLATE(kSpeedInstant))->SetMarked(true); + // set target + sub_menu->SetTargetForItems( this ); +- menu->AddItem( sub_menu ); ++ fMenu->AddItem( sub_menu ); + + sub_menu = new BMenu( B_TRANSLATE(kExpOnMouseOver)); + sub_menu->AddItem( new BMenuItem(B_TRANSLATE(kOn), new BMessage('Semo')) ); +@@ -541,7 +549,7 @@ HandleView::ShowPopup( BPoint pos ) + sub_menu->FindItem(B_TRANSLATE(kOff))->SetMarked(true); + // set target + sub_menu->SetTargetForItems( this ); +- menu->AddItem( sub_menu ); ++ fMenu->AddItem( sub_menu ); + + sub_menu = new BMenu( B_TRANSLATE(kFloating)); + sub_menu->AddItem( new BMenuItem(B_TRANSLATE(kOn), new BMessage('Sfly')) ); +@@ -553,7 +561,7 @@ HandleView::ShowPopup( BPoint pos ) + sub_menu->FindItem(B_TRANSLATE(kOff))->SetMarked(true); + // set target + sub_menu->SetTargetForItems( this ); +- menu->AddItem( sub_menu ); ++ fMenu->AddItem( sub_menu ); + + + sub_menu = new BMenu( B_TRANSLATE(kPanel)); +@@ -561,9 +569,9 @@ HandleView::ShowPopup( BPoint pos ) + sub_menu->AddItem( new BMenuItem(B_TRANSLATE(kPanelRemove), new BMessage('Rpan')) ); + // set target + sub_menu->SetTargetForItems( this ); +- menu->AddItem( sub_menu ); ++ fMenu->AddItem( sub_menu ); + +- menu->AddSeparatorItem(); ++ fMenu->AddSeparatorItem(); + + sub_menu = new BMenu( B_TRANSLATE(kReplicants)); + sub_menu->AddItem( new BMenuItem(B_TRANSLATE(kRepShow), new BMessage('REsh')) ); +@@ -575,34 +583,26 @@ HandleView::ShowPopup( BPoint pos ) + sub_menu->FindItem(B_TRANSLATE(kRepHide))->SetMarked(true); + // set target + sub_menu->SetTargetForItems( this ); +- menu->AddItem( sub_menu ); +- +- sub_menu = new BMenu( B_TRANSLATE(kRescue)); +- sub_menu->AddItem( new BMenuItem(B_TRANSLATE(kRescueTracker), new BMessage('reTR')) ); +- sub_menu->AddItem( new BMenuItem(B_TRANSLATE(kRescueDeskbar), new BMessage('reDB')) ); +- sub_menu->AddItem( new BMenuItem(B_TRANSLATE(kStartTerminal), new BMessage('reTE')) ); +- // set target +- sub_menu->SetTargetForItems( this ); +- menu->AddItem( sub_menu ); ++ fMenu->AddItem( sub_menu ); + + sub_menu = new BMenu( B_TRANSLATE(kShutdown)); + sub_menu->AddItem( new BMenuItem(B_TRANSLATE(kShutdownReboot), new BMessage(kMsgRebootSystem)) ); + sub_menu->AddItem( new BMenuItem(B_TRANSLATE(kShutdownPoweroff), new BMessage(kMsgShutdownSystem)) ); + // set target + sub_menu->SetTargetForItems( this ); +- menu->AddItem( sub_menu ); ++ fMenu->AddItem( sub_menu ); + +- menu->AddSeparatorItem(); ++ fMenu->AddSeparatorItem(); + +- menu->AddItem( new BMenuItem(B_TRANSLATE(kQuit), new BMessage('Quit')) ); ++ fMenu->AddItem( fAutoStartMenu = new BMenuItem(B_TRANSLATE("Autostart"), new BMessage('Auto')) ); ++ fMenu->AddItem( new BMenuItem(B_TRANSLATE(kQuit), new BMessage('Quit')) ); + +- menu->SetTargetForItems( this ); ++ fMenu->SetTargetForItems( this ); ++ } + +- menu->Go( ++ fMenu->Go( + pos, + true, // delivers msg + true // open anyway + ); +- +- delete menu; + } +diff --git a/source/HandleView.h b/source/HandleView.h +index 86d84a6..02c3c9f 100644 +--- a/source/HandleView.h ++++ b/source/HandleView.h +@@ -3,6 +3,9 @@ + + #include + ++class BMenuItem; ++class BPopUpMenu; ++ + class HandleView : public BView + { + public: +@@ -25,6 +28,9 @@ class HandleView : public BView + bool m_mouse_down; + bool m_moving_panel; + int32 m_buttons; ++ ++ BPopUpMenu* fMenu; ++ BMenuItem* fAutoStartMenu; + + void ShowPopup( BPoint ); + }; +diff --git a/source/IconView.cpp b/source/IconView.cpp +index 3f88162..84342fc 100644 +--- a/source/IconView.cpp ++++ b/source/IconView.cpp +@@ -76,8 +76,6 @@ IconView::Instantiate( BMessage * archive ) + status_t + IconView::Archive( BMessage * msg, bool deep ) const + { +- printf("Archiving path [%s] mime [%s]\n", m_path.Path(), m_app_sig.Type() ); +- + msg->AddString("path", m_path.Path() ); + if ( m_app_sig.InitCheck() == B_OK ) + msg->AddString("app_sig", m_app_sig.Type() ); +@@ -136,14 +134,12 @@ IconView::Draw( BRect ) + + if (m_large_icon && bounds.Width() > 30) + { +-// printf("large icon\n"); + SetBlendingMode( B_PIXEL_ALPHA, B_ALPHA_OVERLAY ); + SetDrawingMode( B_OP_ALPHA ); + DrawBitmap( m_large_icon, BPoint(2,2) ); + } else + if (m_small_icon) + { +-// printf("small icon\n"); + SetBlendingMode( B_PIXEL_ALPHA, B_ALPHA_OVERLAY ); + SetDrawingMode( B_OP_ALPHA ); + DrawBitmap( m_small_icon, BPoint(2,2) ); +@@ -358,15 +354,12 @@ IconView::MessageReceived( BMessage * msg ) + case GET_STRING_WINDOW_RESULT: + { // got string from args-window, Run! + const char * arg_str = msg->FindString("string"); +- printf("arg_str [%s]\n", arg_str); + Run( arg_str ); + } break; + case BUBBLE_TEXT_REQUEST: + { +-// printf("Got bubble text request\n"); + BMessage reply( BUBBLE_TEXT_REPLY ); + reply.AddString("text", m_path.Leaf() ); +-// printf(" sending text [%s]\n", m_path.Leaf() ); + msg->SendReply( &reply ); + } break; + default: +@@ -404,14 +397,11 @@ IconView::Run( const char * args ) + + BMimeType mime_type( mime ); + +- printf("run [%s] [%s]\n", m_actual_path.Path(), mime_type.Type() ); +- + BMessage msg( B_REFS_RECEIVED ); + msg.AddRef("refs",&ref); + + if ( mime_type == "application/x-vnd.Be-directory" ) + { // folder, open with preferred app +- printf(B_TRANSLATE("open folder\n")); + be_roster->Launch( mime_type.Type(), &msg ); + return; + } +@@ -451,18 +441,11 @@ IconView::Run( const char * args ) + num_arg++; + } + +- printf(B_TRANSLATE("Launching with args\n")); +- printf(B_TRANSLATE(" argv [")); +- for ( int c=0; cLaunch( &ref, num_arg, argv ); + + for ( int c=0; c m_panels; ++ bool fAutoStart; + + public: + MyApp() + : BApplication("application/x-vnd.LnLauncher") + { ++ fAutoStart = true; + }; + + virtual ~MyApp() +@@ -33,6 +35,7 @@ class MyApp : public BApplication + + settings.Load(); + ++ settings.FindBool("autostart", fAutoStart); + for ( int32 c=0; settings.FindMessage("panel",c,&msg) == B_OK; c++ ) + { + PanelWindow * panel = dynamic_cast( PanelWindow::Instantiate(&msg) ); +@@ -57,6 +60,8 @@ class MyApp : public BApplication + BMessage panel; + + settings.MakeEmpty(); ++ ++ settings.AddBool("autostart", fAutoStart); + + for ( int c=0; m_panels[c]; c++ ) + { +@@ -101,6 +106,11 @@ class MyApp : public BApplication + { // update settings + SaveSettings(); + } break; ++ case 'Auto': ++ { ++ msg->FindBool("autostart", fAutoStart); ++ SaveSettings(); ++ } break; + default: + return BApplication::MessageReceived( msg ); + +-- +2.2.2 +