hrev45232 adds 3 changesets to branch 'master' old head: 7ab100361f753dd1d81a85c9235e04a47f98eda5 new head: cf0ea4fbba83aad60e13d8a421f3097f8da178b5 overview: http://cgit.haiku-os.org/haiku/log/?qt=range&q=cf0ea4f+%5E7ab1003 ---------------------------------------------------------------------------- 39b9d0f: BMenuField: use panel background color as default. * There is no reason the BMenuField should behave differently from any BControl here. dbd6a97: Minor cleanup. * Reordred methods to their declaration order. cf0ea4f: DriveSetup: fixed crash in CreateParametersPanel. * Changed order of calling Init() vs. _CreateViewControls(). This fixes bug #9422. * The panel now hides (instead of disabling) the name or type control if those aren't supported, anyway. [ Axel Dörfler <axeld@xxxxxxxxxxxxxxxx> ] ---------------------------------------------------------------------------- 3 files changed, 61 insertions(+), 48 deletions(-) src/apps/drivesetup/CreateParametersPanel.cpp | 97 +++++++++++++---------- src/apps/drivesetup/CreateParametersPanel.h | 2 + src/kits/interface/MenuField.cpp | 10 ++- ############################################################################ Commit: 39b9d0f07f3ff33e18aacfa074732c7e4b2b209a URL: http://cgit.haiku-os.org/haiku/commit/?id=39b9d0f Author: Axel Dörfler <axeld@xxxxxxxxxxxxxxxx> Date: Mon Feb 4 21:11:14 2013 UTC BMenuField: use panel background color as default. * There is no reason the BMenuField should behave differently from any BControl here. ---------------------------------------------------------------------------- diff --git a/src/kits/interface/MenuField.cpp b/src/kits/interface/MenuField.cpp index cf261ab..e337e80 100644 --- a/src/kits/interface/MenuField.cpp +++ b/src/kits/interface/MenuField.cpp @@ -1,5 +1,5 @@ /* - * Copyright 2001-2011, Haiku, Inc. + * Copyright 2001-2013, Haiku, Inc. * Distributed under the terms of the MIT License. * * Authors: @@ -408,6 +408,7 @@ void BMenuField::AttachedToWindow() { CALLED(); + rgb_color color; BView* parent = Parent(); if (parent != NULL) { @@ -415,10 +416,11 @@ BMenuField::AttachedToWindow() rgb_color color = parent->ViewColor(); if (color == B_TRANSPARENT_COLOR) color = ui_color(B_PANEL_BACKGROUND_COLOR); + } else + color = ui_color(B_PANEL_BACKGROUND_COLOR); - SetViewColor(color); - SetLowColor(color); - } + SetViewColor(color); + SetLowColor(color); } ############################################################################ Commit: dbd6a97c7b6295e7a20b301a810aec4d6a6d7345 URL: http://cgit.haiku-os.org/haiku/commit/?id=dbd6a97 Author: Axel Dörfler <axeld@xxxxxxxxxxxxxxxx> Date: Mon Feb 4 22:05:15 2013 UTC Minor cleanup. * Reordred methods to their declaration order. ---------------------------------------------------------------------------- diff --git a/src/apps/drivesetup/CreateParametersPanel.cpp b/src/apps/drivesetup/CreateParametersPanel.cpp index f85713d..9689150 100644 --- a/src/apps/drivesetup/CreateParametersPanel.cpp +++ b/src/apps/drivesetup/CreateParametersPanel.cpp @@ -85,6 +85,38 @@ CreateParametersPanel::Go(off_t& offset, off_t& size, BString& name, void +CreateParametersPanel::MessageReceived(BMessage* message) +{ + switch (message->what) { + case MSG_PARTITION_TYPE: + if (fEditor != NULL) { + const char* type; + if (message->FindString("type", &type) == B_OK) + fEditor->ParameterChanged("type", BVariant(type)); + } + break; + + case MSG_SIZE_SLIDER: + _UpdateSizeTextControl(); + break; + + case MSG_SIZE_TEXTCONTROL: + { + int32 size = atoi(fSizeTextControl->Text()); + if (size >= 0 && size <= fSizeSlider->MaxPartitionSize()) + fSizeSlider->SetValue(size + fSizeSlider->Offset()); + else + _UpdateSizeTextControl(); + break; + } + + default: + AbstractParametersPanel::MessageReceived(message); + } +} + + +void CreateParametersPanel::AddControls(BLayoutBuilder::Group<>& builder, BView* editorView) { @@ -147,38 +179,6 @@ CreateParametersPanel::_CreateViewControls(BPartition* parent, off_t offset, void -CreateParametersPanel::MessageReceived(BMessage* message) -{ - switch (message->what) { - case MSG_PARTITION_TYPE: - if (fEditor != NULL) { - const char* type; - if (message->FindString("type", &type) == B_OK) - fEditor->ParameterChanged("type", BVariant(type)); - } - break; - - case MSG_SIZE_SLIDER: - _UpdateSizeTextControl(); - break; - - case MSG_SIZE_TEXTCONTROL: - { - int32 size = atoi(fSizeTextControl->Text()); - if (size >= 0 && size <= fSizeSlider->MaxPartitionSize()) - fSizeSlider->SetValue(size + fSizeSlider->Offset()); - else - _UpdateSizeTextControl(); - break; - } - - default: - AbstractParametersPanel::MessageReceived(message); - } -} - - -void CreateParametersPanel::_UpdateSizeTextControl() { BString sizeString; ############################################################################ Revision: hrev45232 Commit: cf0ea4fbba83aad60e13d8a421f3097f8da178b5 URL: http://cgit.haiku-os.org/haiku/commit/?id=cf0ea4f Author: Axel Dörfler <axeld@xxxxxxxxxxxxxxxx> Date: Mon Feb 4 22:06:13 2013 UTC Ticket: https://dev.haiku-os.org/ticket/9422 DriveSetup: fixed crash in CreateParametersPanel. * Changed order of calling Init() vs. _CreateViewControls(). This fixes bug #9422. * The panel now hides (instead of disabling) the name or type control if those aren't supported, anyway. ---------------------------------------------------------------------------- diff --git a/src/apps/drivesetup/CreateParametersPanel.cpp b/src/apps/drivesetup/CreateParametersPanel.cpp index 9689150..e25a569 100644 --- a/src/apps/drivesetup/CreateParametersPanel.cpp +++ b/src/apps/drivesetup/CreateParametersPanel.cpp @@ -43,13 +43,13 @@ CreateParametersPanel::CreateParametersPanel(BWindow* window, : AbstractParametersPanel(window) { - Init(B_CREATE_PARAMETER_EDITOR, "", partition); - // Scale offset, and size from bytes to megabytes (2^20) // so that we do not run over a signed int32. offset /= kMegaByte; size /= kMegaByte; _CreateViewControls(partition, offset, size); + + Init(B_CREATE_PARAMETER_EDITOR, "", partition); } @@ -122,14 +122,23 @@ CreateParametersPanel::AddControls(BLayoutBuilder::Group<>& builder, { builder .Add(fSizeSlider) - .Add(fSizeTextControl) - .AddGrid(0.0, 5.0) - .Add(fNameTextControl->CreateLabelLayoutItem(), 0, 0) - .Add(fNameTextControl->CreateTextViewLayoutItem(), 1, 0) - .Add(fTypeMenuField->CreateLabelLayoutItem(), 0, 1) - .Add(fTypeMenuField->CreateMenuBarLayoutItem(), 1, 1) - .End() - .Add(editorView); + .Add(fSizeTextControl); + + if (fSupportsName || fSupportsType) { + BLayoutBuilder::Group<>::GridBuilder gridBuilder + = builder.AddGrid(0.0, B_USE_DEFAULT_SPACING); + + if (fSupportsName) { + gridBuilder.Add(fNameTextControl->CreateLabelLayoutItem(), 0, 0) + .Add(fNameTextControl->CreateTextViewLayoutItem(), 1, 0); + } + if (fSupportsType) { + gridBuilder.Add(fTypeMenuField->CreateLabelLayoutItem(), 0, 1) + .Add(fTypeMenuField->CreateMenuBarLayoutItem(), 1, 1); + } + } + + builder.Add(editorView); } @@ -154,8 +163,7 @@ CreateParametersPanel::_CreateViewControls(BPartition* parent, off_t offset, fNameTextControl = new BTextControl("Name Control", B_TRANSLATE("Partition name:"), "", NULL); - if (!parent->SupportsChildName()) - fNameTextControl->SetEnabled(false); + fSupportsName = parent->SupportsChildName(); fTypePopUpMenu = new BPopUpMenu("Partition Type"); @@ -173,6 +181,7 @@ CreateParametersPanel::_CreateViewControls(BPartition* parent, off_t offset, fTypeMenuField = new BMenuField(B_TRANSLATE("Partition type:"), fTypePopUpMenu); + fSupportsType = fTypePopUpMenu->CountItems() != 0; fOkButton->SetLabel(B_TRANSLATE("Create")); } diff --git a/src/apps/drivesetup/CreateParametersPanel.h b/src/apps/drivesetup/CreateParametersPanel.h index 4746397..1ecd800 100644 --- a/src/apps/drivesetup/CreateParametersPanel.h +++ b/src/apps/drivesetup/CreateParametersPanel.h @@ -48,6 +48,8 @@ private: BTextControl* fNameTextControl; SizeSlider* fSizeSlider; BTextControl* fSizeTextControl; + bool fSupportsName; + bool fSupportsType; };