Tk Source Code

Check-in [96333b9a]
Login

Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

Overview
Comment:I reverted the previous fix, because it doesn't work. The current solution is to set currentIndex before NotebookPlaceSlave() will be called, due to my analysis this can have only one side effect: an interveaning call of NotebookPlaceSlaves() will change to the correct tab.
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | bug-4966cad4d4
Files: files | file ages | folders
SHA1: 96333b9a8de4ade1cb90613edc8606ff874cf22f
User & Date: gcramer 2017-07-23 17:06:12
Context
2017-08-06
18:59
merge trunk Closed-Leaf check-in: b680142f user: fvogel tags: bug-4966cad4d4
2017-07-23
17:06
I reverted the previous fix, because it doesn't work. The current solution is to set currentIndex before NotebookPlaceSlave() will be called, due to my analysis this can have only one side effect: an interveaning call of NotebookPlaceSlaves() will change to the correct tab. check-in: 96333b9a user: gcramer tags: bug-4966cad4d4
2017-07-21
14:05
Bugfix [4966cad4d4]: Now function NotebookPlaceSlaves() in ttkNotebook.c will regard the active index. check-in: 168b6715 user: gcramer tags: bug-4966cad4d4
Changes
Hide Diffs Unified Diffs Ignore Whitespace Patch

Changes to generic/ttk/ttkNotebook.c.

591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
 * 	Geometry manager hook.
 */
static void NotebookPlaceSlaves(void *recordPtr)
{
    Notebook *nb = recordPtr;
    int currentIndex = nb->notebook.currentIndex;
    if (currentIndex >= 0) {
	int activeIndex = nb->notebook.activeIndex;
	int index = (activeIndex >= 0) ? activeIndex : currentIndex;
	NotebookDoLayout(nb);
	if (index >= 0) {
	    NotebookPlaceSlave(nb, index);
	}
    }
}

/*
 * SelectTab(nb, index) --
 * 	Change the currently-selected tab.
 */







<
<

<
|
<







591
592
593
594
595
596
597


598

599

600
601
602
603
604
605
606
 * 	Geometry manager hook.
 */
static void NotebookPlaceSlaves(void *recordPtr)
{
    Notebook *nb = recordPtr;
    int currentIndex = nb->notebook.currentIndex;
    if (currentIndex >= 0) {


	NotebookDoLayout(nb);

	NotebookPlaceSlave(nb, currentIndex);

    }
}

/*
 * SelectTab(nb, index) --
 * 	Change the currently-selected tab.
 */
627
628
629
630
631
632
633
634
635

636


637
638
639
640
641
642
643
	tab->state = TAB_STATE_NORMAL;
    }

    if (currentIndex >= 0) {
	Ttk_UnmapSlave(nb->notebook.mgr, currentIndex);
    }

    NotebookPlaceSlave(nb, index);


    nb->notebook.currentIndex = index;


    TtkRedisplayWidget(&nb->core);

    TtkSendVirtualEvent(nb->core.tkwin, "NotebookTabChanged");
}

/* NextTab --
 * 	Returns the index of the next tab after the specified tab







|
|
>

>
>







623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
	tab->state = TAB_STATE_NORMAL;
    }

    if (currentIndex >= 0) {
	Ttk_UnmapSlave(nb->notebook.mgr, currentIndex);
    }

    /* Must be set before calling NotebookPlaceSlave(), otherwise it may
     * happen that NotebookPlaceSlaves(), triggered by an interveaning
     * geometry request, will swap to old index. */
    nb->notebook.currentIndex = index;

    NotebookPlaceSlave(nb, index);
    TtkRedisplayWidget(&nb->core);

    TtkSendVirtualEvent(nb->core.tkwin, "NotebookTabChanged");
}

/* NextTab --
 * 	Returns the index of the next tab after the specified tab