拖放固定容器会更改其大小

时间:2012-08-12 20:29:55

标签: c gtk gtk3

我在C中开发了一个gtk2应用程序(Conky Companion)来帮助我的conky脚本用户

链接:http://crunchbanglinux.org/forums/topic/19235/conky-weather-scripts-using-accuweatherwundergroundnwsweathercom/

相对轻松地创建自己的conkyrcs。 主屏幕的屏幕截图如下:

http://i.imgur.com/jWl88.jpg

用户可以将图标或标签从右侧拖放到左侧,移动它们,调整它们大小,更改它们的大小或颜色等。快乐时,他可以按下生成按钮并生成一个conkyrc文件。

屏幕是一个带有桌子的顶部不可调整大小的窗口。桌子的两侧是放置固定容器的框架 每当有人尝试在左框架/固定容器的右边框或底部边框放置图标或标签时,窗口小部件就会偏离边界,如上面的屏幕截图所示。

我现在正试图将应用程序移植到Gtk3,我面临着一个奇怪的问题 每当用户尝试将对象放置或移动到左框架/固定容器的右边框或底部边框时,它会调整自身大小以适应新放置的窗口小部件。

http://i.imgur.com/d1lc4.jpg

如果我将对象向左移动(或向上移动),则帧将返回到由gtk_widget_set_size_request定义的大小。

有没有办法让固定容器......固定?我不希望它调整大小。

将框架和固定容器放在窗口中的代码是:

/* LEFT FRAME */

frame1= gtk_frame_new(NULL);
gtk_table_attach(GTK_TABLE(table), frame1, 0,14,0,49,GTK_SHRINK,GTK_SHRINK,0,0);
gtk_widget_set_size_request(frame1, 360,570); 

gtk_widget_show(frame1);


/* LEFT FRAME - FIXED CONTAINER */

fixed1 = gtk_fixed_new();
gtk_widget_set_has_window(fixed1,TRUE);
gtk_container_add(GTK_CONTAINER(frame1),fixed1);
gtk_widget_modify_bg (fixed1, GTK_STATE_NORMAL, &color);

gtk_drag_dest_set (
    fixed1, GTK_DEST_DEFAULT_ALL,
    target_list, 1, GDK_ACTION_COPY|GDK_ACTION_MOVE);

g_signal_connect (fixed1, "drag-drop",G_CALLBACK (dr_data_rec_1d1), (gpointer)fixed1);

gtk_widget_show(fixed1);    

我尝试过以下事项:
1)摆弄GTK_EXPAND和GTK_FILL以放置框架。没有变化。
2)gtk_window_set_geometry_hints用于窗口,表格,框架和固定容器。没有变化。
3)用gtk_grid替换gtk_table。没变。

我不知道该做什么或搜索什么;我甚至不知道问题是在窗口,桌子,框架,固定容器中还是在一些模糊的拖放设置中。

期待任何暗示,如果解决方案容易和/或明显,请抱歉。

0 个答案:

没有答案