diff --git a/src/iptux/DialogBase.cpp b/src/iptux/DialogBase.cpp index a24f820cb..f363202f6 100644 --- a/src/iptux/DialogBase.cpp +++ b/src/iptux/DialogBase.cpp @@ -14,6 +14,7 @@ #include "config.h" #include "DialogBase.h" +#include "UiCoreThread.h" #include "UiModels.h" #include #include @@ -21,7 +22,6 @@ #include "iptux-utils/output.h" #include "iptux-utils/utils.h" -#include "iptux/UiCoreThread.h" #include "iptux/UiHelper.h" #include "iptux/callback.h" @@ -29,6 +29,10 @@ using namespace std; namespace iptux { +enum { + InputAreaMinHeight = 50, +}; + DialogBase::DialogBase(Application* app, GroupInfo* grp) : app(app), progdt(app->getProgramData()), @@ -238,6 +242,7 @@ GtkWidget* DialogBase::CreateInputArea() { GtkWidget *widget, *window; frame = gtk_frame_new(NULL); + gtk_widget_set_size_request(frame, -1, InputAreaMinHeight); gtk_frame_set_shadow_type(GTK_FRAME(frame), GTK_SHADOW_ETCHED_IN); box = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0); gtk_container_add(GTK_CONTAINER(frame), box); diff --git a/src/iptux/DialogPeer.cpp b/src/iptux/DialogPeer.cpp index b41395e60..9ea3a7773 100644 --- a/src/iptux/DialogPeer.cpp +++ b/src/iptux/DialogPeer.cpp @@ -15,7 +15,6 @@ #include "UiModels.h" #include "iptux-core/Models.h" -#include #include #include @@ -36,6 +35,10 @@ using namespace std; namespace iptux { +enum { + InfoAreaMinWidth = 100, +}; + /** * 类构造函数. * @param grp 好友群组信息 @@ -244,6 +247,21 @@ void DialogPeer::CreateTitle() { } } +static GtkWidget* createMainPanel(GData* dtset) { + GtkWidget* vpaned = gtk_paned_new(GTK_ORIENTATION_VERTICAL); + g_object_set_data(G_OBJECT(vpaned), "position-name", + (gpointer) "historyinput-paned-divide"); + gint position = + GPOINTER_TO_INT(g_datalist_get_data(&dtset, "historyinput-paned-divide")); + gtk_paned_set_position(GTK_PANED(vpaned), position); + g_signal_connect(vpaned, "notify::position", G_CALLBACK(PanedDivideChanged), + &dtset); + gtk_paned_pack1(GTK_PANED(vpaned), DialogPeer::CreateHistoryArea(), TRUE, + TRUE); + gtk_paned_pack2(GTK_PANED(vpaned), DialogPeer::CreateInputArea(), FALSE, + FALSE); +} + /** * 创建所有区域. * @return 主窗体 @@ -276,15 +294,16 @@ GtkWidget* DialogPeer::CreateAllArea() { g_signal_connect(vpaned, "notify::position", G_CALLBACK(PanedDivideChanged), &dtset); gtk_paned_pack1(GTK_PANED(vpaned), CreateHistoryArea(), TRUE, TRUE); - gtk_paned_pack2(GTK_PANED(vpaned), CreateInputArea(), FALSE, TRUE); + gtk_paned_pack2(GTK_PANED(vpaned), CreateInputArea(), FALSE, FALSE); /* 加入好友信息&附件区域 */ vpaned = gtk_paned_new(GTK_ORIENTATION_VERTICAL); + gtk_widget_set_size_request(vpaned, InfoAreaMinWidth, -1); g_object_set_data(G_OBJECT(vpaned), "position-name", (gpointer) "infoenclosure-paned-divide"); position = GPOINTER_TO_INT( g_datalist_get_data(&dtset, "infoenclosure-paned-divide")); gtk_paned_set_position(GTK_PANED(vpaned), position); - gtk_paned_pack2(GTK_PANED(hpaned), vpaned, FALSE, TRUE); + gtk_paned_pack2(GTK_PANED(hpaned), vpaned, FALSE, FALSE); g_signal_connect(vpaned, "notify::position", G_CALLBACK(PanedDivideChanged), &dtset); gtk_paned_pack1(GTK_PANED(vpaned), CreateInfoArea(), TRUE, TRUE); @@ -298,30 +317,29 @@ GtkWidget* DialogPeer::CreateAllArea() { * @return 主窗体 */ GtkWidget* DialogPeer::CreateInfoArea() { - GtkWidget *frame, *sw; + GtkWidget* sw; GtkWidget* widget; GtkTextBuffer* buffer; - frame = gtk_frame_new(_("Info.")); - g_datalist_set_data(&widset, "info-frame", frame); - gtk_frame_set_shadow_type(GTK_FRAME(frame), GTK_SHADOW_ETCHED_IN); sw = gtk_scrolled_window_new(NULL, NULL); + g_datalist_set_data(&widset, "info-frame", sw); gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(sw), GTK_SHADOW_ETCHED_IN); - gtk_container_add(GTK_CONTAINER(frame), sw); buffer = gtk_text_buffer_new(app->getCoreThread()->tag_table()); FillPalInfoToBuffer(buffer, grpinf->getMembers()[0].get()); widget = gtk_text_view_new_with_buffer(buffer); + g_object_set(widget, "left-margin", 10, "right-margin", 10, "top-margin", 10, + "bottom-margin", 10, NULL); gtk_text_view_set_cursor_visible(GTK_TEXT_VIEW(widget), FALSE); gtk_text_view_set_editable(GTK_TEXT_VIEW(widget), FALSE); gtk_text_view_set_wrap_mode(GTK_TEXT_VIEW(widget), GTK_WRAP_WORD_CHAR); gtk_container_add(GTK_CONTAINER(sw), widget); g_datalist_set_data(&widset, "info-textview-widget", widget); - return frame; + return sw; } /**