1

我用 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。没变。

我不知道该做什么或要搜索什么;我什至不知道问题出在窗口、表格、框架、固定容器还是在一些不起眼的拖放设置中。

如果解决方案简单和/或明显,期待任何提示和抱歉。

4

0 回答 0