diff --git a/haiku-apps/lnlauncher/patches/lnlauncher-1.1.2.patchset b/haiku-apps/lnlauncher/patches/lnlauncher-1.1.2.patchset index 2ff5881a0..12ea7bc03 100644 --- a/haiku-apps/lnlauncher/patches/lnlauncher-1.1.2.patchset +++ b/haiku-apps/lnlauncher/patches/lnlauncher-1.1.2.patchset @@ -126,16 +126,17 @@ index 38622e3..34f6da5 100644 2.2.2 -From 2b15cabcd06ae85b2af80aa2611989586f048c3c Mon Sep 17 00:00:00 2001 +From c8eeace21e37cf80782c5bb43a978e40bfcce511 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 +* only build the menu once instead of each time it is invoked. diff --git a/source/HandleView.cpp b/source/HandleView.cpp -index 3c46b49..cdef440 100644 +index 3c46b49..04c58b3 100644 --- a/source/HandleView.cpp +++ b/source/HandleView.cpp @@ -45,9 +45,6 @@ static const char* kPanelRemove = B_TRANSLATE_MARK("Remove This"); @@ -194,7 +195,27 @@ index 3c46b49..cdef440 100644 case 'PSTE': { // color drop rgb_color * col; -@@ -462,11 +469,12 @@ HandleView::ShowPopup( BPoint pos ) +@@ -418,19 +425,6 @@ HandleView::MessageReceived( BMessage * msg ) + { // Hide replicants + BDragger::HideAllDraggers(); + } break; +- case 'reTR': +- case 'reDB': +- case 'reTE': +- { // rescue menu +- BRoster roster; +- if (msg->what == 'reTR') +- roster.Launch("application/x-vnd.Be-TRAK"); +- if (msg->what == 'reDB') +- roster.Launch("application/x-vnd.Be-TSKB"); +- if (msg->what == 'reTE') +- roster.Launch("application/x-vnd.Haiku-Terminal"); +- } +- break; + case kMsgShutdownSystem: + case kMsgRebootSystem: + { +@@ -462,147 +456,134 @@ HandleView::ShowPopup( BPoint pos ) { PanelWindow * panel = (PanelWindow*)Window(); @@ -210,128 +231,276 @@ index 3c46b49..cdef440 100644 + false // label from marked + ); - BMenu * sub_menu; - -@@ -492,7 +500,7 @@ HandleView::ShowPopup( BPoint pos ) - sub_menu->FindItem(B_TRANSLATE(kSmallIco))->SetMarked(true); +- BMenu * sub_menu; +- +- sub_menu = new BMenu( B_TRANSLATE(kIcoSize) ); +- // check if large +- bool large_icons = false; +- if ( Bounds().Width() > Bounds().Height() ) +- { +- if ( Bounds().Width() > 20 ) +- large_icons = true; +- } else +- { +- if ( Bounds().Height() > 20 ) +- large_icons = true; +- } ++ fIconSizeMenu = new BMenu( B_TRANSLATE(kIcoSize) ); + // create items +- sub_menu->AddItem( new BMenuItem(B_TRANSLATE(kLargeIco), new BMessage('Lico')) ); +- sub_menu->AddItem( new BMenuItem(B_TRANSLATE(kSmallIco), new BMessage('Sico')) ); +- // set mark +- if ( large_icons ) +- sub_menu->FindItem(B_TRANSLATE(kLargeIco))->SetMarked(true); +- else +- sub_menu->FindItem(B_TRANSLATE(kSmallIco))->SetMarked(true); ++ fIconSizeMenu->AddItem( new BMenuItem(B_TRANSLATE(kLargeIco), new BMessage('Lico')) ); ++ fIconSizeMenu->AddItem( new BMenuItem(B_TRANSLATE(kSmallIco), new BMessage('Sico')) ); // set target - sub_menu->SetTargetForItems( this ); +- 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); +- +- sub_menu = new BMenu( B_TRANSLATE(kThickness)); +- // check if thick +- bool thin_handle = false; +- if ( Bounds().Width() == 1 || Bounds().Height() == 1 ) +- { +- thin_handle = true; +- } ++ fIconSizeMenu->SetTargetForItems( this ); ++ fMenu->AddItem(fIconSizeMenu); ++ ++ fThicknessMenu = new BMenu( B_TRANSLATE(kThickness)); + // create items +- sub_menu->AddItem( new BMenuItem(B_TRANSLATE(kThickNormal), new BMessage('THno')) ); +- sub_menu->AddItem( new BMenuItem(B_TRANSLATE(kThickThin), new BMessage('THth')) ); +- // set mark +- if ( !thin_handle ) +- sub_menu->FindItem(B_TRANSLATE(kThickNormal))->SetMarked(true); +- else +- sub_menu->FindItem(B_TRANSLATE(kThickThin))->SetMarked(true); ++ fThicknessMenu->AddItem( new BMenuItem(B_TRANSLATE(kThickNormal), new BMessage('THno')) ); ++ fThicknessMenu->AddItem( new BMenuItem(B_TRANSLATE(kThickThin), new BMessage('THth')) ); // set target - sub_menu->SetTargetForItems( this ); +- 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); +- +- sub_menu = new BMenu( B_TRANSLATE(kScrollspeed)); +- sub_menu->AddItem( new BMenuItem(B_TRANSLATE(kSpeedSlow), new BMessage('SCsl')) ); +- sub_menu->AddItem( new BMenuItem(B_TRANSLATE(kSpeedNormal), new BMessage('SCno')) ); +- sub_menu->AddItem( new BMenuItem(B_TRANSLATE(kSpeedFast), new BMessage('SCfa')) ); +- sub_menu->AddItem( new BMenuItem(B_TRANSLATE(kSpeedInstant), new BMessage('SCin')) ); +- // check mark +- if ( panel->AnimationDelay() == 500000 ) +- sub_menu->FindItem(B_TRANSLATE(kSpeedSlow))->SetMarked(true); +- if ( panel->AnimationDelay() == 100000 ) +- sub_menu->FindItem(B_TRANSLATE(kSpeedNormal))->SetMarked(true); +- if ( panel->AnimationDelay() == 20000 ) +- sub_menu->FindItem(B_TRANSLATE(kSpeedFast))->SetMarked(true); +- if ( panel->AnimationDelay() == 0 ) +- sub_menu->FindItem(B_TRANSLATE(kSpeedInstant))->SetMarked(true); ++ fThicknessMenu->SetTargetForItems( this ); ++ fMenu->AddItem(fThicknessMenu); ++ ++ fScrollSpeedMenu = new BMenu( B_TRANSLATE(kScrollspeed)); ++ fScrollSpeedMenu->AddItem( new BMenuItem(B_TRANSLATE(kSpeedSlow), new BMessage('SCsl')) ); ++ fScrollSpeedMenu->AddItem( new BMenuItem(B_TRANSLATE(kSpeedNormal), new BMessage('SCno')) ); ++ fScrollSpeedMenu->AddItem( new BMenuItem(B_TRANSLATE(kSpeedFast), new BMessage('SCfa')) ); ++ fScrollSpeedMenu->AddItem( new BMenuItem(B_TRANSLATE(kSpeedInstant), new BMessage('SCin')) ); // set target - sub_menu->SetTargetForItems( this ); +- 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); +- +- sub_menu = new BMenu( B_TRANSLATE(kExpOnMouseOver)); +- sub_menu->AddItem( new BMenuItem(B_TRANSLATE(kOn), new BMessage('Semo')) ); +- sub_menu->AddItem( new BMenuItem(B_TRANSLATE(kOff), new BMessage('Semf')) ); +- // set mark +- if ( panel->IsExpandOnMouseOver() ) +- sub_menu->FindItem(B_TRANSLATE(kOn))->SetMarked(true); +- else +- sub_menu->FindItem(B_TRANSLATE(kOff))->SetMarked(true); ++ fScrollSpeedMenu->SetTargetForItems( this ); ++ fMenu->AddItem(fScrollSpeedMenu); ++ ++ fExpandMenu = new BMenu( B_TRANSLATE(kExpOnMouseOver)); ++ fExpandMenu->AddItem( new BMenuItem(B_TRANSLATE(kOn), new BMessage('Semo')) ); ++ fExpandMenu->AddItem( new BMenuItem(B_TRANSLATE(kOff), new BMessage('Semf')) ); // set target - sub_menu->SetTargetForItems( this ); +- 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); +- +- sub_menu = new BMenu( B_TRANSLATE(kFloating)); +- sub_menu->AddItem( new BMenuItem(B_TRANSLATE(kOn), new BMessage('Sfly')) ); +- sub_menu->AddItem( new BMenuItem(B_TRANSLATE(kOff), new BMessage('Sfln')) ); +- // set mark +- if ( Window()->Feel() == B_FLOATING_ALL_WINDOW_FEEL ) +- sub_menu->FindItem(B_TRANSLATE(kOn))->SetMarked(true); +- else +- sub_menu->FindItem(B_TRANSLATE(kOff))->SetMarked(true); ++ fExpandMenu->SetTargetForItems( this ); ++ fMenu->AddItem(fExpandMenu); ++ ++ fFloatMenu = new BMenu( B_TRANSLATE(kFloating)); ++ fFloatMenu->AddItem( new BMenuItem(B_TRANSLATE(kOn), new BMessage('Sfly')) ); ++ fFloatMenu->AddItem( new BMenuItem(B_TRANSLATE(kOff), new BMessage('Sfln')) ); // set target - sub_menu->SetTargetForItems( this ); +- 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 = new BMenu( B_TRANSLATE(kPanel)); ++ fFloatMenu->SetTargetForItems( this ); ++ fMenu->AddItem(fFloatMenu); ++ ++ BMenu* sub_menu; ++ sub_menu = new BMenu( B_TRANSLATE(kPanel)); + sub_menu->AddItem( new BMenuItem(B_TRANSLATE(kPanelNew), new BMessage('Npan')) ); 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 ); +- +- sub_menu = new BMenu( B_TRANSLATE(kReplicants)); +- sub_menu->AddItem( new BMenuItem(B_TRANSLATE(kRepShow), new BMessage('REsh')) ); +- sub_menu->AddItem( new BMenuItem(B_TRANSLATE(kRepHide), new BMessage('REhi')) ); +- // set mark +- if ( BDragger::AreDraggersDrawn() ) +- sub_menu->FindItem(B_TRANSLATE(kRepShow))->SetMarked(true); +- else +- 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 ++ fMenu->AddItem( sub_menu ); ++ ++ fMenu->AddSeparatorItem(); ++ ++ fReplicantsMenu = new BMenu( B_TRANSLATE(kReplicants)); ++ fReplicantsMenu->AddItem( new BMenuItem(B_TRANSLATE(kRepShow), new BMessage('REsh')) ); ++ fReplicantsMenu->AddItem( new BMenuItem(B_TRANSLATE(kRepHide), new BMessage('REhi')) ); + // set target - sub_menu->SetTargetForItems( this ); - menu->AddItem( sub_menu ); -+ fMenu->AddItem( sub_menu ); - - sub_menu = new BMenu( B_TRANSLATE(kShutdown)); +- +- sub_menu = new BMenu( B_TRANSLATE(kShutdown)); ++ fReplicantsMenu->SetTargetForItems( this ); ++ fMenu->AddItem(fReplicantsMenu); ++ ++ 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 ); ++ fMenu->AddItem( sub_menu ); ++ ++ fMenu->AddSeparatorItem(); ++ ++ fMenu->AddItem( fAutoStartMenu = new BMenuItem(B_TRANSLATE("Autostart"), new BMessage('Auto')) ); ++ fMenu->AddItem( new BMenuItem(B_TRANSLATE(kQuit), new BMessage('Quit')) ); ++ ++ fMenu->SetTargetForItems( this ); + } +- menu->SetTargetForItems( this ); ++ // check if large ++ bool large_icons = false; ++ if ( Bounds().Width() > Bounds().Height() ) ++ { ++ if ( Bounds().Width() > 20 ) ++ large_icons = true; ++ } else ++ { ++ if ( Bounds().Height() > 20 ) ++ large_icons = true; ++ } ++ // set mark ++ fIconSizeMenu->FindItem(B_TRANSLATE(kLargeIco))->SetMarked(large_icons); ++ fIconSizeMenu->FindItem(B_TRANSLATE(kSmallIco))->SetMarked(!large_icons); + - menu->Go( -+ fMenu->Go( - pos, - true, // delivers msg - true // open anyway - ); +- pos, +- true, // delivers msg +- true // open anyway +- ); - - delete menu; ++ // check if thick ++ bool thin_handle = false; ++ if ( Bounds().Width() == 1 || Bounds().Height() == 1 ) ++ { ++ thin_handle = true; ++ } ++ // set mark ++ fThicknessMenu->FindItem(B_TRANSLATE(kThickNormal))->SetMarked(thin_handle); ++ fThicknessMenu->FindItem(B_TRANSLATE(kThickThin))->SetMarked(!thin_handle); ++ ++ // check mark ++ int delay = panel->AnimationDelay(); ++ fScrollSpeedMenu->FindItem(B_TRANSLATE(kSpeedSlow))->SetMarked(delay == 500000); ++ fScrollSpeedMenu->FindItem(B_TRANSLATE(kSpeedNormal))->SetMarked(delay == 100000); ++ fScrollSpeedMenu->FindItem(B_TRANSLATE(kSpeedFast))->SetMarked(delay == 20000); ++ fScrollSpeedMenu->FindItem(B_TRANSLATE(kSpeedInstant))->SetMarked(delay == 0); ++ ++ // set mark ++ bool floating = Window()->Feel() == B_FLOATING_ALL_WINDOW_FEEL; ++ fFloatMenu->FindItem(B_TRANSLATE(kOn))->SetMarked(floating); ++ fFloatMenu->FindItem(B_TRANSLATE(kOff))->SetMarked(!floating); ++ ++ // set mark ++ bool expand = panel->IsExpandOnMouseOver(); ++ fExpandMenu->FindItem(B_TRANSLATE(kOn))->SetMarked(expand); ++ fExpandMenu->FindItem(B_TRANSLATE(kOff))->SetMarked(!expand); ++ ++ // set mark ++ bool dragger = BDragger::AreDraggersDrawn(); ++ fReplicantsMenu->FindItem(B_TRANSLATE(kRepShow))->SetMarked(dragger); ++ fReplicantsMenu->FindItem(B_TRANSLATE(kRepHide))->SetMarked(!dragger); ++ ++ fMenu->Go( ++ pos, ++ true, // delivers msg ++ true // open anyway ++ ); } diff --git a/source/HandleView.h b/source/HandleView.h -index 86d84a6..02c3c9f 100644 +index 86d84a6..b143738 100644 --- a/source/HandleView.h +++ b/source/HandleView.h -@@ -3,6 +3,9 @@ +@@ -3,6 +3,10 @@ #include ++class BMenu; +class BMenuItem; +class BPopUpMenu; + class HandleView : public BView { public: -@@ -25,6 +28,9 @@ class HandleView : public BView +@@ -25,6 +29,15 @@ class HandleView : public BView bool m_mouse_down; bool m_moving_panel; int32 m_buttons; + + BPopUpMenu* fMenu; ++ BMenu* fIconSizeMenu; ++ BMenu* fThicknessMenu; ++ BMenu* fScrollSpeedMenu; ++ BMenu* fExpandMenu; ++ BMenu* fFloatMenu; ++ BMenu* fReplicantsMenu; + BMenuItem* fAutoStartMenu; void ShowPopup( BPoint );