--- np2/x11/gtk/Attic/window_viewer.c 2003/12/11 15:11:56 1.1 +++ np2/x11/gtk/Attic/window_viewer.c 2005/03/12 12:36:40 1.5 @@ -10,8 +10,6 @@ * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES @@ -31,7 +29,6 @@ #include "np2.h" #include "cpucore.h" -#include "memory.h" #include "pccore.h" #include "iocore.h" @@ -58,6 +55,7 @@ static void viewseg_expose(NP2VIEW_T *vi /* misc */ static void invalidate(NP2VIEW_T *view); +static void viewer_set_adjustment(NP2VIEW_T *view); /*----------------------------------------------------------------------------- @@ -138,6 +136,7 @@ viewcmn_setmode(NP2VIEW_T *dst, NP2VIEW_ viewseg_init(dst, src); break; } + viewer_set_adjustment(dst); } static void @@ -152,18 +151,6 @@ viewcmn_setbank(NP2VIEW_T *view) } static void -viewer_segmode(NP2VIEW_T *view, BYTE type) -{ - - if (view->type != type) { - viewcmn_setmode(view, view, type); - viewcmn_setbank(view); - viewcmn_setvscroll(view); - invalidate(view); - } -} - -static void viewcmn_paint(NP2VIEW_T *view, void (*callback)(NP2VIEW_T *, RECT_T *)) { GtkWidget *w = (GtkWidget *)view->widget; @@ -367,6 +354,18 @@ viewseg_expose(NP2VIEW_T *view) static GtkWidget *viewer_create_menu(NP2VIEW_T *view, GtkWidget *parent); static void +viewer_segmode(NP2VIEW_T *view, BYTE type) +{ + + if (view->type != type) { + viewcmn_setmode(view, view, type); + viewcmn_setbank(view); + viewcmn_setvscroll(view); + invalidate(view); + } +} + +static void viewer_close(NP2VIEW_T *view) { @@ -475,6 +474,37 @@ viewer_value_changed(GtkAdjustment *adj, return TRUE; } +static void +viewer_set_adjustment(NP2VIEW_T *view) +{ + GtkWidget *w = GTK_WIDGET(view->widget); + GtkWidget *vscr; + GtkObject *adj; + + if (view->vscr) { + vscr = view->vscr; + view->vscr = NULL; + gtk_container_remove(GTK_CONTAINER(w->parent), vscr); + gtk_widget_destroy(vscr); + } + + printf("height = %d\n", w->allocation.height); + printf("fontsize = %d\n", view->fontsize); + printf("pos = %d\n", view->pos); + printf("maxline = %d\n", view->maxline); + + adj = gtk_adjustment_new(0.0, 0.0, 3.0, 1.0, 1.0, 1.0); + gtk_signal_connect_object(adj, "changed", + GTK_SIGNAL_FUNC(viewer_changed), (gpointer)view); + gtk_signal_connect_object(adj, "value_changed", + GTK_SIGNAL_FUNC(viewer_value_changed), + (gpointer)view); + vscr = gtk_vscrollbar_new(GTK_ADJUSTMENT(adj)); + view->vscr = vscr; + gtk_widget_show(vscr); + gtk_box_pack_start(GTK_BOX(w->parent), vscr, FALSE, TRUE, 0); +} + static gboolean view_fontload(NP2VIEW_T *view, UINT8 size) { @@ -542,8 +572,6 @@ viewer_open(void) GtkWidget *rw; GtkWidget *bw; GtkWidget *cw; - GtkWidget *vscr; - GtkObject *adj; NP2VIEW_T *view; int i; @@ -565,6 +593,7 @@ viewer_open(void) GTK_SIGNAL_FUNC(viewer_focus_in), (gpointer)view); gtk_signal_connect(GTK_OBJECT(w), "focus_out_event", GTK_SIGNAL_FUNC(viewer_focus_out), (gpointer)view); + gtk_widget_realize(view->window); rw = gtk_vbox_new(FALSE, 0); gtk_widget_show(rw); @@ -585,21 +614,9 @@ viewer_open(void) gtk_signal_connect(GTK_OBJECT(cw), "expose_event", GTK_SIGNAL_FUNC(viewer_expose), (gpointer)view); - adj = gtk_adjustment_new(0.0, 0.0, 3.0, 1.0, 1.0, 1.0); - gtk_signal_connect_object(adj, "changed", - GTK_SIGNAL_FUNC(viewer_changed), (gpointer)view); - gtk_signal_connect_object(adj, "value_changed", - GTK_SIGNAL_FUNC(viewer_value_changed), - (gpointer)view); - vscr = gtk_vscrollbar_new(GTK_ADJUSTMENT(adj)); - gtk_widget_show(vscr); - gtk_box_pack_start(GTK_BOX(bw), vscr, FALSE, TRUE, 0); - view_fontload(view, DEFAULT_FONTSIZE); - viewcmn_setmode(view, NULL, VIEWMODE_REG); - gtk_widget_realize(view->window); gtk_widget_show_all(view->window); view->lock = FALSE;