diff --git a/ide/main.pp b/ide/main.pp index 5499f312d9..d374ef5f3b 100644 --- a/ide/main.pp +++ b/ide/main.pp @@ -2295,8 +2295,30 @@ begin end; Procedure TMainIDE.OnSrcNotebookFileClose(Sender: TObject); +var + PageIndex: LongInt; + i: Integer; begin - mnuCloseClicked(Sender); + if GetKeyState(VK_CONTROL)<0 then begin + // close all source editors except the clicked + if SourceNoteBook.Notebook=nil then exit; + if Sender is TPage then begin + PageIndex:=SourceNoteBook.Notebook.Pages.IndexOfObject(Sender); + if PageIndex<0 then + PageIndex:=SourceNoteBook.Notebook.PageIndex; + end else begin + PageIndex:=SourceNoteBook.Notebook.PageIndex; + end; + repeat + i:=SourceNoteBook.Notebook.PageCount-1; + if i=PageIndex then dec(i); + if i<0 then break; + if DoCloseEditorFile(i,[cfSaveFirst])<>mrOk then exit; + if i=PageControl1.PageCount) then exit; + PageControl1.PageList.Delete(i); + FillPagesListBox; end; procedure TForm1.InsertPageLeftButtonClick(Sender: TObject); +var + i: LongInt; begin - AddNewPage(PageControl1.PageIndex); + i:=PagesListBox.ItemIndex; + if (i<0) or (i>=PageControl1.PageCount) then i:=PageControl1.PageIndex; + AddNewPage(i); end; procedure TForm1.InsertPageRightButtonClick(Sender: TObject); +var + i: LongInt; begin if PageControl1.PageCount=0 then AddNewPage(0) - else - AddNewPage(PageControl1.PageIndex+1); + else begin + i:=PagesListBox.ItemIndex; + if (i<0) or (i>=PageControl1.PageCount) then i:=PageControl1.PageIndex; + AddNewPage(i+1); + end; end; procedure TForm1.MovePageLeftButtonClick(Sender: TObject); +var + i: LongInt; begin - if PageControl1.PageIndex=0 then exit; - PageControl1.PageList.Move(PageControl1.PageIndex,PageControl1.PageIndex-1); + i:=PagesListBox.ItemIndex; + if (i<0) or (i>=PageControl1.PageCount) then i:=PageControl1.PageIndex; + if i=0 then exit; + PageControl1.PageList.Move(i,i-1); + FillPagesListBox; end; procedure TForm1.MovePageRightButtonClick(Sender: TObject); +var + i: LongInt; begin - if PageControl1.PageIndex=PageControl1.PageCount) then i:=PageControl1.PageIndex; + if ii then begin + PagesListBox.Items[i]:=PageControl1.Pages[i].Name; + end else begin + PagesListBox.Items.Add(PageControl1.Pages[i].Name); + end; + end; + while (PagesListBox.Items.Count>PageControl1.PageCount) do + PagesListBox.Items.Delete(PagesListBox.Items.Count-1); + PagesListBox.ItemIndex:=OldItemIndex; + PagesListBox.Items.EndUpdate; end; var diff --git a/tools/install/rpm/lazarus.spec.template b/tools/install/rpm/lazarus.spec.template index 347d557eaf..924a42756f 100644 --- a/tools/install/rpm/lazarus.spec.template +++ b/tools/install/rpm/lazarus.spec.template @@ -10,7 +10,8 @@ Source0: http://prdownloads.sourceforge.net/%{name}/%{name}-%{version}-%{ BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) #BuildRequires: -Requires: fpc-src = FPCVERSION, fpc = FPCVERSION, gdk-pixbuf, gtk+, gdb, glibc +Requires: fpc-src = FPCVERSION, fpc = FPCVERSION, gdk-pixbuf, gtk+, glibc, gdb +# NOTE: without the symlink trick for gtk1, it requires the devel packages. Requires(post): desktop-file-utils Requires(postun): desktop-file-utils