From 992d1adfe350c2c999851aede1ca5a8748fbb6e0 Mon Sep 17 00:00:00 2001 From: "pavlov%pavlov.net" Date: Tue, 10 Nov 1998 04:25:51 +0000 Subject: [PATCH] Impliment menu callbacks, fix a few paint events, remove some old debugging messages. Use nsWidget::Show for nsWindow::Show. --- widget/src/gtk/nsGtkEventHandler.cpp | 4 -- widget/src/gtk/nsGtkEventHandler.h | 2 +- widget/src/gtk/nsMenuItem.cpp | 1 + widget/src/gtk/nsWidget.cpp | 7 +++- widget/src/gtk/nsWindow.cpp | 56 ++++++++-------------------- 5 files changed, 22 insertions(+), 48 deletions(-) diff --git a/widget/src/gtk/nsGtkEventHandler.cpp b/widget/src/gtk/nsGtkEventHandler.cpp index b49db6f9124e..0d853517e2ee 100644 --- a/widget/src/gtk/nsGtkEventHandler.cpp +++ b/widget/src/gtk/nsGtkEventHandler.cpp @@ -572,16 +572,13 @@ void nsGtkWidget_KeyReleaseMask_EventHandler(GtkWidget *w, GdkEvent * event, gpo //============================================================== void nsGtkWidget_ResetResize_Callback(gpointer call_data) { -#if 0 nsWindow* widgetWindow = (nsWindow*)call_data; widgetWindow->SetResized(PR_FALSE); -#endif } //============================================================== void nsGtkWidget_Menu_Callback(GtkWidget *w, gpointer p) { -#if 0 nsIMenuItem * menuItem = (nsIMenuItem *)p; if (menuItem != NULL) { nsMenuEvent mevent; @@ -596,6 +593,5 @@ void nsGtkWidget_Menu_Callback(GtkWidget *w, gpointer p) nsEventStatus status; mevent.widget->DispatchEvent((nsGUIEvent *)&mevent, status); } -#endif } diff --git a/widget/src/gtk/nsGtkEventHandler.h b/widget/src/gtk/nsGtkEventHandler.h index 3ec53daf52cb..447f4dda0ec5 100644 --- a/widget/src/gtk/nsGtkEventHandler.h +++ b/widget/src/gtk/nsGtkEventHandler.h @@ -54,7 +54,7 @@ void nsGtkWidget_Expose_Callback(GtkWidget *w, gpointer p); void nsGtkWidget_Refresh_Callback(gpointer call_data); -void nsGtkWidget_ResetResize_Callback(gpointer call_data); +void nsGtkWidget_ResetResize_Callback(GtkWidget *w, gpointer p); void nsGtkWidget_Menu_Callback(GtkWidget *w, gpointer p); diff --git a/widget/src/gtk/nsMenuItem.cpp b/widget/src/gtk/nsMenuItem.cpp index bb71102160f9..50351f0d7e3b 100644 --- a/widget/src/gtk/nsMenuItem.cpp +++ b/widget/src/gtk/nsMenuItem.cpp @@ -88,6 +88,7 @@ void nsMenuItem::Create(nsIWidget *aMBParent, XtAddCallback(mMenu, XmNactivateCallback, nsXtWidget_Menu_Callback, (nsIMenuItem *)this); */ + gtk_signal_connect (GTK_OBJECT (mMenu), "activate", GTK_SIGNAL_FUNC(nsGtkWidget_Menu_Callback) , this); delete[] nameStr; } diff --git a/widget/src/gtk/nsWidget.cpp b/widget/src/gtk/nsWidget.cpp index cb21f09ae3a0..1ffb1b4adb7c 100644 --- a/widget/src/gtk/nsWidget.cpp +++ b/widget/src/gtk/nsWidget.cpp @@ -74,7 +74,7 @@ NS_IMETHODIMP nsWidget::Destroy(void) nsIWidget *nsWidget::GetParent(void) { - NS_NOTYETIMPLEMENTED("nsWidget::GetParent"); +// NS_NOTYETIMPLEMENTED("nsWidget::GetParent"); return mParent; } @@ -86,7 +86,6 @@ nsIWidget *nsWidget::GetParent(void) NS_METHOD nsWidget::Show(PRBool bState) { - fprintf(stderr,"nsWidget::Show() called\n"); if (bState) { if (mWidget) { gtk_widget_show(mWidget); @@ -124,7 +123,9 @@ NS_METHOD nsWidget::IsVisible(PRBool &aState) NS_METHOD nsWidget::Move(PRUint32 aX, PRUint32 aY) { +#if DBG fprintf(stderr,"nsWidget::Move called (%d,%d)\n", aX, aY); +#endif mBounds.x = aX; mBounds.y = aY; gtk_layout_move(GTK_LAYOUT(mWidget->parent), mWidget, aX, aY); @@ -134,7 +135,9 @@ NS_METHOD nsWidget::Move(PRUint32 aX, PRUint32 aY) NS_METHOD nsWidget::Resize(PRUint32 aWidth, PRUint32 aHeight, PRBool aRepaint) { +#if DBG fprintf(stderr,"nsWidget::Resize called w,h(%d,%d)\n", aWidth, aHeight); +#endif mBounds.width = aWidth; mBounds.height = aHeight; gtk_widget_set_usize(mWidget,aWidth, aHeight); diff --git a/widget/src/gtk/nsWindow.cpp b/widget/src/gtk/nsWindow.cpp index cf5fb70cd852..fe76474801d3 100644 --- a/widget/src/gtk/nsWindow.cpp +++ b/widget/src/gtk/nsWindow.cpp @@ -73,12 +73,11 @@ nsWindow::~nsWindow() { OnDestroy(); gtk_widget_destroy(mWidget); -#if 0 if (nsnull != mGC) { - ::XFreeGC((Display *)GetNativeData(NS_NATIVE_DISPLAY),mGC); + gdk_gc_destroy(mGC); mGC = nsnull; +// ::XFreeGC((Display *)GetNativeData(NS_NATIVE_DISPLAY),mGC); } -#endif } //------------------------------------------------------------------------- @@ -144,7 +143,7 @@ NS_METHOD nsWindow::CreateNative(GtkWidget *parentWidget) mainWindow = gtk_window_new(GTK_WINDOW_TOPLEVEL); // VBox for the menu, etc. - mVBox = gtk_vbox_new(FALSE, 3); + mVBox = gtk_vbox_new(FALSE, 0); gtk_widget_show (mVBox); gtk_container_add(GTK_CONTAINER(mainWindow), mVBox); @@ -224,35 +223,12 @@ void nsWindow::InitCallbacks(char * aName) //------------------------------------------------------------------------- NS_METHOD nsWindow::Show(PRBool bState) { -#ifdef DEBUG_pavlov - g_print("nsWindow::Show called with %d\n", bState); -#endif - mShown = bState; if (bState) { if (mVBox) { // Toplevel gtk_widget_show (mVBox->parent); } - else if (mWidget) { - gtk_widget_show (mWidget); - } - else { -#ifdef DEBUG_shaver - g_print("showing a NULL-be-widgeted nsWindow: %p\n", this); -#endif - } - } else { - // hide it } - -/* - mShown = bState; - if (bState) { - XtManageChild(mWidget); - } - else - XtUnmanageChild(mWidget); -*/ - return NS_OK; + return nsWidget::Show(bState); } //------------------------------------------------------------------------- @@ -766,18 +742,16 @@ PRUint32 nsWindow::GetYCoord(PRUint32 aNewY) //----------------------------------------------------- // -void nsWindow_ResetResize_Callback(gpointer call_data) +gint nsWindow_ResetResize_Callback(gpointer p) { -#if 0 - nsWindow* widgetWindow = (nsWindow*)call_data; + nsWindow* widgetWindow = (nsWindow*)p; widgetWindow->SetResized(PR_FALSE); -#endif + return FALSE; } -void nsWindow_Refresh_Callback(gpointer call_data) +gint nsWindow_Refresh_Callback(gpointer p) { -#if 0 - nsWindow* widgetWindow = (nsWindow*)call_data; + nsWindow* widgetWindow = (nsWindow*)p; nsRect bounds; widgetWindow->GetResizeRect(&bounds); @@ -796,8 +770,7 @@ void nsWindow_Refresh_Callback(gpointer call_data) pevent.rect = (nsRect *)&bounds; widgetWindow->OnPaint(pevent); - XtAppAddTimeOut(gAppContext, 50, (XtTimerCallbackProc)nsWindow_ResetResize_Callback, widgetWindow); -#endif + gtk_timeout_add (50, (GtkFunction)nsWindow_ResetResize_Callback, widgetWindow); } // @@ -807,13 +780,15 @@ void nsWindow_Refresh_Callback(gpointer call_data) extern "C" void nsWindow_ResizeWidget(GtkWidget *w) { -#if 0 int width = 0; int height = 0; nsWindow *win = 0; // Get the new size for the window - XtVaGetValues(w, XmNuserData, &win, XmNwidth, &width, XmNheight, &height, nsnull); + win = gtk_object_get_user_data(GTK_OBJECT(w)); + width = w->allocation.width; + height = w->allocation.height; +// XtVaGetValues(w, XmNuserData, &win, XmNwidth, &width, XmNheight, &height, nsnull); // Setup the resize rectangle for the window. nsRect bounds; @@ -834,12 +809,11 @@ extern "C" void nsWindow_ResizeWidget(GtkWidget *w) // resizing. This is only needed for main (shell) // windows. This should be replaced with code that actually // Compresses the event queue. - XtAppAddTimeOut(gAppContext, 250, (XtTimerCallbackProc)nsWindow_Refresh_Callback, win); + gtk_timeout_add (250, (GtkFunction)nsWindow_Refresh_Callback, win); } } win->SetResized(PR_TRUE); -#endif } NS_METHOD nsWindow::SetMenuBar(nsIMenuBar * aMenuBar)