OSDN Git Service

・ツールバーの設定がない場合、ツールバーの配置が保存されないバグを修正。
authoryoffy <yoffy>
Fri, 9 Apr 2004 00:15:48 +0000 (00:15 +0000)
committeryoffy <yoffy>
Fri, 9 Apr 2004 00:15:48 +0000 (00:15 +0000)
・ツールバーがより良い座標を算出するように調整。

Giko.pas

index 91187a4..26dfda5 100644 (file)
--- a/Giko.pas
+++ b/Giko.pas
@@ -1588,11 +1588,14 @@ begin
 //             for i := 0 to MainCoolBar.Bands.Count - 1 do begin
                for i := MAIN_COOLBAND_COUNT - 1 downto 0 do begin
                        CoolSet := GikoSys.Setting.MainCoolSet[i];
-                       if (CoolSet.FCoolID = -1) or (CoolSet.FCoolWidth = -1) then
-                               Continue;
+                       if (CoolSet.FCoolID = -1) or (CoolSet.FCoolWidth = -1) then begin
+                               SaveCoolBarSettings;
+                               Exit;
+                       end;
                        MainCoolBar.Bands.FindItemID(CoolSet.FCoolID).Index := i;
                        MainCoolBar.Bands[i].Break := CoolSet.FCoolBreak;
-                       MainCoolBar.Bands[i].Width := CoolSet.FCoolWidth;
+                       if CoolSet.FCoolWidth >= 0 then
+                               MainCoolBar.Bands[i].Width := CoolSet.FCoolWidth;
                end;
        finally
                MainCoolBar.Bands.EndUpdate;
@@ -1604,8 +1607,10 @@ begin
 //             for i := 0 to ListCoolBar.Bands.Count - 1 do begin
                for i := LIST_COOLBAND_COUNT - 1 downto 0 do begin
                        CoolSet := GikoSys.Setting.ListCoolSet[i];
-                       if (CoolSet.FCoolID = -1) or (CoolSet.FCoolWidth = -1) then
-                               Continue;
+                       if (CoolSet.FCoolID = -1) or (CoolSet.FCoolWidth = -1) then begin
+                               SaveCoolBarSettings;
+                               Exit;
+                       end;
                        ListCoolBar.Bands.FindItemID(CoolSet.FCoolID).Index := i;
                        ListCoolBar.Bands[i].Break := CoolSet.FCoolBreak;
                        ListCoolBar.Bands[i].Width := CoolSet.FCoolWidth;
@@ -1620,8 +1625,10 @@ begin
 //             for i := 0 to BrowserCoolBar.Bands.Count - 1 do begin
                for i := BROWSER_COOLBAND_COUNT - 1 downto 0 do begin
                        CoolSet := GikoSys.Setting.BrowserCoolSet[i];
-                       if (CoolSet.FCoolID = -1) or (CoolSet.FCoolWidth = -1) then
-                               Continue;
+                       if (CoolSet.FCoolID = -1) or (CoolSet.FCoolWidth = -1) then begin
+                               SaveCoolBarSettings;
+                               Exit;
+                       end;
                        BrowserCoolBar.Bands.FindItemID(CoolSet.FCoolID).Index := i;
                        BrowserCoolBar.Bands[i].Break := CoolSet.FCoolBreak;
                        BrowserCoolBar.Bands[i].Width := CoolSet.FCoolWidth;
@@ -1679,10 +1686,10 @@ begin
                BrowserTabFlatStyleActionExecute(nil);
        end;
 
+       FIsIgnoreResize := False;
+
        // CoolBar \95\9c\8c³
        LoadCoolBarSettings;
-
-       FIsIgnoreResize := False;
 end;
 
 procedure TGikoForm.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
@@ -1746,11 +1753,12 @@ begin
 
   // \83\8a\83A\83\8b\83^\83C\83\80\82É\95Û\91\82³\82ê\82é\82Ì\82Å\81A\82Ü\82½\81A\83E\83B\83\93\83h\83E\83T\83C\83Y\82ª CoolBar \82æ\82è
        // \8f¬\82³\82­\82È\82Á\82Ä\82¢\82é\82Æ\82«\82É\95Û\91\82·\82é\82Æ\92l\82ª\8fã\8f\91\82«\82³\82ê\82Ä\82µ\82Ü\82¤\82Ì\82Å\82±\82±\82Å\82Í\95Û\91\82µ\82È\82¢
-    // \81ªFormDestroy\92\86\82É\88Ú\93®\82µ\82½\82Ì\82Å\81A\82±\82±\82Å\95Û\91\82µ\82È\82¢\82Æ\82¢\82¯\82È\82¢\82Æ\8ev\82¤\81B\81i\82à\82\82ã\81@2004/04/09\81j
+       {
+               // \81ªFormDestroy\92\86\82É\88Ú\93®\82µ\82½\82Ì\82Å\81A\82±\82±\82Å\95Û\91\82µ\82È\82¢\82Æ\82¢\82¯\82È\82¢\82Æ\8ev\82¤\81B\81i\82à\82\82ã\81@2004/04/09\81j
        // CoolBar \95Û\91
        if GikoForm.WindowState <> wsMinimized then
                SaveCoolBarSettings;
-       
+       }
        try
                GikoSys.Setting.WriteWindowSettingFile;
                GikoSys.Setting.WriteNameMailSettingFile;
@@ -9286,10 +9294,11 @@ end;
 
 procedure TGikoForm.CoolBarResized(Sender: TObject; CoolBar: TCoolBar);
 var
-       coolSet : TCoolSet;
-       toolbar : TToolBar;
-       band            : TCoolBand;
-       i, j            : Integer;
+       coolSet                         : TCoolSet;
+       toolbar                         : TToolBar;
+       band                                    : TCoolBand;
+       affectedBand    : TCoolBand;
+       i, j                                    : Integer;
 begin
        if (FOldFormWidth = Width) and not IsIconic( Handle ) and not FIsIgnoreResize then begin
                FIsIgnoreResize := True;
@@ -9298,23 +9307,42 @@ begin
                        Exit;
                toolbar := TToolBar( Sender );
                band := nil;
-               // \83o\83\93\83h\82Ì\8f\87\94Ô\82ª\95Ï\82í\82Á\82½\82©
-               for i := CoolBar.Bands.Count - 1 downto 0 do begin
-                       coolSet := GikoSys.Setting.MainCoolSet[ i ];
-                       if CoolBar.Bands[ i ].ID <> coolset.FCoolID then begin
-                               // \91S\82Ä\95Û\91
-                               SaveCoolBarSettings;
-                               // \8dÅ\8cã\82É\82Ð\82Ë\82è\82¾\82µ\82½\83T\83C\83Y\82ð\95Û\91\82µ\82È\82¢\82Æ\83T\83C\83Y\82ª\8b\82¤\82Ì\82Å\91S\82Ä\82Ð\82Ë\82è\8fo\82·
-//                             for j := CoolBar.Bands.Count - 1 downto 0 do
-//                                     CoolBarResized( CoolBar.Bands[ i ].Control, CoolBar );
-
-                               Exit;
+               // \95Ï\8dX\82³\82ê\82½\83N\81[\83\8b\83o\81[\82Ì\92l\82ð\95Û\91
+               if CoolBar = MainCoolBar then begin
+                       for i := 0 to MAIN_COOLBAND_COUNT - 1 do begin
+                               CoolSet.FCoolID := CoolBar.Bands[i].ID;
+                               CoolSet.FCoolWidth := CoolBar.Bands[i].Width;
+                               CoolSet.FCoolBreak := CoolBar.Bands[i].Break;
+                               GikoSys.Setting.MainCoolSet[i] := CoolSet;
+                       end;
+               end else if CoolBar = ListCoolBar then begin
+                       for i := 0 to LIST_COOLBAND_COUNT - 1 do begin
+                               CoolSet.FCoolID := CoolBar.Bands[i].ID;
+                               CoolSet.FCoolWidth := CoolBar.Bands[i].Width;
+                               CoolSet.FCoolBreak := CoolBar.Bands[i].Break;
+                               GikoSys.Setting.ListCoolSet[i] := CoolSet;
+                       end;
+               end else if CoolBar = BrowserCoolBar then begin
+                       for i := 0 to BROWSER_COOLBAND_COUNT - 1 do begin
+                               CoolSet.FCoolID := CoolBar.Bands[i].ID;
+                               CoolSet.FCoolWidth := CoolBar.Bands[i].Width;
+                               CoolSet.FCoolBreak := CoolBar.Bands[i].Break;
+                               GikoSys.Setting.BrowserCoolSet[i] := CoolSet;
                        end;
                end;
                // \95\9d\82Ì\95Ï\8dX\82³\82ê\82½\83o\83\93\83h\82ð\8c©\82Â\82¯\82é
+               affectedBand := nil;
                for i := CoolBar.Bands.Count - 1 downto 0 do begin
                        if CoolBar.Bands[ i ].Control.Handle = toolbar.Handle then begin
                                band    := CoolBar.Bands[ i ];
+                               if band.Break or (i = 0) then begin
+                                       if i + 1 < CoolBar.Bands.Count then
+                                               if not CoolBar.Bands[ i + 1 ].Break then
+                                                       affectedBand := CoolBar.Bands[ i + 1 ];
+                               end else begin
+                                       if i > 0 then
+                                               affectedBand := CoolBar.Bands[ i - 1 ];
+                               end;
                                Break;
                        end;
                end;
@@ -9323,14 +9351,29 @@ begin
                        coolSet := GikoSys.Setting.MainCoolSet[ band.ID ];
                        coolSet.FCoolWidth := toolbar.Width + 25;
                        GikoSys.Setting.MainCoolSet[ band.ID ] := coolSet;
+                       if affectedBand <> nil then begin
+                               coolSet := GikoSys.Setting.MainCoolSet[ affectedBand.ID ];
+                               coolSet.FCoolWidth := affectedBand.Control.Width + 25;
+                               GikoSys.Setting.MainCoolSet[ affectedBand.ID ] := coolSet;
+                       end;
                end else if CoolBar = ListCoolBar then begin
                        coolSet := GikoSys.Setting.ListCoolSet[ band.ID ];
                        coolSet.FCoolWidth := toolbar.Width + 25;
                        GikoSys.Setting.ListCoolSet[ band.ID ] := coolSet;
+                       if affectedBand <> nil then begin
+                               coolSet := GikoSys.Setting.ListCoolSet[ affectedBand.ID ];
+                               coolSet.FCoolWidth := affectedBand.Control.Width + 25;
+                               GikoSys.Setting.ListCoolSet[ affectedBand.ID ] := coolSet;
+                       end;
                end else if CoolBar = BrowserCoolBar then begin
                        coolSet := GikoSYs.Setting.BrowserCoolSet[ band.ID ];
                        coolSet.FCoolWidth := toolbar.Width + 25;
                        GikoSys.Setting.BrowserCoolSet[ band.ID ] := coolSet;
+                       if affectedBand <> nil then begin
+                               coolSet := GikoSys.Setting.BrowserCoolSet[ affectedBand.ID ];
+                               coolSet.FCoolWidth := affectedBand.Control.Width + 25;
+                               GikoSys.Setting.BrowserCoolSet[ affectedBand.ID ] := coolSet;
+                       end;
                end;
        end;
 end;