在GTK中将页面重新连接到Notebook

Cod*_*ous 10 gtk#

我正在使用Notebook小部件来拉出选项卡式文件视图,并且我添加了代码以允许从现有Notebook中分离页面,这会生成一个带有单独Notebook的新窗口,只包含该页面.但是,我希望能够在多个笔记本之间移动页面.

Notebook.WindowCreationHook委托给我的页面从何而来,页面插件的笔记本电脑,以及x和y坐标它是在下降,但我不知道我怎么能告诉什么笔记本它被跌落到,如果有的话.这种重新附着是否有内置机制,或者我必须通过坐标?如果我必须使用坐标,那么获取它们并获取Notebook小部件的最佳方法是什么?如果需要的话,我可以存储我已经浮动的笔记本列表,但即使这样,代码也可以找出哪一个会有点难度(考虑到z顺序和所有有趣的东西).

Rad*_*u C 4

我决定继续我自己的建议(你投票给-1,我删除了它,因为它并没有真正回答问题),所以在这里我再次拿我的声誉冒险。附代码:

http://uplink.kicks-ass.net/~radu/GTK_Sharp_Notebook/

在上述地址,您会找到同一事物的两个档案(因为我不知道您更喜欢哪一个)。在档案中有我今天写的代码,它的作用是:

主窗口包含一个带有三个选项卡的笔记本,每个选项卡都有一个随机 UI 元素(按钮、日历和复选框)。您可以将选项卡拖到主窗口之外。当您将它们放在主窗口之外时,会创建一个新窗口,该窗口本身包含一个笔记本。您刚刚删除的选项卡将出现在新窗口中。你自己已经走到这一步了。

现在,如果您将另一个选项卡从主窗口拖动到新窗口,该选项卡将添加到新窗口的笔记本中,而不是创建新窗口。

另外,如果将所有选项卡从新窗口拖回主窗口,则新窗口将被销毁(在最后一个选项卡被拖走之后)。

这东西的关键?GroupId = 0对于所有笔记本。他们自己处理拖放操作。

如果您想在新窗口中隐藏选项卡(在重新附加它们之前),您可能需要查看对接小部件而不是笔记本。

注意:我在Linux下使用MonoDevelop来制作链接的应用程序。