[haiku-commits] haiku: hrev45232 - in src: apps/drivesetup kits/interface

  • From: axeld@xxxxxxxxxxxxxxxx
  • To: haiku-commits@xxxxxxxxxxxxx
  • Date: Mon, 4 Feb 2013 23:08:26 +0100 (CET)

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;
 };
 
 


Other related posts: