From cd1570a15df1a56c34e80ae3f68fb5be3ebcd011 Mon Sep 17 00:00:00 2001 From: paul Date: Sun, 26 Apr 2009 14:14:31 +0000 Subject: [PATCH] gtk2: improve notebook close button (it looks natively in gnome now) - make it theme dependent - fix size git-svn-id: trunk@19634 - --- lcl/interfaces/gtk/gtkint.pp | 2 ++ lcl/interfaces/gtk/gtkproc.inc | 62 +++++++++++++++------------------- 2 files changed, 29 insertions(+), 35 deletions(-) diff --git a/lcl/interfaces/gtk/gtkint.pp b/lcl/interfaces/gtk/gtkint.pp index da81f56833..f25f27d822 100644 --- a/lcl/interfaces/gtk/gtkint.pp +++ b/lcl/interfaces/gtk/gtkint.pp @@ -412,7 +412,9 @@ end; initialization +{$IFDEF GTK1} {$I gtkimages.lrs} +{$ENDIF} InternalInit; finalization diff --git a/lcl/interfaces/gtk/gtkproc.inc b/lcl/interfaces/gtk/gtkproc.inc index 564c3b72cc..89cd33cd94 100644 --- a/lcl/interfaces/gtk/gtkproc.inc +++ b/lcl/interfaces/gtk/gtkproc.inc @@ -4142,13 +4142,11 @@ begin end; end; +{$IFDef GTK1} var - {$IFDef GTK1} NoteBookCloseBtnPixmapImg: PGdkPixmap = nil; NoteBookCloseBtnPixmapMask: PGdkPixmap = nil; - {$Else} - NoteBookCloseBtnPixbuf: PGdkPixbuf = nil; - {$EndIf} +{$EndIf} {------------------------------------------------------------------------------- procedure RemoveDummyNoteBookPage(NoteBookWidget: PGtkNotebook); @@ -4187,13 +4185,6 @@ begin Img:=NoteBookCloseBtnPixmapImg; Mask:=NoteBookCloseBtnPixmapMask; end; -{$Else} -procedure GetNoteBookCloseBtnImage(var Img: PGdkPixbuf); -begin - if (NoteBookCloseBtnPixbuf=nil) then - LoadPixbufFromLazResource('tnotebook_close_tab', NoteBookCloseBtnPixbuf); - Img:=NoteBookCloseBtnPixbuf; -end; {$EndIF} {------------------------------------------------------------------------------- @@ -4347,47 +4338,48 @@ var Img: PGdkPixmap; Mask: PGdkBitmap; {$Else} - Img: PGdkPixbuf; - x, y: gInt; + style: PGtkRcStyle; {$EndIf} begin {$IfDef GTK1} //debugln('UpdateTabCloseBtn ',GetWidgetDebugReport(NoteBookWidget)); - GetNoteBookCloseBtnImage(GetControlWindow(NoteBookWidget),Img,Mask); - {$Else} - GetNoteBookCloseBtnImage(Img); + GetNoteBookCloseBtnImage(GetControlWindow(NoteBookWidget), Img, Mask); {$EndIf} //debugln('UpdateTabCloseBtn ',dbgs(nboShowCloseButtons in TheNotebook.Options),' ',dbgs(Img<>nil)); - if (nboShowCloseButtons in TheNotebook.Options) and (Img<>nil) then begin + if (nboShowCloseButtons in TheNotebook.Options) + {$ifdef GTK1}and (Img <> nil){$ENDIF} then + begin // close buttons enabled - if TabCloseBtnWidget=nil then begin + if TabCloseBtnWidget = nil then + begin // there is no close button yet // -> add one to the right side of the label in the tab - TabCloseBtnWidget:=gtk_button_new; + TabCloseBtnWidget := gtk_button_new; + gtk_button_set_relief(PGtkButton(TabCloseBtnWidget), GTK_RELIEF_NONE); {$ifdef gtk2} - gtk_widget_get_size_request(TabWidget, @x, @y); - y := 0; // will make it default fit - gtk_widget_set_size_request(TabCloseBtnWidget, x, y); + gtk_button_set_focus_on_click(PGtkButton(TabCloseBtnWidget), False); + style := gtk_widget_get_modifier_style(TabCloseBtnWidget); + style^.xthickness := 0; + style^.ythickness := 0; + gtk_widget_modify_style(TabCloseBtnWidget, style); {$endif} gtk_object_set_data(PGtkObject(TabWidget), 'TabCloseBtn', TabCloseBtnWidget); - begin - // put a pixmap into the button - {$IfDef GTK1} - TabCloseBtnImageWidget:=gtk_pixmap_new(Img,Mask); - {$Else} - TabCloseBtnImageWidget:=gtk_image_new_from_pixbuf(Img); - {$EndIf} - gtk_object_set_data(PGtkObject(TabCloseBtnWidget),'TabCloseBtnImage', - TabCloseBtnImageWidget); - gtk_widget_show(TabCloseBtnImageWidget); - gtk_container_add(PGtkContainer(TabCloseBtnWidget), + // put a pixmap into the button + {$IfDef GTK1} + TabCloseBtnImageWidget:=gtk_pixmap_new(Img,Mask); + {$Else} + TabCloseBtnImageWidget:=gtk_image_new_from_stock(GTK_STOCK_CLOSE, GTK_ICON_SIZE_MENU); + {$EndIf} + gtk_object_set_data(PGtkObject(TabCloseBtnWidget),'TabCloseBtnImage', TabCloseBtnImageWidget); - end; + gtk_widget_show(TabCloseBtnImageWidget); + gtk_container_add(PGtkContainer(TabCloseBtnWidget), + TabCloseBtnImageWidget); gtk_widget_show(TabCloseBtnWidget); g_signal_connect(PGtkObject(TabCloseBtnWidget), 'clicked', TGTKSignalFunc(@gtkNoteBookCloseBtnClicked), APage); - gtk_box_pack_start_defaults(PGtkBox(TabWidget),TabCloseBtnWidget); + gtk_box_pack_start(PGtkBox(TabWidget), TabCloseBtnWidget, False, False, 0); end; end else begin // close buttons disabled