Recent Posts

Pages: 1 [2] 3 4 5 6 7 ... 10
Nightly builds / The 25September 2022 build (12908) is out.
« Last post by killerbot on Yesterday at 09:16:52 am »
We switched to wx 3.1.7 (with an extra patch applied on 13 August 2022) --> download the new wx dll's see link below

If you tested the 22 january nightly you may find your compiler executable has changed from gcc.exe to mingw32-gcc.exe and g++.exe to mingw32-g++.exe. Please correct this, you won't be asked again.

Get quick announcements through the RSS feed

Before you use a nightly make sure you understand how it works.

A link to the unicode windows wxWidget dll(s) for Code::Blocks :
A link to Mingw64 dll's needed by Code::Blocks :

The 25 September 2022 build is out.
  - Windows :
  - Linux :

The current SDK version is : 2.22.0

Resolved Fixed:

  • SDK: Add cbArtProvider::CreateBitmapBundle() (part of #1297).
  • wxSmith: Fix compilation in STL mode.
  • updated wxPdfDocument library for source_exporter plugin
  • updated hunspell library for SpellChecker plugin
  • removed old, no longer working file (applied ticket #1291: Redundant file - src\mac_pack)
  • applied patch #1287: Update SpellChecker due to use of deprecated functions used & remove hunspell source. Thanks Andrew!
  • applied (slightly modified) follow-up patch #1287: Update SpellChecker due to use of deprecated functions used & remove hunspell source
  • SDK: Fix icon size in AnnoyingDialog when using HiDPI (part or #1297).
  • Correct notebook icon sizes when using HiDPI with wxWidgets >= 3.1.6 (part of #1297).
  • Fix menu icons in HiDPI with wxWidgets >= 3.1.6 (end of #1297).
  • Fix a long standing bug in notebook when using HiDPI.
  • Fix HiDPI on image lists (wxTreeCtrl, debugger).
  • Add cbLoadBitmapBundleFromSVG().
  • Spellchecker: Use flags in SVG with wxWidgets >= 3.1.6.
  • Fix hangs when returning focus to C::B (ticket #1168, thanks pecan).
  • Fix assert on MAC (ticket #1313, thanks Andrew Cottrell).
  • Fix MAC ability to run console apps (ticket #1315, thanks Andrew Cottrell).
  • Fix detection of multiple deleted files (ticket #575).
  • FileManager: Fix access to settings (mixed 'hiden' and 'hidden').

Regressions/Confirmed/Annoying/Common bugs:

    Plugins development / Re: Code completion using LSP and clangd
    « Last post by ollydbg on Yesterday at 04:21:30 am »
    I have a question:

    LSP_ParseSemanticTokens(), what does this function used for?

    I see this code:

    // ----------------------------------------------------------------------------
    void Parser::OnLSP_RequestedSemanticTokensResponse(wxCommandEvent& event)  //(ph 2021/03/12)
    // ----------------------------------------------------------------------------
        if (GetIsShuttingDown()) return;

        // This is a callback after requesting textDocument/Symbol (request done at end of OnLSP_RequestedSymbolsResponse() )
        // Currently, we allow SemanticTokens for the BuiltinActiveEditor only,

        // ----------------------------------------------------------------------------
        ///  GetClientData() contains ptr to json object
        ///  DONT free it! The return to OnLSP_Event() will free it as a unique_ptr
        // ----------------------------------------------------------------------------
        json* pJson = (json*)event.GetClientData();
        wxString idStr = event.GetString();
        wxString URI = idStr.AfterFirst(STX);
        if (URI.Contains(STX))
            URI = URI.BeforeFirst(STX); //filename

        wxString uriFilename = fileUtils.FilePathFromURI(URI);      //(ph 2021/12/21)
        cbEditor*  pEditor =  nullptr;
        cbProject* pProject = nullptr;
        EditorManager* pEdMgr = Manager::Get()->GetEditorManager();
        EditorBase* pEdBase = pEdMgr->IsOpen(uriFilename);
        if (pEdBase)
            pEditor = pEdMgr->GetBuiltinActiveEditor();
            if (not pEditor or (pEditor->GetFilename() != uriFilename))
            ProjectFile* pProjectFile = pEditor->GetProjectFile();
            if (pProjectFile) pProject = pProjectFile->GetParentProject();
            if ( (not pProjectFile) or (not pProject) ) return;
            ParserBase* pParser = GetParseManager()->GetParserByProject(pProject);
            if (not pParser)
        else return;

        if (not pProject) pProject = Manager::Get()->GetProjectManager()->GetActiveProject();
        ProcessLanguageClient* pClient = GetLSPClient();

        // Queue the the json data to OnLSP_ParseDocumentSymbols() event, passing it the json pointer
        // The json data will be placed in a queue to be processed during OnIdle() events. //(ph 2021/09/11)
        wxCommandEvent symEvent(wxEVT_COMMAND_MENU_SELECTED, XRCID("textDocument/semanticTokens"));
        LSP_ParseSemanticTokens(symEvent); //Call directly

    The last line:
    LSP_ParseSemanticTokens(symEvent); //Call directly

    This use the our old-CC's parsing code, for example

    // ----------------------------------------------------------------------------
    Token* LSP_SymbolsParser::DoHandleClass(EClassType ct, int lineNumber, int lastLineNumber, int endCol)            //(ph 2021/05/15)
    // ----------------------------------------------------------------------------
        // need to force the tokenizer _not_ skip anything
        // as we 're manually parsing class decls
        // don't forget to reset that if you add any early exit condition!
        TokenizerState oldState = m_Tokenizer.GetState();
    Using Code::Blocks / Re: Watches: Further expansion of structs
    « Last post by AndrewCot on Yesterday at 02:07:42 am »
    I would advise:
    After adding the pointer to the watch window do the following:
    • Select the variable by clicking once on the row
    • Right click and select the "properties" in the pop up context menu
    • In the array group do the following:
    • check the [X] Watch as array
    • Enter the number of elements in the struct as the Count
    • Now the pointer to the struct will be shown as an array of the count you entered
    • You can now expand each element to see the data.
    Using Code::Blocks / Re: Watches: Further expansion of structs
    « Last post by stuarte on September 24, 2022, 02:19:50 pm »
    Hi Andrew,

    Please find attached file CB_Full_Log.txt.

    Using Code::Blocks / Re: Watches: Further expansion of structs
    « Last post by stuarte on September 24, 2022, 02:13:38 pm »
    Hi Andrew,

    Here is the data requested:

    1. C::B version you are using?     20.03 build 2020-04-18, 19:47:24 - wx3.0.4 - gcc 9.3.0 (Linux, unicode) - 64 bit
    2. GDB version you are using?       9.2-0ubuntu1-20.04.1      **(according to Synaptic)
    3. Compiler and version used.     GCC 4:9.3.0-1ubuntu2        **(according to Synaptic)
    4. Compiler options used.           None.
    5. OS & version used                  Kubuntu 20.04.1 (continuously updated!)
    6. Settings->Dubugger->Common already/always set to "Full (debug) log".

    How do I copy the contents of "Logs & others" window, Debugger tab to a text editor, or can this log be found in a particular place ?

    How do I attach my current project to a forum reply ?
    I tried using the forum attachments tool to attach the project folder but when I clicked on "Open" it merely opened the project folder.

    Using Code::Blocks / Re: Watches: Further expansion of structs
    « Last post by AndrewCot on September 24, 2022, 12:57:44 pm »
    Can you let us know the following so I can have a look at it tomorrow if I get time:
    • C::B version you are using?
    • GDB version you are using?
    • Compiler and version used.
    • Compiler options used.
    • OS & version used
    • Can you attach a debug log of the program being run including when you expand the variable with Settings->Debugger->Common setting for 'Full (debug) log" ticked as it then shown a bunch more info in the debugger log output. Zip up the log as it can get big.
    All of these can/may/will affect the ability to debug or how debugging works.  For example GDB 8.1 has issues and some GCC version's still run some optimize passes even with -Og  enabled.
    If you have time could I also get a small project and source to save me time setting up a program to test with the latest C::B and GCC 12.1 and GDB 12.1 on Windows? I can also test on Xubunu 22.04 or LM 21.0.
    Using Code::Blocks / Watches: Further expansion of structs
    « Last post by stuarte on September 24, 2022, 12:36:11 pm »

    I searched the forum and found "Watches Expansion of structures" but that did not supply a solution to my current problem.

    Basically I have not yet found out how to display the field contents in the second and further structs in a block of structs.
    I have entered the variable name of a struct variable in the leftmost/bottommost field of the Watches window, right-clicked on the field and selected dereference pointer. I have also (left)clicked on the rightward pointing small black arrowhead which has displayed the field contents of the first struct in the block of structs. However I am at a loss as to how to display the field contents of the second and subsequent structs in the Watches window. For example, at the appropriate point, the Watches window shows that two records (i.e. structs) have been created but the Watches window still shows the field contents of the first struct. Could you please advise how to get the Watches window to display the field contents in the second and further structs ?

    Above main() I have :-

    typedef struct rec
       char recordUsed;
       char firstName[15];
       char lastName[15];
       char phoneNumber[15];
    } record;

    To grab a block of memory I use:-

    static record * createRecords(unsigned int * ptrRecordsCreated)
       record * ptrRecords;
       size_t numberOfRecords = 5;
       size_t index;

       ptrRecords = calloc(numberOfRecords, sizeof(record));
       if (ptrRecords == NULL)   /* if memory not available ... */
          printf("\nERROR! Out of memory!\n");
          printf("\nExiting program\n");
          exit (0);           /* ... exit program */

       /* Mark all records as not used */
       for (index = 0; index < numberOfRecords; index++)
          ptrRecords[index].recordUsed = 'N';

       *ptrRecordsCreated += numberOfRecords;
       return ptrRecords;
    }  /* end createRecord() */
    Development / Re: New UserVarManager implementation
    « Last post by AndrewCot on September 24, 2022, 10:31:13 am »
    I could not find the implementation of the following:
        wxString GetMemberValue(const wxString & setName, const wxString & varName, const wxString & memberName) const;
    Using Code::Blocks / Re: Codebocks for windows
    « Last post by Miguel Gimenez on September 23, 2022, 05:30:51 pm »
    Try the last nightly
    Using Code::Blocks / Re: Codebocks for windows
    « Last post by sergvnovg on September 23, 2022, 02:20:26 pm »
    The line appears and disappears in the task manager  "Start here - Code::Blocks 20.03 - Works"
    Pages: 1 [2] 3 4 5 6 7 ... 10