diff options
-rw-r--r-- | gtk/ScintillaGTK.cxx | 38 |
1 files changed, 25 insertions, 13 deletions
diff --git a/gtk/ScintillaGTK.cxx b/gtk/ScintillaGTK.cxx index af78ba933..310ef032b 100644 --- a/gtk/ScintillaGTK.cxx +++ b/gtk/ScintillaGTK.cxx @@ -220,10 +220,10 @@ gint ScintillaGTK::Realize(GtkWidget *widget, ScintillaGTK *sciThis) { GdkICAttributesType attrmask = GDK_IC_ALL_REQ; GdkIMStyle style; GdkIMStyle supported_style = (GdkIMStyle) (GDK_IM_PREEDIT_NONE | - GDK_IM_PREEDIT_NOTHING | - GDK_IM_PREEDIT_POSITION | - GDK_IM_STATUS_NONE | - GDK_IM_STATUS_NOTHING); + GDK_IM_PREEDIT_NOTHING | + GDK_IM_PREEDIT_POSITION | + GDK_IM_STATUS_NONE | + GDK_IM_STATUS_NOTHING); if (widget->style && widget->style->font->type != GDK_FONT_FONTSET) supported_style = (GdkIMStyle) ((int) supported_style & ~GDK_IM_PREEDIT_POSITION); @@ -280,7 +280,7 @@ gint ScintillaGTK::UnRealize(GtkWidget *, ScintillaGTK *sciThis) { gdk_ic_attr_destroy (sciThis->ic_attr); sciThis->ic_attr = NULL; } - return FALSE; + return FALSE; } gint ScintillaGTK::CursorMoved(GtkWidget *widget, int xoffset, int yoffset, ScintillaGTK *sciThis) { @@ -290,7 +290,7 @@ gint ScintillaGTK::CursorMoved(GtkWidget *widget, int xoffset, int yoffset, Scin sciThis->ic_attr->spot_location.y = yoffset; gdk_ic_set_attr (sciThis->ic, sciThis->ic_attr, GDK_IC_SPOT_LOCATION); } - return FALSE; + return FALSE; } #endif @@ -562,6 +562,11 @@ void ScintillaGTK::ScrollText(int linesToMove) { int diff = vs.lineHeight * -linesToMove; WindowID wi = wDraw.GetID(); GdkGC *gc = gdk_gc_new(wi->window); + GdkEvent* event; + + // Set up gc so we get GraphicsExposures from gdk_draw_pixmap + // which calls XCopyArea + gdk_gc_set_exposures(gc, TRUE); // Redraw exposed bit : scrolling upwards if (diff > 0) { @@ -570,9 +575,6 @@ void ScintillaGTK::ScrollText(int linesToMove) { 0, diff, 0, 0, rc.Width(), rc.Height() - diff); - // RedrawRect(PRectangle(0,rc.Height() - diff - - // vs.lineHeight, rc.Width(), rc.Height())); - gdk_gc_unref(gc); SyncPaint(PRectangle(0,rc.Height() - diff - vs.lineHeight, rc.Width(), rc.Height())); @@ -583,10 +585,20 @@ void ScintillaGTK::ScrollText(int linesToMove) { 0, 0, 0, -diff, rc.Width(), rc.Height() - diff); - gdk_gc_unref(gc); - // RedrawRect(PRectangle(0,0,rc.Width(),-diff + vs.lineHeight)); SyncPaint(PRectangle(0,0,rc.Width(),-diff + vs.lineHeight)); } + + // Look for any graphics expose + while ((event = gdk_event_get_graphics_expose(wi->window)) != NULL) { + gtk_widget_event(wi, event); + if (event->expose.count == 0) { + gdk_event_free(event); + break; + } + gdk_event_free(event); + } + + gdk_gc_unref(gc); } @@ -1030,11 +1042,11 @@ static int KeyTranslate(int keyIn) { case GDK_KP_Add: return SCK_ADD; case GDK_KP_Subtract: return SCK_SUBTRACT; case GDK_KP_Divide: return SCK_DIVIDE; - default: return keyIn; + default: return keyIn; } } -gint ScintillaGTK::KeyPress(GtkWidget *w, GdkEventKey *event, ScintillaGTK *sciThis) { +gint ScintillaGTK::KeyPress(GtkWidget *, GdkEventKey *event, ScintillaGTK *sciThis) { //Platform::DebugPrintf("SC-key: %d %x %x\n",event->keyval, event->state, GTK_WIDGET_FLAG(sciThis)); bool shift = event->state & GDK_SHIFT_MASK; bool ctrl = event->state & GDK_CONTROL_MASK; |