# HG changeset patch # User Christian Hammond # Date 1049185537 0 # Node ID 154eb3188788dab6854be49e056c4b767b4ef248 # Parent f5efec4603ef3982c7acaed6c64c2ca281713e78 [gaim-migrate @ 5280] Another gaim first, ladies and gentlemen! I've been reading some books and sites on interface design and realized something. The natural order for humans (or at least Western people?) is a top-down approach. Menus drop down. Webpages go from top to bottom. You tend to scroll down rather than up. Everything goes from the top to the bottom. Apple realizes this, and that's why the menubar has always been at the top. Microsoft never really grasped this, and we all know how clunky the Start button feels. So this commit puts the input box on IMs (I'll get to chats after school) above the gtkimhtml widget. This feels much more natural, as what you type then jumps down to the input widget. Though it may look odd at first, you'll all realize just how comfortable gaim is now in comparison to any other IM client. committer: Tailor Script diff -r f5efec4603ef -r 154eb3188788 src/gtkconv.c --- a/src/gtkconv.c Tue Apr 01 08:05:00 2003 +0000 +++ b/src/gtkconv.c Tue Apr 01 08:25:37 2003 +0000 @@ -3128,13 +3128,36 @@ gtk_paned_pack1(GTK_PANED(paned), vbox, TRUE, TRUE); gtk_widget_show(vbox); + /* Setup the entry widget. */ + frame = gtk_frame_new(NULL); + gtk_frame_set_shadow_type(GTK_FRAME(frame), GTK_SHADOW_IN); + gtk_box_pack_start(GTK_BOX(vbox), frame, TRUE, TRUE, 0); + gtk_widget_show(frame); + + gtkconv->entry_buffer = gtk_text_buffer_new(NULL); + g_object_set_data(G_OBJECT(gtkconv->entry_buffer), "user_data", conv); + gtkconv->entry = gtk_text_view_new_with_buffer(gtkconv->entry_buffer); + + gtk_text_view_set_wrap_mode(GTK_TEXT_VIEW(gtkconv->entry), GTK_WRAP_WORD); + gtk_widget_set_size_request(gtkconv->entry, -1, + MAX(conv_size.entry_height, 25)); + + vbox2 = gtk_vbox_new(FALSE, 5); + gtk_paned_pack2(GTK_PANED(paned), vbox2, FALSE, FALSE); + gtk_widget_show(vbox2); + + /* Build the toolbar. */ + gtkconv->toolbar.toolbar = build_conv_toolbar(conv); + gtk_box_pack_start(GTK_BOX(vbox2), gtkconv->toolbar.toolbar, + FALSE, FALSE, 0); + /* Setup the gtkimhtml widget. */ gtkconv->sw = gtk_scrolled_window_new(NULL, NULL); gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(gtkconv->sw), GTK_POLICY_NEVER, GTK_POLICY_ALWAYS); gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(gtkconv->sw), GTK_SHADOW_IN); - gtk_box_pack_start(GTK_BOX(vbox), gtkconv->sw, TRUE, TRUE, 0); + gtk_box_pack_start(GTK_BOX(vbox2), gtkconv->sw, TRUE, TRUE, 0); gtk_widget_set_size_request(gtkconv->sw, conv_size.width, conv_size.height); gtk_widget_show(gtkconv->sw); @@ -3152,29 +3175,6 @@ gtk_widget_show(gtkconv->imhtml); - vbox2 = gtk_vbox_new(FALSE, 5); - gtk_paned_pack2(GTK_PANED(paned), vbox2, FALSE, FALSE); - gtk_widget_show(vbox2); - - /* Build the toolbar. */ - gtkconv->toolbar.toolbar = build_conv_toolbar(conv); - gtk_box_pack_start(GTK_BOX(vbox2), gtkconv->toolbar.toolbar, - FALSE, FALSE, 0); - - /* Setup the entry widget. */ - frame = gtk_frame_new(NULL); - gtk_frame_set_shadow_type(GTK_FRAME(frame), GTK_SHADOW_IN); - gtk_box_pack_start(GTK_BOX(vbox2), frame, TRUE, TRUE, 0); - gtk_widget_show(frame); - - gtkconv->entry_buffer = gtk_text_buffer_new(NULL); - g_object_set_data(G_OBJECT(gtkconv->entry_buffer), "user_data", conv); - gtkconv->entry = gtk_text_view_new_with_buffer(gtkconv->entry_buffer); - - gtk_text_view_set_wrap_mode(GTK_TEXT_VIEW(gtkconv->entry), GTK_WRAP_WORD); - gtk_widget_set_size_request(gtkconv->entry, -1, - MAX(conv_size.entry_height, 25)); - /* Connect the signal handlers. */ g_signal_connect_swapped(G_OBJECT(gtkconv->entry), "key_press_event", G_CALLBACK(entry_key_pressed_cb_1),