]> code.delx.au - gnu-emacs/blobdiff - src/gtkutil.c
(xic_defaut_fontset): New constant.
[gnu-emacs] / src / gtkutil.c
index aecc4e2eaea3f4737049dda13452dde2e9f60dbf..8bd83e4004387014ef9af3a68c52eea375eaac89 100644 (file)
@@ -556,12 +556,6 @@ xg_resize_outer_widget (f, columns, rows)
      int columns;
      int rows;
 {
-  gtk_window_resize (GTK_WINDOW (FRAME_GTK_OUTER_WIDGET (f)),
-                     FRAME_PIXEL_WIDTH (f), FRAME_TOTAL_PIXEL_HEIGHT (f));
-
-  /* base_height is now changed.  */
-  x_wm_set_size_hint (f, 0, 0);
-
   /* If we are not mapped yet, set geometry once again, as window
      height now have changed.  */
   if (! GTK_WIDGET_MAPPED (FRAME_GTK_OUTER_WIDGET (f)))
@@ -584,14 +578,14 @@ xg_resize_widgets (f, pixelwidth, pixelheight)
 {
   int mbheight = FRAME_MENUBAR_HEIGHT (f);
   int tbheight = FRAME_TOOLBAR_HEIGHT (f);
-  int rows = FRAME_PIXEL_HEIGHT_TO_TEXT_LINES (f, (pixelheight 
+  int rows = FRAME_PIXEL_HEIGHT_TO_TEXT_LINES (f, (pixelheight
                                                   - mbheight - tbheight));
   int columns = FRAME_PIXEL_WIDTH_TO_TEXT_COLS (f, pixelwidth);
 
   if (FRAME_GTK_WIDGET (f)
-      && (columns != FRAME_COLS (f) 
+      && (columns != FRAME_COLS (f)
          || rows != FRAME_LINES (f)
-          || pixelwidth != FRAME_PIXEL_WIDTH (f) 
+          || pixelwidth != FRAME_PIXEL_WIDTH (f)
          || pixelheight != FRAME_PIXEL_HEIGHT (f)))
     {
       struct x_output *x = f->output_data.x;
@@ -719,6 +713,7 @@ xg_create_frame_widgets (f)
       if (wvbox) gtk_widget_destroy (wvbox);
       if (wfixed) gtk_widget_destroy (wfixed);
 
+      UNBLOCK_INPUT;
       return 0;
     }
 
@@ -1905,7 +1900,7 @@ create_menus (data, f, select_cb, deactivate_cb, highlight_cb,
 
       if (deactivate_cb)
         g_signal_connect (G_OBJECT (wmenu),
-                          "deactivate", deactivate_cb, 0);
+                          "selection-done", deactivate_cb, 0);
 
       g_signal_connect (G_OBJECT (wmenu),
                         "grab-notify", G_CALLBACK (menu_grab_callback), 0);
@@ -2881,7 +2876,7 @@ scroll_bar_button_cb (widget, event, user_data)
       if (xg_timer) xg_stop_timer ();
       bar->dragging = Qnil;
     }
-  
+
   return FALSE;
 }
 
@@ -2945,7 +2940,7 @@ xg_create_scroll_bar (f, bar, scroll_callback, scroll_bar_name)
      event box window.  */
   gtk_fixed_put (GTK_FIXED (f->output_data.x->edit_widget), webox, -1, -1);
   gtk_container_add (GTK_CONTAINER (webox), wscroll);
-  
+
 
   /* Set the cursor to an arrow.  */
   xg_set_cursor (webox, FRAME_X_DISPLAY_INFO (f)->xg_cursor);
@@ -3004,9 +2999,14 @@ xg_update_scrollbar_pos (f, scrollbar_id, top, left, width, height)
       GtkWidget *wparent = gtk_widget_get_parent (wscroll);
 
       /* Move and resize to new values.  */
-      gtk_widget_set_size_request (wscroll, width, height);
       gtk_fixed_move (GTK_FIXED (wfixed), wparent, left, top);
-
+      gtk_widget_set_size_request (wscroll, width, height);
+      gtk_widget_queue_draw (wparent);
+      gdk_window_process_all_updates ();
+      /* GTK does not redraw until the main loop is entered again, but
+         if there are no X events pending we will not enter it.  So we sync
+         here to get some events.  */
+      x_sync (f);
       SET_FRAME_GARBAGED (f);
       cancel_mouse_face (f);
     }
@@ -3270,10 +3270,10 @@ xg_tool_bar_item_expose_callback (w, event, client_data)
 
   event->area.x = max (0, event->area.x);
   event->area.y = max (0, event->area.y);
-  
+
   event->area.width = max (width, event->area.width);
   event->area.height = max (height, event->area.height);
-  
+
   return FALSE;
 }
 
@@ -3394,7 +3394,7 @@ update_frame_tool_bar (f)
      DEFAULT_TOOL_BAR_BUTTON_MARGIN has no effect.  */
   hmargin = max (0, hmargin - DEFAULT_TOOL_BAR_BUTTON_MARGIN);
   vmargin = max (0, vmargin - DEFAULT_TOOL_BAR_BUTTON_MARGIN);
-  
+
   if (! x->toolbar_widget)
     xg_create_tool_bar (f);